<?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 1.7.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-connect-udp-listen-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="CONNECT-UDP Bind">Proxying Bound UDP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-udp-listen-02"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Singh" fullname="Abhi Singh">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>abhisinghietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="February" day="29"/>
    <area>Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>udp</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>quic in quic</keyword>
    <keyword>turtles all the way down</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <keyword>listen</keyword>
    <keyword>bind</keyword>
    <abstract>
      <?line 63?>

<t>The mechanism to proxy UDP in HTTP only allows each UDP Proxying request to
transmit to a specific host and port. This is well suited for UDP client-server
protocols such as HTTP/3, but is not sufficient for some UDP peer-to-peer
protocols like WebRTC. This document proposes an extension to UDP Proxying in
HTTP that enables such use-cases.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-masque.github.io/draft-ietf-masque-connect-udp-listen/draft-ietf-masque-connect-udp-listen.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-masque-connect-udp-listen/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        MASQUE Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-masque/draft-ietf-masque-connect-udp-listen"/>.</t>
    </note>
  </front>
  <middle>
    <?line 71?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The mechanism to proxy UDP in HTTP <xref target="CONNECT-UDP"/> allows creating
tunnels for communicating UDP payloads <xref target="UDP"/> to a fixed host and
port. Combined with the HTTP CONNECT method (see <xref section="9.3.6" sectionFormat="of" target="HTTP"/>), it allows proxying the majority of a Web Browser's HTTP
traffic. However WebRTC <xref target="WebRTC"/> relies on ICE <xref target="ICE"/> to provide
connectivity between two Web browsers, and ICE relies on the ability to send and
receive UDP packets to multiple hosts. While in theory it might be possible to
accomplish this using multiple UDP Proxying HTTP requests, HTTP semantics
<xref target="HTTP"/> do not guarantee that distinct requests will be handled by the same
server. This can lead to the UDP packets being sent from distinct IP addresses,
thereby preventing ICE from operating correctly. Consequently, UDP Proxying
requests cannot enable WebRTC connectivity between peers.</t>
      <t>This document describes an extension to UDP Proxying in HTTP that allows sending
and receiving UDP payloads to multiple hosts within the scope of a single UDP
Proxying HTTP request.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This document uses terminology from <xref target="CONNECT-UDP"/> and notational conventions
from <xref target="QUIC"/>. This document uses the terms Integer and List from
<xref section="3" sectionFormat="of" target="STRUCTURED-FIELDS"/> to specify syntax and parsing.</t>
      </section>
    </section>
    <section anchor="mechanism">
      <name>Proxied UDP Binding Mechanism</name>
      <t>In unextended UDP Proxying requests, the target host is encoded in the HTTP
request path or query. For Bound UDP Proxying, it is instead conveyed in each
HTTP Datagram, see <xref target="format"/>.</t>
      <t>When performing URI Template Expansion of the UDP Proxying template (see
<xref section="3" sectionFormat="of" target="CONNECT-UDP"/>), the client sets both the target_host and the
target_port variables to the '*' character (ASCII character 0x2A).</t>
      <t>Before sending its UDP Proxying request to the proxy, the client allocates an
even-numbered context ID, see <xref section="4" sectionFormat="of" target="CONNECT-UDP"/>. The client then adds
the "Connect-UDP-Bind" header field to its UDP Proxying request, with its
value set as the allocated context ID, see <xref target="hdr"/>.</t>
    </section>
    <section anchor="format">
      <name>HTTP Datagram Payload Format</name>
      <t>When HTTP Datagrams <xref target="HTTP-DGRAM"/> associated with this Bound UDP
Proxying request contain the context ID in the Connect-UDP-Bind header field,
the format of their UDP Proxying Payload field (see <xref section="5" sectionFormat="of" target="CONNECT-UDP"/>) is defined by <xref target="dgram-format"/>:</t>
      <figure anchor="dgram-format">
        <name>Bound UDP Proxying HTTP Datagram Format</name>
        <artwork type="ascii-art"><![CDATA[
Bound UDP Proxying Payload {
  IP Version (8),
  IP Address (32..128),
  UDP Port (16),
  UDP Payload (..),
}
]]></artwork>
      </figure>
      <dl>
        <dt>IP Version:</dt>
        <dd>
          <t>The IP Version of the following IP Address field. <bcp14>MUST</bcp14> be 4 or 6.</t>
        </dd>
        <dt>IP Address:</dt>
        <dd>
          <t>The IP Address of this proxied UDP packet. When sent from client to proxy,
this is the target host to which the proxy will send this UDP payload. When sent
from proxy to client, this represents the source IP address of the UDP packet
received by the proxy. This field has a length of 32 bits when the corresponding
IP Version field value is 4, and 128 when the IP Version is 6.</t>
        </dd>
        <dt>UDP Port:</dt>
        <dd>
          <t>The UDP Port of this proxied UDP packet in network byte order. When sent from
client to proxy, this is the target port to which the proxy will send this UDP
payload. When sent from proxy to client, this represents the source UDP port of
the UDP packet received by the proxy.</t>
        </dd>
        <dt>UDP Payload:</dt>
        <dd>
          <t>The unmodified UDP Payload of this proxied UDP packet (referred to as "data
octets" in <xref target="UDP"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="hdr">
      <name>The Connect-UDP-Bind Header Field</name>
      <t>The "Connect-UDP-Bind" header field’s value is an Integer. It is set as the
Context ID allocated for Bound UDP Proxying; see <xref target="mechanism"/>. Any other
value type <bcp14>MUST</bcp14> be handled as if the field were not present by the recipients
(for example, if this field is defined multiple times, its type becomes a List
and therefore is to be ignored). This document does not define any parameters
for the Connect-UDP-Bind header field value, but future documents might define
parameters. Receivers <bcp14>MUST</bcp14> ignore unknown parameters.</t>
    </section>
    <section anchor="proxy-behavior">
      <name>Proxy behavior</name>
      <t>After accepting the Connect-UDP Binding proxying request, the proxy uses a UDP
port to transmit UDP payloads received from the client to the target IP Address
and UDP Port specified in each binding Datagram Payload received from the
client. The proxy uses the same port to listen for UDP packets from any
authorized target and encapsulates the packets in the Binding Datagram
Payload format, specifying the IP and port of the target and forwards it to
the client.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations described in <xref section="7" sectionFormat="of" target="CONNECT-UDP"/> also apply
here. Since TURN can be run over this mechanism, implementors should review the
security considerations in <xref section="21" sectionFormat="of" target="TURN"/>.</t>
      <t>Since unextended UDP Proxying requests carry the target as part of the request,
the proxy can protect unauthorized targets by rejecting requests before creating
the tunnel, and communicate the rejection reason in response header fields.
Bound UDP Proxying requests do not have this ability. Therefore, proxies <bcp14>MUST</bcp14>
validate the target on every datagram and <bcp14>MUST NOT</bcp14> forward individual datagrams
with unauthorized targets. Proxies can either silently discard such datagrams or
abort the corresponding request stream.</t>
      <t>Unlike non-binding CONNECT-UDP, since the proxy tunnels datagrams from any
target to clients bound to their respective public IP and ports, the clients
<bcp14>MUST</bcp14> be ready to handle potential unwanted traffic from unknown destinations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <dl spacing="compact">
        <dt>This document will request IANA to register the following entry in the "HTTP</dt>
        <dd>
          <t/>
        </dd>
        <dt>Field Name" registry maintained at</dt>
        <dd>
          <t/>
        </dd>
        <dt>&lt;<eref target="https://www.iana.org/assignments/http-fields"/>&gt;:</dt>
        <dd>
          <t>Connect-UDP-Bind</t>
        </dd>
        <dt>Template:</dt>
        <dd>
          <t>None</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional (permanent if this document is approved)</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comments:</dt>
        <dd>
          <t>None</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="UDP">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="HTTP">
          <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="WebRTC" target="https://www.w3.org/TR/webrtc/">
          <front>
            <title>WebRTC</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
        <reference anchor="ICE">
          <front>
            <title>Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based communication. This protocol is called Interactive Connectivity Establishment (ICE). ICE makes use of the Session Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using Relay NAT (TURN).</t>
              <t>This document obsoletes RFC 5245.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8445"/>
          <seriesInfo name="DOI" value="10.17487/RFC8445"/>
        </reference>
        <reference anchor="TURN">
          <front>
            <title>Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="T. Reddy" initials="T." role="editor" surname="Reddy"/>
            <author fullname="A. Johnston" initials="A." role="editor" surname="Johnston"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>If a host is located behind a NAT, it can be impossible for that host to communicate directly with other hosts (peers) in certain situations. In these situations, it is necessary for the host to use the services of an intermediate node that acts as a communication relay. This specification defines a protocol, called "Traversal Using Relays around NAT" (TURN), that allows the host to control the operation of the relay and to exchange packets with its peers using the relay. TURN differs from other relay control protocols in that it allows a client to communicate with multiple peers using a single relay address.</t>
              <t>The TURN protocol was designed to be used as part of the Interactive Connectivity Establishment (ICE) approach to NAT traversal, though it can also be used without ICE.</t>
              <t>This document obsoletes RFCs 5766 and 6156.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8656"/>
          <seriesInfo name="DOI" value="10.17487/RFC8656"/>
        </reference>
        <reference anchor="CONNECT-IP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky" initials="A." surname="Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="April" year="2023"/>
            <abstract>
              <t>This document describes how to proxy IP packets in HTTP.  This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets.  More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy.  This document updates RFC 9298.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-13"/>
        </reference>
      </references>
    </references>
    <?line 235?>

<section anchor="example">
      <name>Example</name>
      <t>In the example below, the client is configured with URI Template
"https://example.org/.well-known/masque/udp/{target_host}/{target_port}/" and
wishes to use WebRTC with another browser over a Bound UDP Proxying tunnel.
It contacts a STUN server at 192.0.2.42. The STUN server, in response, sends the
proxy's IP address to the other browser at 203.0.113.33. Using this information,
the other browser sends a UDP packet to the proxy, which is proxied over HTTP
back to the client.</t>
      <artwork type="ascii-art"><![CDATA[
 Client                                             Server

 STREAM(44): HEADERS            -------->
   :method = CONNECT
   :protocol = connect-udp
   :scheme = https
   :path = /.well-known/masque/udp/*/*/
   :authority = proxy.example.org
   connect-udp-bind = 2
   capsule-protocol = ?1

 DATAGRAM                       -------->
   Quarter Stream ID = 11
   Context ID = 2
   IP Version = 4
   IP Address = 192.0.2.42
   UDP Port = 1234
   UDP Payload = Encapsulated UDP Payload

            <--------  STREAM(44): HEADERS
                         :status = 200
                         capsule-protocol = ?1

/* Wait for STUN server to respond to UDP packet. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 192.0.2.42
                         UDP Port = 1234
                         UDP Payload = Encapsulated UDP Payload

/* Wait for the STUN server to send the proxy's IP and */
/* port to the other browser and for the other browser */
/* to send a UDP packet to the proxy. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 203.0.113.33
                         UDP Port = 4321
                         UDP Payload = Encapsulated UDP Payload
]]></artwork>
    </section>
    <section anchor="comparison-with-connect-ip">
      <name>Comparison with CONNECT-IP</name>
      <t>While the use-cases described in <xref target="intro"/> could be supported using IP Proxying
in HTTP <xref target="CONNECT-IP"/>, it would require that every
HTTP Datagram carries a complete IP header. This would lead to both
inefficiencies in the wire encoding and reduction in available Maximum
Transmission Unit (MTU). Furthermore, Web browsers would need to support IPv4
and IPv6 header generation, parsing, validation and error handling.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This proposal is the result of many conversations with MASQUE working group
participants.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
mj9n5O8dqd+SQ5YrQHTg7/8FDGZDWeIpAAA=

-->

</rfc>
