<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.17 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-huitema-quic-ts-05" category="exp">

  <front>
    <title abbrev="QUIC-TS">Quic Timestamps For Measuring One-Way Delays</title>

    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <postal>
          <street>427 Golfcourse Rd</street>
          <city>Friday Harbor</city>
          <code>WA 98250</code>
          <country>U.S.A</country>
        </postal>
        <email>huitema@huitema.net</email>
      </address>
    </author>

    <date year="2021"/>

    <area>Transport</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The TIMESTAMP frame can be added to Quic packets when one way delay measurements
are useful. The timestamp is set to the number of microseconds from the
beginning of the node's epoch to the time at which the packet is sent. The draft
defines the "enable_timestamp" transport parameter for negotiating the
use of this extension frame, and the TIMESTAMP frame.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The QUIC Transport Protocol <xref target="I-D.ietf-quic-transport"/> provides a
secure, multiplexed connection for transmitting reliable streams of
application data. The algorithms for QUIC Loss Detection and Congestion Control
<xref target="I-D.ietf-quic-recovery"/> use measurement of Round Trip Time (RTT) to
determine when packets should be retransmitted. RTT measurements are useful,
but there are however many cases in which more precise One-Way Delay (1WD)
measurements enable more efficient Loss Detection and Congestion Control.</t>

<t>An example would be the Low Extra Delay Background
Transport (LEDBAT) <xref target="RFC6817"/> which uses variations in transmission
delay to detect competition for transmission resource. Experience shows
that while LEDBAT may be implemented using RTT measurements, it is 
somewhat inefficient because it will cause unnecessary slowdowns in
case of queues or delayed ACKs on the return path. Using 1WD solves
these issues. Similar argument can be made for most delay-based algorithms.</t>

<t>We propose to enable one way delay measurements in QUIC by defining
a TIMESTAMP frame carrying the time at which a packet is sent. The use of this
extension frame is negotiated with a transport parameter,
"enable_timestamp". When the extension is negotiated by
both parties, this frame can be used in conjunction with other
such as ACK to measure one way delays.</t>

<section anchor="terms-and-definitions" title="Terms and Definitions">

<t>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>

</section>
</section>
<section anchor="specification" title="Specification">

<t>The enable_timestamp transport parameter used for negotiating the use
of the extension frame
is defined in <xref target="negotiation"/>. The timestamp frame format is defined
in <xref target="TIMESTAMP-format"/>.</t>

<section anchor="negotiation" title="Negotiation">

<t>The use of the timestamp frame extension is negotiated using a transport
parameter:</t>

<t><list style="symbols">
  <t>enable_timestamp (TBD)</t>
</list></t>

<t>The enable timestamp transport parameter is included if the endpoint
wants to receive or accepts to send timestamp frames for this connection. 
This parameter is encoded as a variable integer as specified in
section 16 of <xref target="I-D.ietf-quic-transport"/>. It
can take one of the following three values:</t>

<t><list style="numbers">
  <t>I would like to receive TIMESTAMP frames</t>
  <t>I am able to generate TIMESTAMP frames</t>
  <t>I am able to generate TIMESTAMP frames and I would like to receive them</t>
</list></t>

<t>Peers receiving another value SHOULD terminate the connection with a TRANSPORT
PARAMETER error.</t>

<t>A peer that advertises its capability of sending TIMESTAMP frames using
option values 2 or 3 MUST NOT send these frames if the other
peer does not announce advertise its desire to receive them by
sending the enable_timestamp TP with option 1 or 3. This condition is
described as "successful sending negotiation" in <xref target="sending"/>.</t>

<t>Peers that receive TIMESTAMP frames when they have not advertised
their desire to receive them MAY terminate the connection with a PROTOCOL
VIOLATION error.</t>

<section anchor="zero-rtt-and-timestamp-option" title="Zero RTT and Timestamp Option">

<t>Implementations MUST NOT remember the value of the enable_timestamp
parameter and try to use it when attempting 0-RTT on subsequent connections.
This rules is in line with the suggestions in section 7.4.2 of <xref target="I-D.ietf-quic-transport"/>
to adopt conservative defaults and avoid compatibility issues. It is also
consistent with the specification to only use TIMESTAMP frames in 1RTT packets,
see <xref target="sending"/>.</t>

</section>
</section>
<section anchor="sending" title="Sending TIMESTAMP frames">

<t>Following successful sending negotiation, a peer SHOULD add a timestamp frame to
1RTT packets carrying an ACK frame. This specification does not
impose a placement of TIMESTAMP frames in the packet. They MAY be sent
either before or after the ACK frame.</t>

<t>Implementations SHOULD NOT send more than one TIMESTAMP frame per
packet, but they MAY send more than one in rare circumstances. When
multiple TIMESTAMP frames are present in a packet, the receiver
retains the frame indicating the largest timestamp.</t>

<t>Implementations MUST NOT send
the TIMESTAMP frame in Initial, 0-RTT or Handshake packets, because
there is a risk that the peer will receive such packets before the
negotiation completes. This restriction may appear excessive because
some Handshake packets are typically sent after the negotiation
completes, but restricting TIMESTAMP frames to 1RTT packets is
simpler and less error prone than allowing the
TIMESTAMP frame in just a fraction of Handshake packets.</t>

</section>
<section anchor="TIMESTAMP-format" title="TIMESTAMP frame format">

<t>TIMESTAMP frames are identified by the frame
type:</t>

<t><list style="symbols">
  <t>TIMESTAMP (TBD)</t>
</list></t>

<t>TIMESTAMP frames carry a single parameter, the timestamp.</t>

<figure title="TIMESTAMP Frame Format with Timestamp" anchor="ack-format"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Timestamp (i)                      ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The timestamp encodes the number of microseconds since the beginning
of the epoch, as measured by the peer at the time at which the packet
is sent. It is encoded using the exponent selected by the peer
in the ack_delay_exponent. The exponent reduced timestamp is encoded 
as a variable length integer.</t>

<t>TIMESTAMP frames are not ack-eliciting. Their loss does not
require retransmission.</t>

<t>For congestion control, TIMESTAMP frames are treated like ACK frames. 
Section 7 of <xref target="I-D.ietf-quic-recovery"/> specifies that 
"packets containing only ACK frames do not count towards bytes in flight and are not congestion controlled".
The same applies to packets containing only TIMESTAMP frames, or a combination of ACK frames and
TIMESTAMP frames.</t>

</section>
<section anchor="rtt-measurements" title="RTT Measurements">

<t>RTT measurements are performed as specified in Section 4 of
<xref target="I-D.ietf-quic-recovery"/>, without reference to the Timestamp
parameter of the Timestamped ACK frames.</t>

</section>
<section anchor="choice-of-epoch" title="Choice of Epoch">

<t>Each peer can chose its epoch as it sees fit, but it MUST remain constant for
the duration of the connection, and the resulting timestamps MUST be
positive integers. Plausible values for the epoch could be:</t>

<t><list style="symbols">
  <t>the beginning of the connection, i.e., the time at which the first
packet for that connection was sent or received.</t>
  <t>the time at which the first timestamp is sent.</t>
</list></t>

<t>Chosing values close to the beginning of the connection ensures that the
timestamps value will be at most equal to the duration of the connection,
which limits the amount of bytes required to encode the timestamps.</t>

</section>
<section anchor="one-way-delay-measurements" title="One-Way Delay Measurements">

<t>An endpoint generates a One Way Delay Sample on receiving a
packet containing both a TIMESTAMP frame and an ACK frame that
meets the following two conditions:</t>

<t><list style="symbols">
  <t>the largest acknowledged packet number is newly acknowledged, and</t>
  <t>at least one of the newly acknowledged packets was ack-eliciting.</t>
</list></t>

<t>The One Way Delay sample, latest_1wd, is generated as the time elapsed since
the largest acknowledged packet was sent, corrected for the difference
between local time at the sending peer and connection time at the
receiving peer, phase_shift.</t>

<t>latest_1wd = timestamp - send_time_of_largest_acked - phase_shift</t>

<t>By convention, the phase_shift is estimated upon reception of the first
RTT sample, first_rtt. It is set to:</t>

<t>phase_shift = timestamp - send_time_of_largest_acked - latest_rtt/2</t>

<t>In that formula, we assume that the local time are measured in
microseconds since the beginning of the connection.
The formula does not depend on the choice of epoch by each peer, but
simply of the hypothesis that delays on the data path and the return
path are about equal.</t>

<t>We understand that clocks may drift over time, and that simply
estimating a phase shift at the beginning of a connection may be
too simplistic for long duration connections. Implementations
MAY adopt different strategies to reestimate the phase shift
at appropriate intervals. Specifying these strategies is beyond
the scope of this document.</t>

</section>
</section>
<section anchor="discussion" title="Discussion">

<t>This document replaces an earlier proposal to modify the format
of the ACK frame by including a timestamp inside the modified
frame. The revised proposal encodes the timestamp independently
of the ACK frame, which requires slightly more overhead to
encode the type of the TIMESTAMP frame.</t>

<t>Defining an independent frame allows for more flexibility. This
draft defines the combination of TIMESTAMP with ACK frames, but
they could be combined with other frames as well. For example,
adding a TIMESTAMP to packets carrying a Path Response could
allow measuring one way delays before deciding
to migrate to a new path.</t>

<section anchor="management-of-time" title="Management of Time">

<t>There are two known issues with deducing one way delays from RTT
measurements: clock drift and undefined phase difference.</t>

<t>The phase difference problem is easy to understand. We start from a list
of measurements associating the send time of packet number x (s[x]), the
receive time of the acknowledgement of packet (a[x]), and the timestamp
indicating when packet x was received by the peer (p[x]). The peer's
timestamp are expressed in the peer's clock.</t>

<t>Suppose that we model the peer's clock as local time plus phase
difference f, and that we model the rtt as the sum of two one way
delays, up (u[x]) and down (d[x]). We get:</t>

<figure><artwork><![CDATA[
    u[x] = p[x] + f - s[x]

    d[x] = a[x] - p[x] - f
]]></artwork></figure>

<t>Just looking at the equation shows that the value of f cannot be
determined from the a series of measurement (s[x], a[x], p[x]). You can
just add constraints that all u[x] and d[x] are positive numbers, which
gives a range of plausible values for f:   max(s[x] - p[x]) &lt; f &lt;
min(a[x]-p[x]). In case you wonder, you get similar formulations in a
multipath scenario. The plausible range may narrow to the min rtt of the
shortest path, but no further.</t>

<t>The phase difference uncertainty is not a big issue in practice, because
control algorithms are much more interested in the variations of the
delays than by their absolute values. Suppose we want to compare one way
delays at measurement (x) and (y). We get:</t>

<figure><artwork><![CDATA[
    u[x] = p[x] + f - s[x]

    u[y] = p[y] + f - s[y]

    u[x] - u[y] = p[x] - p[y] - s[x] + s[y]
]]></artwork></figure>

<t>The phase difference does not affect the measurement of variations in the
one way delay.</t>

<t>The clock drift is another matter. All the equations above assume that
the local clock and the remote clock have the same frequency. This is an
approximation. Clocks drift over time. Instead of just considering a
stable phase difference, one should consider the sum of a phase
difference and a time-varying drift component. Estimating drift is a
complex problem. This was studied in detail in the development of the
Network Time Protocol (NTP) <xref target="RFC5905"/>. In theory, implementations of
Quic could copy the algorithms of NTP to build a model of the clocks
used by the local node and the peer. That would be very complex.</t>

<t>Fortunately, implementations of Quic no not need to implement something as
complex as NTP. Most time based algorithms are only interested in
variations of delays over a short horizon. Clock drift happens at a slow
pace, maybe 1 millisecond per minute. Time base congestion control
algorithms already have to cope with the potential drift of the minimum RTT
due to changing network conditions. They do that by periodically restarting
the measurement of the minimum RTT after some delay, typically less than a
minute. A simple implementation of one way delay measurements could
follow the same approach, for example resetting the phase difference
every 30 seconds or so.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>The Timestamp value in the TIMESTAMP frame is asserted by the sender
of the packet. Adversarial peers could chose values of the timestamp
designed to exercise side effects in congestion control algorithms
or other algorithms relying on the one-way delays. This can be
mitigated by running plausibility checks on the received values.
For example, each peer can maintain statistics not just on the
One Way Delays, but also on the differences between One Way Delays
and RTT, and detect outlier values. Peers can also compare the 
differences between timestamps in packets carrying acknowledgements and
the differences between the sending times of corresponding packets,
and detect anomalies if the delays between acknowledging packets appears
shorter than the delays when sending them.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document registers a new value in the QUIC Transport Parameter
Registry:</t>

<t>Value:  TBD (using value 0x7158 in early deployments)</t>

<t>Parameter Name:  enable_timestamp</t>

<t>Specification:  Indicates that the connection should use TimeStamped ACK frames</t>

<t>This document also registers a new value in the QUIC Frame Type registry:</t>

<t>Value:  TBD (using value 757 in early deployments)</t>

<t>Frame Name:  TIMESTAMP</t>

<t>Specification:  Timestamp set at the time packet was sent</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Thanks to Dmitri Tikhonov, Tal Misrahi, Watson Ladd, Martin Thomson and Ian Swett
for their reviews and suggestions.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor="I-D.ietf-quic-transport">
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>

<author initials='J' surname='Iyengar' fullname='Jana Iyengar'>
    <organization />
</author>

<author initials='M' surname='Thomson' fullname='Martin Thomson'>
    <organization />
</author>

<date month='January' day='14' 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.  DO NOT DEPLOY THIS VERSION OF QUIC  DO NOT DEPLOY THIS VERSION OF QUIC UNTIL IT IS IN AN RFC.  This version is still a work in progress.  For trial deployments, please use earlier versions.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org (mailto:quic@ietf.org)), which is archived at https://mailarchive.ietf.org/arch/search/?email_list=quic  Working Group information can be found at https://github.com/quicwg; source code and issues list for this draft can be found at https://github.com/quicwg/base-drafts/labels/-transport.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-quic-transport-34' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-transport-34.txt' />
</reference>



<reference anchor="I-D.ietf-quic-recovery">
<front>
<title>QUIC Loss Detection and Congestion Control</title>

<author initials='J' surname='Iyengar' fullname='Jana Iyengar'>
    <organization />
</author>

<author initials='I' surname='Swett' fullname='Ian Swett'>
    <organization />
</author>

<date month='January' day='14' year='2021' />

<abstract><t>This document describes loss detection and congestion control mechanisms for QUIC.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org (mailto:quic@ietf.org)), which is archived at https://mailarchive.ietf.org/arch/ search/?email_list=quic.  Working Group information can be found at https://github.com/quicwg; source code and issues list for this draft can be found at https://github.com/quicwg/base-drafts/labels/-recovery.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-quic-recovery-34' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-recovery-34.txt' />
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC6817" target='https://www.rfc-editor.org/info/rfc6817'>
<front>
<title>Low Extra Delay Background Transport (LEDBAT)</title>
<author initials='S.' surname='Shalunov' fullname='S. Shalunov'><organization /></author>
<author initials='G.' surname='Hazel' fullname='G. Hazel'><organization /></author>
<author initials='J.' surname='Iyengar' fullname='J. Iyengar'><organization /></author>
<author initials='M.' surname='Kuehlewind' fullname='M. Kuehlewind'><organization /></author>
<date year='2012' month='December' />
<abstract><t>Low Extra Delay Background Transport (LEDBAT) is an experimental delay-based congestion control algorithm that seeks to utilize the available bandwidth on an end-to-end path while limiting the consequent increase in queueing delay on that path.  LEDBAT uses changes in one-way delay measurements to limit congestion that the flow itself induces in the network.  LEDBAT is designed for use by background bulk-transfer applications to be no more aggressive than standard TCP congestion control (as specified in RFC 5681) and to yield in the presence of competing flows, thus limiting interference with the network performance of competing flows.  This document defines  an Experimental Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='6817'/>
<seriesInfo name='DOI' value='10.17487/RFC6817'/>
</reference>



<reference  anchor="RFC5905" target='https://www.rfc-editor.org/info/rfc5905'>
<front>
<title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
<author initials='D.' surname='Mills' fullname='D. Mills'><organization /></author>
<author initials='J.' surname='Martin' fullname='J. Martin' role='editor'><organization /></author>
<author initials='J.' surname='Burbank' fullname='J. Burbank'><organization /></author>
<author initials='W.' surname='Kasch' fullname='W. Kasch'><organization /></author>
<date year='2010' month='June' />
<abstract><t>The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet.  This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family.  NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs.  It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required.  It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5905'/>
<seriesInfo name='DOI' value='10.17487/RFC5905'/>
</reference>




    </references>




  </back>

<!-- ##markdown-source:
H4sIABKnUmAAC61ba3McN3b9jl+BUB+Wzs5MSFqybNZuJRRJrZmIIkPSq9p4
XSpMN4aDZU+jF+jmcKLIvz3n3ot+zIOStxK6yhz2NID7PPcFjcdjVbu6sMf6
PxuX6Tu3sLE2iyrqtz7oS2tiE1x5r69KO/5gVvrMFmYVlZlOg33Eop8uTsd3
tyr3WWkW2CUPZlaP542r7cKM/449x3UcH7xSmantvQ+rY22fKpXjr2N9dHB0
qBTOK/OPpvAlHq1sVMpV4VjXoYn10cHBDwdHygRrjvVdMGWsfKjVw/JYX5S1
DaWtx2d0pFKZz0HosW7i2MTMOVW5Y/1z7bORjlgT7Czi02ohHzK/WNiyjr8o
ZZp67sOx0vwzTr+1dmU81qcT/aMw0z0XRk/nwcXamXLrex9AxXVwj+BRX2W1
r5oIarNJ90YENbY+1i+PXus/+WKW+SZEq2/y7o3M1ZDU2+ByyPxHE6Y+9N/5
HOd/ONE/fH/06mDwuClrku9Pk9vJSfcYlLniWCeN/Fv6PYHglBqPx9pMQY3J
8Nfd3Oq7i8vz27uTy2s9C2BTZ+BvarXJc5vr2ouRVCZ7sHXUy7ktNbSmlyAy
J8PQCzYYy6IlrUEbdtYUE02b161xaRd1tDVtWON52SymNmg/0wuXBR9t5ss8
ggK/oO/V1N67siQrxCu8ABL4XdS28tm83YQ216YGUY4e4omQKWeVtZDA5qly
O3OljfzWni3NtLAfO+L2YHnJzrAFSQF2pmfwhhIGDI3XRAnRBd6EIhxhn2pb
RudLEdxIw6Z5/w2JTkTqC5fnhVXqBZlx8HmT1VgrOiCf6m0dluRhxL7Qnz79
08X4bOJsPUuO1b7z+bOugn90OXgyCvKDCkZ60RS1qwr7BNVBoqXlM5gTXrlw
NbMSbOFIBGyWZhHBkzJVVTi4LC2ArxqRningwa6e4x3ahQl952MEKtRpd2L7
1Jf3kCX9iY9gr1BbtAco+dGGFUgnMQ7shkR6A1vOIQNXMSLp/Zu7u2+gaWgO
ylg4sjkyvtYS49w3RU6WGmzHm80nGuvWbFL3NjlS06YmFeEJPZ37pQVFemHK
Few+QpauTOa08HihAs0OtK5Bod4//HD2jVo7QyxKFtnZzGWO2PpNgoJ5nJQw
Jtghdli2XJEhvfNLff4E7tLBb8D7fSBBqd5Y9t+dn705gaw+ffrXm7en331/
+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
wQ0zuoalmBf+Tf/WZgpSVf/zv0BwXP3zNgAA

-->

</rfc>

