<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-core-coap-kitchensink-04" category="info" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title>Everything over CoAP</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-coap-kitchensink-04"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2023" month="August" day="21"/>
    <workgroup>CoRE</workgroup>
    <keyword>CoAP, NTP</keyword>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) has become the base of applications
both inside of the constrained devices space it originally aimed for
and outside.
This document gives an overview of applications that
are, can, may,
and would better not be implemented on top of CoAP.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://gitlab.com/chrysn/coap-kitchensink"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>[ See abstract for now ]</t>
    </section>
    <section anchor="applications">
      <name>Applications</name>
      <section anchor="publish-subscribe-services">
        <name>Publish-Subscribe services</name>
        <t>Publish-subscribe services (pubsub) are a widespread tool for the some of the fundamental use cases of Internet of Things (IoT) protocols:
acquiring sensor data and controlling actuators.</t>
        <t>A pubsub implementation has been in development since shorlty after the original CoAP publication
and is as of now still in draft status, as <xref target="I-D.ietf-core-coap-pubsub"/>.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>MQTT</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>Once a topic is set up, data can be sent and received
by CoAP clients that are not even aware of pubsub,
as long as they can PUT or GET (possibly with observation) data to and from configured URIs.</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>To implement a pubsub broker that supports arbitrarily many topics,
some (potentially difficult-to-implement) compromises have to be made.</t>
          </dd>
        </dl>
      </section>
      <section anchor="remote-configuration">
        <name>Remote configuration</name>
        <t>The OMA LwM2M protocol
(which caters for several applications at the granularity of this document)
includes provisions for configuring and monitoring devices over the network,
setting properties such as a time server
and reading properties such as a network interface's packet count.</t>
        <t>In parallel, the NETCONF protocol and its YANG modelling language
have been ported to the constrained ecosystem as CORECONF <xref target="I-D.ietf-core-comi"/>.
By using numeric identifiers with good compression properties,
it can efficiently express data both from shared and from bespoke models in single requests.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>SNMP [ ? ], Puppet [ ? ]</t>
          </dd>
        </dl>
        <section anchor="network-status-monitoring">
          <name>Network status monitoring</name>
          <t>Related to remote configuration,
CoAP is used as the signalling channel of DOTS (<xref target="RFC132"/>).</t>
          <dl>
            <dt>Strong points</dt>
            <dd>
              <t>CoAP over UDP/DTLS provides operational signalling on links under attack,
on which a TCP/TLS based connection would fail.</t>
            </dd>
            <dt/>
            <dd>
              <t>CoAP's consistency across transports
makes it easy to adjust to situations in which UDP is uanvailable,
sacrificing some properties but leaving the high-level protocol unmodified.</t>
            </dd>
            <dt>Weak points</dt>
            <dd>
              <t>CoAP's default parameters for flow control (such as <tt>PROBING_RATE</tt>) are unsuitable for this application
and need to be customized.</t>
            </dd>
          </dl>
        </section>
        <section anchor="runtime-configuration">
          <name>Runtime configuration</name>
          <t>Related to remote network configuration,
but used without human intervention,
CoAP is used negotiate cryptographic keys and other short-lived network configuration,
eg. in <xref target="CoJP"/>, <xref target="ace-key-groupcomm-oscore"/>, and <xref target="OpenThread_Multicast"/>.
This is comparable to how <xref target="DHCP"/> or <xref target="IGMP"/> exchanges configuration.</t>
          <dl>
            <dt>Strong points</dt>
            <dd>
              <t>When the exchanged communication is essential to joining the network in the first place,
CoAP traffic exchanged over a temporary link can easily be proxied into the actual network,
even when routing is not an option yet.</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="software-updates">
        <name>Software updates</name>
        <t>The SUIT manifest format <xref target="I-D.ietf-suit-manifest"/> can be used to describe firmware updates
that can be performed over CoAP or any other protocol that is expressible in terms of URIs.</t>
        <t>The OMA LwM2M protocol also contains provisions for firmware updates over CoAP.</t>
      </section>
      <section anchor="network-file-system">
        <name>Network file system</name>
        <t>Using CoAP as a backend for a no-frills file service
is a simple composition and is provided as a demo by the aiocoap library and a module in the RIOT operating system.</t>
        <t>It has never been specified and described;
that gap is closed in <xref target="coap-filesystem"/>.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>WebDAV, NFS, FTP</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>CoAP protocol already provides random read access (through the Block2 option),
optimistic locking and cache (through the ETag and If-Match options)
and change notification (through the Observe option).</t>
          </dd>
          <dt/>
          <dd>
            <t>Files can be used in other CoAP protocols without the client's awareness (e.g. for SUIT)</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>Transfer of large files is inefficient due to the repetition of file names in block-wise requests
(mitigated when using CoAP-over-TCP and BERT).</t>
          </dd>
          <dt/>
          <dd>
            <t>Advanced file system functionality (file metadata, server-to-server copies, renaming, locking)
would need additional specifications.</t>
          </dd>
        </dl>
      </section>
      <section anchor="network-address-resolution">
        <name>Network address resolution</name>
        <t>The Domain Name System (DNS) can be utilized from CoAP using the mechanisms described in <xref target="I-D.draft-lenders-dns-over-coap"/>.</t>
        <dl>
          <dt>Strong points</dt>
          <dd>
            <t>Savings in firmware complexity by using infrastructure shared with other applications.</t>
          </dd>
          <dt/>
          <dd>
            <t>Potential for traffic (and thus energy) reduction by using request-response binding.</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>Not deployed in existing networks.</t>
          </dd>
        </dl>
      </section>
      <section anchor="time-service">
        <name>Time service</name>
        <t>Whereas no attempt has been made yet to specify a time service over CoAP,
a primitive time service can be assembled by creating a CoAP resource that returns the server's current time,
e.g., in a UNIX time stamp represented in decimal ASCII, or in CBOR using any of timestamp tags (0, 1 or 1001).</t>
        <t>TBD reference https://datatracker.ietf.org/doc/html/draft-navas-ace-secure-time-synchronization-00</t>
        <t>Such services have been in use since at least 2013,
and are easy to operate and scale.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>SNTP, NTP</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>Savings in firmware complexity by using infrastructure shared with other applications.</t>
          </dd>
          <dt/>
          <dd>
            <t>Compact messages.</t>
          </dd>
          <dt/>
          <dd>
            <t>Reuse of existing security associations.</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>None of the advanced features of (S)NTP, such as distinction between receive and transmit timestamps.
Not even leap seconds are advertised
(but that can be mitigated by using a time scale that is not affected by them, such as TAI).</t>
          </dd>
          <dt/>
          <dd>
            <t>Generally only suitable for the last hop in time synchronization.</t>
          </dd>
        </dl>
      </section>
      <section anchor="terminal-access">
        <name>Terminal access</name>
        <t>Virtual terminal access was one of the first network applications described in an RFC (<xref target="RFC15"/>),
and popular to date.</t>
        <t>There is no full specification yet as to how to express the data streams
of character based user input
and character based text responses in CoAP.
Necessary components,
as well as optional future extensions,
have been sketched and implemented for the RIOT operating system at <eref target="https://forum.riot-os.org/t/coap-remote-shell/3340/5">https://forum.riot-os.org/t/coap-remote-shell/3340/5</eref>.
Unlike SSH,
that sketch assumes the presence of a single virtual terminal
(as opposed to one created per connection).
On platforms with dynamic resources and per-process output capture,
an SSH-like muliplexing can be created based on the resource collection pattern described in <xref target="I-D.ietf-core-interfaces"/>.</t>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>SSH</t>
          </dd>
          <dt>Strong points</dt>
          <dd>
            <t>The head-of-line blocking that occasionally plagues TCP based connections is eliminiated
in favor of on-demand recovery
(i.e., observing the last output will produce the latest chunk of output,
and the terminal may recover skipped data later if it is still in the device's back-scroll buffer).</t>
          </dd>
          <dt>Weak points</dt>
          <dd>
            <t>The default retransmission characteristics of CoAP make operations painfully slow when encountering packet loss.
Tuning of parameters or the implementation of advanced flow control as described in <xref target="I-D.ietf-core-fasor"/> are necessary for smooth operation.</t>
          </dd>
          <dt/>
          <dd>
            <t>On-demand recovery is incompatible with regular terminals,
and requires either fully managed terminals (where the full output is reprinted when lost fragments are recovered)
or accepting the loss of data where printed exceeding the network speed.
(Data is still lost gracefully, as the loss is detected and can be indicated visually).</t>
          </dd>
        </dl>
      </section>
      <section anchor="chat-services">
        <name>Chat services</name>
        <t>The CoMatrix project <eref target="https://comatrix.eu/">https://comatrix.eu/</eref> has demonstrated that the Matrix chat protocol
can be simplified to the point where it becomes usable transparently with constrained devices.</t>
      </section>
      <section anchor="web-browsing">
        <name>Web browsing</name>
        <dl>
          <dt>Competing with</dt>
          <dd>
            <t>HTTP <xref target="RFC9110"/> over its various transports; Gemini (<xref target="gemini"/>).</t>
          </dd>
        </dl>
        <t>By virtue of cross proxying to HTTP,
CoAP is generally capable of transporting web pages the same way as HTTP,
albeit at a reduced feature set (in particular, most HTTP headers).</t>
        <t>CoAP offers only niche benefits over HTTP when combined with HTML,
the predominant markup language on the web:
Any benefits of a more compact transport or implementation are dwarved by the typical size of pages and the complexity of the HTML ecosystem.</t>
        <t>CoAP might be a suitable transport for Small Web environments such as Gemini <xref target="gemini"/>,
which can be rendered even by constrained devices.</t>
      </section>
      <section anchor="e-mail">
        <name>E-Mail</name>
        <t>While E-Mail was part of the considerations that led to the definition of the Proxy-Uri option
(which would technically allow a cross-proxy to accept POST requests to, say, <tt>mailto:office@example.com?subject=Sensor%20failure</tt>),
no attempts are known to send or receive E-Mail over CoAP.</t>
      </section>
      <section anchor="video-streaming">
        <name>Video streaming</name>
        <t>The use of CoAP for real time video streaming and telemetry from Unmanned Aerial Vehicles (UAVs)
has been explored in <xref target="I-D.bhattacharyya-core-a-realist"/>.</t>
        <t>It is unclear whether CoAP could actually outperform unconstrained streaming protocols such as WebRTC,
or whether devices that produce and consume video benefit from the constraints of CoAP.</t>
      </section>
      <section anchor="tunneling">
        <name>Tunneling</name>
        <t>Unlike HTTP,
CoAP does neither provide a dedicated method for encapsulating streaming or packet based network connections
(HTTP has a CONNECT method for streaming, <xref section="9.3.6" sectionFormat="of" target="RFC9110"/>)
nor has a means of encapsulating network traffic been specified
(HTTP has BOSH <xref target="XEP-0124"/> for streaming connections; VPNs such as OpenVPN can be operated over HTTP proxies <xref target="OpenVPNproxy"/>).
Early versions (up to -10) of <xref target="I-D.ietf-anima-onstrained-join-proxy-10"/> sketched a means of transporting UDP in a CoAP-like way.</t>
        <t>However,
CoAP can aggregate exchanges with multiple peers
inside a single CoAP hop.
This can serve to protect the user's privacy
(by using (D)TLS or <xref target="I-D.tiloca-core-oscore-capable-proxies"/> on the hop to the proxy, hiding which servers a client is communicating with from its local network)
and for efficiency reasons
(by using a single outgoing TCP connection from a device in a cellular network,
or even a more power optimized hop such as <xref target="CoAP-over-NB-IoT"/>
to keep observations active on multiple unrelated services).
This bears similarity with the approach of <xref target="OHAI"/>,
but leverages CoAP's proxying mechanisms instead of using a gateway or relay resource.</t>
        <t>various stuff from JJ</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="gemini" target="https://gemini.circumlunar.space/docs/specification.html">
          <front>
            <title>Project Gemini, speculative specification, v0.16.1</title>
            <author initials="" surname="solderpunk">
              <organization/>
            </author>
            <date year="2022" month="January" day="30"/>
          </front>
        </reference>
        <reference anchor="CoJP">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for OSCORE Groups in ACE</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Jiye Park" initials="J." surname="Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="6" month="March" year="2023"/>
            <abstract>
              <t>   This document defines an application profile of the ACE framework for
   Authentication and Authorization, to request and provision keying
   material in group communication scenarios that are based on CoAP and
   are secured with Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  This application profile delegates the
   authentication and authorization of Clients, that join an OSCORE
   group through a Resource Server acting as Group Manager for that
   group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication and proof-of-possession for a key owned by the Client
   and bound to an OAuth 2.0 Access Token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-16"/>
        </reference>
        <reference anchor="OpenThread_Multicast" target="https://openthread.io/codelabs/openthread-border-router-ipv6-multicast#0">
          <front>
            <title>Thread Border Router – Thread 1.2 Multicast</title>
            <author initials="" surname="Simon Lin">
              <organization/>
            </author>
            <date year="2022" month="March" day="15"/>
          </front>
        </reference>
        <reference anchor="DHCP">
          <front>
            <title>Dynamic Host Configuration Protocol for IPv6 (DHCPv6)</title>
            <author fullname="T. Mrugalski" initials="T." surname="Mrugalski"/>
            <author fullname="M. Siodelski" initials="M." surname="Siodelski"/>
            <author fullname="B. Volz" initials="B." surname="Volz"/>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Jiang" initials="S." surname="Jiang"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <author fullname="T. Winters" initials="T." surname="Winters"/>
            <date month="November" year="2018"/>
            <abstract>
              <t>This document describes the Dynamic Host Configuration Protocol for IPv6 (DHCPv6): an extensible mechanism for configuring nodes with network configuration parameters, IP addresses, and prefixes. Parameters can be provided statelessly, or in combination with stateful assignment of one or more IPv6 addresses and/or IPv6 prefixes. DHCPv6 can operate either in place of or in addition to stateless address autoconfiguration (SLAAC).</t>
              <t>This document updates the text from RFC 3315 (the original DHCPv6 specification) and incorporates prefix delegation (RFC 3633), stateless DHCPv6 (RFC 3736), an option to specify an upper bound for how long a client should wait before refreshing information (RFC 4242), a mechanism for throttling DHCPv6 clients when DHCPv6 service is not available (RFC 7083), and relay agent handling of unknown messages (RFC 7283). In addition, this document clarifies the interactions between models of operation (RFC 7550). As such, this document obsoletes RFC 3315, RFC 3633, RFC 3736, RFC 4242, RFC 7083, RFC 7283, and RFC 7550.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8415"/>
          <seriesInfo name="DOI" value="10.17487/RFC8415"/>
        </reference>
        <reference anchor="IGMP">
          <front>
            <title>Internet Group Management Protocol, Version 3</title>
            <author fullname="B. Cain" initials="B." surname="Cain"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
            <author fullname="B. Fenner" initials="B." surname="Fenner"/>
            <author fullname="A. Thyagarajan" initials="A." surname="Thyagarajan"/>
            <date month="October" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3376"/>
          <seriesInfo name="DOI" value="10.17487/RFC3376"/>
        </reference>
        <reference anchor="OpenVPNproxy" target="https://openvpn.net/community-resources/connecting-to-an-openvpn-server-via-an-http-proxy/">
          <front>
            <title>Connecting to an OpenVPN server via an HTTP proxy</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="XEP-0124" target="https://xmpp.org/extensions/xep-0124.html">
          <front>
            <title>Bidirectional-streams Over Synchronous HTTP (BOSH)</title>
            <author initials="" surname="Ian Paterson">
              <organization/>
            </author>
            <author initials="" surname="Dave Smith">
              <organization/>
            </author>
            <author initials="" surname="Peter Saint-Andre">
              <organization/>
            </author>
            <author initials="" surname="Jack Moffitt">
              <organization/>
            </author>
            <author initials="" surname="Lance Stout">
              <organization/>
            </author>
            <author initials="" surname="Winfried Tilanus">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CoAP-over-NB-IoT" target="http://openmobilealliance.org/RELEASE/LightweightM2M/V1_1-20180612-C/OMA-TS-LightweightM2M_Transport-V1_1-20180612-C.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification: Transport Layer</title>
            <author initials="" surname="Open Mobile Alliance">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OHAI">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Unaffiliated</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for CoAP
   that extends the capabilities of CoAP for supporting nodes with long
   breaks in connectivity and/or up-time.  The Constrained Application
   Protocol (CoAP) is used by CoAP clients both to publish and to
   subscribe via a known topic resource.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-12"/>
        </reference>
        <reference anchor="I-D.ietf-core-comi">
          <front>
            <title>CoAP Management Interface (CORECONF)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>consultant</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="23" month="July" year="2023"/>
            <abstract>
              <t>   This document describes a network management interface for
   constrained devices and networks, called CoAP Management Interface
   (CORECONF).  The Constrained Application Protocol (CoAP) is used to
   access datastore and data node resources specified in YANG, or SMIv2
   converted to YANG.  CORECONF uses the YANG to CBOR mapping and
   converts YANG identifier strings to numeric identifiers for payload
   size reduction.  CORECONF extends the set of YANG based protocols,
   NETCONF and RESTCONF, with the capability to manage constrained
   devices and networks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-15"/>
        </reference>
        <reference anchor="RFC132">
          <front>
            <title>Typographical Error in RFC 107</title>
            <author fullname="J.E. White" initials="J.E." surname="White"/>
            <date month="April" year="1971"/>
          </front>
          <seriesInfo name="RFC" value="132"/>
          <seriesInfo name="DOI" value="10.17487/RFC0132"/>
        </reference>
        <reference anchor="I-D.ietf-suit-manifest">
          <front>
            <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
            <author fullname="Brendan Moran" initials="B." surname="Moran">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
              <organization>Inria</organization>
            </author>
            <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
              <organization>Nordic Semiconductor</organization>
            </author>
            <date day="27" month="February" year="2023"/>
            <abstract>
              <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an IoT device), where to find the that code/data,
   the devices to which it applies, and cryptographic information
   protecting the manifest.  Software updates and Trusted Invocation
   both tend to use sequences of common operations, so the manifest
   encodes those sequences of operations, rather than declaring the
   metadata.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-22"/>
        </reference>
        <reference anchor="I-D.draft-lenders-dns-over-coap">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>Freie Universität Berlin</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Thomas C. Schmidt" initials="T. C." surname="Schmidt">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>Freie Universität Berlin</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document defines a protocol for sending DNS messages over the
   Constrained Application Protocol (CoAP).  These CoAP messages are
   protected by DTLS-Secured CoAP (CoAPS) or Object Security for
   Constrained RESTful Environments (OSCORE) to provide encrypted DNS
   message exchange for constrained devices in the Internet of Things
   (IoT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-lenders-dns-over-coap-04"/>
        </reference>
        <reference anchor="RFC15">
          <front>
            <title>Network subsystem for time sharing hosts</title>
            <author fullname="C.S. Carr" initials="C.S." surname="Carr"/>
            <date month="September" year="1969"/>
          </front>
          <seriesInfo name="RFC" value="15"/>
          <seriesInfo name="DOI" value="10.17487/RFC0015"/>
        </reference>
        <reference anchor="I-D.ietf-core-interfaces">
          <front>
            <title>Reusable Interface Definitions for Constrained RESTful Environments</title>
            <author fullname="Zach Shelby" initials="Z." surname="Shelby">
              <organization>ARM</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Christian Groves" initials="C." surname="Groves">
         </author>
            <author fullname="Jintao Zhu" initials="J." surname="Zhu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Bill Silverajan" initials="B." surname="Silverajan">
              <organization>Tampere University</organization>
            </author>
            <date day="11" month="March" year="2019"/>
            <abstract>
              <t>   This document defines a set of Constrained RESTful Environments
   (CoRE) Link Format Interface Descriptions [RFC6690] applicable for
   use in constrained environments.  These include the: Actuator,
   Parameter, Read-only parameter, Sensor, Batch, Linked Batch and Link
   List interfaces.

   The Batch, Linked Batch and Link List interfaces make use of resource
   collections.  This document further describes how collections relate
   to interfaces.

   Many applications require a set of interface descriptions in order
   provide the required functionality.  This document defines an
   Interface Description attribute value to describe resources
   conforming to a particular interface.

   Editor's notes:

   o  The git repository for the draft is found at https://github.com/
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-interfaces-14"/>
        </reference>
        <reference anchor="I-D.ietf-core-fasor">
          <front>
            <title>Fast-Slow Retransmission Timeout and Congestion Control Algorithm for CoAP</title>
            <author fullname="Ilpo Järvinen" initials="I." surname="Järvinen">
              <organization>University of Helsinki</organization>
            </author>
            <author fullname="Markku Kojo" initials="M." surname="Kojo">
              <organization>University of Helsinki</organization>
            </author>
            <author fullname="Iivo Raitahila" initials="I." surname="Raitahila">
              <organization>University of Helsinki</organization>
            </author>
            <author fullname="Zhen Cao" initials="Z." surname="Cao">
              <organization>Huawei</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document specifies an alternative retransmission timeout (RTO)
   and congestion control back off algorithm for the CoAP protocol,
   called Fast-Slow RTO (FASOR).

   The algorithm specified in this document employs an appropriate and
   large enough back off of RTO as the major congestion control
   mechanism to allow acquiring unambiguous RTT samples with high
   probability and to prevent building a persistent queue when
   retransmitting.  The algorithm also aims to retransmit quickly using
   an accurately managed RTO when link-errors are occuring, basing RTO
   calculation on unambiguous round-trip time (RTT) samples.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-fasor-02"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="I-D.bhattacharyya-core-a-realist">
          <front>
            <title>Adaptive RESTful Real-time Live Streaming for Things (A-REaLiST)</title>
            <author fullname="Abhijan Bhattacharyya" initials="A." surname="Bhattacharyya">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Suvrat Agrawal" initials="S." surname="Agrawal">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Hemant Kumar Rath" initials="H. K." surname="Rath">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Arpan Pal" initials="A." surname="Pal">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <author fullname="Balamurali Purushothaman" initials="B." surname="Purushothaman">
              <organization>TATA CONSULTANCY SERVICES LTD.</organization>
            </author>
            <date day="5" month="February" year="2019"/>
            <abstract>
              <t>   This draft presents extensions to Constrained Application Protocol
   (CoAP) to enable RESTful Real-time Live Streaming for improving the
   Quality of Experience (QoE) for delay-sensitive Internet of Things
   (IoT) applications. The overall architecture is termed "Adaptive
   RESTful Real-time Live Streaming for Things (A-REaLiST)". It is
   particularly designed for applications which rely on real-time
   augmented vision through live First Person View (FPV) feed from
   constrained remote agents like Unmanned Aerial Vehicle (UAV), etc.
   These extensions provide the necessary hooks to help solution
   designers ensure low-latency transfer of streams and, for contents
   like video, a quick recovery from freeze and corruption without
   incurring undue lag. A-REaLiST is an attempt to provide an
   integrated approach to maintain the balance amongst QoE, resource-
   efficiency and loss resilience. It provides the necessary hooks to
   optimize system performance by leveraging contextual intelligence
   inferred from instantaneous information segments in flight. These
   extensions equip CoAP with a standard for efficient RESTful
   streaming for Internet of Things (IoT) contrary to HTTP-streaming in
   conventional Internet.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bhattacharyya-core-a-realist-02"/>
        </reference>
        <reference anchor="I-D.ietf-anima-onstrained-join-proxy-10">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-capable-proxies">
          <front>
            <title>OSCORE-capable Proxies</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   Object Security for Constrained RESTful Environments (OSCORE) can be
   used to protect CoAP messages end-to-end between two endpoints at the
   application layer, also in the presence of intermediaries such as
   proxies.  This document defines how to use OSCORE for protecting CoAP
   messages also between an origin application endpoint and an
   intermediary, or between two intermediaries.  Also, it defines how to
   secure a CoAP message by applying multiple, nested OSCORE
   protections, e.g., both end-to-end between origin application
   endpoints, as well as between an application endpoint and an
   intermediary or between two intermediaries.  Thus, this document
   updates RFC 8613.  The same approach can be seamlessly used with
   Group OSCORE, for protecting CoAP messages when group communication
   with intermediaries is used.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-capable-proxies-07"/>
        </reference>
      </references>
    </references>
    <section anchor="coap-filesystem">
      <name>CoAP File Service</name>
      <t>This sketches [ TBD: describes ] a file transfer protocol / remote file system built on top of CoAP.</t>
      <t>A file server works similar to a WebDAV server, and follows these rules
(which are sometimes expressed from the point of view of the server,
but apply when a client maps them back into a file system in such a way that operations can round-trip):</t>
      <ul spacing="normal">
        <li>
          <t>Directories are unconditionally represented by URIs with a trailing slash; files by those without one.  </t>
          <t>
The GET operation is used to list them (for there is no PROPFIND operation in CoAP).
Different media types migth be used depending on the capabilities of the parties,
with application/link-format as a base line.  </t>
          <t>
(Note that application/link-format is not particularly efficient for this purpose,
as the directory listing needs to repeat the requested resource's full path for each entry).  </t>
          <t>
Clients need to be prepared for links that do not follow the regular pattern of a directory advertising its children,
but (as with all unknown links) may ignore them.</t>
        </li>
        <li>Paths are constructed by placing directory names and either an empty string (for the trailing slash) or the unescaped file name in Uri-Path options.</li>
        <li>Clients may attempt to treat any URI composed of the file server entry URI and additional path segments as files on the file server.
Consequently, any additional services the file server may provide
(e.g., as resources specified in extensions)
are necessarily assigned URIs with a query,
for these can not be inadvertedly constructed in an attempt to access a file.</li>
        <li>
          <t>For lack of a HEAD option,
file metadata can only be obtained by performing a GET on the directory containing the file,
or a FETCH for efficiency if suitable media types are defined.  </t>
          <t>
All metadata is provided on a best-effort basis,
and the supported directory formats limit what can be expressed.
Typical supported metadata are the media type (expressed as <tt>ct</tt> in link format)
and the size (<tt>sz</tt>).</t>
        </li>
        <li>
          <t>If write support is available and permissions allow,
a client can create files by performing a PUT operation on a previously nonexistent resource.  </t>
          <t>
Files can be overwritten by PUTting a new representation.
Files sent with block-wise transfer should be processed atomically by the server
unless explicitly negotiated otherwise.
(On POSIX file systems,
this can be implemented without additional state by storing the blocks in a temporary file
whose name contains the original file name and the block key of the request,
and renaming it to the target name when receiving the last block).  </t>
          <t>
Directories can be created with PUT as well
(it is clear from their path that they are directories);
these would typically be empty and not have a content format,
but may use a content format that already describes directory metadata.
(It is up to the client to fall back to plain directory creation,
if that is a viable option for it -- it would be if it's just about unimportant metadata, but might not if the initial metadata indicates an ACL).</t>
        </li>
        <li>
          <t>Files and directories can be removed using the DELETE operation,
subject ot the same conditions as writing to resources.  </t>
          <t>
Deleting directories is recursive;
client that desire POSIX semantics need to check whether the directory is empty
and use the If-Match option with the empty directory's ETag to avoid race conditions.</t>
        </li>
        <li>
          <t>Regular CoAP extensions apply if the parties support them, for example:  </t>
          <ul spacing="normal">
            <li>Observation can be used to watch files or directories for changes.</li>
            <li>
              <t>ETags (e.g. derived from the file's stats) can be used to ensure that large files are assembled correctly by the client,
and to perform file updates with optimistic locking by using the If-Match option.      </t>
              <t>
Note that ETags are always "strong" in CoAP:
They indicate that a precise representation of a resource has not changed.
If a resource has different representations (eg. a directory listing may be available in different media types),
they may have different ETags.
They may also have identical ETags,
but that means that if one format carries less information,
its ETag needs to change when any representation changes,
not just the selected one.      </t>
              <t>
Consequently,
if a client learns of a resource's ETag
and revalidates that that ETag is still valid,
it can not know which properties of the resource have stayed constant.
(In the extreme case, the representation might merely express that the resource exists).
Only when knowing the representation,
or at least relevant metadata of the tagged representation,
can the client be sure that an ETag's validity has any meaning
beyond that the resource still exists.      </t>
              <t>
For file services backed by content based naming systems (such as git),
it is tempting to use content identifiers for ETags --
consequently, a directory will be flagged as changed when any file below it changes.
To allow monitoring directories for additions and removal of files,
it is RECOMMENDED that a representation is provided that does not contain the contained files' and directories' ETags,
and has a stable ETag that is distinct from any representation that does include them.
There is no recommendation as to whether the default representation
should contain ETags or not.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Additional features can be specified and advertised separately,
either per resoource or by a named specification that provides templates for further operations.  </t>
          <t>
For example,
a specification might say that when a file system is advertised with a given interface (<tt>if</tt> parameter of link format),
for each file and directory there is an associated resource at <tt>?acl</tt> that describes access control applicable to that file,
and can be used with GET and PUT as per the ACL's policies.  </t>
          <t>
Additional operations can use their custom media types and methods,
and possibly create more resources.
For example,
a server-to-server copy (again, advertised by a suitable interface parameter)
could provide a <tt>?copy</tt> resource under any directory,
to which a CBOR list containing two CRIs (source and destination) would be posted.
That specification might describe that if copies are not completed instantly,
the response might indicate a new location using Uri-Path and Uri-Query options
(the latter might be necessary to not conflict with existing files)
which tracks the status of the operation.</t>
        </li>
        <li>
          <t>File service is compatible with "index.html" style directory indices provided statically in the file system.
It is recommended to not serve index files of typical directory listing formats (such as application/link-format)
as these might mislead the client about the file system's content,
and prevent clients that access the server as a file server from even seeing the providing file's name.  </t>
          <t>
These files still need to be written to or deleted in their file version (e.g. as "index.html");
the file server may use yet to be specified link relations to point out which files are being served as the index files.</t>
        </li>
      </ul>
      <t>Some implementation guidance should be provided around the interaction between idempotent requests that have no actual effect and preconditions:
If a DELETE with If-Match is transmitted again on a new token (by a proxy relying on its idempotence),
should the server respond Deleted rather than Not Found?
(In this case, the client could at least know what to do with it, but)
If a PUT with If-Match is transmitted again after it has been acted on,
should the server respond Changed rather than Precondition Failed?
(Probably "No" to both, as the former is easily recognizable by the client,
and the latter would delay faulting by long,
but still needs further thought.)</t>
    </section>
    <section anchor="change-log">
      <name>Change log</name>
      <t>From -03 to -04:</t>
      <ul spacing="normal">
        <li>Add section about tunneling</li>
        <li>Extend notes on theuse of ETags on file servers</li>
      </ul>
      <t>From -02 to -03:</t>
      <ul spacing="normal">
        <li>Added Runtime configuration section</li>
        <li>Terminal access now has an implementation</li>
      </ul>
      <t>From -01 to -02:</t>
      <ul spacing="normal">
        <li>Added "Web browsing" section</li>
      </ul>
      <t>From -00 to -01:</t>
      <ul spacing="normal">
        <li>Added details to file service</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71c23LjyJF9x1cgemJjRAehW8+MPZpdz6ol9bQc3ZIssWe8
sXa4i0SRhAUCNAqQmu7oiP2H/Z192z/ZL9lzMqsKIKVe+2n94JFEsCorKy8n
TyY6y7KkLdrSnqQvLh5ss2mXRbVIa/yYntWnNy+SvJ5VZoXP88bM28ysXGed
y2Z1Y/F/Zp3dF+1saStXVPfZ4TdJsW5O0rbpXHt8ePj94XHiWlPlfzZlXVn5
wCYz056kRTWvk8fFCba5vUjuH09kv3F6NblJTNcu6+YkyfCUwwf76enK/fd/
OZekqQpztmwK1xamGnwyq7uqbTYn6Sk2bwqDP9mVKcqTdBae/lcv/v6sXiVV
3axMWzzYEzx5+/rs18ffHp8klGvw94VdFVXBn9LUK+qmqf9iZ236k3w0Tt3a
zrpSviE/F/MCJyzqapw+HO4ffbd/JN8Oh0rlf5n/b6pHdHWZ22bdVffy99y0
2Oj48Pg4OzzKXh7KH1WusMCbybu3J+mybdfu5OBAxdyfFc2sW5VdZZp9tzYz
e4DrcwdbUu0v21WJRc7q392c8NzfH76khHg6u7ebbNHU3Rr6WWW14y2fpJfZ
+X5h23n2pUfw7eu1rSbLxpo8fdeVLfZy7ZbW/Iev6gYHTW/rrsV//uc//jN8
cLR/3H/z7yvsrljVVfq2qJ7o62V29O3f1VcNcVvZeL+oD2Z1bkszdYM/Z1MR
NGtE0KxYP3yXrYJ4X/FCzt+cqf5+841sePnTO/395ctff+c18vPN1bqpP262
NHFWVxXsh37W1ilM2D+ZOtvQ7x4Kw7++mUxuUvn2P3Sah3W1X9n2gNfSVUW7
yRrr6q6ZWYe/hR2zts5MlfkvZLpjhh35Vy6XyY4H2OYPFzcwvuNvtmR/VeRF
w6XqypQZ3MzCo9Jrin23qeBndVV3TmXfe3V992b096/yEoe9wQU2rq6ef+Lc
wLXuVkW7fP7zG0tjujNF1WanVS4G+cxjvzOz+/RdPZ8Xbfv8E29NNcNOLS79
+Qd+QXhoCpunk6I0Vef+7tV8XK3X+3WzOLAfWwbJunIHH+1aNNt74ulNxpCb
Xb3KLuvJlsZfvC0Wy/bR8v/Td2aG+GxpN+HHiZ0tK1hlmd4NvRwO15jKreum
xak2tnkhi2ITJ5++ONo/evGM9Dfnr1V4b1arelqU1pRlQdXISW4v3l6c3l0c
DAR7d/zu4OejPx9lx4dHvzn87ug4Ozu4fneaTe6y7af+HKXKdp7fX+fzJ7YS
tC+6p5vg+ihPeuoFop+9Ob0cxKh6aQqx5AT/y7IshV+3jZm1STJZWjoff4Xm
8vR0vS69uhjU23pWl+keb2OULo1LpxbOBGXja1PjbFrPU9N/xSXTul1StCKX
z/jcbLB8bh8KeF8qgTgt2rRuikUBvyk3qSlWeAKqT5AcU5gbF9mHhIVLEbK7
FeJQukBGcQwFtI2Hwj7uSoAtTZuYxo7TmUG6WZnNWBZ8rLsyh/wt/aKqW/yY
Fqt1abkuNsaB23rN5XjafVXUqsjz0ibJV+kl8midd+Lm6aevisGvn5Pkj/+e
3lkb9cpTYI/H9I9/4ndPhxpKvvoqvemmZeGW2V03dbOmgCSMOtRMkoTP3JPP
0r01/tZNRymOl5r0Efpxa8kUbY1r4qZUuOMNeeXPuyo3PCGcocN9IVRjIXyI
89gGwZE/TwhwsDz8bMTwKrfuThIz+2tXNAzKDn6K1ZFTGIdz3inOD4PDZzhv
Z9q6cdDZaaoi9ppVU1LTga0WFW3AlvVarhMICXbgYNxlCwuY824odjALuQuu
GfQnVwmDMHIIqhggpixlXYIx/Grazo35wKdPP0YX6LGZCvj5M6Q9q1drK0nn
kXE0OUnf/X4ySZI7nA1/XNe4Zcc/X1NKQ/soZtzdQW/deqz6gJmlcks4D6VD
LrCw0hx+ON3oAWZlgU/VNuXyaH9QQ5WaR/6Ko6hYY4IOl5bc3vB5u5H1b95P
oJP0p4sJjKB2rpjCYSh0Wk9pHqKbkcojCRSO1NQr3tO8WHQN7Pv97SVv6Bdr
7gcnm9T9VeGE/vamTX0vNwFxXbdmbILKm2kB624KbL0y1UbV4SiyWBwEQzgH
pKQz5wVSCiBgy+wadxhBoBUMbFXQCpdMYZAWylsZujpd49ausEwUXC9dwhSC
Z/r2EQEzmmiy97gsZktoiJlS7N9Bqw3sZisk4BQ0qgXiLEBpAyCg7jEILCOA
3FnZwaG4+kMhWUlWDJKIqUOvwFgFrJ2/hmgmpQF3gD891s39OIGBiF1hrbVt
2oIhr4OkuFNcEAKdBzaJGozJv/iwXxIGjjPOETW/hoRI2rBAAffQ2mWFv+DQ
pS3HIsbVxeTs+up11JPIXeAK/+306iccAMhOPBfpetGZhU3kJsQ/edWW8eRJ
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

-->

</rfc>
