<?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.29 (Ruby 3.4.4) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="pre5378Trust200902" docName="draft-ietf-tls-rfc9147bis-01" category="std" consensus="true" obsoletes="9147" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="DTLS 1.3">The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc9147bis-01"/>
    <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
      <organization>Independent</organization>
      <address>
        <email>ekr@rtfm.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="N." surname="Modadugu" fullname="Nagendra Modadugu">
      <organization>Google, Inc.</organization>
      <address>
        <email>nagendra@cs.stanford.edu</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 84?>

<t>This document specifies version 1.3 of the Datagram Transport Layer Security
(DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the
Internet in a way that is designed to prevent eavesdropping, tampering, and message
forgery.</t>
      <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS)
1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
      <t>This document obsoletes RFC 6347.</t>
    </abstract>
  </front>
  <middle>
    <?line 96?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The primary goal of the TLS protocol is to establish an authenticated,
confidentiality- and integrity-protected channel between two communicating peers.
The TLS protocol is composed of two layers:
the TLS record protocol and the TLS handshake protocol. However, TLS must
run over a reliable transport channel -- typically TCP <xref target="RFC0793"/>.</t>
      <t>There are applications that use UDP <xref target="RFC0768"/> as a transport and
the Datagram Transport Layer Security (DTLS) protocol has been developed
to offer communication security protection for those applications.
DTLS is deliberately designed to be
as similar to TLS as possible, both to minimize new security invention and to
maximize the amount of code and infrastructure reuse.</t>
      <t>DTLS 1.0 <xref target="RFC4347"/> was originally defined as a delta from TLS 1.1 <xref target="RFC4346"/>, and
DTLS 1.2 <xref target="RFC6347"/> was defined as a series of deltas to TLS 1.2 <xref target="RFC5246"/>.  There
is no DTLS 1.1; that version number was skipped in order to harmonize version numbers
with TLS.  This specification describes the most current version of the DTLS protocol
as a delta from TLS 1.3 <xref target="TLS13"/>. It obsoletes DTLS 1.2.</t>
      <t>Implementations that speak both DTLS 1.2 and DTLS 1.3 can interoperate with those
that speak only DTLS 1.2 (using DTLS 1.2 of course), just as TLS 1.3 implementations
can interoperate with TLS 1.2 (see Appendix D of <xref target="TLS13"/> for details).
While backwards compatibility with DTLS 1.0 is possible, the use of DTLS 1.0 is not
recommended, as explained in Section 3.1.2 of <xref target="RFC7525"/>.
<xref target="DEPRECATE"/> forbids the use of DTLS 1.0.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "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>
      <t>The following terms are used:</t>
      <ul spacing="normal">
        <li>
          <t>client: The endpoint initiating the DTLS connection.</t>
        </li>
        <li>
          <t>association: Shared state between two endpoints established with
a DTLS handshake.</t>
        </li>
        <li>
          <t>connection: Synonym for association.</t>
        </li>
        <li>
          <t>endpoint: Either the client or server of the connection.</t>
        </li>
        <li>
          <t>epoch: one set of cryptographic keys used for encryption and decryption.</t>
        </li>
        <li>
          <t>handshake: An initial negotiation between client and server that establishes
the parameters of the connection.</t>
        </li>
        <li>
          <t>peer: An endpoint. When discussing a particular endpoint, "peer" refers to
the endpoint that is remote to the primary subject of discussion.</t>
        </li>
        <li>
          <t>receiver: An endpoint that is receiving records.</t>
        </li>
        <li>
          <t>sender: An endpoint that is transmitting records.</t>
        </li>
        <li>
          <t>server: The endpoint which did not initiate the DTLS connection.</t>
        </li>
        <li>
          <t>CID: Connection ID</t>
        </li>
        <li>
          <t>MSL: Maximum Segment Lifetime</t>
        </li>
      </ul>
      <t>The reader is assumed to be familiar with <xref target="TLS13"/>.
As in TLS 1.3, the HelloRetryRequest has the same format as a ServerHello
message, but for convenience we use the term HelloRetryRequest throughout
this document as if it were a distinct message.</t>
      <t>DTLS 1.3 uses network byte order (big-endian) format for encoding messages
based on the encoding format defined in <xref target="TLS13"/> and earlier (D)TLS specifications.</t>
      <t>The reader is also assumed to be familiar with <xref target="RFC9146"/>
as this document applies the CID functionality to DTLS 1.3.</t>
      <t>Figures in this document illustrate various combinations of the DTLS protocol exchanges, and the symbols have the following meaning:</t>
      <ul spacing="normal">
        <li>
          <t>'+'  indicates noteworthy extensions sent in the previously noted message.</t>
        </li>
        <li>
          <t>'*'  indicates optional or situation-dependent messages/extensions that are not always sent.</t>
        </li>
        <li>
          <t>'{}' indicates messages protected using keys derived from a [sender]_handshake_traffic_secret.</t>
        </li>
        <li>
          <t>'[]' indicates messages protected using keys derived from traffic_secret_N.</t>
        </li>
      </ul>
    </section>
    <section anchor="dtls-rational">
      <name>DTLS Design Rationale and Overview</name>
      <t>The basic design philosophy of DTLS is to construct "TLS over datagram transport".
Datagram transport neither requires nor provides reliable or in-order delivery of data.
The DTLS protocol preserves this property for application data.
Applications such as media streaming, Internet telephony, and online gaming use
datagram transport for communication due to the delay-sensitive nature
of transported data.  The behavior of such applications is unchanged when the
DTLS protocol is used to secure communication, since the DTLS protocol
does not compensate for lost or reordered data traffic. Note that while
low-latency streaming and gaming use DTLS to protect data (e.g., for
protection of a WebRTC data channel), telephony utilizes DTLS for
key establishment and the Secure Real-time Transport Protocol (SRTP) for
protection of data <xref target="RFC5763"/>.</t>
      <t>TLS cannot be used directly over datagram transports for the following four reasons:</t>
      <ol spacing="normal" type="1"><li>
          <t>TLS relies on an implicit sequence number on records.  If a record is not
received, then the recipient will use the wrong sequence number when
attempting to remove record protection from subsequent records. DTLS solves
this problem by adding sequence numbers to records.</t>
        </li>
        <li>
          <t>The TLS handshake is a lock-step cryptographic protocol.  Messages
must be transmitted and received in a defined order; any other
order is an error.  The DTLS handshake includes message sequence
numbers to enable fragmented message reassembly and in-order
delivery in case datagrams are lost or reordered.</t>
        </li>
        <li>
          <t>Handshake messages are potentially larger than can be contained in a single
datagram.  DTLS adds fields to handshake messages to support fragmentation
and reassembly.</t>
        </li>
        <li>
          <t>Datagram transport protocols are susceptible to abusive behavior
effecting denial-of-service (DoS) attacks against nonparticipants.  DTLS adds a
return-routability check and DTLS 1.3 uses the TLS 1.3 HelloRetryRequest message
(see <xref target="dos"/> for details).</t>
        </li>
      </ol>
      <section anchor="packet-loss">
        <name>Packet Loss</name>
        <t>DTLS uses a simple retransmission timer to handle packet loss.
<xref target="dtls-retransmission"/> demonstrates the basic concept, using the first
phase of the DTLS handshake:</t>
        <figure anchor="dtls-retransmission">
          <name>DTLS Retransmission Example</name>
          <artwork><![CDATA[
         Client                                   Server
         ------                                   ------
         ClientHello           ------>

                                 X<-- HelloRetryRequest
                                                  (lost)

         [Timer Expires]

         ClientHello           ------>
         (retransmit)
]]></artwork>
        </figure>
        <t>Once the client has transmitted the ClientHello message, it expects
to see a HelloRetryRequest or a ServerHello from the server. However, if the
timer expires, the client knows that either the
ClientHello or the response from the server has been lost, which
causes the client
to retransmit the ClientHello. When the server receives the retransmission,
it knows to retransmit its HelloRetryRequest or ServerHello.</t>
        <t>The server also maintains a retransmission timer for messages it
sends (other than HelloRetryRequest) and retransmits when that timer expires. Not
applying retransmissions to the HelloRetryRequest avoids the need to
create state on the server.  The HelloRetryRequest is designed to be
small enough that it will not itself be fragmented, thus avoiding
concerns about interleaving multiple HelloRetryRequests.</t>
        <t>For more detail on timeouts and retransmission,
see <xref target="timeout-retransmissions"/>.</t>
      </section>
      <section anchor="reordering">
        <name>Reordering</name>
        <t>In DTLS, each handshake message is assigned a specific sequence
number.  When a peer receives a handshake
message, it can quickly determine whether that message is the next
message it expects.  If it is, then it processes it.  If not, it
queues it for future handling once all previous messages have been
received.</t>
      </section>
      <section anchor="fragmentation">
        <name>Fragmentation</name>
        <t>TLS and DTLS handshake messages can be quite large (in theory up to
2^24-1 bytes, in practice many kilobytes).  By contrast, UDP
datagrams are often limited to less than 1500 bytes if IP fragmentation is not
desired.  In order to compensate for this limitation, each DTLS
handshake message may be fragmented over several DTLS records, each
of which is intended to fit in a single UDP datagram
(see <xref target="pmtu-issues"/> for guidance). Each DTLS
handshake message contains both a fragment offset and a fragment
length.  Thus, a recipient in possession of all bytes of a handshake
message can reassemble the original unfragmented message.</t>
      </section>
      <section anchor="replay-detection">
        <name>Replay Detection</name>
        <t>DTLS optionally supports record replay detection.  The technique used
is the same as in IPsec AH/ESP, by maintaining a bitmap window of
received records.  Records that are too old to fit in the window and
records that have previously been received are silently discarded.
The replay detection feature is optional, since packet duplication is
not always malicious but can also occur due to routing errors.
Applications may conceivably detect duplicate packets and accordingly
modify their data transmission strategy.</t>
      </section>
    </section>
    <section anchor="the-dtls-record-layer">
      <name>The DTLS Record Layer</name>
      <t>The DTLS 1.3 record layer is different from the TLS 1.3 record layer and
also different from the DTLS 1.2 record layer.</t>
      <ol spacing="normal" type="1"><li>
          <t>The DTLSCiphertext structure omits the superfluous version number and
type fields.</t>
        </li>
        <li>
          <t>DTLS adds an epoch and sequence number to the TLS record header.
This sequence number allows the recipient to correctly decrypt and verify DTLS records.
However, the number of bits used for the epoch and sequence number fields in
the DTLSCiphertext structure has been reduced from those in previous
versions.</t>
        </li>
        <li>
          <t>The DTLS epoch serialized in DTLSPlaintext is 2 octets long for compatibility
with DTLS 1.2. However, this value is set as the least significant 2 octets
of the connection epoch, which is an 8 octet counter incremented on every
KeyUpdate. See <xref target="seq-and-epoch"/> for details. The sequence number is set to
be the low order 48 bits of the 64 bit sequence number. Plaintext records
MUST NOT be sent with sequence numbers that would exceed 2^48-1, so the
upper 16 bits will always be 0.</t>
        </li>
        <li>
          <t>The DTLSCiphertext structure has a variable-length header.</t>
        </li>
      </ol>
      <t>DTLSPlaintext records are used to send unprotected records and DTLSCiphertext
records are used to send protected records.</t>
      <t>The DTLS record formats are shown below. Unless explicitly stated the
meaning of the fields is unchanged from previous TLS/DTLS versions.</t>
      <figure anchor="dtls-record">
        <name>DTLS 1.3 Record Formats</name>
        <artwork><![CDATA[
    struct {
        ContentType type;
        ProtocolVersion legacy_record_version;
        uint16 epoch = 0
        uint48 sequence_number;
        uint16 length;
        opaque fragment[DTLSPlaintext.length];
    } DTLSPlaintext;

    struct {
         opaque content[DTLSPlaintext.length];
         ContentType type;
         uint8 zeros[length_of_padding];
    } DTLSInnerPlaintext;

    struct {
        opaque unified_hdr[variable];
        opaque encrypted_record[length];
    } DTLSCiphertext;
]]></artwork>
      </figure>
      <dl>
        <dt>legacy_record_version:</dt>
        <dd>
          <t>This value MUST be set to {254, 253} for all records other
than the initial ClientHello (i.e., one not generated after a HelloRetryRequest),
where it may also be {254, 255} for compatibility purposes.
It MUST be ignored for all purposes. See <xref target="TLS13"/>, Appendix D.1
for the rationale for this.</t>
        </dd>
        <dt>epoch:</dt>
        <dd>
          <t>The least significant 2 bytes of the connection epoch value.</t>
        </dd>
        <dt>unified_hdr:</dt>
        <dd>
          <t>The unified header (unified_hdr) is a structure of variable length, shown in <xref target="cid_hdr"/>.</t>
        </dd>
        <dt>encrypted_record:</dt>
        <dd>
          <t>The encrypted form of the serialized DTLSInnerPlaintext structure.</t>
        </dd>
      </dl>
      <figure anchor="cid_hdr">
        <name>DTLS 1.3 Unified Header</name>
        <artwork><![CDATA[
    0 1 2 3 4 5 6 7
    +-+-+-+-+-+-+-+-+
    |0|0|1|C|S|L|E E|
    +-+-+-+-+-+-+-+-+
    | Connection ID |   Legend:
    | (if any,      |
    /  length as    /   C   - Connection ID (CID) present
    |  negotiated)  |   S   - Sequence number length
    +-+-+-+-+-+-+-+-+   L   - Length present
    |  8 or 16 bit  |   E   - Epoch
    |Sequence Number|
    +-+-+-+-+-+-+-+-+
    | 16 bit Length |
    | (if present)  |
    +-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <dl>
        <dt>Fixed Bits:</dt>
        <dd>
          <t>The three high bits of the first byte of the unified header are set to
001. This ensures that the value will fit within the DTLS region when
multiplexing is performed as described in <xref target="RFC7983"/>. It also ensures
that distinguishing encrypted DTLS 1.3 records from encrypted DTLS 1.2
records is possible when they are carried on the same host/port quartet;
such multiplexing is only possible when CIDs <xref target="RFC9146"/>
are in use, in which case DTLS 1.2 records will have the content type tls12_cid (25).</t>
        </dd>
        <dt>C:</dt>
        <dd>
          <t>The C bit (0x10) is set if the Connection ID is present.</t>
        </dd>
        <dt>S:</dt>
        <dd>
          <t>The S bit (0x08) indicates the size of the sequence number.
0 means an 8-bit sequence number, 1 means 16-bit.
 Implementations MAY mix sequence numbers of different lengths
 on the same connection.</t>
        </dd>
        <dt>L:</dt>
        <dd>
          <t>The L bit (0x04) is set if the length is present.</t>
        </dd>
        <dt>E:</dt>
        <dd>
          <t>The two low bits (0x03) include the low-order two bits of the epoch.</t>
        </dd>
        <dt>Connection ID:</dt>
        <dd>
          <t>Variable-length CID. The CID functionality
is described in <xref target="RFC9146"/>. An example
can be found in <xref target="connection-id-example"/>.</t>
        </dd>
        <dt>Sequence Number:</dt>
        <dd>
          <t>The low-order 8 or 16 bits of the record sequence number.  This value is 16
bits if the S bit is set to 1, and 8 bits if the S bit is 0.</t>
        </dd>
        <dt>Length:</dt>
        <dd>
          <t>Identical to the length field in a TLS 1.3 record.</t>
        </dd>
      </dl>
      <t>As with previous versions of DTLS, multiple DTLSPlaintext
and DTLSCiphertext records can be included in the same
underlying transport datagram.</t>
      <t><xref target="hdr_examples"/> illustrates different record headers.</t>
      <figure anchor="hdr_examples">
        <name>DTLS 1.3 Header Examples</name>
        <artwork><![CDATA[
 0 1 2 3 4 5 6 7       0 1 2 3 4 5 6 7       0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
| Content Type  |     |0|0|1|1|1|1|E E|     |0|0|1|0|0|0|E E|
+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
|   16 bit      |     |               |     |8 bit Seq. No. |
|   Version     |     / Connection ID /     +-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+     |               |     |               |
|   16 bit      |     +-+-+-+-+-+-+-+-+     |   Encrypted   |
|    Epoch      |     |    16 bit     |     /   Record      /
+-+-+-+-+-+-+-+-+     |Sequence Number|     |               |
|               |     +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
|               |     |   16 bit      |
|   48 bit      |     |   Length      |       DTLSCiphertext
|Sequence Number|     +-+-+-+-+-+-+-+-+         Structure
|               |     |               |         (minimal)
|               |     |  Encrypted    |
+-+-+-+-+-+-+-+-+     /  Record       /
|    16 bit     |     |               |
|    Length     |     +-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+
|               |      DTLSCiphertext
|               |        Structure
/   Fragment    /          (full)
|               |
+-+-+-+-+-+-+-+-+

 DTLSPlaintext
   Structure
]]></artwork>
      </figure>
      <t>The length field MAY be omitted by clearing the L bit, which means that the
record consumes the entire rest of the datagram in the lower
level transport. In this case, it is not possible to have multiple
DTLSCiphertext format records without length fields in the same datagram.
Omitting the length field MUST only be used for the last record in a
datagram. Implementations MAY mix records with and without length
fields on the same connection.</t>
      <t>If a Connection ID is negotiated, then it MUST be contained in all
datagrams. Sending implementations MUST NOT mix records from multiple DTLS associations
in the same datagram. If the second or later record has a connection
ID which does not correspond to the same association used
for previous records, the rest of the datagram MUST be discarded.</t>
      <t>When expanded, the epoch and sequence number can be combined into an
unpacked RecordNumber structure, as shown below:</t>
      <artwork><![CDATA[
    struct {
        uint64 epoch;
        uint64 sequence_number;
    } RecordNumber;
]]></artwork>
      <t>This 128-bit value is used in the ACK message.
The entire header value shown in <xref target="hdr_examples"/> (but prior to record number
encryption; see <xref target="rne"/>) is used as the additional data value for the
AEAD
function. For instance, if the minimal variant is used,
the Associated Data (AD)
is 2 octets long. Note that this design is different from the additional data
calculation for DTLS 1.2 and for DTLS 1.2 with Connection IDs.
In DTLS 1.3 the 64-bit sequence_number is used as the sequence number for
the AEAD computation; unlike DTLS 1.2, the epoch is not included.</t>
      <section anchor="demultiplexing-dtls-records">
        <name>Demultiplexing DTLS Records</name>
        <t>DTLS 1.3's header format is more complicated to demux than
DTLS 1.2, which always carried the content type as the first
byte. As described in <xref target="demux"/>, the first byte determines how an incoming
DTLS record is demultiplexed. The first 3 bits of the first byte
distinguish a DTLS 1.3 encrypted record from record types used in
previous DTLS versions and plaintext DTLS 1.3 record types. Hence, the
range 32 (0b0010 0000) to 63 (0b0011 1111) needs to be excluded
from future allocations by IANA to avoid problems while demultiplexing;
see <xref target="iana-considerations"/>.
Implementations can demultiplex DTLS 1.3 records
by examining the first byte as follows:</t>
        <ul spacing="normal">
          <li>
            <t>If the first byte is alert(21), handshake(22), or ack(26),
the record MUST be interpreted as a DTLSPlaintext record.</t>
          </li>
          <li>
            <t>If the first byte is any other value, then receivers
MUST check to see if the leading bits of the first byte are
001. If so, the implementation MUST process the record as
DTLSCiphertext; the true content type will be inside the
protected portion.</t>
          </li>
          <li>
            <t>Otherwise, the record MUST be rejected as if it had failed
deprotection, as described in <xref target="handling-invalid-records"/>.</t>
          </li>
        </ul>
        <t><xref target="demux"/> shows this demultiplexing procedure graphically,
taking DTLS 1.3 and earlier versions of DTLS into account.</t>
        <figure anchor="demux">
          <name>Demultiplexing DTLS 1.2 and DTLS 1.3 Records</name>
          <artwork><![CDATA[
             +----------------+
             | Outer Content  |
             |   Type (OCT)   |
             |                |
             |   OCT == 20   -+--> ChangeCipherSpec (DTLS <1.3)
             |   OCT == 21   -+--> Alert (Plaintext)
             |   OCT == 22   -+--> DTLSHandshake (Plaintext)
             |   OCT == 23   -+--> Application Data (DTLS <1.3)
             |   OCT == 24   -+--> Heartbeat (DTLS <1.3)
packet  -->  |   OCT == 25   -+--> DTLSCiphertext with CID (DTLS 1.2)
             |   OCT == 26   -+--> ACK (DTLS 1.3, Plaintext)
             |                |
             |                |   /+----------------+\
             | 31 < OCT < 64 -+--> |DTLSCiphertext  |
             |                |    |(header bits    |
             |      else      |    | start with 001)|
             |       |        |   /+-------+--------+\
             +-------+--------+            |
                     |                     |
                     v          Decryption |
               +---------+          +------+
               |  Reject |          |
               +---------+          v
                            +----------------+
                            | Decrypted      |
                            | Content Type   |
                            | (DCT)          |
                            |                |
                            |     DCT == 21 -+--> Alert
                            |     DCT == 22 -+--> DTLSHandshake
                            |     DCT == 23 -+--> Application Data
                            |     DCT == 24 -+--> Heartbeat
                            |     DCT == 26 -+--> ACK
                            |     else ------+--> Error
                            +----------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="seq-and-epoch">
        <name>Sequence Number and Epoch</name>
        <t>DTLS uses an explicit or partly explicit sequence number, rather than an implicit one,
carried in the sequence_number field of the record.  Sequence numbers
are maintained separately for each epoch, with each sequence_number
initially being 0 for each epoch.</t>
        <t>The epoch number is initially zero and is incremented each time
keying material changes and a sender aims to rekey. More details
are provided in <xref target="dtls-epoch"/>.</t>
        <section anchor="processing-guidelines">
          <name>Processing Guidelines</name>
          <t>Because DTLS records could be reordered, a record from epoch
M may be received after epoch N (where N &gt; M) has begun.
Implementations SHOULD discard records from earlier epochs but
MAY choose to
retain keying material from previous epochs for up to the default MSL
specified for TCP <xref target="RFC0793"/> to allow for packet reordering.  (Note that
the intention here is that implementers use the current guidance from
the IETF for MSL, as specified in <xref target="RFC0793"/> or successors,
not that they attempt to interrogate the MSL that
the system TCP stack is using.)</t>
          <t>Conversely, it is possible for records that are protected with the
new epoch to be received prior to the completion of a
handshake.  For instance, the server may send its Finished message
and then start transmitting data.  Implementations MAY either buffer
or discard such records, though when DTLS is used over reliable
transports (e.g., SCTP <xref target="RFC4960"/>), they SHOULD be buffered and
processed once the handshake completes.  Note that TLS's restrictions
on when records may be sent still apply, and the receiver treats the
records as if they were sent in the right order.</t>
          <t>Implementations MUST send retransmissions of lost messages using the same
epoch and keying material as the original transmission.</t>
          <t>Implementations MUST either abandon an association or rekey prior to
allowing the sequence number to wrap.</t>
          <t>Implementations MUST NOT allow the epoch to wrap, but instead MUST
establish a new association, terminating the old association.</t>
        </section>
        <section anchor="reconstructing">
          <name>Reconstructing the Sequence Number and Epoch</name>
          <t>When receiving protected DTLS records, the recipient does not
have a full epoch or sequence number value in the record and so there is some
opportunity for ambiguity.  Because the full sequence number
is used to compute the per-record nonce and the epoch determines
the keys, failure to reconstruct these
values leads to failure to deprotect the record, and so implementations
MAY use a mechanism of their choice to determine the full values.
This section provides an algorithm which is comparatively simple
and which implementations are RECOMMENDED to follow.</t>
          <t>If the epoch bits match those of the current epoch, then
implementations SHOULD reconstruct the sequence number by computing
the full sequence number which is numerically closest to one plus the
sequence number of the highest successfully deprotected record in the
current epoch.</t>
          <t>During the handshake phase, the epoch bits unambiguously indicate the
correct key to use. After the
handshake is complete, if the epoch bits do not match those from the
current epoch, implementations SHOULD use the most recent past epoch
which has matching bits, and then reconstruct the sequence number for
that epoch as described above.</t>
        </section>
        <section anchor="rne">
          <name>Record Number Encryption</name>
          <t>In DTLS 1.3, when records are encrypted, record sequence numbers are
also encrypted. The basic pattern is that the underlying encryption
algorithm used with the AEAD algorithm is used to generate a mask
which is then XORed with the sequence number.</t>
          <t>When the AEAD is based on AES, then the mask is generated by
computing AES-ECB on the first 16 bytes of the ciphertext:</t>
          <artwork><![CDATA[
  Mask = AES-ECB(sn_key, Ciphertext[0..15])
]]></artwork>
          <t>When the AEAD is based on ChaCha20, then the mask is generated
by treating the first 4 bytes of the ciphertext as the block
counter and the next 12 bytes as the nonce, passing them to the ChaCha20
block function (Section 2.3 of <xref target="CHACHA"/>):</t>
          <artwork><![CDATA[
  Mask = ChaCha20(sn_key, Ciphertext[0..3], Ciphertext[4..15])
]]></artwork>
          <t>The sn_key is computed as follows:</t>
          <artwork><![CDATA[
   [sender]_sn_key = HKDF-Expand-Label(Secret, "sn", "", key_length)
]]></artwork>
          <t>[sender] denotes the sending side. The per-epoch Secret value to be used is described
in Section 7.3 of <xref target="TLS13"/>. Note that a new key is used for each epoch:
because the epoch is sent in the clear, this does not result in ambiguity.</t>
          <t>The encrypted sequence number is computed by XORing the leading
bytes of the mask with the on-the-wire representation of the
sequence number. Decryption is accomplished by the same process.</t>
          <t>This procedure requires the ciphertext length to be at least 16 bytes. Receivers
MUST reject shorter records as if they had failed deprotection, as described in
<xref target="handling-invalid-records"/>. Senders MUST pad short plaintexts out (using the
conventional record padding mechanism) in order to make a suitable-length
ciphertext. Note that most of the DTLS AEAD algorithms have a 16 byte authentication
tag and need no padding. However, some algorithms, such as
TLS_AES_128_CCM_8_SHA256, have a shorter authentication tag and may require padding
for short inputs.</t>
          <t>Future cipher suites, which are not based on AES or ChaCha20, MUST define
their own record sequence number encryption in order to be used with
DTLS.</t>
          <t>Note that sequence number encryption is only applied to the DTLSCiphertext
structure and not to the DTLSPlaintext structure, even though it also contains a
sequence number.</t>
        </section>
      </section>
      <section anchor="transport-layer-mapping">
        <name>Transport Layer Mapping</name>
        <t>DTLS messages MAY be fragmented into multiple DTLS records.
Each DTLS record MUST fit within a single datagram.  In order to
avoid IP fragmentation, clients of the DTLS record layer SHOULD
attempt to size records so that they fit within any Path MTU (PMTU) estimates
obtained from the record layer. For more information about PMTU issues,
see <xref target="pmtu-issues"/>.</t>
        <t>Multiple DTLS records MAY be placed in a single datagram.  Records are encoded
consecutively.  The length field from DTLS records containing that field can be
used to determine the boundaries between records.  The final record in a
datagram can omit the length field.  The first byte of the datagram payload MUST
be the beginning of a record.  Records MUST NOT span datagrams.</t>
        <t>DTLS records without CIDs do not contain any association
identifiers, and applications must arrange to multiplex between associations.
With UDP, the host/port number is used to look up the appropriate security
association for incoming records without CIDs.</t>
        <t>Some transports, such as DCCP <xref target="RFC4340"/>, provide their own sequence
numbers.  When carried over those transports, both the DTLS and the
transport sequence numbers will be present.  Although this introduces
a small amount of inefficiency, the transport layer and DTLS sequence
numbers serve different purposes; therefore, for conceptual simplicity,
it is superior to use both sequence numbers.</t>
        <t>Some transports provide congestion control for traffic
carried over them.  If the congestion window is sufficiently narrow,
DTLS handshake retransmissions may be held rather than transmitted
immediately, potentially leading to timeouts and spurious
retransmission.  When DTLS is used over such transports, care should
be taken not to overrun the likely congestion window. <xref target="RFC5238"/>
defines a mapping of DTLS to DCCP that takes these issues into account.</t>
      </section>
      <section anchor="pmtu-issues">
        <name>PMTU Issues</name>
        <t>In general, DTLS's philosophy is to leave PMTU discovery to the application.
However, DTLS cannot completely ignore the PMTU for three reasons:</t>
        <ul spacing="normal">
          <li>
            <t>The DTLS record framing expands the datagram size, thus lowering
the effective PMTU from the application's perspective.</t>
          </li>
          <li>
            <t>In some implementations, the application may not directly talk to
the network, in which case the DTLS stack may absorb ICMP
"Datagram Too Big" indications <xref target="RFC1191"/> or ICMPv6
"Packet Too Big" indications  <xref target="RFC4443"/>.</t>
          </li>
          <li>
            <t>The DTLS handshake messages can exceed the PMTU.</t>
          </li>
        </ul>
        <t>In order to deal with the first two issues, the DTLS record layer
SHOULD behave as described below.</t>
        <t>If PMTU estimates are available from the underlying transport
protocol, they should be made available to upper layer
protocols. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>For DTLS over UDP, the upper layer protocol SHOULD be allowed to
obtain the PMTU estimate maintained in the IP layer.</t>
          </li>
          <li>
            <t>For DTLS over DCCP, the upper layer protocol SHOULD be allowed to
obtain the current estimate of the PMTU.</t>
          </li>
          <li>
            <t>For DTLS over TCP or SCTP, which automatically fragment and
reassemble datagrams, there is no PMTU limitation.  However, the
upper layer protocol MUST NOT write any record that exceeds the
maximum record size of 2^14 bytes.</t>
          </li>
        </ul>
        <t>The DTLS record layer SHOULD also allow the upper layer protocol to
discover the amount of record expansion expected by the DTLS
processing; alternately, it MAY report PMTU estimates minus the
estimated expansion from the transport layer and DTLS record
framing.</t>
        <t>Note that DTLS does not defend against spoofed ICMP messages;
implementations SHOULD ignore any such messages that indicate
PMTUs below the IPv4 and IPv6 minimums of 576 and 1280 bytes,
respectively.</t>
        <t>If there is a transport protocol indication that the PMTU was exceeded
(either via ICMP or via a
refusal to send the datagram as in Section 14 of <xref target="RFC4340"/>), then the
DTLS record layer MUST inform the upper layer protocol of the error.</t>
        <t>The DTLS record layer SHOULD NOT interfere with upper layer protocols
performing PMTU discovery, whether via <xref target="RFC1191"/> and <xref target="RFC4821"/> for
IPv4 or via <xref target="RFC8201"/> for IPv6.  In particular:</t>
        <ul spacing="normal">
          <li>
            <t>Where allowed by the underlying transport protocol, the upper
layer protocol SHOULD be allowed to set the state of the Don't Fragment (DF) bit
(in IPv4) or prohibit local fragmentation (in IPv6).</t>
          </li>
          <li>
            <t>If the underlying transport protocol allows the application to
request PMTU probing (e.g., DCCP), the DTLS record layer SHOULD
honor this request.</t>
          </li>
        </ul>
        <t>The final issue is the DTLS handshake protocol.  From the perspective
of the DTLS record layer, this is merely another upper layer
protocol.  However, DTLS handshakes occur infrequently and involve
only a few round trips; therefore, the handshake protocol PMTU
handling places a premium on rapid completion over accurate PMTU
discovery.  In order to allow connections under these circumstances,
DTLS implementations SHOULD follow the following rules:</t>
        <ul spacing="normal">
          <li>
            <t>If the DTLS record layer informs the DTLS handshake layer that a
message is too big, the handshake layer SHOULD immediately attempt to fragment
the message, using any existing information about the PMTU.</t>
          </li>
          <li>
            <t>If repeated retransmissions do not result in a response, and the
PMTU is unknown, subsequent retransmissions SHOULD back off to a
smaller record size, fragmenting the handshake message as
appropriate.  This specification does not specify an exact number of
retransmits to attempt before backing off, but 2-3 seems
appropriate.</t>
          </li>
        </ul>
      </section>
      <section anchor="record-payload-protection">
        <name>Record Payload Protection</name>
        <t>Like TLS, DTLS transmits data as a series of protected records.  The
rest of this section describes the details of that format.</t>
        <section anchor="anti-replay">
          <name>Anti-Replay</name>
          <t>Each DTLS record contains a sequence number to provide replay protection.
Sequence number verification SHOULD be performed using the following
sliding window procedure, borrowed from Section 3.4.3 of <xref target="RFC4303"/>.
Because each epoch resets the sequence number space, a separate sliding
window is needed for each epoch.</t>
          <t>The received record counter for an epoch MUST be initialized to
zero when that epoch is first used. For each received record, the
receiver MUST verify that the record contains a sequence number that
does not duplicate the sequence number of any other record received
in that epoch during the lifetime of the association.
This check SHOULD happen after
deprotecting the record; otherwise, the record discard might itself
serve as a timing channel for the record number. Note that computing
the full record number from the partial is still a potential timing
channel for the record number, though a less powerful one than whether
the record was deprotected.</t>
          <t>Duplicates are rejected through the use of a sliding receive window.
(How the window is implemented is a local matter, but the following
text describes the functionality that the implementation must
exhibit.) The receiver SHOULD pick a window large enough to handle
any plausible reordering, which depends on the data rate.
(The receiver does not notify the sender of the window
size.)</t>
          <t>The "right" edge of the window represents the highest validated
sequence number value received in the epoch.  Records that contain
sequence numbers lower than the "left" edge of the window are
rejected.  Records falling within the window are checked against a
list of received records within the window.  An efficient means for
performing this check, based on the use of a bit mask, is described in
Section 3.4.3 of <xref target="RFC4303"/>. If the received record falls within the
window and is new, or if the record is to the right of the window,
then the record is new.</t>
          <t>The window MUST NOT be updated due to a received record until that
record has been deprotected  successfully.</t>
        </section>
        <section anchor="handling-invalid-records">
          <name>Handling Invalid Records</name>
          <t>Unlike TLS, DTLS is resilient in the face of invalid records (e.g.,
invalid formatting, length, MAC, etc.).  In general, invalid records
SHOULD be silently discarded, thus preserving the association;
however, an error MAY be logged for diagnostic purposes.
Implementations which choose to generate an alert instead MUST
generate fatal alerts to avoid attacks where the attacker
repeatedly probes the implementation to see how it responds to
various types of error.  Note that if DTLS is run over UDP, then any
implementation which does this will be extremely susceptible to
DoS attacks because UDP forgery is so easy.
Thus, generating fatal alerts is NOT RECOMMENDED for such transports, both
to increase the reliability of DTLS service and to avoid the risk
of spoofing attacks sending traffic to unrelated third parties.</t>
          <t>If DTLS is being carried over a transport that is resistant to
forgery (e.g., SCTP with SCTP-AUTH <xref target="RFC6083"/>), then it is safer to send alerts
because an attacker will have difficulty forging a datagram that will
not be rejected by the transport layer.</t>
          <t>Note that because invalid records are rejected at a layer lower than
the handshake state machine, they do not affect pending
retransmission timers.</t>
        </section>
        <section anchor="aead-lim">
          <name>AEAD Limits</name>
          <t>Section 5.5 of <xref target="TLS13"/> defines limits on the number of records that can
be protected using the same keys. These limits are specific to an AEAD
algorithm and apply equally to DTLS. Implementations SHOULD NOT protect more
records than allowed by the limit specified for the negotiated AEAD.
Implementations SHOULD initiate a key update before reaching this limit.</t>
          <t><xref target="TLS13"/> does not specify a limit for AEAD_AES_128_CCM, but the analysis in
<xref target="ccm-bounds"/> shows that a limit of 2^23 packets can be used to obtain the
same confidentiality protection as the limits specified in TLS.</t>
          <t>The usage limits defined in TLS 1.3 exist for protection against attacks
on confidentiality and apply to successful applications of AEAD protection. The
integrity protections in authenticated encryption also depend on limiting the
number of attempts to forge packets. TLS achieves this by closing connections
after any record fails an authentication check. In comparison, DTLS ignores any
packet that cannot be authenticated, allowing multiple forgery attempts.</t>
          <t>Implementations MUST count the number of received packets that fail
authentication with each key. If the number of packets that fail authentication
exceeds a limit that is specific to the AEAD in use, an implementation SHOULD
immediately close the connection. Implementations SHOULD initiate a key update
with update_requested before reaching this limit. Once a key update has been
initiated, the previous keys can be dropped when the limit is reached rather
than closing the connection. Applying a limit reduces the probability that an
attacker is able to successfully forge a packet; see <xref target="AEBounds"/> and
<xref target="ROBUST"/>.</t>
          <t>For AEAD_AES_128_GCM, AEAD_AES_256_GCM, and AEAD_CHACHA20_POLY1305, the limit
on the number of records that fail authentication is 2^36. Note that the
analysis in <xref target="AEBounds"/> supports a higher limit for AEAD_AES_128_GCM and
AEAD_AES_256_GCM, but this specification recommends a lower limit. For
AEAD_AES_128_CCM, the limit on the number of records that fail authentication
is 2^23.5; see <xref target="ccm-bounds"/>.</t>
          <t>The AEAD_AES_128_CCM_8 AEAD, as used in TLS_AES_128_CCM_8_SHA256, does not have a
limit on the number of records that fail authentication that both limits the
probability of forgery by the same amount and does not expose implementations
to the risk of denial of service; see <xref target="ccm-short"/>. Therefore,
TLS_AES_128_CCM_8_SHA256 MUST NOT be used in DTLS without additional safeguards
against forgery. Implementations MUST set usage limits for AEAD_AES_128_CCM_8
based on an understanding of any additional forgery protections that are used.</t>
          <t>Any TLS cipher suite that is specified for use with DTLS MUST define limits on
the use of the associated AEAD function that preserves margins for both
confidentiality and integrity. That is, limits MUST be specified for the number
of packets that can be authenticated and for the number of packets that can fail
authentication before a key update is required. Providing a reference to any analysis upon which values are
based -- and any assumptions used in that analysis -- allows limits to be adapted
to varying usage conditions.</t>
        </section>
      </section>
    </section>
    <section anchor="dtls">
      <name>The DTLS Handshake Protocol</name>
      <t>DTLS 1.3 reuses the TLS 1.3 handshake messages and flows, with
the following changes:</t>
      <ol spacing="normal" type="1"><li>
          <t>To handle message loss, reordering, and fragmentation, modifications to
the handshake header are necessary.</t>
        </li>
        <li>
          <t>Retransmission timers are introduced to handle message loss.</t>
        </li>
        <li>
          <t>A new ACK content type has been added for reliable message delivery of handshake messages.</t>
        </li>
      </ol>
      <t>In addition, DTLS reuses TLS 1.3's "cookie" extension to provide a return-routability
check as part of connection establishment. This is an important DoS
prevention mechanism for UDP-based protocols, unlike TCP-based protocols, for which
TCP establishes return-routability as part of the connection establishment.</t>
      <t>DTLS implementations do not use the TLS 1.3 "compatibility mode" described in
Appendix D.4 of <xref target="TLS13"/>. DTLS servers MUST NOT send ChangeCipherSpec messages
when negotiating DTLS 1.3.</t>
      <t>Additionally, the "legacy_session_id_echo" field of the ServerHello
message, described in Section 4.1.3 of <xref target="TLS13"/>, MUST be empty in
DTLS 1.3. DTLS 1.3 servers MUST NOT echo the "legacy_session_id" value
from the ClientHello. DTLS 1.3 clients MUST abort the handshake with
an "illegal_parameter" alert if the field is not empty. This applies
even if the "legacy_session_id" field of the ClientHello is non-empty
due to a cached session set by a pre-DTLS 1.3 server.</t>
      <t>With these exceptions, the DTLS message formats, flows, and logic are
the same as those of TLS 1.3.</t>
      <section anchor="dos">
        <name>Denial-of-Service Countermeasures</name>
        <t>Datagram security protocols are extremely susceptible to a variety of
DoS attacks.  Two attacks are of particular concern:</t>
        <ol spacing="normal" type="1"><li>
            <t>An attacker can consume excessive resources on the server by
transmitting a series of handshake initiation requests, causing
the server to allocate state and potentially to perform
expensive cryptographic operations.</t>
          </li>
          <li>
            <t>An attacker can use the server as an amplifier by sending
connection initiation messages with a forged source address that belongs to a
victim.  The server then sends its response to the victim
machine, thus flooding it. Depending on the selected
parameters, this response message can be quite large, as
is the case for a Certificate message.</t>
          </li>
        </ol>
        <t>In order to counter both of these attacks, DTLS borrows the stateless
cookie technique used by Photuris <xref target="RFC2522"/> and IKE <xref target="RFC7296"/>.  When
the client sends its ClientHello message to the server, the server
MAY respond with a HelloRetryRequest message. The HelloRetryRequest message,
as well as the "cookie" extension, is defined in TLS 1.3.
The HelloRetryRequest message contains a stateless cookie (see
<xref target="TLS13"/>, Section 4.2.2).
The client MUST send a new ClientHello
with the cookie added as an extension.  The server then verifies the cookie
and proceeds with the handshake only if it is valid.  This mechanism forces
the attacker/client to be able to receive the cookie, which makes DoS attacks
with spoofed IP addresses difficult.  This mechanism does not provide any defense
against DoS attacks mounted from valid IP addresses.</t>
        <t>The DTLS 1.3 specification changes how cookies are exchanged
compared to DTLS 1.2. DTLS 1.3 reuses the HelloRetryRequest message
and conveys the cookie to the client via an extension. The client
receiving the cookie uses the same extension to place
the cookie subsequently into a ClientHello message.
DTLS 1.2, on the other hand, used a separate message, namely the HelloVerifyRequest,
to pass a cookie to the client and did not utilize the extension mechanism.
For backwards compatibility reasons, the cookie field in the ClientHello
is present in DTLS 1.3 but is ignored by a DTLS 1.3-compliant server
implementation.</t>
        <t>The exchange is shown in <xref target="dtls-cookie-exchange"/>. Note that
the figure focuses on the cookie exchange; all other extensions
are omitted.</t>
        <figure anchor="dtls-cookie-exchange">
          <name>DTLS Exchange with HelloRetryRequest Containing the "cookie" Extension</name>
          <artwork><![CDATA[
      Client                                   Server
      ------                                   ------
      ClientHello           ------>

                            <----- HelloRetryRequest
                                    + cookie

      ClientHello           ------>
       + cookie

      [Rest of handshake]
]]></artwork>
        </figure>
        <t>The "cookie" extension is defined in Section 4.2.2 of <xref target="TLS13"/>. When sending the
initial ClientHello, the client does not have a cookie yet. In this case,
the "cookie" extension is omitted and the legacy_cookie field in the ClientHello
message MUST be set to a zero-length vector (i.e., a zero-valued single byte length field).</t>
        <t>When responding to a HelloRetryRequest, the client MUST create a new
ClientHello message following the description in Section 4.1.2 of <xref target="TLS13"/>.</t>
        <t>If the HelloRetryRequest message is used, the initial ClientHello and
the HelloRetryRequest are included in the calculation of the
transcript hash. The computation of the
message hash for the HelloRetryRequest is done according to the description
in Section 4.4.1 of <xref target="TLS13"/>.</t>
        <t>The handshake transcript is not reset with the second ClientHello,
and a stateless server-cookie implementation requires the content or hash
of the initial ClientHello (and HelloRetryRequest)
to be stored in the cookie. The initial ClientHello is included in the
handshake transcript as a synthetic "message_hash" message, so only the hash
value is needed for the handshake to complete, though the complete
HelloRetryRequest contents are needed.</t>
        <t>When the second ClientHello is received, the server can verify that
the cookie is valid and that the client can receive packets at the
given IP address. If the client's apparent IP address is embedded
in the cookie, this prevents an attacker from generating an acceptable
ClientHello apparently from another user.</t>
        <t>One potential attack on this scheme is for the attacker to collect a
number of cookies from different addresses where it controls endpoints
and then reuse them to attack the server.
The server can defend against this attack by
changing the secret value frequently, thus invalidating those
cookies. If the server wishes to allow legitimate clients to
handshake through the transition (e.g., a client received a cookie with
Secret 1 and then sent the second ClientHello after the server has
changed to Secret 2), the server can have a limited window during
which it accepts both secrets.  <xref target="RFC7296"/> suggests adding a key
identifier to cookies to detect this case. An alternative approach is
simply to try verifying with both secrets. It is RECOMMENDED that
servers implement a key rotation scheme that allows the server
to manage keys with overlapping lifetimes.</t>
        <t>Alternatively, the server can store timestamps in the cookie and
reject cookies that were generated outside a certain
interval of time.</t>
        <t>DTLS servers SHOULD perform a cookie exchange whenever a new
handshake is being performed.  If the server is being operated in an
environment where amplification is not a problem, e.g., where
ICE <xref target="RFC8445"/> has been used to establish bidirectional connectivity,
the server MAY be configured not to perform a cookie exchange.  The default SHOULD be
that the exchange is performed, however.  In addition, the server MAY
choose not to do a cookie exchange when a session is resumed or, more
generically, when the DTLS handshake uses a PSK-based key exchange
and the IP address matches one associated with the PSK.
Servers which process 0-RTT requests and send 0.5-RTT responses
without a cookie exchange risk being used in an amplification attack
if the size of outgoing messages greatly exceeds the size of those that are received.
A server SHOULD limit the amount of data it sends toward a client address
to three times the amount of data sent by the client before
it verifies that the client is able to receive data at that address.
A client address is valid after a cookie exchange or handshake completion.
Clients MUST be prepared to do a cookie exchange with every
handshake. Note that cookies are only valid for the existing
handshake and cannot be stored for future handshakes.</t>
        <t>If a server receives a ClientHello with an invalid cookie, it
MUST terminate the handshake with an "illegal_parameter" alert.
This allows the client to restart the connection from
scratch without a cookie.</t>
        <t>As described in Section 4.1.4 of <xref target="TLS13"/>, clients MUST
abort the handshake with an "unexpected_message" alert in response
to any second HelloRetryRequest which was sent in the same connection
(i.e., where the ClientHello was itself in response to a HelloRetryRequest).</t>
        <t>DTLS clients which do not want to receive a Connection ID SHOULD
still offer the "connection_id" extension <xref target="RFC9146"/> unless
there is an application profile to the contrary. This permits
a server which wants to receive a CID to negotiate one.</t>
      </section>
      <section anchor="dtls-handshake-message-format">
        <name>DTLS Handshake Message Format</name>
        <t>DTLS uses the same Handshake messages as TLS 1.3. However,
prior to transmission they are converted to DTLSHandshake
messages, which contain extra data needed to support
message loss, reordering, and message fragmentation.</t>
        <artwork><![CDATA[
    enum {
        client_hello(1),
        server_hello(2),
        new_session_ticket(4),
        end_of_early_data(5),
        encrypted_extensions(8),
        request_connection_id(9),           /* New */
        new_connection_id(10),              /* New */
        certificate(11),
        certificate_request(13),
        certificate_verify(15),
        finished(20),
        key_update(24),
        message_hash(254),
        (255)
    } HandshakeType;

    struct {
        HandshakeType msg_type;    /* handshake type */
        uint24 length;             /* bytes in message */
        uint16 message_seq;        /* DTLS-required field */
        uint24 fragment_offset;    /* DTLS-required field */
        uint24 fragment_length;    /* DTLS-required field */
        select (msg_type) {
            case client_hello:          ClientHello;
            case server_hello:          ServerHello;
            case end_of_early_data:     EndOfEarlyData;
            case encrypted_extensions:  EncryptedExtensions;
            case certificate_request:   CertificateRequest;
            case certificate:           Certificate;
            case certificate_verify:    CertificateVerify;
            case finished:              Finished;
            case new_session_ticket:    NewSessionTicket;
            case key_update:            KeyUpdate;
            case request_connection_id: RequestConnectionId;
            case new_connection_id:     NewConnectionId;
        } body;
    } DTLSHandshake;
]]></artwork>
        <t>In DTLS 1.3, the message transcript is computed over the original
TLS 1.3-style Handshake messages without the message_seq,
fragment_offset, and fragment_length values. Note that this is
a change from DTLS 1.2 where those values were included
in the transcript.</t>
        <t>The first message each side transmits in each association always has
message_seq = 0. Whenever a new message is generated, the
message_seq value is incremented by one. Implementations MUST NOT
allow message_seq to wrap, but instead MUST establish a new
association, terminating the old association. When a message is
retransmitted, the old message_seq value is reused, i.e., not
incremented. From the perspective of the DTLS record layer, the
retransmission is a new record. This record will have a new
DTLSPlaintext.sequence_number value.</t>
        <t>Note: In DTLS 1.2, the message_seq was reset to zero in case of a
rehandshake (i.e., renegotiation). On the surface, a rehandshake in DTLS 1.2
shares similarities with a post-handshake message exchange in DTLS 1.3. However,
in DTLS 1.3 the message_seq is not reset, to allow distinguishing a
retransmission from a previously sent post-handshake message from a newly
sent post-handshake message.</t>
        <t>DTLS implementations maintain (at least notionally) a
next_receive_seq counter.  This counter is initially set to zero.
When a handshake message is received, if its message_seq value matches
next_receive_seq, next_receive_seq is incremented and the message is
processed.  If the sequence number is less than next_receive_seq, the
message MUST be discarded.  If the sequence number is greater than
next_receive_seq, the implementation SHOULD queue the message but MAY
discard it.  (This is a simple space/bandwidth trade-off).</t>
        <t>In addition to the handshake messages that are deprecated by the TLS 1.3
specification, DTLS 1.3 furthermore deprecates the HelloVerifyRequest message
originally defined in DTLS 1.0. DTLS 1.3-compliant implementations MUST NOT
use the HelloVerifyRequest to execute a return-routability check. A
dual-stack DTLS 1.2 / DTLS 1.3 client MUST, however, be prepared to
interact with a DTLS 1.2 server.</t>
      </section>
      <section anchor="clienthello-message">
        <name>ClientHello Message</name>
        <t>The format of the ClientHello used by a DTLS 1.3 client differs from the
TLS 1.3 ClientHello format, as shown below.</t>
        <artwork><![CDATA[
    uint16 ProtocolVersion;
    opaque Random[32];

    uint8 CipherSuite[2];    /* Cryptographic suite selector */

    struct {
        ProtocolVersion legacy_version = { 254,253 }; // DTLSv1.2
        Random random;
        opaque legacy_session_id<0..32>;
        opaque legacy_cookie<0..2^8-1>;                  // DTLS
        CipherSuite cipher_suites<2..2^16-2>;
        opaque legacy_compression_methods<1..2^8-1>;
        Extension extensions<8..2^16-1>;
    } ClientHello;
]]></artwork>
        <dl>
          <dt>legacy_version:</dt>
          <dd>
            <t>In previous versions of DTLS, this field was used for version
negotiation and represented the highest version number supported by
the client. Experience has shown that many servers do not properly
implement version negotiation, leading to "version intolerance" in
which the server rejects an otherwise acceptable ClientHello with a
version number higher than it supports. In DTLS 1.3, the client
indicates its version preferences in the "supported_versions"
extension (see Section 4.2.1 of <xref target="TLS13"/>) and the
legacy_version field MUST be set to {254, 253}, which was the version
number for DTLS 1.2. The supported_versions entries for DTLS 1.0 and DTLS 1.2 are
0xfeff and 0xfefd (to match the wire versions). The value 0xfefc is used
to indicate DTLS 1.3.</t>
          </dd>
          <dt>random:</dt>
          <dd>
            <t>Same as for TLS 1.3, except that the downgrade sentinels described
in Section 4.1.3 of <xref target="TLS13"/> when TLS 1.2 and TLS 1.1 and below are negotiated
apply to DTLS 1.2 and DTLS 1.0, respectively.</t>
          </dd>
          <dt>legacy_session_id:</dt>
          <dd>
            <t>Versions of TLS and DTLS before version 1.3 supported a "session resumption"
feature, which has been merged with pre-shared keys (PSK) in version 1.3.  A client
which has a cached session set by a pre-DTLS 1.3 server SHOULD set this
field according to that session. Otherwise, it MUST be set as a zero-length vector
(i.e., a zero-valued single byte length field).</t>
          </dd>
          <dt>legacy_cookie:</dt>
          <dd>
            <t>A DTLS 1.3-only client MUST set the legacy_cookie field to zero length.
If a DTLS 1.3 ClientHello is received with any other value in this field,
the server MUST abort the handshake with an "illegal_parameter" alert.</t>
          </dd>
          <dt>cipher_suites:</dt>
          <dd>
            <t>Same as for TLS 1.3; only suites with DTLS-OK=Y may be used.</t>
          </dd>
          <dt>legacy_compression_methods:</dt>
          <dd>
            <t>Same as for TLS 1.3.</t>
          </dd>
          <dt>extensions:</dt>
          <dd>
            <t>Same as for TLS 1.3.</t>
          </dd>
        </dl>
      </section>
      <section anchor="serverhello-message">
        <name>ServerHello Message</name>
        <t>The DTLS 1.3 ServerHello message is the same as the TLS 1.3
ServerHello message, except that the legacy_version field
is set to 0xfefd, indicating DTLS 1.2.</t>
      </section>
      <section anchor="handshake-message-fragmentation-and-reassembly">
        <name>Handshake Message Fragmentation and Reassembly</name>
        <t>As described in <xref target="transport-layer-mapping"/>, one or more handshake
messages may be carried in a single datagram. However, handshake messages are
potentially bigger than the size allowed by the underlying datagram transport.
DTLS provides a mechanism for fragmenting a handshake message over a
number of records, each of which can be transmitted in separate datagrams, thus
avoiding IP fragmentation.</t>
        <t>When transmitting the handshake message, the sender divides the
message into a series of N contiguous data ranges. The ranges MUST NOT
overlap.  The sender then creates N DTLSHandshake messages, all with the
same message_seq value as the original DTLSHandshake message.  Each new
message is labeled with the fragment_offset (the number of bytes
contained in previous fragments) and the fragment_length (the length
of this fragment).  The length field in all messages is the same as
the length field of the original message.  An unfragmented message is
a degenerate case with fragment_offset=0 and fragment_length=length.
Each handshake message fragment that is placed into a record
MUST be delivered in a single UDP datagram.</t>
        <t>When a DTLS implementation receives a handshake message fragment corresponding
to the next expected handshake message sequence number, it
MUST process it, either by buffering it until it has the entire handshake message
or by processing any in-order portions of the message.
The transcript consists of complete TLS Handshake messages (reassembled
as necessary). Note that this requires removing the message_seq,
fragment_offset, and fragment_length fields to create the Handshake
structure.</t>
        <t>DTLS implementations MUST be able to handle overlapping fragment ranges.
This allows senders to retransmit handshake messages with smaller
fragment sizes if the PMTU estimate changes. Senders MUST NOT change
handshake message bytes upon retransmission. Receivers MAY check
that retransmitted bytes are identical and SHOULD abort the handshake
with an "illegal_parameter" alert if the value of a byte changes.</t>
        <t>Note that as with TLS, multiple handshake messages may be placed in
the same DTLS record, provided that there is room and that they are
part of the same flight.  Thus, there are two acceptable ways to pack
two DTLS handshake messages into the same datagram: in the same record or in
separate records.</t>
      </section>
      <section anchor="endofearlydata-message">
        <name>EndOfEarlyData Message</name>
        <t>The DTLS 1.3 handshake has one important difference from the
TLS 1.3 handshake: the EndOfEarlyData message is omitted both
from the wire and the handshake transcript. Because DTLS
records have epochs, EndOfEarlyData is not necessary to determine
when the early data is complete, and because DTLS is lossy,
attackers can trivially mount the deletion attacks that EndOfEarlyData
prevents in TLS. Servers SHOULD NOT accept records from epoch 1 indefinitely once they are able to process records from epoch 3. Though reordering of IP packets can result in records from epoch 1 arriving after records from epoch 3, this is not likely to persist for very long relative to the round trip time. Servers could discard epoch 1  keys after the first epoch 3 data arrives, or retain keys for processing epoch 1 data for a short period.
(See <xref target="dtls-epoch"/> for the definitions of each epoch.)</t>
      </section>
      <section anchor="dtls-handshake-flights">
        <name>DTLS Handshake Flights</name>
        <t>DTLS handshake messages are grouped into a series of message flights. A flight starts with the
handshake message transmission of one peer and ends with the expected response from the
other peer. <xref target="tab-flights"/> contains a complete list of message combinations that constitute flights.</t>
        <table anchor="tab-flights">
          <name>Flight Handshake Message Combinations</name>
          <thead>
            <tr>
              <th align="left">Note</th>
              <th align="left">Client</th>
              <th align="left">Server</th>
              <th align="left">Handshake Messages</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left"> </td>
              <td align="left">x</td>
              <td align="left"> </td>
              <td align="left">ClientHello</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left">x</td>
              <td align="left">HelloRetryRequest</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left">x</td>
              <td align="left">ServerHello, EncryptedExtensions, CertificateRequest, Certificate, CertificateVerify, Finished</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">x</td>
              <td align="left"> </td>
              <td align="left">Certificate, CertificateVerify, Finished</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left"> </td>
              <td align="left">x</td>
              <td align="left">NewSessionTicket</td>
            </tr>
          </tbody>
        </table>
        <t>Remarks:</t>
        <ul spacing="normal">
          <li>
            <t><xref target="tab-flights"/> does not highlight any of the optional messages.</t>
          </li>
          <li>
            <t>Regarding note (1): When a handshake flight is sent without any expected response, as is the case with
 the client's final flight or with the NewSessionTicket message, the flight must be
 acknowledged with an ACK message.</t>
          </li>
        </ul>
        <t>Below are several example message exchanges illustrating the flight concept.
The notational conventions from <xref target="TLS13"/> are used.</t>
        <figure anchor="dtls-full">
          <name>Message Flights for a Full DTLS Handshake (with Cookie Exchange)</name>
          <artwork><![CDATA[
Client                                             Server

                                                            +--------+
 ClientHello                                                | Flight |
                        -------->                           +--------+

                                                            +--------+
                        <--------        HelloRetryRequest  | Flight |
                                          + cookie          +--------+


                                                            +--------+
ClientHello                                                 | Flight |
 + cookie               -------->                           +--------+



                                               ServerHello
                                     {EncryptedExtensions}  +--------+
                                     {CertificateRequest*}  | Flight |
                                            {Certificate*}  +--------+
                                      {CertificateVerify*}
                                                {Finished}
                        <--------      [Application Data*]



 {Certificate*}                                             +--------+
 {CertificateVerify*}                                       | Flight |
 {Finished}             -------->                           +--------+
 [Application Data]

                                                            +--------+
                        <--------                    [ACK]  | Flight |
                                       [Application Data*]  +--------+

 [Application Data]     <------->      [Application Data]
]]></artwork>
        </figure>
        <figure anchor="dtls-psk">
          <name>Message Flights for Resumption and PSK Handshake (without Cookie Exchange)</name>
          <artwork><![CDATA[
 ClientHello                                              +--------+
  + pre_shared_key                                        | Flight |
  + psk_key_exchange_modes                                +--------+
  + key_share*         -------->


                                             ServerHello
                                        + pre_shared_key  +--------+
                                            + key_share*  | Flight |
                                   {EncryptedExtensions}  +--------+
                       <--------              {Finished}
                                     [Application Data*]
                                                          +--------+
 {Finished}            -------->                          | Flight |
 [Application Data*]                                      +--------+

                                                          +--------+
                       <--------                   [ACK]  | Flight |
                                     [Application Data*]  +--------+

 [Application Data]    <------->      [Application Data]
]]></artwork>
        </figure>
        <figure anchor="dtls-zero-rtt">
          <name>Message Flights for the Zero-RTT Handshake</name>
          <artwork><![CDATA[
Client                                            Server

 ClientHello
  + early_data
  + psk_key_exchange_modes                                +--------+
  + key_share*                                            | Flight |
  + pre_shared_key                                        +--------+
 (Application Data*)     -------->

                                             ServerHello
                                        + pre_shared_key
                                            + key_share*  +--------+
                                   {EncryptedExtensions}  | Flight |
                                              {Finished}  +--------+
                       <--------     [Application Data*]


                                                          +--------+
 {Finished}            -------->                          | Flight |
 [Application Data*]                                      +--------+

                                                          +--------+
                       <--------                   [ACK]  | Flight |
                                     [Application Data*]  +--------+

 [Application Data]    <------->      [Application Data]
]]></artwork>
        </figure>
        <figure anchor="dtls-post-handshake-ticket">
          <name>Message Flights for the NewSessionTicket Message</name>
          <artwork><![CDATA[
Client                                            Server

                                                          +--------+
                       <--------       [NewSessionTicket] | Flight |
                                                          +--------+

                                                          +--------+
[ACK]                  -------->                          | Flight |
                                                          +--------+
]]></artwork>
        </figure>
        <t>KeyUpdate, NewConnectionId, and RequestConnectionId follow a similar
pattern to NewSessionTicket: a single message sent by one side
followed by an ACK by the other.</t>
      </section>
      <section anchor="timeout-retransmissions">
        <name>Timeout and Retransmission</name>
        <section anchor="state-machine">
          <name>State Machine</name>
          <t>DTLS uses a simple timeout and retransmission scheme with the
state machine shown in <xref target="dtls-timeout-state-machine"/>.</t>
          <figure anchor="dtls-timeout-state-machine">
            <name>DTLS Timeout and Retransmission State Machine</name>
            <artwork><![CDATA[
                             +-----------+
                             | PREPARING |
                +----------> |           |
                |            |           |
                |            +-----------+
                |                  |
                |                  | Buffer next flight
                |                  |
                |                 \|/
                |            +-----------+
                |            |           |
                |            |  SENDING  |<------------------+
                |            |           |                   |
                |            +-----------+                   |
        Receive |                  |                         |
           next |                  | Send flight or partial  |
         flight |                  | flight                  |
                |                  |                         |
                |                  | Set retransmit timer    |
                |                 \|/                        |
                |            +-----------+                   |
                |            |           |                   |
                +------------|  WAITING  |-------------------+
                |     +----->|           |   Timer expires   |
                |     |      +-----------+                   |
                |     |          |  |   |                    |
                |     |          |  |   |                    |
                |     +----------+  |   +--------------------+
                |    Receive record |   Read retransmit or ACK
        Receive |  (Maybe Send ACK) |
           last |                   |
         flight |                   | Receive ACK
                |                   | for last flight
               \|/                  |
                                    |
            +-----------+           |
            |           | <---------+
            | FINISHED  |
            |           |
            +-----------+
                |  /|\
                |   |
                |   |
                +---+

          Server read retransmit
              Retransmit ACK
]]></artwork>
          </figure>
          <t>The state machine has four basic states: PREPARING, SENDING, WAITING,
and FINISHED.</t>
          <t>In the PREPARING state, the implementation does whatever computations
are necessary to prepare the next flight of messages.  It then
buffers them up for transmission (emptying the transmission
buffer first) and enters the SENDING state.</t>
          <t>In the SENDING state, the implementation transmits the buffered
flight of messages. If the implementation has received one or more
ACKs (see <xref target="ack-msg"/>) from the peer, then it SHOULD omit any messages or
message fragments which have already been acknowledged. Once the messages
have been sent, the implementation then sets a retransmit timer
and enters the WAITING state.</t>
          <t>There are four ways to exit the WAITING state:</t>
          <ol spacing="normal" type="1"><li>
              <t>The retransmit timer expires: the implementation transitions to
the SENDING state, where it retransmits the flight, adjusts and re-arms the
retransmit timer (see <xref target="timer-values"/>), and returns to the WAITING state.</t>
            </li>
            <li>
              <t>The implementation reads an ACK from the peer: upon receiving
an ACK for a partial flight (as mentioned in <xref target="sending-acks"/>),
the implementation transitions
to the SENDING state, where it retransmits the unacknowledged portion
of the flight, adjusts and re-arms the retransmit timer, and returns to the
WAITING state. Upon receiving an ACK for a complete flight,
the implementation cancels all retransmissions and either
remains in WAITING, or, if the ACK was for the final flight,
transitions to FINISHED.</t>
            </li>
            <li>
              <t>The implementation reads a retransmitted flight from the peer when
none of the messages that it sent in response to that flight
have been acknowledged: the
implementation transitions to the SENDING state, where it
retransmits the flight, adjusts and re-arms the retransmit timer, and returns
to the WAITING state.  The rationale here is that the receipt of a
duplicate message is the likely result of timer expiry on the peer
and therefore suggests that part of one's previous flight was
lost.</t>
            </li>
            <li>
              <t>The implementation receives some or all of the next flight of messages: if
this is the final flight of messages, the implementation
transitions to FINISHED.  If the implementation needs to send a new
flight, it transitions to the PREPARING state. Partial reads
(whether partial messages or only some of the messages in the
flight) may also trigger the implementation to send an ACK, as
described in <xref target="sending-acks"/>.</t>
            </li>
          </ol>
          <t>Because DTLS clients send the first message (ClientHello), they start
in the PREPARING state.  DTLS servers start in the WAITING state, but
with empty buffers and no retransmit timer.</t>
          <t>In addition, for at least twice the default MSL defined for <xref target="RFC0793"/>,
when in the FINISHED state, the server MUST respond to retransmission
of the client's final flight with a retransmit of its ACK.</t>
          <t>Note that because of packet loss, it is possible for one side to be
sending application data even though the other side has not received
the first side's Finished message.  Implementations MUST either
discard or buffer all application data records for epoch 3 and
above until they have received the Finished message from the
peer. Implementations MAY treat receipt of application data with a new
epoch prior to receipt of the corresponding Finished message as
evidence of reordering or packet loss and retransmit their final
flight immediately, shortcutting the retransmission timer.</t>
        </section>
        <section anchor="timer-values">
          <name>Timer Values</name>
          <t>The configuration of timer settings varies with implementations, and certain
deployment environments require timer value adjustments. Mishandling
of the timer can lead to serious congestion problems -- for example, if
many instances of a DTLS time out early and retransmit too quickly on
a congested link.</t>
          <t>Unless implementations have deployment-specific and/or external information about the round trip time,
implementations SHOULD use an initial timer value of 1000 ms and double
the value at each retransmission, up to no less than 60 seconds (the
maximum as specified in RFC 6298 <xref target="RFC6298"/>). Application-specific profiles MAY
recommend shorter or longer timer values. For instance:</t>
          <ul spacing="normal">
            <li>
              <t>Profiles for specific deployment environments, such as in low-power,
multi-hop mesh scenarios as used in some Internet of Things (IoT) networks,
MAY specify longer timeouts. See <xref target="I-D.ietf-uta-tls13-iot-profile"/> for
more information about one such DTLS 1.3 IoT profile.</t>
            </li>
            <li>
              <t>Real-time protocols MAY specify shorter timeouts. It is RECOMMENDED
that for DTLS-SRTP <xref target="RFC5764"/>, a default timeout of
400 ms be used; because customer experience degrades with one-way latencies
of greater than 200 ms, real-time deployments are less likely
to have long latencies.</t>
            </li>
          </ul>
          <t>In settings where there is external information (for instance, from an ICE <xref target="RFC8445"/>
handshake, or from previous connections to the same server)
about the RTT, implementations SHOULD use 1.5 times that RTT estimate
as the retransmit timer.</t>
          <t>Implementations SHOULD retain the current timer value until a
message is transmitted and acknowledged without having to
be retransmitted, at which time the value SHOULD be adjusted
to 1.5 times the measured round trip time for that
message. After a long period of idleness, no less
than 10 times the current timer value, implementations MAY reset the
timer to the initial value.</t>
          <t>Note that because retransmission is for the handshake and not dataflow, the effect on
congestion of shorter timeouts is smaller than in generic protocols
such as TCP or QUIC. Experience with DTLS 1.2, which uses a
simpler "retransmit everything on timeout" approach, has not shown
serious congestion problems in practice.</t>
        </section>
        <section anchor="large-flight-sizes">
          <name>Large Flight Sizes</name>
          <t>DTLS does not have any built-in congestion control or rate control;
in general, this is not an issue because messages tend to be small.
However, in principle, some messages -- especially Certificate -- can
be quite large. If all the messages in a large flight are sent
at once, this can result in network congestion. A better strategy
is to send out only part of the flight, sending more when
messages are acknowledged. Several extensions have been standardized
to reduce the size of the Certificate message -- for example,
the "cached_info" extension <xref target="RFC7924"/>; certificate
compression <xref target="RFC8879"/>; and <xref target="RFC6066"/>, which defines the "client_certificate_url"
extension allowing DTLS clients to send a sequence of Uniform
Resource Locators (URLs) instead of the client certificate.</t>
          <t>DTLS stacks SHOULD NOT send more than 10 records in a single transmission.</t>
        </section>
        <section anchor="state-machine-duplication">
          <name>State Machine Duplication for Post-Handshake Messages</name>
          <t>DTLS 1.3 makes use of the following categories of post-handshake messages:</t>
          <ol spacing="normal" type="1"><li>
              <t>NewSessionTicket</t>
            </li>
            <li>
              <t>KeyUpdate</t>
            </li>
            <li>
              <t>NewConnectionId</t>
            </li>
            <li>
              <t>RequestConnectionId</t>
            </li>
            <li>
              <t>Post-handshake client authentication</t>
            </li>
          </ol>
          <t>Messages of each category can be sent independently, and reliability is established
via independent state machines, each of which behaves as described in <xref target="state-machine"/>.
For example, if a server sends a NewSessionTicket and a CertificateRequest message,
two independent state machines will be created.</t>
          <t>Sending multiple instances of messages of
a given category without having completed earlier transmissions is allowed for some
categories, but not for others. Specifically, a server MAY send multiple NewSessionTicket
messages at once without awaiting ACKs for earlier NewSessionTicket messages first. Likewise, a
server MAY send multiple CertificateRequest messages at once without having completed
earlier client authentication requests before. In contrast, implementations MUST NOT
send KeyUpdate, NewConnectionId, or RequestConnectionId messages if an earlier message
of the same type has not yet been acknowledged.</t>
          <t>Note: Except for post-handshake client authentication, which involves handshake messages
in both directions, post-handshake messages are single-flight, and their respective state
machines on the sender side reduce to waiting for an ACK and retransmitting the original
message. In particular, note that a RequestConnectionId message does not force the receiver
to send a NewConnectionId message in reply, and both messages are therefore treated
independently.</t>
          <t>Creating and correctly updating multiple state machines requires feedback from the handshake
logic to the state machine layer, indicating which message belongs to which state machine.
For example, if a server sends multiple CertificateRequest messages and receives a Certificate
message in response, the corresponding state machine can only be determined after inspecting the
certificate_request_context field. Similarly, a server sending a single CertificateRequest
and receiving a NewConnectionId message in response can only decide that the NewConnectionId
message should be treated through an independent state machine after inspecting the handshake
message type.</t>
        </section>
      </section>
      <section anchor="cryptographic-label-prefix">
        <name>Cryptographic Label Prefix</name>
        <t>Section 7.1 of <xref target="TLS13"/> specifies that HKDF-Expand-Label uses
a label prefix of "tls13 ". For DTLS 1.3, that label SHALL be
"dtls13".  This ensures key separation between DTLS 1.3 and
TLS 1.3. Note that there is no trailing space; this is necessary
in order to keep the overall label size inside of one hash
iteration because "DTLS" is one letter longer than "TLS".</t>
      </section>
      <section anchor="alert-messages">
        <name>Alert Messages</name>
        <t>Note that alert messages are not retransmitted at all, even when they
occur in the context of a handshake.  However, a DTLS implementation
which would ordinarily issue an alert SHOULD generate a new alert
message if the offending record is received again (e.g., as a
retransmitted handshake message).  Implementations SHOULD detect when
a peer is persistently sending bad messages and terminate the local
connection state after such misbehavior is detected. Note that alerts
are not reliably transmitted; implementations SHOULD NOT depend on
receiving alerts in order to signal errors or connection closure.</t>
        <t>Any data received with an epoch/sequence number pair after
that of a valid received closure alert MUST be ignored. Note:
this is a change from TLS 1.3 which depends on the order of
receipt rather than the epoch and sequence number.</t>
      </section>
      <section anchor="establishing-new-associations-with-existing-parameters">
        <name>Establishing New Associations with Existing Parameters</name>
        <t>If a DTLS client-server pair is configured in such a way that
repeated connections happen on the same host/port quartet, then it is
possible that a client will silently abandon one connection and then
initiate another with the same parameters (e.g., after a reboot).
This will appear to the server as a new handshake with epoch=0.  In
cases where a server believes it has an existing association on a
given host/port quartet and it receives an epoch=0 ClientHello, it
SHOULD proceed with a new handshake but MUST NOT destroy the existing
association until the client has demonstrated reachability either by
completing a cookie exchange or by completing a complete handshake
including delivering a verifiable Finished message.  After a correct
Finished message is received, the server MUST abandon the previous
association to avoid confusion between two valid associations with
overlapping epochs.  The reachability requirement prevents
off-path/blind attackers from destroying associations merely by
sending forged ClientHellos.</t>
        <t>Note: It is not always possible to distinguish which association
a given record is from. For instance, if the client performs
a handshake, abandons the connection, and then immediately starts
a new handshake, it may not be possible to tell which connection
a given protected record is for. In these cases, trial decryption
may be necessary, though implementations could use CIDs to avoid
the 5-tuple-based ambiguity.</t>
      </section>
    </section>
    <section anchor="example-of-handshake-with-timeout-and-retransmission">
      <name>Example of Handshake with Timeout and Retransmission</name>
      <t>The following is an example of a handshake with lost packets and
retransmissions. Note that the client sends an empty ACK message
because it can only acknowledge Record 2 sent by the server once it has
processed messages in Record 0 needed to establish epoch 2 keys, which
are needed to encrypt or decrypt messages found in Record 2.  <xref target="ack-msg"/>
provides the necessary background details for this interaction.
Note: For simplicity, we are not resetting record numbers in this
diagram, so "Record 1" is really "Epoch 2, Record 0", etc.</t>
      <figure anchor="dtls-msg-loss">
        <name>Example DTLS Exchange Illustrating Message Loss</name>
        <artwork><![CDATA[
Client                                                Server
------                                                ------

 Record 0                  -------->
 ClientHello
 (message_seq=0)

                             X<-----                 Record 0
                             (lost)               ServerHello
                                              (message_seq=0)
                                                     Record 1
                                          EncryptedExtensions
                                              (message_seq=1)
                                                  Certificate
                                              (message_seq=2)


                           <--------                 Record 2
                                            CertificateVerify
                                              (message_seq=3)
                                                     Finished
                                              (message_seq=4)

 Record 1                  -------->
 ACK []


                           <--------                 Record 3
                                                  ServerHello
                                              (message_seq=0)
                                          EncryptedExtensions
                                              (message_seq=1)
                                                  Certificate
                                              (message_seq=2)

                           <--------                 Record 4
                                            CertificateVerify
                                              (message_seq=3)
                                                     Finished
                                              (message_seq=4)


 Record 2                  -------->
 Certificate
 (message_seq=1)
 CertificateVerify
 (message_seq=2)
 Finished
 (message_seq=3)

                           <--------               Record 5
                                                    ACK [2]
]]></artwork>
      </figure>
      <section anchor="dtls-epoch">
        <name>Epoch Values and Rekeying</name>
        <t>A recipient of a DTLS message needs to select the correct keying material
in order to process an incoming message. With the possibility of message
 loss and reordering, an identifier is needed to determine which cipher state
has been used to protect the record payload. The epoch value fulfills this
role in DTLS. In addition to the TLS 1.3-defined key derivation steps (see
Section 7 of <xref target="TLS13"/>), a sender may want to rekey at any time during
the lifetime of the connection. It therefore needs to indicate that it is
updating its sending cryptographic keys.</t>
        <t>This version of DTLS assigns dedicated epoch values to messages in the
protocol exchange to allow identification of the correct cipher state:</t>
        <ul spacing="normal">
          <li>
            <t>Epoch value (0) is used with unencrypted messages. There are
three unencrypted messages in DTLS, namely ClientHello, ServerHello,
and HelloRetryRequest.</t>
          </li>
          <li>
            <t>Epoch value (1) is used for messages protected using keys derived
from client_early_traffic_secret. Note that this epoch is skipped if
the client does not offer early data.</t>
          </li>
          <li>
            <t>Epoch value (2) is used for messages protected using keys derived
from [sender]_handshake_traffic_secret. Messages transmitted during
the handshake, such as EncryptedExtensions,
CertificateRequest, Certificate, CertificateVerify, and Finished,
belong to this category. Note, however, that post-handshake messages are
protected under the appropriate application traffic key and are not included in this category.</t>
          </li>
          <li>
            <t>Epoch value (3) is used for payloads protected using keys derived
from the initial [sender]_application_traffic_secret_0. This may include
handshake messages, such as post-handshake messages (e.g., a
NewSessionTicket message).</t>
          </li>
          <li>
            <t>Epoch values (4 to 2^64-1) are used for payloads protected using keys from
the [sender]_application_traffic_secret_N (N&gt;0).</t>
          </li>
        </ul>
        <t>Using these reserved epoch values, a receiver knows what cipher state
has been used to encrypt and integrity protect a
message. Implementations that receive a record with an epoch value
for which no corresponding cipher state can be determined SHOULD
handle it as a record which fails deprotection.</t>
        <t>Note that epoch values do not wrap. If a DTLS implementation would
need to wrap the epoch value, it MUST terminate the connection.</t>
        <t>The traffic key calculation is described in Section 7.3 of <xref target="TLS13"/>.</t>
        <t><xref target="dtls-msg-epoch"/> illustrates the epoch values in an example DTLS handshake.</t>
        <figure anchor="dtls-msg-epoch">
          <name>Example DTLS Exchange with Epoch Information</name>
          <artwork><![CDATA[
Client                                             Server
------                                             ------

 Record 0
 ClientHello
 (epoch=0)
                            -------->
                                                     Record 0
                            <--------       HelloRetryRequest
                                                    (epoch=0)
 Record 1
 ClientHello                -------->
 (epoch=0)
                                                     Record 1
                            <--------             ServerHello
                                                    (epoch=0)
                                        {EncryptedExtensions}
                                                    (epoch=2)
                                                {Certificate}
                                                    (epoch=2)
                                          {CertificateVerify}
                                                    (epoch=2)
                                                   {Finished}
                                                    (epoch=2)
 Record 2
 {Certificate}              -------->
 (epoch=2)
 {CertificateVerify}
 (epoch=2)
 {Finished}
 (epoch=2)
                                                     Record 2
                            <--------                   [ACK]
                                                    (epoch=3)
 Record 3
 [Application Data]         -------->
 (epoch=3)
                                                     Record 3
                            <--------      [Application Data]
                                                    (epoch=3)

                         Some time later ...
                 (Post-Handshake Message Exchange)
                                                     Record 4
                            <--------      [NewSessionTicket]
                                                    (epoch=3)
 Record 4
 [ACK]                      -------->
 (epoch=3)

                         Some time later ...
                           (Rekeying)
                                                     Record 5
                            <--------      [Application Data]
                                                    (epoch=4)
 Record 5
 [Application Data]         -------->
 (epoch=4)
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="ack-msg">
      <name>ACK Message</name>
      <t>The ACK message is used by an endpoint to indicate which handshake records
it has received and processed from the other side. ACK is not
a handshake message but is rather a separate content type,
with code point 26. This avoids having ACK being added
to the handshake transcript. Note that ACKs can still be
sent in the same UDP datagram as handshake records.</t>
      <artwork><![CDATA[
    struct {
        RecordNumber record_numbers<0..2^16-1>;
    } ACK;
]]></artwork>
      <dl>
        <dt>record_numbers:</dt>
        <dd>
          <t>A list of the records containing handshake messages in the current
flight which the endpoint has received and either processed or buffered,
in numerically increasing
order.</t>
        </dd>
      </dl>
      <t>Implementations MUST NOT acknowledge records containing
handshake messages or fragments which have not been
processed or buffered. Otherwise, deadlock can ensue.
As an example, implementations MUST NOT send ACKs for
handshake messages which they discard because they are
not the next expected message.</t>
      <t>During the handshake, ACKs only cover the current outstanding flight (this is
possible because DTLS is generally a lock-step protocol). In particular,
receiving a message from a handshake flight implicitly acknowledges all
messages from the previous flight(s).  Accordingly, an ACK
from the server would not cover both the ClientHello and the client's
Certificate message, because the ClientHello and client Certificate are in different
flights. Implementations can accomplish this by clearing their ACK
list upon receiving the start of the next flight.</t>
      <t>For post-handshake messages, ACKs SHOULD be sent once for each received
and processed handshake record (potentially subject to some delay) and MAY
cover more than one flight. This includes records containing messages which are
discarded because a previous copy has been received.</t>
      <t>During the handshake, ACK records MUST be sent with an epoch which is
equal to or higher than the record which is being acknowledged.
Note that some care is required when processing flights spanning
multiple epochs. For instance, if the client receives only the ServerHello
and Certificate and wishes to ACK them in a single record,
it must do so in epoch 2, as it is required to use an epoch
greater than or equal to 2 and cannot yet send with any greater
epoch. Implementations SHOULD simply use the highest
current sending epoch, which will generally be the highest available.
The exception is that implementations MUST NOT send ACK records in epoch 1
(early data). If the highest current sending epoch is epoch 1 (early data),
implementations MUST use epoch 0 (unencrypted) to send ACK records.
After the handshake, implementations MUST use the highest available
sending epoch.</t>
      <section anchor="sending-acks">
        <name>Sending ACKs</name>
        <t>When an implementation detects a disruption in the receipt of the
current incoming flight, it SHOULD generate an ACK that covers the
messages from that flight which it has received and processed so far.
Implementations have some discretion about which events to treat
as signs of disruption, but it is RECOMMENDED that they generate
ACKs under two circumstances:</t>
        <ul spacing="normal">
          <li>
            <t>When they receive a message or fragment which is out of order,
either because it is not the next expected message or because
it is not the next piece of the current message.</t>
          </li>
          <li>
            <t>When they have received part of a flight and do not immediately
receive the rest of the flight (which may be in the same UDP
datagram). "Immediately" is hard to define. One approach is to
set a timer for 1/4 the current retransmit timer value when
the first record in the flight is received and then send an
ACK when that timer expires. Note: The 1/4 value here is somewhat
arbitrary. Given that the round trip estimates in the DTLS
handshake are generally very rough (or the default), any
value will be an approximation, and there is an inherent
compromise due to competition between retransmission due to over-aggressive ACKing
and over-aggressive timeout-based retransmission.
As a comparison point,
QUIC's loss-based recovery algorithms
(Section 6.1.2 of <xref target="RFC9002"/>)
work out to a delay of about 1/3 of the retransmit timer.</t>
          </li>
        </ul>
        <t>In general, flights MUST be ACKed unless they are implicitly
acknowledged. In the present specification, the following flights are implicitly acknowledged
by the receipt of the next flight, which generally immediately follows the flight:</t>
        <ol spacing="normal" type="1"><li>
            <t>Handshake flights other than the client's final flight of the
main handshake.</t>
          </li>
          <li>
            <t>The server's post-handshake CertificateRequest.</t>
          </li>
        </ol>
        <t>ACKs SHOULD NOT be sent for these flights unless
the responding flight cannot be generated immediately.
All other flights MUST be ACKed.
In this case,
implementations MAY send explicit ACKs for the complete received
flight even though it will eventually also be implicitly acknowledged
through the responding flight.
A notable example for this is
the case of client authentication in constrained
environments, where generating the CertificateVerify message can
take considerable time on the client.
Implementations MAY acknowledge the records corresponding to each transmission of
each flight or simply acknowledge the most recent one. In general,
implementations SHOULD ACK as many received packets as can fit
into the ACK record, as this provides the most complete information
and thus reduces the chance of spurious retransmission; if space
is limited, implementations SHOULD favor including records which
have not yet been acknowledged.</t>
        <t>Note: While some post-handshake messages follow a request/response
pattern, this does not necessarily imply receipt.
For example, a KeyUpdate sent in response to a KeyUpdate with
request_update set to "update_requested" does not implicitly
acknowledge the earlier KeyUpdate message because the two KeyUpdate
messages might have crossed in flight.</t>
        <t>ACKs MUST NOT be sent for records of any content type
other than handshake or for records which cannot be deprotected.</t>
        <t>Note that in some cases it may be necessary to send an ACK which
does not contain any record numbers. For instance, a client
might receive an EncryptedExtensions message prior to receiving
a ServerHello. Because it cannot decrypt the EncryptedExtensions,
it cannot safely acknowledge it (as it might be damaged). If the client
does not send an ACK, the server will eventually retransmit
its first flight, but this might take far longer than the
actual round trip time between client and server. Having
the client send an empty ACK shortcuts this process.</t>
      </section>
      <section anchor="receiving-acks">
        <name>Receiving ACKs</name>
        <t>When an implementation receives an ACK, it SHOULD record that the
messages or message fragments sent in the records being
ACKed were received and omit them from any future
retransmissions. Upon receipt of an ACK that leaves it with
only some messages from a flight having been acknowledged,
an implementation SHOULD retransmit the unacknowledged
messages or fragments. Note that this requires implementations to
track which messages appear in which records. Once all the messages in a flight have been
acknowledged, the implementation MUST cancel all retransmissions
of that flight.
Implementations MUST treat a record
as having been acknowledged if it appears in any ACK; this
prevents spurious retransmission in cases where a flight is
very large and the receiver is forced to elide acknowledgements
for records which have already been ACKed.
As noted above, the receipt of any record responding
to a given flight MUST be taken as an implicit acknowledgement for the entire
flight to which it is responding.</t>
      </section>
      <section anchor="design-rationale">
        <name>Design Rationale</name>
        <t>ACK messages are used in two circumstances, namely:</t>
        <ul spacing="normal">
          <li>
            <t>On sign of disruption, or lack of progress; and</t>
          </li>
          <li>
            <t>To indicate complete receipt of the last flight in a handshake.</t>
          </li>
        </ul>
        <t>In the first case, the use of the ACK message is optional, because
the peer will retransmit in any case and therefore the ACK just
allows for selective or early retransmission, as opposed to the timeout-based whole
flight retransmission in previous versions of DTLS. When DTLS 1.3 is used in deployments
with lossy networks, such as low-power, long-range radio networks as well as
low-power mesh networks, the use of ACKs is recommended.</t>
        <t>The use of the ACK for the second case is mandatory for the proper functioning of the
protocol. For instance, the ACK message sent by the client in Figure 13
acknowledges receipt and processing of Record 4 (containing the NewSessionTicket
message), and if it is not sent, the server will continue retransmission
of the NewSessionTicket indefinitely until its maximum retransmission count is reached.</t>
      </section>
    </section>
    <section anchor="key-updates">
      <name>Key Updates</name>
      <t>As with TLS 1.3, DTLS 1.3 implementations send a KeyUpdate message to
indicate that they are updating their sending keys.  As with other
handshake messages with no built-in response, KeyUpdates MUST be
acknowledged.  In order to facilitate epoch reconstruction
(<xref target="reconstructing"/>), implementations MUST NOT send records with the new keys or
send a new KeyUpdate until the previous KeyUpdate has been
acknowledged (this avoids having too many epochs in active use).</t>
      <t>Due to loss and/or reordering, DTLS 1.3 implementations
may receive a record with an older epoch than the
current one (the requirements above preclude receiving
a newer record). They SHOULD attempt to process those records
with that epoch (see <xref target="reconstructing"/> for information
on determining the correct epoch) but MAY opt to discard
such out-of-epoch records.</t>
      <t>Due to the possibility of an ACK message for a KeyUpdate being lost and thereby
preventing the sender of the KeyUpdate from updating its keying material,
receivers MUST retain the pre-update keying material until receipt and successful
decryption of a message using the new keys.</t>
      <t><xref target="dtls-key-update"/> shows an example exchange illustrating that successful
ACK processing updates the keys of the KeyUpdate message sender, which is
reflected in the change of epoch values.</t>
      <figure anchor="dtls-key-update">
        <name>Example DTLS Key Update</name>
        <artwork><![CDATA[
Client                                             Server

      /-------------------------------------------\
     |                                             |
     |                 Handshake                   |
      \-------------------------------------------/


 [Application Data]         -------->
 (epoch=3)

                            <--------      [Application Data]
                                                    (epoch=3)

      /-------------------------------------------\
     |                                             |
     |              Some time later ...            |
      \-------------------------------------------/


 [Application Data]         -------->
 (epoch=3)


 [KeyUpdate]
 (+ update_requested        -------->
 (epoch 3)


                            <--------      [Application Data]
                                                    (epoch=3)


                                                        [ACK]
                            <--------               (epoch=3)


 [Application Data]
 (epoch=4)                  -------->



                            <--------             [KeyUpdate]
                                                    (epoch=3)


 [ACK]                      -------->
 (epoch=4)


                            <--------      [Application Data]
                                                    (epoch=4)
]]></artwork>
      </figure>
      <t>With a 128-bit key as in AES-128, rekeying 2^64 times has a high
probability of key reuse within a given connection. Note that even if
the key repeats, the IV is also independently generated. In order to
provide an extra margin of security, sending implementations MUST NOT
allow the epoch to exceed 2^48-1. In order to allow this value to
be changed later, receiving implementations MUST NOT
enforce this rule. If a sending implementation receives a KeyUpdate
with request_update set to "update_requested", it MUST NOT send
its own KeyUpdate if that would cause it to exceed these limits
and SHOULD instead ignore the "update_requested" flag.
Note: this overrides the requirement in TLS 1.3 to always
send a KeyUpdate in response to "update_requested".</t>
    </section>
    <section anchor="connection-id-updates">
      <name>Connection ID Updates</name>
      <t>If the client and server have negotiated the "connection_id"
extension <xref target="RFC9146"/>, either side
can send a new CID that it wishes the other side to use
in a NewConnectionId message.</t>
      <artwork><![CDATA[
    enum {
        cid_immediate(0), cid_spare(1), (255)
    } ConnectionIdUsage;

    opaque ConnectionId<0..2^8-1>;

    struct {
        ConnectionId cids<0..2^16-1>;
        ConnectionIdUsage usage;
    } NewConnectionId;
]]></artwork>
      <dl>
        <dt>cids:</dt>
        <dd>
          <t>Indicates the set of CIDs that the sender wishes the peer to use.</t>
        </dd>
        <dt>usage:</dt>
        <dd>
          <t>Indicates whether the new CIDs should be used immediately or are
spare.  If usage is set to "cid_immediate", then one of the new CIDs
MUST be used immediately for all future records. If it is set to
"cid_spare", then either an existing or new CID MAY be used.</t>
        </dd>
      </dl>
      <t>Endpoints SHOULD use receiver-provided CIDs in the order they were provided.
Implementations which receive more spare CIDs than they wish to maintain
MAY simply discard any extra CIDs.
Endpoints MUST NOT have more than one NewConnectionId message outstanding.</t>
      <t>Implementations which either did not negotiate the "connection_id" extension
or which have negotiated receiving an empty CID MUST NOT
send NewConnectionId. Implementations MUST NOT send RequestConnectionId
when sending an empty Connection ID. Implementations which detect a violation
of these rules MUST terminate the connection with an "unexpected_message"
alert.</t>
      <t>Implementations SHOULD use a new CID whenever sending on a new path
and SHOULD request new CIDs for this purpose if path changes are anticipated.</t>
      <artwork><![CDATA[
    struct {
      uint8 num_cids;
    } RequestConnectionId;
]]></artwork>
      <dl>
        <dt>num_cids:</dt>
        <dd>
          <t>The number of CIDs desired.</t>
        </dd>
      </dl>
      <t>Endpoints SHOULD respond to RequestConnectionId by sending a
NewConnectionId with usage "cid_spare" containing num_cids CIDs as soon as
possible.  Endpoints MUST NOT send a RequestConnectionId message
when an existing request is still unfulfilled; this implies that
endpoints need to request new CIDs well in advance.  An endpoint MAY
handle requests which it considers excessive by responding with
a NewConnectionId message containing fewer than num_cids CIDs,
including no CIDs at all. Endpoints MAY handle an excessive number
of RequestConnectionId messages by terminating the connection
using a "too_many_cids_requested" (alert number 52) alert.</t>
      <t>Endpoints MUST NOT send either of these messages if they did not negotiate a
CID. If an implementation receives these messages when CIDs
were not negotiated, it MUST abort the connection with an "unexpected_message"
alert.</t>
      <section anchor="connection-id-example">
        <name>Connection ID Example</name>
        <t>Below is an example exchange for DTLS 1.3 using a single
CID in each direction.</t>
        <t>Note: The "connection_id" extension,
which is used in ClientHello and ServerHello messages,
is defined in <xref target="RFC9146"/>.</t>
        <figure anchor="dtls-example">
          <name>Example DTLS 1.3 Exchange with CIDs</name>
          <artwork><![CDATA[
Client                                             Server
------                                             ------

ClientHello
(connection_id=5)
                            -------->


                            <--------       HelloRetryRequest
                                                     (cookie)

ClientHello                 -------->
(connection_id=5)
  + cookie

                            <--------             ServerHello
                                          (connection_id=100)
                                          EncryptedExtensions
                                                      (cid=5)
                                                  Certificate
                                                      (cid=5)
                                            CertificateVerify
                                                      (cid=5)
                                                     Finished
                                                      (cid=5)

Certificate                -------->
(cid=100)
CertificateVerify
(cid=100)
Finished
(cid=100)
                           <--------                      ACK
                                                      (cid=5)

Application Data           ========>
(cid=100)
                           <========         Application Data
                                                      (cid=5)
]]></artwork>
        </figure>
        <t>If no CID is negotiated, then the receiver MUST reject any
records it receives that contain a CID.</t>
      </section>
    </section>
    <section anchor="application-data-protocol">
      <name>Application Data Protocol</name>
      <t>Application data messages are carried by the record layer and are split
into records
and encrypted based on the current connection state. The messages
are treated as transparent data to the record layer.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security issues are discussed primarily in <xref target="TLS13"/>.</t>
      <t>The primary additional security consideration raised by DTLS is that
of denial of service by excessive resource consumption.  DTLS includes a cookie exchange designed to
protect against denial of service.  However, implementations that do
not use this cookie exchange are still vulnerable to DoS.  In
particular, DTLS servers that do not use the cookie exchange may be
used as attack amplifiers even if they themselves are not
experiencing DoS.  Therefore, DTLS servers SHOULD use the cookie
exchange unless there is good reason to believe that amplification is
not a threat in their environment.  Clients MUST be prepared to do a
cookie exchange with every handshake.</t>
      <t>Some key properties required of the cookie for the cookie-exchange mechanism
to be functional are described in Section 3.3 of <xref target="RFC2522"/>:</t>
      <ul spacing="normal">
        <li>
          <t>The cookie MUST depend on the client's address.</t>
        </li>
        <li>
          <t>It MUST NOT be possible for anyone other than the issuing entity to generate
cookies that are accepted as valid by that entity.  This typically entails
an integrity check based on a secret key.</t>
        </li>
        <li>
          <t>Cookie generation and verification are triggered by unauthenticated parties,
and as such their resource consumption needs to be restrained in order to
avoid having the cookie-exchange mechanism itself serve as a DoS vector.</t>
        </li>
      </ul>
      <t>Although the cookie must allow the server to produce the right handshake
transcript, it SHOULD be constructed so that knowledge of the cookie
is insufficient to reproduce the ClientHello contents. Otherwise,
this may create problems with future extensions such as Encrypted Client Hello <xref target="I-D.ietf-tls-esni"/>.</t>
      <t>When cookies are generated using a keyed authentication mechanism,
it should be possible to rotate the associated
secret key, so that temporary compromise of the key does not permanently
compromise the integrity of the cookie-exchange mechanism.  Though this secret
is not as high-value as, e.g., a session-ticket-encryption key, rotating the
cookie-generation key on a similar timescale would ensure that the
key rotation functionality is exercised regularly and thus in working order.</t>
      <t>The cookie exchange provides address validation during the handshake.
DTLS with Connection IDs allows for endpoint addresses to change during the
association; any such updated addresses are not covered by the cookie exchange
during the handshake.
DTLS implementations MUST NOT update the address they send to in response
to packets from a different address unless they first perform some
reachability test; no such test is defined in this specification and
a future specification would need to specify a complete
procedure for how and when to update addresses.
Even
with such a test, an active on-path adversary can also black-hole traffic or
create a reflection attack against third parties because a DTLS peer
has no means to distinguish a genuine address update event (for
example, due to a NAT rebinding) from one that is malicious. This
attack is of concern when there is a large asymmetry of
request/response message sizes.</t>
      <t>With the exception of order protection and non-replayability, the security
guarantees for DTLS 1.3 are the same as TLS 1.3. While TLS always provides
order protection and non-replayability, DTLS does not provide order protection
and may not provide replay protection.</t>
      <t>Unlike TLS implementations, DTLS implementations SHOULD NOT respond
to invalid records by terminating the connection.</t>
      <t>TLS 1.3 requires replay protection for 0-RTT data (or rather, for connections
that use 0-RTT data; see Section 8 of <xref target="TLS13"/>).  DTLS provides an optional
per-record replay-protection mechanism, since datagram protocols are
inherently subject to message reordering and replay.  These two
replay-protection mechanisms are orthogonal, and neither mechanism meets the
requirements for the other.</t>
      <t>DTLS 1.3's handshake transcript does not include the new DTLS fields,
which makes it have the same format as TLS 1.3. However, the DTLS 1.3 and
TLS 1.3 transcripts are disjoint because they use different version
numbers. Additionally, the DTLS 1.3 key schedule uses a different label
and so will produce different keys for the same transcript.</t>
      <t>The security and privacy properties of the CID for DTLS 1.3 build
on top of what is described for DTLS 1.2 in <xref target="RFC9146"/>. There are,
however, several differences:</t>
      <ul spacing="normal">
        <li>
          <t>In both versions of DTLS, extension negotiation is used to agree on the use of the CID
feature and the CID values. In both versions, the CID is carried in the DTLS record header (if negotiated).
However, the way the CID is included in the record header differs between the two versions.</t>
        </li>
        <li>
          <t>The use of the post-handshake message allows the client and the server
to update their CIDs, and those values are exchanged with confidentiality
protection.</t>
        </li>
        <li>
          <t>The ability to use multiple CIDs allows for improved privacy properties
in multihomed scenarios. When only a single CID is in use on multiple
paths from such a host, an adversary can correlate the communication
interaction across paths, which adds further privacy concerns. In order
to prevent this, implementations SHOULD attempt to use fresh CIDs
whenever they change local addresses or ports (though this is not always
possible to detect). The RequestConnectionId message can be used by a peer
to ask for new CIDs to ensure that a pool of suitable CIDs is available.</t>
        </li>
        <li>
          <t>The mechanism for encrypting sequence numbers (<xref target="rne"/>) prevents
trivial tracking by on-path adversaries that attempt to correlate the
pattern of sequence numbers received on different paths; such tracking
could occur even when different CIDs are used on each path, in the
absence of sequence number encryption. Switching CIDs based on certain
events, or even regularly, helps against tracking by on-path
adversaries.  Note that sequence number encryption is used for all
encrypted DTLS 1.3 records irrespective of whether a CID is used or
not.  Unlike the sequence number, the epoch is not encrypted because it acts as a key identifier, which
may improve correlation of packets from a single connection across
different network paths.</t>
        </li>
        <li>
          <t>DTLS 1.3 encrypts handshake messages much earlier than in previous
DTLS versions. Therefore, less information identifying the DTLS client, such as
the client certificate, is available to an on-path adversary.</t>
        </li>
      </ul>
    </section>
    <section anchor="changes-since-dtls-12">
      <name>Changes since DTLS 1.2</name>
      <t>Since TLS 1.3 introduces a large number of changes with respect to TLS 1.2, the list
of changes from DTLS 1.2 to DTLS 1.3 is equally large. For this reason,
this section focuses on the most important changes only.</t>
      <ul spacing="normal">
        <li>
          <t>New handshake pattern, which leads to a shorter message exchange.</t>
        </li>
        <li>
          <t>Only AEAD ciphers are supported. Additional data calculation has been simplified.</t>
        </li>
        <li>
          <t>Removed support for weaker and older cryptographic algorithms.</t>
        </li>
        <li>
          <t>HelloRetryRequest of TLS 1.3 used instead of HelloVerifyRequest.</t>
        </li>
        <li>
          <t>More flexible cipher suite negotiation.</t>
        </li>
        <li>
          <t>New session resumption mechanism.</t>
        </li>
        <li>
          <t>PSK authentication redefined.</t>
        </li>
        <li>
          <t>New key derivation hierarchy utilizing a new key derivation construct.</t>
        </li>
        <li>
          <t>Improved version negotiation.</t>
        </li>
        <li>
          <t>Optimized record layer encoding and thereby its size.</t>
        </li>
        <li>
          <t>Added CID functionality.</t>
        </li>
        <li>
          <t>Sequence numbers are encrypted.</t>
        </li>
      </ul>
    </section>
    <section anchor="updates-affecting-dtls-12">
      <name>Updates Affecting DTLS 1.2</name>
      <t>This document defines several changes that optionally affect
implementations of DTLS 1.2, including those which do not also support
DTLS 1.3.</t>
      <ul spacing="normal">
        <li>
          <t>A version downgrade protection mechanism as described
in <xref target="TLS13"/>, Section 4.1.3 and applying to DTLS as
described in <xref target="clienthello-message"/>.</t>
        </li>
        <li>
          <t>The updates described in <xref target="TLS13"/>, Section 1.3.</t>
        </li>
        <li>
          <t>The new compliance requirements described in <xref target="TLS13"/>, Section 9.3.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA has allocated the content type value 26 in the "TLS ContentType"
registry for the ACK message, defined in <xref target="ack-msg"/>.
The value for the "DTLS-OK" column is "Y".  IANA has reserved
the content type range 32-63 so that content types in this range are not
allocated.</t>
      <t>IANA has allocated value 52 for the "too_many_cids_requested" alert in
the "TLS Alerts" registry. The value for the "DTLS-OK" column is "Y".</t>
      <t>IANA has allocated two values in the "TLS HandshakeType"
registry, defined in <xref target="TLS13"/>, for request_connection_id (9) and
new_connection_id (10), as defined in this document.  The value for the
"DTLS-OK" column is "Y".</t>
      <t>IANA has added this RFC as a reference to the "TLS Cipher Suites" registry
along with the following Note:</t>
      <artwork><![CDATA[
Any TLS cipher suite that is specified for use with DTLS MUST
define limits on the use of the associated AEAD function that
preserves margins for both confidentiality and integrity,
as specified in Section 4.5.3 of RFC 9147.
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC0768">
          <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="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="RFC1191">
          <front>
            <title>Path MTU discovery</title>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="November" year="1990"/>
            <abstract>
              <t>This memo describes a technique for dynamically discovering the maximum transmission unit (MTU) of an arbitrary internet path. It specifies a small change to the way routers generate one type of ICMP message. For a path that passes through a router that has not been so changed, this technique might not discover the correct Path MTU, but it will always choose a Path MTU as accurate as, and in many cases more accurate than, the Path MTU that would be chosen by current practice. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1191"/>
          <seriesInfo name="DOI" value="10.17487/RFC1191"/>
        </reference>
        <reference anchor="RFC4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta"/>
            <date month="March" year="2006"/>
            <abstract>
              <t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </reference>
        <reference anchor="RFC4821">
          <front>
            <title>Packetization Layer Path MTU Discovery</title>
            <author fullname="M. Mathis" initials="M." surname="Mathis"/>
            <author fullname="J. Heffner" initials="J." surname="Heffner"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>This document describes a robust method for Path MTU Discovery (PMTUD) that relies on TCP or some other Packetization Layer to probe an Internet path with progressively larger packets. This method is described as an extension to RFC 1191 and RFC 1981, which specify ICMP-based Path MTU Discovery for IP versions 4 and 6, respectively. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4821"/>
          <seriesInfo name="DOI" value="10.17487/RFC4821"/>
        </reference>
        <reference anchor="RFC0793">
          <front>
            <title>Transmission Control Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="RFC" value="793"/>
          <seriesInfo name="DOI" value="10.17487/RFC0793"/>
        </reference>
        <reference anchor="RFC6298">
          <front>
            <title>Computing TCP's Retransmission Timer</title>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="J. Chu" initials="J." surname="Chu"/>
            <author fullname="M. Sargent" initials="M." surname="Sargent"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document defines the standard algorithm that Transmission Control Protocol (TCP) senders are required to use to compute and manage their retransmission timer. It expands on the discussion in Section 4.2.3.1 of RFC 1122 and upgrades the requirement of supporting the algorithm from a SHOULD to a MUST. This document obsoletes RFC 2988. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6298"/>
          <seriesInfo name="DOI" value="10.17487/RFC6298"/>
        </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="RFC9146">
          <front>
            <title>Connection Identifier for DTLS 1.2</title>
            <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="A. Kraus" initials="A." surname="Kraus"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document specifies the Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS) protocol version 1.2.</t>
              <t>A CID is an identifier carried in the record layer header that gives the recipient additional information for selecting the appropriate security association. In "classical" DTLS, selecting a security association of an incoming DTLS record is accomplished with the help of the 5-tuple. If the source IP address and/or source port changes during the lifetime of an ongoing DTLS session, then the receiver will be unable to locate the correct security context.</t>
              <t>The new ciphertext record format with the CID also provides content type encryption and record layer padding.</t>
              <t>This document updates RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9146"/>
          <seriesInfo name="DOI" value="10.17487/RFC9146"/>
        </reference>
        <reference anchor="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="CHACHA">
          <front>
            <title>ChaCha20 and Poly1305 for IETF Protocols</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a "combined mode", or Authenticated Encryption with Associated Data (AEAD) algorithm.</t>
              <t>RFC 7539, the predecessor of this document, was meant to serve as a stable reference and an implementation guide. It was a product of the Crypto Forum Research Group (CFRG). This document merges the errata filed against RFC 7539 and adds a little text to the Security Considerations section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8439"/>
          <seriesInfo name="DOI" value="10.17487/RFC8439"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7296">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="RFC2522">
          <front>
            <title>Photuris: Session-Key Management Protocol</title>
            <author fullname="P. Karn" initials="P." surname="Karn"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="March" year="1999"/>
            <abstract>
              <t>This document defines the basic protocol mechanisms. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2522"/>
          <seriesInfo name="DOI" value="10.17487/RFC2522"/>
        </reference>
        <reference anchor="RFC4303">
          <front>
            <title>IP Encapsulating Security Payload (ESP)</title>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an updated version of the Encapsulating Security Payload (ESP) protocol, which is designed to provide a mix of security services in IPv4 and IPv6. ESP is used to provide confidentiality, data origin authentication, connectionless integrity, an anti-replay service (a form of partial sequence integrity), and limited traffic flow confidentiality. This document obsoletes RFC 2406 (November 1998). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4303"/>
          <seriesInfo name="DOI" value="10.17487/RFC4303"/>
        </reference>
        <reference anchor="RFC4340">
          <front>
            <title>Datagram Congestion Control Protocol (DCCP)</title>
            <author fullname="E. Kohler" initials="E." surname="Kohler"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <date month="March" year="2006"/>
            <abstract>
              <t>The Datagram Congestion Control Protocol (DCCP) is a transport protocol that provides bidirectional unicast connections of congestion-controlled unreliable datagrams. DCCP is suitable for applications that transfer fairly large amounts of data and that can benefit from control over the tradeoff between timeliness and reliability. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4340"/>
          <seriesInfo name="DOI" value="10.17487/RFC4340"/>
        </reference>
        <reference anchor="RFC4346">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.1</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="April" year="2006"/>
            <abstract>
              <t>This document specifies Version 1.1 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4346"/>
          <seriesInfo name="DOI" value="10.17487/RFC4346"/>
        </reference>
        <reference anchor="RFC4347">
          <front>
            <title>Datagram Transport Layer Security</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2006"/>
            <abstract>
              <t>This document specifies Version 1.0 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4347"/>
          <seriesInfo name="DOI" value="10.17487/RFC4347"/>
        </reference>
        <reference anchor="RFC5238">
          <front>
            <title>Datagram Transport Layer Security (DTLS) over the Datagram Congestion Control Protocol (DCCP)</title>
            <author fullname="T. Phelan" initials="T." surname="Phelan"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This document specifies the use of Datagram Transport Layer Security (DTLS) over the Datagram Congestion Control Protocol (DCCP). DTLS provides communications privacy for applications that use datagram transport protocols and allows client/server applications to communicate in a way that is designed to prevent eavesdropping and detect tampering or message forgery. DCCP is a transport protocol that provides a congestion-controlled unreliable datagram service. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5238"/>
          <seriesInfo name="DOI" value="10.17487/RFC5238"/>
        </reference>
        <reference anchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC7525">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="R. Holz" initials="R." surname="Holz"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation. This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7525"/>
          <seriesInfo name="DOI" value="10.17487/RFC7525"/>
        </reference>
        <reference anchor="RFC6083">
          <front>
            <title>Datagram Transport Layer Security (DTLS) for Stream Control Transmission Protocol (SCTP)</title>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document describes the usage of the Datagram Transport Layer Security (DTLS) protocol over the Stream Control Transmission Protocol (SCTP).</t>
              <t>DTLS over SCTP provides communications privacy for applications that use SCTP as their transport protocol and allows client/server applications to communicate in a way that is designed to prevent eavesdropping and detect tampering or message forgery.</t>
              <t>Applications using DTLS over SCTP can use almost all transport features provided by SCTP and its extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6083"/>
          <seriesInfo name="DOI" value="10.17487/RFC6083"/>
        </reference>
        <reference anchor="AEBounds" target="http://www.isg.rhul.ac.uk/~kp/TLS-AEbounds.pdf">
          <front>
            <title>Limits on Authenticated Encryption Use in TLS</title>
            <author initials="A." surname="Luykx">
              <organization/>
            </author>
            <author initials="K." surname="Paterson">
              <organization/>
            </author>
            <date year="2016" month="March" day="08"/>
          </front>
        </reference>
        <reference anchor="ROBUST" target="https://eprint.iacr.org/2020/718">
          <front>
            <title>Robust Channels: Handling Unreliable Networks in the Record Layers of QUIC and DTLS 1.3</title>
            <author initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author initials="F." surname="Günther">
              <organization/>
            </author>
            <author initials="C." surname="Janson">
              <organization/>
            </author>
            <date year="2020" month="June" day="15"/>
          </front>
        </reference>
        <reference anchor="DEPRECATE">
          <front>
            <title>Deprecating TLS 1.0 and TLS 1.1</title>
            <author fullname="Kathleen Moriarty" initials="K." surname="Moriarty">
              <organization>Dell EMC</organization>
            </author>
            <author fullname="Stephen Farrell" initials="S." surname="Farrell">
              <organization>Trinity College Dublin</organization>
            </author>
            <date day="21" month="January" year="2021"/>
            <abstract>
              <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.

 This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.

 This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-oldversions-deprecate-12"/>
        </reference>
        <reference anchor="RFC5763">
          <front>
            <title>Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)</title>
            <author fullname="J. Fischl" initials="J." surname="Fischl"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies how to use the Session Initiation Protocol (SIP) to establish a Secure Real-time Transport Protocol (SRTP) security context using the Datagram Transport Layer Security (DTLS) protocol. It describes a mechanism of transporting a fingerprint attribute in the Session Description Protocol (SDP) that identifies the key that will be presented during the DTLS handshake. The key exchange travels along the media path as opposed to the signaling path. The SIP Identity mechanism can be used to protect the integrity of the fingerprint attribute from modification by intermediate proxies. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5763"/>
          <seriesInfo name="DOI" value="10.17487/RFC5763"/>
        </reference>
        <reference anchor="RFC7983">
          <front>
            <title>Multiplexing Scheme Updates for Secure Real-time Transport Protocol (SRTP) Extension for Datagram Transport Layer Security (DTLS)</title>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <date month="September" year="2016"/>
            <abstract>
              <t>This document defines how Datagram Transport Layer Security (DTLS), Real-time Transport Protocol (RTP), RTP Control Protocol (RTCP), Session Traversal Utilities for NAT (STUN), Traversal Using Relays around NAT (TURN), and ZRTP packets are multiplexed on a single receiving socket. It overrides the guidance from RFC 5764 ("SRTP Extension for DTLS"), which suffered from four issues described and fixed in this document.</t>
              <t>This document updates RFC 5764.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7983"/>
          <seriesInfo name="DOI" value="10.17487/RFC7983"/>
        </reference>
        <reference anchor="RFC4960">
          <front>
            <title>Stream Control Transmission Protocol</title>
            <author fullname="R. Stewart" initials="R." role="editor" surname="Stewart"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document obsoletes RFC 2960 and RFC 3309. It describes the Stream Control Transmission Protocol (SCTP). SCTP is designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks, but is capable of broader applications.</t>
              <t>SCTP is a reliable transport protocol operating on top of a connectionless packet network such as IP. It offers the following services to its users:</t>
              <t>-- acknowledged error-free non-duplicated transfer of user data,</t>
              <t>-- data fragmentation to conform to discovered path MTU size,</t>
              <t>-- sequenced delivery of user messages within multiple streams, with an option for order-of-arrival delivery of individual user messages,</t>
              <t>-- optional bundling of multiple user messages into a single SCTP packet, and</t>
              <t>-- network-level fault tolerance through supporting of multi-homing at either or both ends of an association.</t>
              <t>The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4960"/>
          <seriesInfo name="DOI" value="10.17487/RFC4960"/>
        </reference>
        <reference anchor="RFC8201">
          <front>
            <title>Path MTU Discovery for IP version 6</title>
            <author fullname="J. McCann" initials="J." surname="McCann"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <author fullname="R. Hinden" initials="R." role="editor" surname="Hinden"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document describes Path MTU Discovery (PMTUD) for IP version 6. It is largely derived from RFC 1191, which describes Path MTU Discovery for IP version 4. It obsoletes RFC 1981.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="87"/>
          <seriesInfo name="RFC" value="8201"/>
          <seriesInfo name="DOI" value="10.17487/RFC8201"/>
        </reference>
        <reference anchor="RFC8445">
          <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="I-D.ietf-uta-tls13-iot-profile">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="18" month="October" year="2025"/>
            <abstract>
              <t>   RFC 7925 offers guidance to developers on using TLS/DTLS 1.2 for
   Internet of Things (IoT) devices with resource constraints.  This
   document is a companion to RFC 7925, defining TLS/DTLS 1.3 profiles
   for IoT devices.  Additionally, it updates RFC 7925 with respect to
   the X.509 certificate profile and ciphersuite requirements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls13-iot-profile-17"/>
        </reference>
        <reference anchor="RFC5764">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document describes a Datagram Transport Layer Security (DTLS) extension to establish keys for Secure RTP (SRTP) and Secure RTP Control Protocol (SRTCP) flows. DTLS keying happens on the media path, independent of any out-of-band signalling channel present. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5764"/>
          <seriesInfo name="DOI" value="10.17487/RFC5764"/>
        </reference>
        <reference anchor="RFC7924">
          <front>
            <title>Transport Layer Security (TLS) Cached Information Extension</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>Transport Layer Security (TLS) handshakes often include fairly static information, such as the server certificate and a list of trusted certification authorities (CAs). This information can be of considerable size, particularly if the server certificate is bundled with a complete certificate chain (i.e., the certificates of intermediate CAs up to the root CA).</t>
              <t>This document defines an extension that allows a TLS client to inform a server of cached information, thereby enabling the server to omit already available information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7924"/>
          <seriesInfo name="DOI" value="10.17487/RFC7924"/>
        </reference>
        <reference anchor="RFC8879">
          <front>
            <title>TLS Certificate Compression</title>
            <author fullname="A. Ghedini" initials="A." surname="Ghedini"/>
            <author fullname="V. Vasiliev" initials="V." surname="Vasiliev"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>In TLS handshakes, certificate chains often take up the majority of the bytes transmitted.</t>
              <t>This document describes how certificate chains can be compressed to reduce the amount of data transmitted and avoid some round trips.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8879"/>
          <seriesInfo name="DOI" value="10.17487/RFC8879"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="I-D.ietf-tls-esni">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="14" month="June" year="2025"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-25"/>
        </reference>
        <reference anchor="CCM-ANALYSIS">
          <front>
            <title>On the Security of CTR + CBC-MAC</title>
            <author fullname="Jakob Jonsson" initials="J." surname="Jonsson">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 76-93"/>
          <seriesInfo name="DOI" value="10.1007/3-540-36492-7_7"/>
          <seriesInfo name="ISBN" value="[&quot;9783540006220&quot;, &quot;9783540364924&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="I-D.irtf-cfrg-aead-limits">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization>IBM Research Europe - Zurich</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="8" month="April" year="2025"/>
            <abstract>
              <t>   An Authenticated Encryption with Associated Data (AEAD) algorithm
   provides confidentiality and integrity.  Excessive use of the same
   key can give an attacker advantages in breaking these properties.
   This document provides simple guidance for users of common AEAD
   functions about how to limit the use of keys in order to bound the
   advantage given to an attacker.  It considers limits in both single-
   and multi-key settings.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-10"/>
        </reference>
        <reference anchor="RFC9000">
          <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>
      </references>
    </references>
    <?line 2489?>

<section anchor="protocol-data-structures-and-constant-values">
      <name>Protocol Data Structures and Constant Values</name>
      <t>This section provides the normative protocol types and constants definitions.</t>
      <section anchor="record-layer">
        <name>Record Layer</name>
        <artwork><![CDATA[
struct {
    ContentType type;
    ProtocolVersion legacy_record_version;
    uint16 epoch = 0
    uint48 sequence_number;
    uint16 length;
    opaque fragment[DTLSPlaintext.length];
} DTLSPlaintext;

struct {
     opaque content[DTLSPlaintext.length];
     ContentType type;
     uint8 zeros[length_of_padding];
} DTLSInnerPlaintext;

struct {
    opaque unified_hdr[variable];
    opaque encrypted_record[length];
} DTLSCiphertext;

0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|0|0|1|C|S|L|E E|
+-+-+-+-+-+-+-+-+
| Connection ID |   Legend:
| (if any,      |
/  length as    /   C   - Connection ID (CID) present
|  negotiated)  |   S   - Sequence number length
+-+-+-+-+-+-+-+-+   L   - Length present
|  8 or 16 bit  |   E   - Epoch
|Sequence Number|
+-+-+-+-+-+-+-+-+
| 16 bit Length |
| (if present)  |
+-+-+-+-+-+-+-+-+

struct {
    uint64 epoch;
    uint64 sequence_number;
} RecordNumber;
]]></artwork>
      </section>
      <section anchor="handshake-protocol">
        <name>Handshake Protocol</name>
        <artwork><![CDATA[
enum {
    hello_request_RESERVED(0),
    client_hello(1),
    server_hello(2),
    hello_verify_request_RESERVED(3),
    new_session_ticket(4),
    end_of_early_data(5),
    hello_retry_request_RESERVED(6),
    encrypted_extensions(8),
    request_connection_id(9),           /* New */
    new_connection_id(10),              /* New */
    certificate(11),
    server_key_exchange_RESERVED(12),
    certificate_request(13),
    server_hello_done_RESERVED(14),
    certificate_verify(15),
    client_key_exchange_RESERVED(16),
    finished(20),
    certificate_url_RESERVED(21),
    certificate_status_RESERVED(22),
    supplemental_data_RESERVED(23),
    key_update(24),
    message_hash(254),
    (255)
} HandshakeType;

struct {
    HandshakeType msg_type;    /* handshake type */
    uint24 length;             /* bytes in message */
    uint16 message_seq;        /* DTLS-required field */
    uint24 fragment_offset;    /* DTLS-required field */
    uint24 fragment_length;    /* DTLS-required field */
    select (msg_type) {
        case client_hello:          ClientHello;
        case server_hello:          ServerHello;
        case end_of_early_data:     EndOfEarlyData;
        case encrypted_extensions:  EncryptedExtensions;
        case certificate_request:   CertificateRequest;
        case certificate:           Certificate;
        case certificate_verify:    CertificateVerify;
        case finished:              Finished;
        case new_session_ticket:    NewSessionTicket;
        case key_update:            KeyUpdate;
        case request_connection_id: RequestConnectionId;
        case new_connection_id:     NewConnectionId;
    } body;
} DTLSHandshake;

uint16 ProtocolVersion;
opaque Random[32];

uint8 CipherSuite[2];    /* Cryptographic suite selector */

struct {
    ProtocolVersion legacy_version = { 254,253 }; // DTLSv1.2
    Random random;
    opaque legacy_session_id<0..32>;
    opaque legacy_cookie<0..2^8-1>;                  // DTLS
    CipherSuite cipher_suites<2..2^16-2>;
    opaque legacy_compression_methods<1..2^8-1>;
    Extension extensions<8..2^16-1>;
} ClientHello;
]]></artwork>
      </section>
      <section anchor="acks">
        <name>ACKs</name>
        <artwork><![CDATA[
struct {
    RecordNumber record_numbers<0..2^16-1>;
} ACK;
]]></artwork>
      </section>
      <section anchor="connection-id-management">
        <name>Connection ID Management</name>
        <artwork><![CDATA[
enum {
    cid_immediate(0), cid_spare(1), (255)
} ConnectionIdUsage;

opaque ConnectionId<0..2^8-1>;

struct {
    ConnectionId cids<0..2^16-1>;
    ConnectionIdUsage usage;
} NewConnectionId;

struct {
  uint8 num_cids;
} RequestConnectionId;
]]></artwork>
      </section>
    </section>
    <section anchor="ccm-bounds">
      <name>Analysis of Limits on CCM Usage</name>
      <t>TLS <xref target="TLS13"/> and <xref target="AEBounds"/> do not specify limits on key usage for
AEAD_AES_128_CCM. However, any AEAD that is used with DTLS requires limits on
use that ensure that both confidentiality and integrity are preserved. This
section documents that analysis for AEAD_AES_128_CCM.</t>
      <t><xref target="CCM-ANALYSIS"/> is used as the basis of this
analysis. The results of that analysis are used to derive usage limits that are
based on those chosen in <xref target="TLS13"/>.</t>
      <t>This analysis uses symbols for multiplication (*), division (/), and
exponentiation (^), plus parentheses for establishing precedence. The following
symbols are also used:</t>
      <dl>
        <dt>t:</dt>
        <dd>
          <t>The size of the authentication tag in bits. For this cipher, t is 128.</t>
        </dd>
        <dt>n:</dt>
        <dd>
          <t>The size of the block function in bits. For this cipher, n is 128.</t>
        </dd>
        <dt>l:</dt>
        <dd>
          <t>The number of blocks in each packet (see below).</t>
        </dd>
        <dt>q:</dt>
        <dd>
          <t>The number of genuine packets created and protected by endpoints. This value
is the bound on the number of packets that can be protected before updating
keys.</t>
        </dd>
        <dt>v:</dt>
        <dd>
          <t>The number of forged packets that endpoints will accept. This value is the
bound on the number of forged packets that an endpoint can reject before
updating keys.</t>
        </dd>
      </dl>
      <t>The analysis of AEAD_AES_128_CCM relies on a count of the number of block
operations involved in producing each message. For simplicity, and to match the
analysis of other AEAD functions in <xref target="AEBounds"/>, this analysis assumes a
packet length of 2^10 blocks and a packet size limit of 2^14 bytes.</t>
      <t>For AEAD_AES_128_CCM, the total number of block cipher operations is the sum
of: the length of the associated data in blocks, the length of the ciphertext
in blocks, and the length of the plaintext in blocks, plus 1. In this analysis,
this is simplified to a value of twice the maximum length of a record in blocks
(that is, <tt>2l = 2^11</tt>). This simplification is based on the associated data
being limited to one block.</t>
      <section anchor="ccm-confidentiality">
        <name>Confidentiality Limits</name>
        <t>For confidentiality, Theorem 2 in <xref target="CCM-ANALYSIS"/> establishes that an attacker
gains a distinguishing advantage over an ideal pseudorandom permutation (PRP) of
no more than:</t>
        <artwork><![CDATA[
(2l * q)^2 / 2^n
]]></artwork>
        <t>For a target advantage in a single-key setting of 2^-60, which matches that used by TLS 1.3,
as summarized in <xref target="I-D.irtf-cfrg-aead-limits"/>, this results in the relation:</t>
        <artwork><![CDATA[
q <= 2^23
]]></artwork>
        <t>That is, endpoints cannot protect more than 2^23 packets with the same set of
keys without causing an attacker to gain an larger advantage than the target of
2^-60.</t>
      </section>
      <section anchor="ccm-integrity">
        <name>Integrity Limits</name>
        <t>For integrity, Theorem 1 in <xref target="CCM-ANALYSIS"/> establishes that an attacker
gains an advantage over an ideal PRP of no more than:</t>
        <artwork><![CDATA[
v / 2^t + (2l * (v + q))^2 / 2^n
]]></artwork>
        <t>The goal is to limit this advantage to 2^-57, to match the target in
TLS 1.3, as summarized in <xref target="I-D.irtf-cfrg-aead-limits"/>. As <tt>t</tt> and <tt>n</tt> are both 128, the first term is negligible relative
to the second, so that term can be removed without a significant effect on the
result. This produces the relation:</t>
        <artwork><![CDATA[
v + q <= 2^24.5
]]></artwork>
        <t>Using the previously established value of 2^23 for <tt>q</tt> and rounding, this leads
to an upper limit on <tt>v</tt> of 2^23.5. That is, endpoints cannot attempt to
authenticate more than 2^23.5 packets with the same set of keys without causing
an attacker to gain an larger advantage than the target of 2^-57.</t>
      </section>
      <section anchor="ccm-short">
        <name>Limits for AEAD_AES_128_CCM_8</name>
        <t>The TLS_AES_128_CCM_8_SHA256 cipher suite uses the AEAD_AES_128_CCM_8 function,
which uses a short authentication tag (that is, t=64).</t>
        <t>The confidentiality limits of AEAD_AES_128_CCM_8 are the same as those for
AEAD_AES_128_CCM, as this does not depend on the tag length; see
<xref target="ccm-confidentiality"/>.</t>
        <t>The shorter tag length of 64 bits means that the simplification used in
<xref target="ccm-integrity"/> does not apply to AEAD_AES_128_CCM_8. If the goal is to
preserve the same margins as other cipher suites, then the limit on forgeries
is largely dictated by the first term of the advantage formula:</t>
        <artwork><![CDATA[
v <= 2^7
]]></artwork>
        <t>As this represents attempts that fail authentication, applying this limit might
be feasible in some environments. However, applying this limit in an
implementation intended for general use exposes connections to an inexpensive
denial-of-service attack.</t>
        <t>This analysis supports the view that TLS_AES_128_CCM_8_SHA256 is not suitable
for general use. Specifically, TLS_AES_128_CCM_8_SHA256 cannot be used without
additional measures to prevent forgery of records, or to mitigate the effect of
forgeries. This might require understanding the constraints that exist in a
particular deployment or application. For instance, it might be possible to set
a different target for the advantage an attacker gains based on an
understanding of the constraints imposed on a specific usage of DTLS.</t>
      </section>
    </section>
    <section anchor="implementation-pitfalls">
      <name>Implementation Pitfalls</name>
      <t>In addition to the aspects of TLS that have been a source of interoperability
and security problems (Appendix C.3 of <xref target="TLS13"/>), DTLS presents a few new
potential sources of issues, noted here.</t>
      <ul spacing="normal">
        <li>
          <t>Do you correctly handle messages received from multiple epochs during a key
transition?  This includes locating the correct key as well as performing
replay detection, if enabled.</t>
        </li>
        <li>
          <t>Do you retransmit handshake messages that are not (implicitly or explicitly)
acknowledged (<xref target="timeout-retransmissions"/>)?</t>
        </li>
        <li>
          <t>Do you correctly handle handshake message fragments received, including
when they are out of order?</t>
        </li>
        <li>
          <t>Do you correctly handle handshake messages received out of order?
This may include either buffering or discarding them.</t>
        </li>
        <li>
          <t>Do you limit how much data you send to a peer before its address is
validated?</t>
        </li>
        <li>
          <t>Do you verify that the explicit record length is contained within the
datagram in which it is contained?</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>Many individuals have contributed to previous versions of DTLS up to 1.2,
and their contributions are acknowledged in earlier DTLS specifications
or in the referenced documents. The following individuals made significant
contributions to RFC 9147:</t>
      <artwork><![CDATA[
* David Benjamin
  Google
  davidben@google.com
]]></artwork>
      <artwork><![CDATA[
* Thomas Fossati
  Arm Limited (now Linaro)
  Thomas.Fossati@linaro.org
]]></artwork>
      <artwork><![CDATA[
* Tobias Gondrom
  Huawei (now United Overseas Bank Limited)
]]></artwork>
      <artwork><![CDATA[
* Felix Günther
  ETH Zurich (now IBM Research Zurich)
  mail@felixguenther.info
]]></artwork>
      <artwork><![CDATA[
* Benjamin Kaduk
  Akamai Technologies
  kaduk@mit.edu
]]></artwork>
      <artwork><![CDATA[
* Ilari Liusvaara
  Independent
  ilariliusvaara@welho.com
]]></artwork>
      <artwork><![CDATA[
* Martin Thomson
  Mozilla
  mt@lowentropy.net
]]></artwork>
      <artwork><![CDATA[
* Christopher A. Wood
  Apple Inc.
  cawood@apple.com
]]></artwork>
      <artwork><![CDATA[
* Yin Xinxing
  Huawei
  yinxinxing@huawei.com
]]></artwork>
      <artwork><![CDATA[
* Hanno Becker
  Arm Limited (now Amazon)
]]></artwork>
      <t>The sequence number encryption concept is taken from QUIC <xref target="RFC9000"/>.
We would like to thank the authors of RFC 9000 for their work.</t>
      <t>Felix Günther and Martin Thomson contributed the analysis in <xref target="ccm-bounds"/>.</t>
      <t>We would like to thank Jonathan Hammell, Bernard Aboba, Nick Harper and
Andy Cunningham for their review comments.</t>
      <t>Finally, we would like to thank the following IESG members for their review
comments: Martin Duke, Erik Kline, Francesca Palombini, Lars Eggert,
Zaheduzzaman Sarker, John Scudder, Éric Vyncke, Robert Wilton,
Roman Danyliw, Benjamin Kaduk, Murray Kucherawy, Martin Vigoureux
and Alvaro Retana.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y9a3vbVpYu+H3/ChzlQ6SEpHWz4thJTiuyXdHEt2Mpla5J
pfSAJCihTAIsALTMst2/bL7NH5t133sDoCw51d3nmRlWd5VMAvu+1329azgc
uiZv5tnD5PwqSx6nTXpZpYvkvEqLellWTfIsXWdVcpZNVlXerJPtx+fPznaS
V1XZlJNynvw5q+q8LJK90YFLx+Mqe/swwUfoi2k5KdIFtD2t0lkzzLNmNmzm
9bCaTb7dO/xmnNfD3T03SZvssqzWD5O6mbpyXJfzrMnqhwk+41y+rB4myyq7
f/DNg/NqVTf7u7vf7u67tMrShzYwd11Wby6rcrWEmTw7c2+yNXwzfZicFk1W
FVkzfIxjcK5u0mJ6kc7LAsa1zmq3zB+6JIEhZdO6Wc/l2ySB+QV/5sU0Kxr9
ooaVqbJZbf9eL6J/NlU+sYcn5WIB79qveTHPC99N9q4ZzvO6GUIj43IOjw3L
r76GX2D1FulymReX/Gy6aq7KCgY7hB/pkxfw9JNR8jqrJ2U1T/V7XvQnMIjO
T2V1mRb5P9MGNg0XZ5otM5qaPpAt0nz+MMneVP9WNbPFCEbv2l3+NErO68lV
OcuK/DLu9Ke0KLK65+e441+K/C2eHDhR5Sw5Xi7neTZNziZ5Vkzg9R/Lohi+
vsryYniWZ9aGHrCfhj++PmsN+Io6HjXW8b9dLt6NYOM7o38xSp6X03S6ulzF
Y3+RXsJaVGnn53jsfyrLy3k2gMWbjFqDKKSFf5vUIzxoMziCo2y6cq4oqwW8
/zbDw/b66cnuN0cP5M/9vb1v5U/4a0/+PDw8PNA/H+zv2Wvf6rdH+99qCw/2
vjmUP+HOHD2ES4NdRx1+s//tkXZ4f39fmz7YtV4ODnf9n0f+z2/kz/v7Bw/s
T3vgyD/wzf39+/rt7gNq9/jJj+WqmNYPaaGE0mw9yxd5UydANo7hTMPhy5EG
TJMnxaRaL3GVk1/qDHYLr/IWvWqHnz5D3snjUfJstX7zLv7251HyCpqr6rKg
H6bwj4fJ/u7e0XD3YLj7gIeSVpcZXNGtq6ZZPrx37/r6epTXl6PqajUfpZPR
6s29/3izvAf9D4+fjGkOo+V0hoN5/fLHX87O4xm9LsdAmZITOoV4h+EeTOGa
X8JJr7J5no7nWfIia5BK1TgxmDbcTbiaU6awNd6D//XL6UkCLxoFvWHuz0fJ
0xwOO3QS//B0lPzp//6/Cuigin84GSX/B1D11qrs7w53j4Z797urUsOyZMsq
L5pRnk6qEdyCe/j8vW/2Hmw5NxwO4UICqUsncMfOr/IaKdYKSV1SL7NJPsvh
Jr/1/AFn2NyGyThhMkthMiNbjySdz8vrOpkAuSiae3VWQftJiuRjQrezBlpN
BHdV0JlKSnwAenXKB3Dx0+Q6XcO3KfwLRp3V+WUBxw9eBT7zFieQpW+zelqV
RH4HsC6LZVbRn7g9i6yu4aY7uGOXWbUe4fQzP0gdNzY+TmtoueQN38xVcb4u
ehf7gX+8zWF4SfaPVf42ndPS6juXqxSaazL4+TpvrqiD7N0k4/sDaw1nC/rA
BrMJfXcvKcpiWGXLebpOx/kcWhklfjtqIGJ4FWvdKDj0WTVf4ylubOTAdnGV
aOmnyXjNW4pTt+1qnwZj6UgZEiQYIz4+i3w6nWfOuS8S5NNVOV3RSHk94egt
0gomWqZzHVLYDy4vbFkGhHYMDPQKloyuitGTgZuUxSxH7panONshrSoc6OwS
l3AoawPzmPDFTcZwRbMMdus6PEa4AssMTvKIBtYeBDy4LGmbZ/TinC70Q6cD
rvieR1urv0G/0/oqfZMFp/2n8hpOYTWgBxZAV1y1Kvgkp4lRE78lOnhY0Wa9
hAHP5+vk/ORV8v69sIyPH/mMwt7h/sUXBq/BCsjtL4/tjaMHHz8maQ3dBRtf
TN2trm/Sur4wR7gHuKpTmNa8XGbQUAmLNYOXgkWGE2qHOzi1cMlgjLC+0bBH
js4cXd95Ps4q2HCYdXiXx5mDjmvgNfO0wi/wBfgG9qrOx8jBxyXemxLOYQFP
/TNLiuzajyEvkBTgEGjDSrdI3/FjuAzpAphCg1s+KaeZHKxZlQJBhEO8glWu
MlhVWHehC7u8uMhQYXGvYSBllV/mBe3WNJvlOGxac5hRkyazqlwk/OqevXr0
8SORIG10n3858o1GLcEtRSIMg6Q2a10FexEZORyOJKHD4WA5i1IJ2d4jPhtK
wovVAtaZOqnf5EvYRqSlTGWg3au0WpQFLk/8Qu2IPEGb1A10IdxB9hy2bFLB
Dta0rIsS2ChsQIWEQxtSxhFePNe/VAcwr/8Bf+4dfI+C0SFP7zQkQrp0sDWn
i+U8QxoV3gUYXvqGz4atcsiUkwkQGiQiwB7o3Cn9hTPqghbKAjbWWthe1UhG
7N90cFZVne0Mkr+j7ADz0Q7yeFiuv0Nruc4yFKFB8szfJY+x5ffvaQngSODt
mWYNSKf1zsj9epUD5RinkzfXaTVlygV9MC/gVu205uFNIXYAVxDaDh8oSqBN
GSs4UyC4OInsHfAXOoJwOs7kEh+MZM506lBQRJL0/v3/fPzk1esnJ8fnT74/
HT4emYZYzqey+fUQVBToA6bN0xnn07pvPCNiIyel3tqaNu08q+B2l/Pycs1c
BRTDBDXDOtl6DmLc1oD/N3nxkv5+/QSEsNdPHuPfZz8dP3tmf+gTZz+9/OUZ
/O7kL//mycvnz5+8eMwvw7dJ66vnx3/ZYgFi6+Wr89OXL46fbbEsmNfOuCUS
aKJevOUw94avs14UWtgfgbzvHfJyogIBa0N/oyrw8aO7Bi7IXdEp5H/Coq2R
iGZADlEKms/hKC/zJp3XtHP1VXldJEgIRKKZlShuEf+HZaxpaLDqU1AwUKpk
KYwtB7D/yxIGDA3nwG2JZdqdBTZc8EEY8ZtpXYNKLfrUGVAOmBSwcTjZIQPW
NmvP4+E5PKUsFnPjxkGlbd8ZNL0GiWe9oFsQ9ClPavugKucoLtOAeVJA1hKR
LoX4dOaQLcvJ1UNY3wyeZEaAyksJvHF5BZo3HLSaVot6z7xqg7syzfSf0prN
ArSaQhZxDvzosmx4zLYyMkBsRUZINMcvUc2iPEpQICEuska0i95ZoFhDXepi
jJJfr5BVg26xqolkpdgOiFQrZKP6GBxnfHULuNwM2wf2qL3aUVABu8oWwM3x
UDeBWFevxn+HoRBzks5sVHDfMzQQRCML2sNfcWgsWdXyVo1EaMM7JMeA1tn0
vVZRV9ExvoYtvIKBTZHG6aHObjjSJ6ePHyL1kW+T08f8/fOzZ6CsoeSwWgA5
vKQ7/iyfZU2+yPiaVVmKPBRGCWcUiIBIL8ksBdElh0Unwmw0feSOa9GNkVsw
cf4pg6v6Omuq9WtQFuAwkNSFv9RwBBK2BrBQcEbzpRecaDIgCq0aOqcTop9k
hkmumcZiI3j/e/porqpydXlVrhrXRCI/dJTPkhzWkWRO3GFYedht6dCLRQfY
B3AS1o1BoUCljWSK7XF+OUSmlhY7OgG5SuUUt1Haql2kZNnP8ooKRLBini3i
7QEyCFcJ+nm8g0OJpJJ61NmaeV1+Yn/E/ALkl5Y+Wg+ycPGGwElJZquCjgmp
Jdicrgb0+zS/BPGxVs7gG8nn8xXq27BCb9MqL1fEwMcgQjK/6xOTUCUE2gKr
NDC9QwyNcELe8u56Or/I0gINjnh2v0q+/PpLtJlNSZ0ibp/BJjVXa2i1yQpi
z3jrGrVooPqM4wKWgw9P/XZTc19FzZVLXgGitXmzolkMzSBp23sv6IyuM7Ih
vJXpHNR4HoB08P7jl0EH2kDi9TwWwog0w77mqMKS8Jgmf/2NycfvF0aKL2Ct
Z3AiLkAlAC4sffz1t98/s5O4uYsXI9J8absek96SvE55SVifeAnX9G0OKsn7
L6ZkNpdfP/LZhFMPbIY1ngRYzrysy+XV2mSiXIwhBaskyRZ+SVrkVFU40+62
QJ/qfAmXkvlihfaHik5A5Y0SpomWKE4M+dKiNgZd0Ciwm5E3jdiRVPOBXJIl
ibVwDYhLex1P3j8OldV6BVQ5xVUHsoB29gzuIJplzLwDamC2vAKub+IP3P7k
kh5DUuO6kxfCFyqi05XxK5hRuh7WeALRnJrAbYPr6fCyaQOwwTRWUqOAMsDF
ykuSHHi84QxgwnD36UpOSS4j61S8QLkIDjAC0kazeHQDuC5In7s60bTka0qC
PYwYSQVObo5aVYkbSbsk49UDOUpeEH/Gu3WNGoIDajCcw8vFZO0XmdbTLyR3
TTYzOvjc5HY2uhwNsFMX6PCwEmnyazZ+fX7Cj4nJAnQf269k1QA1/acqaNgC
yuom1yxU6sFpn/GyvM7S+RAZaWCMMNfU9tnr81c7PUOhEYDugfrvN0diHEGe
DmOCtRuzkAs8C+SEBkjZhjtTi2kipJ8zUOmQadSw1UBE90ZiACLiT7IfKXf5
JEdLHjBR3EdRrOFnFUyS5HRGth4yHImiBeKVyEVT4vlMcuGrfEkS4TXwB2PY
11UJw2l3gecN20mbJlssWUgvST57m4VmKjW9INUCOY2bafzwaIdAn37LwqZe
YyAGCzQJplNiwK3ea+5LRa/9UaLGNG8EQ0YLp3XyZlg32bIlUXsLWfJcWT/0
jhYy3DQT8VBdgnOii8UWXxUD6AI8ggdgX9VGzqQL+wbJsarKSm7y49bgisl8
NfU03yaIbQRzzAoii7MqJWnPs0E6GXW2GMOhYoMRU0183wgnjHYC8owdOFa7
OjcYVvBgRG4GHpzxITLQwhaS0RM6mqNNn5SEgiwXY9ICGlPRU6Qml3OahPaJ
ZmGylk1BT57l2Xxas4mn0xuSqNWSqajMl2gUnTLaBJ0xDPhwlPRwGd1WHnq9
qsmGTSZOkLjGwE3feqKK7WazGR5QOGEgJ8Akh+VsiAwlh6O2/bg828HznU7e
QIOXME1YONACWYfJlynok9H0Ur5YQNSLIUizjVjGgURlkzex4YckVbXc4hdd
iVhdA9Am2WXev5+WdccO4774IklewRCBYT0r61qkYWof9wPtPzgmPtGkGSVI
5irdhTkqd/Q6HIwaLSksIUSvQLdTuNoFy4w8chYa4ADgIg9EVCEalld145ZX
KVtVms7xB3L2H//xH+rwTJIT1kM//WF9w784pM8tXuQH2z3Smnee+sG5bgOt
z79/B912tuzT73U+23gbd4IefzunzXnyboli0u/utmP2LdrOQbu4zO8fJl/0
bCk7HL/foq15Hf/05F2K52YLxMOXKh6IsYB0wYA8khoSjMzUQGBL2TtQhJra
kfCBulv3kKOcFqqRIt6iakFfBi6MnI6S48Ob8foMwqG9KdChxyYMs8K4cHDC
ZOHFJZzlrN2Zdy/grgxYc3eT1C4rd+SI+egitFdArB5Bq8I9auk7XOmBy23c
UaPo1O5drWCtRLFU1yVqlQsgUkiPa2L5PZceiYdR3LxxqKnUyXYpywVEvdPr
jlBfHVutsiasc7QZJPw5FFHXbBoJ+69VCO7OKn1bqiG2yEhWdaDVoMDJhryy
iA4E8dNuKy336zhz9QLtklmBdgWx3ohoQ4aYps7mM1K+jbvicQJVmAYEU3BE
3CpczTGQc7aizrOUDEaL1bzJkbh2hoIiyVNc57LKhFInsgHQSh0vpxwDJvDy
SOum1iRWIp1/zSwbh+ZOC6KqgyRLQTHo8FOxAfF6pGaS8IIGSxmwnHRcUzLf
+aOa+hZdeKWR7YMGN3lDnqaGTOIZHgg9QE04AN7Sd42z74wosGCKJ70WETQn
/j2BJ+lo8gOwU9ivg0Gv6Gs6wbMVucWuNDICt4mM0Go18GecLBN4p50KcbKW
TyMZg6R249A90onIOzB3OJEkCCXbbKooQdJaLfHU7v9t/3C4R4YnmBT8usSI
BpQlFigkvgG9mn7bgbn9uCbZCb18A/SXulhIK2cNkiGMbuHzPIeB8AXdu7+7
y30gSTx9FUtLKuLjXUDZDt3h3rPWUuZI2qZORBuks4RL4LoHapGu49vC2kyN
1Dmd88KJTM4NoWLLxs+8pruDjh0cxSxvQnGR3MU6fSeyznLRrIZw/mHXRea5
XOXTFDYaVu/JDcMUibRmt1tq40UvMVrXcZP9t26eFZfNFVGVFRq2Ai0IN7DE
06ieQzxhvPCkhXZuCB0SE1OZbapnFlT1rhRv1xrjKJLHmWhLIsOpVWu+VsG4
Vs2KIy/oBrLlmKki/OuqyOGukNrp8sBsm5IV8PRVnU2S45/uPTl7NUD9ShkG
W+fHebNIl0Aji2l5DZO0OxOokxxqFNjPmhIY6zzcWNIauQ10MFfhG3QfA+Me
sVvrhsT2HKNTkL7k9SSFkzsdiQE1nnMyy8h+gqdLl0rtGSLRTlfeBJTXLrD0
AWsAER4pBZqrcd+If5aTCWjdYrJBER7XhfS4umU+wttA7CF/m47nOizrUYfA
1D6d4ArgYV+7RTnNZxTrkldmO/FsmiXsyzVb9Ex1DAO8WjFCciQoVIS4YI7h
EHiATbzpfRS3hibd84L5lsM3RmyFkJ9P8iWQfIw5TXygQknyAR261TKrZvMV
LnHL7Y8dg6DarJeZaISswweKVME+MXFNxZYHkSOCcJgrMq1TBCVHBbTekFCv
2MZB1LASu4w40ag/GC1uUEjPqGkTRImriaFlhncmcM6R22Dj0EX/5Ti75qaF
NEkUaPhqYmZfCl4hxsIXCNtR7zar8XY0eBQYtpGiLYwUdPzhFbrUqTdYqX04
8Q2e0nnJbo7Yj4/Nh678/VG4CvD+23S+ogtIlJWXGAQkEMdQ8iAfCCy19kIG
krb3kAc68JwCNv8Bv4BhDShyobmkypTpwBto3cDGfs7Wvywx/HAEcjFyDVjw
ISz8kNqMdWVemvaOyNDZ5zhmkj1H2kcc8/ABb68M+ugQ/9luY5T4JZXzgo1p
KAC2WrNRrbnqMWSRqbRcAQHFkDuY4P7fDh8M94CS0TnHpoD4w2D2jngwJMEK
GYO2d9kacuO1vCJvHXp60Jw0ZJ5n18bFx0LJtbro2XYMp3lVeMeEPSQik+/W
bXy/83YY7ShXmT1tYr+hIIJxBvsxSn4pSALCkBA0eSJPbFJRQJ34mnSf9JqF
9nG6PyYeQo/3qNvg8qhJQnwc702lPilRdmnOkV4h0Xpkv6iBWFMX5tllOllf
8FwupG3/+ApWGHaRb+b3yW70A5w1PRwXfDg6L/K++a/LZYq8XuWK36J9HPHT
v/PjH+O7/8j1T1WbnPCUb2rxE0tDY36Q/DOryvo3fvGinF0s2aAbjeoUSEH1
yaHJyFZIVbLpxdW0+k0P9O+dJZEYCXiO9+K3nsXwR/ZR205CRzG0jyDzFBb8
lE8o2kZ6t/uhe8hciGkjkYFxJlQmeb9//3CQ7N8/YNqEEqXeF7Uhk5CPx1hD
N0ILxnY+ykYDChVBaeYyKyiMC0SMWUNBnV31fQBtXlPAJtAuFFuI6cOQdCz3
P3Ypf7JcVRiJSqzvtLFpAFUvK+F1pHDpY0KAxSs+CKLIRnvQhPLGytySqn/A
zeP4F8dxE33sw4TuPtbBCw3NBEdDG5OvhNQl28EjO+whCGSXmVFIuWkDIUHk
75/k9Brp4u3jpd3Z90THdMABD+4edz+AEZzAcfXRE6LdZA/mfpAcJveTo+Qb
+u7rYes/9O2HXfjP3oeTD2cfnn14kjz5cNOzcWgJ/DtJnmWYbPJQft8GtTJF
ryd9uK17iawJcnn+d3KSULRK1Nr2yenjHXbLSiIQtK+xR9l0h/6dnNGbZy1e
zB30Dx0HSS8941G0eniApjFmkNzDE3r4CZ4PfsY6e0Gd3bxC0pL09SFYF+l3
R9el24KSEjkvHTLyixzJn+hIIhl5mr+Df/8IvF3PUXNVwW26yi+vIvmDDOsS
16Jx9dH5Jq6p4szuLknrcMpB46cwEDbZXWVCmkiQmOUsmYjaJrz4ErdTXHxq
6HqHHBa9cyDXw+nuiSRkR+g33z44kEhZojTSO1O2RuJ3QJmvr0i5sivTUmhq
Ztmd3/ddYk8EgaXmAF/TKoDiWOU+kodUYBCem3vkJ/rHKgXC3yA3ILd6e4oU
6Ri3DOe6jgJzEuoHZg0yDhl7WIAlh1tLfRKZzYJkhLuyBgQcZ2//Ak5Lsr1/
Hx06J3oKTugQbu++29vdUUGVjeCtS0cu04yDV9yZvn6mr+8+2AmiTGg5MLba
qFMszeLJoeAdlsSHPRLvAAgTP7F3hL+TetQOgH5+/JdkAfS/I/FSlJ5qnHzn
WTMItiqKiXumM3pmMzpsL4gQp2glnth1wkwKEOrpLuHrBzvqgVWBX2JO8Mnw
xhGDwT0J1xub/XNLlobjwTJ4JyTL5Z1bYodoRAGG7GxxYmGcYYaYsBzrdZiD
TsPPEQNqUTPjnTaRgCDaZESu6agvobiS4546ektWlo+R6UnJHkfDiGbUfgi1
ESabOKbTKWfQzFVpl9UiAZ1NgPGlh7ePJQnJZHUV0TUaaeBN75F46rq6iN0/
WVvZ9KkaqfCsud7cJHNfO/f+PZDxC1l9NEb64LnQ2BLZIkyfaPFwkVJv9a3r
Y4L9rLGPD31Q4Twh6Zy4okkK/B+UFMJvd+k/JD/80b4T48bCoe2//Ue+pZOE
wgD6j0bAV/F71aj8c/daRO/ehr77x7ih7/a3G0a+uc0nxp70bRY6Or0Ejep8
1JbKz97bNPK25HLDyLszvMuO9a9PtBr0HFtF2s+JsBSNrmUZ6J9K/xDxc6ai
8Q3D636Ln23Kw0rnO5vfDHcu2XTg78V7BJvUv5kbtiNYkw1z7fa7YcSdtdw0
d79oeMLUyyWTsfWZreZ9i9MzHNeislEXKuyGFLIj8bKkq0EFpDmft3kBSgtj
th83nAw6AUWw0pAS4vxqI2TRQ4VZsTdRdOpqIQIOsh3Km6sb5X4WdSe0H3gl
qNtzzCP0dH+E3jKybKIcN2D/JGnaJg1S2AwIcsqEXIvlSKy4l/waDGqPZluH
/CdgNS81q6DDKkn9JqlUQwpVoZ6jtqzRfcBQnQ+82iSRhUMjXh6P0ckYN8pj
FFDYkUC9kuf9uWo1iKPE5nPv7ES7QUEhfnl7tGo/DYdMKkHE/sNknNr1riv6
kVnShXFg2F6CAamVcWwyjvoZOpiP5Gz4GNiKY0amKsiIT826ZofbjIKaRW4x
X6iEnHRPoi5P4Ohy5I3P3i1TzoK72Z9gQXgYuk+ri3FuBYg05H2aCvFiaust
DUGKFllXH95g/EQz3tEhj+FR+9teg+XHqFe2rXEa994+qxMmatJJlj07PvnZ
u0XP/R0W1ZbfCewxLaFsG/14ywqDpS02VJZJzTVoi03Yu1wVIEfv2BDEc4G2
SUkkIMcc9yk3zR0/OX7sVLQfoR0QwRAadElrcFIibIcNSUWjHQwo3flYjgvq
shTgfPx4x7WdMGEENedscFR+v2OvNWLQIeaYXGXZzlHWafQFXf7oEoPMKjEl
RLXZ4RGpfxfeaRIuW8fLVVY8X1gwsiqu+E4/SlbFPH/j1ePweAuZVQmdPeOP
s0gzDzyhtc/6+bLWMyKkF5qi0Bvsei54IHAmptDYO7KuOj8AvujiTVGjQUdH
l4lyYCPaX0Bx62h11D6aPlumGguTgXGSRxwnWWLsuws9H7TVNl2M3Di3dg42
mIFcYEzRJEbcO280UbcKHhi1a8OM7Oo5I1eRO4QxI8xG2fY1UxMjYOx09okJ
o5clOdgH9Xq8u7u3m+zCZweX/ehAvttL9uCzQzFeteQ9Ze94ux0NUMJ60F2r
bnYQBE6PXxxT/C5GZWlseM3pBeGSwTo8kjgquHvpEAWCfJqxxZliqNoMEcln
0EDHAgVbTdo5h0e0tjWtJVgfo/O/Uh4TPECZXiAUbO/v7Qx8sMj2/j78E83n
kzfb+0c7TBtkYc3MHufrpi3PrSnLm/rVkHQmYcKQNRWydtQNRyVLbKaZUVJi
xhusjimIfGRWhF7rkk96zLd5BhLHFVod0rolKD2iX4HdtO4amcpoCXD36HB5
xyHKaCyEfJW8xAle53U2SHpWsMr+zq9Y/uBVCvcghUMzdZgHrqkJgx4zpgaW
DfMCFjCfikuIA/HsphM30vS8mFLRAkzxMEvGAUbxwE6nb4LM/YMod7Bt5hBm
PiEf+KgVMc26ROvzdfz7h+TlCsUcNQOIxTrSGMg0sP3y5Hwn6f29pR10foc3
k++/T/Z34W/QFoY/EG7RZcbbfLbMJgzhkXwH093Z/P6evX+MVybZtrN+w0v7
9hJ24fMXbvXyge8xyBNjvnybER/a+6DeVM04A8YTvigRSAk+Eb14Pxp1oDgw
R0YfirKnG7o/8sMHuUnfOBgkN839U7vZ+eJe94z9tf3awV7yHQ3rO4yP4DF9
aE3tVp0lH7aFjxP12TjEbF5n4VsYCFDJ8gFx2tnQ14fwC5vY15sm1n0garQ/
1L8zr5sefuv/fGw5/N2H/RZ83fny6/bDH9BeQbnwwVBu1+TbG7MXPkVsOuOQ
KWXTDWNoPR7bKj/5+PZjJln6xSceb39xi8cfG2UK6NId3tvvI013eP9gA3W6
QxOHbQJ1h3ePPHW5xVt0Je2+/JA8wYjJu54ni8FgOV2MSD0aQAdFR1QCNCyB
0tAyMtKjbJN9/0UcHxblShUWW4TCGeZ4zdf+q44HDMRKS5kIUzHLIhs4VSTU
HNHSn9imE3llRknbHV4jLKnF5yKqSYYgHIRNRdgFGAOtsXNI++iLVldOYkjI
cIQLuNt6V0KwWAfz6p1/DQN4OMOwjsLwqAkCnniTke9kgTYVDFcRkAAJtOZU
+CTNF5LiAo8jaqalRvA8JRVcVSkMw5EYPtIEv8BQKxQpsac/rXJMcQSFyrkf
M0rPiaI1MWwQ1peEQElxHPgUWPYqU2DAc41p9/HHFEXDq/Ei2eawmRfJD8nz
HQnJvFwVXUVC4HvEjtNyYIt8R41SuLFDQ9zkqsRYzqZ0FS5DkbSXMQ5Yk7dx
8yjXgA1J2SyF24HAIE5xElnNb0G2kfqEugr9KKJJZckkcPi2zergOPSoEcAy
DhwSc6vJ+ujH1fxghdjS+HwaObVy+uT8KfUIA2Sbkw1S/aAyPsRtWE1wg8uq
HlCgttp315pijJMgvagqLxVABRr2g67XNTxIc68xaZPtFDi/HfLgooQNt0et
umbRnZWVbZlFtXudQyERHUK68dFg5dVOjZmd2HCAi2S56j5DAVY5thk1PnkL
zyHFSKLk8xRuH+ETaQaopKoXIulEADSCFtBn65UkuPEKzUYOI2HlfFLMQ2Ce
pAQpinJQtAeyDpScvMbQDC5IVpfM/LOT81cS83H47dHux487Agwl1wGWiPvm
LGqn2T1TztfB6fv0DVk2NCsEFjAYzpc1GU8RBplMvBKYYjsmV5hCbOuGYmMx
A81jlKjamyD6AEen+xhV9WCvGV4mRCCp8surhgOBe/DdSM+kLWvnucGuU4q1
pQ75zFjyN3tzbvvKi5nJUkbCdjcNQTY5HUODjAoQWqXpZCP2gR5RlxoOV4/l
Do7wNeirm/pCazyTEW+3k1cY9gfPNojw9LQL0DQJDTEY1yBhk5gH98IEkhhW
C4k+MnbBHNEHb+LuVfT4RzGme4wnf6fjZKU4MUCt/o7cPGmCrjKZLEF5xUsm
tuwi4OVsqidqwLSzLmHbS8rgWRW5wpMsxjmQTAJOVS5G5hbsrtWLC2A82KDK
zy6zSqNVC86BkzPPw/WWR6KPCCMzIBPIioHhgvXCt+rM0WxqMgMRuw4eNptJ
MNOBTrUNM4jkByeUwi1AeSCvNRoyr5D1YU4ctakZhDZzHsHISSIHG6cNKIby
dC7hgjRXC58xQJGrFUFUY1w4DYaIpjzROstI3gM8PZonWfLYt+XXj/RQuJ0T
gWS0CFTheCJ9IWl27U6EBraWuHN80NFJG4rm4E3b72cK/wZSwbCskzkG3hJb
xHDg5XzFtK0DBsKDxmhCfFz4LPaz9pvqTcV8lF00R8wRWJkzNgCavUrV/Bas
2Krgs80JXhp5xq1yxg1BJ8K4EdU0OSaZC3+NwDuUIZhvJehhWpKzINwadYm4
1uZs2Be9bQQSihQC3liiK5UlQ15wlPioDzWJGlMpPrmx7ARJG/XehTbGdAys
NSBxsOpCzQLYciBnRfbRhT6ZQcz58BybpX+wIbyLHnMSiCnPsmuB8RuWKF1V
hYl4zVWE1uxdZ85fPCJFhhRNbh7/Y0CqNDodyUBav3F2jGkF//3l67CZThyi
szx66iFEwD5+chbg1mDb+LMPhh+vnd0qfHj45ORH9WezORsjOKKgcjNWmTP0
OTb7vb6+XRcXcGoHiTdr/bY7Gu3d/51RFm4Y7clVCv+3v3vTkNHVQPJJ7Gk4
3DRKlRXGiHDjNE9KyT/mXCd7GjcvjxKHGOApV3lkoTKrjtBRcxa/mGwr6Oo+
Y66/f/8/Tn46hv9jRNyDb0Hma6+XtrVhwQ5+j745DJcQTyW/pQRgJRZ872kR
M7hBrMnz3yc//fz46fAJOc6Hz9JxNsfBg2w2SLbqAjFT4f/hyQsOcpAetRmE
fyktOlYiEtD/wFcF+SzfY25TuD6rAexJC+63C9Bqv7GFU8jFQLpluUim6/E9
TTl/6MaBYGB+0lBIpSgZScazcAWQl1EtxFgLEzJEzzfHYE8inC04nEW4nD4Q
hXxCLjqJdIDt7pbFEP5neM0xNxKBm6oO1MOURqHJEx1WE3bWktojSPAUYiE6
gwLBe7+KAcm17oWEzfDWpI2kk+h1xwInkROM3UToyal8SEikF3i3UXKj28jd
6DaiMBekxuwfgzapS+9jhZUFAXrbdAU3MfjhVHOEEsme8kLVToSbvUDWmQKH
z5sgNtn51QkPH3G+EJ4npuOCnJDq0oV4+MgNmpRR3Aixoyh1aEGCKEq9QXsD
RdxDqIULoKoXe/sPLk5Onl88uDj76Xj//tFAu9TdiLtMtEvU+GT7tVuKvOEV
zQs4xATBwd5knj0tCqIyiMNfcB9DjoLSvSfVtE+M9OVYbMXIk34eG0Lyhvuh
xIFwhnGNYVR+A25qRFIQUqlmI2S6FQLoU5doI8omfK4nwWiAibOF6vu5pGcY
XkLauaSMTtAG53/OlYRAQDGTwJDyw4dSY0jtqqYAS3BfgH9Avs04jstyQg3c
IXLpBnkqhhsRYIwFIBeOAwXawBgDQe+JwU2jjHiWDV1gb6JECSUKpNKpUSoc
T7HGMjFXyfPzX5LtV/DfO4g1mKNeX7tyLPZbC9qJcuoTQ4qxQjuoxhPeDDaV
MAaGIsREsBiwQc/71lAXHIjLJEZmC5fsdSxGlhiGgTJtNlmxJiWgElEgIk2i
ZWw1AAlaHX6OI9OcSoKxokdFcFKqJ6BQ1B5fgqNeAqIXRTVSw6XCLoVDs1fb
OVL26jJdz0u1Tkiu9zi7zAvNHVYbcbA4Zveol2nhgfQUdLgd5UlZQqKdyMLQ
8QhMG46riMCYK9EnIlBPgiBMK46nCS7JO1uqMOBx5H5FHvzL41eshfkUp1ao
FiLIlOUbMh5fUf2LqlxWBEStVSpcaDiakaWSw5R6Z4lJKEjgvVnQCHzy+ETN
z1gJCkOiRIFPPCVt4RDVCkRkiVsMR0428qALrrOht1fkXW+b7Go/Gk6iaUFJ
cjwXCkhCUy7FYrAqWsKIUb4eBxxYRDVFDOv1QOJVtCcD0RAIy9Z82LIbxOxp
puwjtgvBAmcDxclGBL0VnPha3UhrAgZDWQ9hNMS6jIIgzb89ye5e2IJD45dI
i2BLCW6onHM8I8O1utZqZwtGXWI7tr0pWC40HFkPdI4V8HJ5PXAtyKS2PVQM
tFdIFkKvWYAi5/IFwfA2ZJ6PICclIAk5W4ifVcNyEgBG3Jueoq4dm85meJIm
AjGwmk+JGMDQC2Wi+AYWyiEak79Bq1JnOUZa9uTgwcePjiWFmjRdZo8axoOI
3HgfmHVALzXb2oSwt8N8CM4R6f4p//z+i5DkkzmAlcb5gNr/sg4BmxmoGSHK
Mm4FTf4lgYGKbBAQm5EzWe1xAFqrhhe03VC2N71HrXEoLOamemDaoYccMQ8b
I/tyFHMdE2HkqAKzRhH4KLwJ2D9jcerIfYyrH/GXlH2KXiR8Dks/IeMnQbNl
5xm0X6VjiNMzLN4mnb/hTFlWmQk1vp3JaaSGPUqUPj+uy2qcnJ48fwXvbvki
RmWZ/JhfbqnFiw4/nRGsxcdOLnzp7RG+JpCdvS8J7Tw8ZEDhYIU3AJMJcoju
04iOiYmh0wxIi+lqzCAx0VEki35hyJkTh4XyUNlhSA4yltJWmbDDJaHegrYk
sLWyhX0pdk7BWsVpxFcRKcUinYatIOUjABQel2G8Uq6GrydBR/GphjjTnTe2
GLzvobG9l4p8Ggw8mCQsr/kzr5MLXfHyO4iYCozU7hqv/B/q28yY2r1IM7K/
7f7Q6YnokCfnr0zHWTUlipNsLTYYNEZfClDKTKgZeI8FKHQ0eY8NN4oBkFzS
PzGTl64rBMpD2UdjhskYSge1lhYWUstCtSrJSt7/257YvXoAYkJJXSopmEeq
d0SwsEoEmSYYd5cWiUxRsiFDE2ZRLTr1WmJ0MXSFtlJhU5jfAnJ2lTFWeHwR
gACKOV6/Czuyi7FRnOCxOSGlkd5Iv5utBxgPOiEVnhgaK2fQFxIaoxGPNnkn
hL7jLnEevGExk7dfLPcO51bzrZdz//aQhgp/HHHOw2pBetX9b47oB1DtBaNw
4DBzhgk2ITezeFEJQHcXuzmghN4iTat7TSWh8ACBxLAtjs+3ecqTLfnvFPqb
rWpOOSb/bMR+GAZPrXNwzrSQFEuqO95G67qnjg43q2mbz5tmjhP49yfOL14U
CmlAGZFJdF+btRPMBSSgMVsfGPYmTj7kNrgNPLMH+3sMheVo40p9Fh33D/Z3
5UfaTNakW0T1V672J4RK7kZv1nRE0nkqcM1vQfs4ufzKEF9FQweO3/gUxu3H
T3fQDQNNbhOW4dvDnYTLSFzlmKeCaQPzFhymPHm0w9LCDeUofVFFDxcXChBE
oStBm6VdwFwEbEPiIZDm72xgp2pbSEBFKxR5UxrTElmk9BJTVuzUFs8PUOuf
KgUJ5CG3ybAh9mHMi4GdJMR4zg7o46shoY/7rwUeEYsTMoy/gc+/RQB/xzar
ZJZdI3YiXr0qX8YKT8t/qEuOy+kMzpXsFkgdQGlb5MAgsJ5BusynUXANgR7j
gPDEUAN2K1qop8whfIZfzQdA5PBJXk2AfFFQTi3azAZ6yW4IFqOsUEO1mmcs
CJ9uMiwxzejdU36A3QHIEgPw3BKxKC7baxYRkEBvCsOkDN2UZVsD8GXrMpL7
7B1nDvVYnSIp4xTZ5DJL2UEcK3Zi5wi8DYkia5uj1CVqxYI1R6BrLDkSloGI
m1TagLJ2OZvR5iFIC+rlPmOTdQidZNctrYuYIq5IYOrYUDVSWSl/veZQ0HTS
eAc6XXyPf42jksUe07mmAbPSN+NImP3hAebVLNojcIr4ShN5JRapV+ZWcO4Z
ZsgRzAWrj9YrpSS2anF2IfXICuZ8umkQRRGXx5ToS34q1bxl8Uonx7CuQ8al
dV2LrLcZ94UQqe1BAFu9z2TkztrRM4i1qRvhGYOHGAqqCuiFc/Wc0LnVLGE+
IbQOoUVCba2+YuSheuGkTjmqVRpz491teHqzpj+nsV6m6DxNLQo3kVE4bxwp
SDLpD7BtAekasiVFAimQmc/+ouhbQgwDrkMhuB5z3fyArMmhiYOtyNRpqyPJ
ztMQOOpBAE5NuLrFpmKIpRc5DeO2b6XKWZB+VilcMQ+K87NtDlMfUzKXMnbK
+qNYMLq0nK4mZ+QKa08WHK4bZHNJY9zrIx5DJ0NMoyAXFN/HMPCOrXVcpzgn
OUtLIRtyXZhSHDrSeuJ3ome9tE9yFfF4jVT0ti7p1t3YrQVrpowHvkQLCvRI
AUBkVBNpMMwp5FK+Rikolkc2kBV2S5WTGnwsInG4U6rnXPdQrV9u+yfhhP4C
+PDgqZXfgZktKMSE6WJ8k8k/FZOlVjk7PaOtLEMqZZ29I7FvtJMEN8xY4zLH
mis6OkZs11oAWvnE4UkFIrXiQGAfEa06NJeQMywEIsEV0fHtqE+7G/D/gu6s
ke9yoHkcDlkXhiPj21sUYbqVZNPLLH7MO9F5UTR2i7zKFC7SH4ZYBXWKGg0Z
aGN2yz1vNyH2uMTgJ7fm2ax/dBhRpIcmaH0GTJrpssHJ+Rf4/mZeU03dPK9V
D49AxrsNoNW+SNQW3wgCCJXj8opRY1RikERlHO0ojwkAs0YjX8t3fyOrULmu
TcNxvuFgncc8Z3ZwTXm+eYS+lVshDIkvDleWcoGL1uPQjjARaT9EFl4R/PFU
IcvTziCBzeRzJuAB3oXUUPfiQxQWyFLKF1QSinb0lOMZfO79L5zI78UU0mbq
fJ4HsSkzYJnsReG3dXtZXXL6NQseDd06xd18fnwySLJmMtphUd5M3q22vJWy
BzZezMxSI1CZQ8BZHrkr1XS0XJe6Tufl5aXwcpCvL4sSCPYkAEVtx0eLyViT
OoLQt4KzwOPYaPt5BhRlzk/UPsldi05x/gmNmr4Bwq7S+JwEK6WaLfIoSd0I
N5A3IpRTQK/Tap8MAgCbo0XKPD/LfdFH9IFEllTyZrasSSFYCt1BdbkBccd0
ISpfEFbico/LM5uiRjhhDQhY7UuqW0a+9iyt18j7sSyDrBfVxQtXDJ5sVcem
Les4e9Bt5ih/BCvLiF2fUxsY7la9NVr8K2WoF94Ovq31G1SwycBGWpRMQKPF
xKVG5uoCmhZw6pzCdoDvkzXz1K8t52NFDrjQHOYrFNc56qYE6qkLFCZgkNUI
/xoe/3L+ExOuo12E4FRjlngS0xmL52QU4/Wz+DI8pXLCAqxKdF6iHYgj1i+5
RoSvXkjI5fCwk1KHJkeIiahl3IyMmNpxmzZE8giFyLG+63mTi3U9NhgtUgzS
zcSVIIppSg6lZMkb5PrqIdVK6ij46VlOitb7L1K4qMN5vvjojDPcH92PA/kS
dfnN+S1hNl4KjlKKJjDwcZhVFCeFUGw+xRrWmTZI/kkt20O4PjTKIA5XgwdA
nf/Hiqz8Uv63i/0UGBw1jB+DTsLaHEXbxEfjSOLEMnaVKdITDWhjOpyVuk4p
xpFZlWrMVZZyXLWvQUPYCn55O2q5DAiHgf2GMWReuExBclzX5NiH1iaTxZCi
TeoAroGPFbVF3ob9AyvWIYBKGjLh/TFOYbBmHL7B4mlQ4FKLH/DeRYluHPh1
TpIImiXkmaCatOG2oFWGc/SCllVgYoLj2JUfjcMfBCqiqJw8jiyBudIpD/Rx
shWgAfqyiqdDVvIg/A69F0HZeaoaQqIxHnuaj4YtBlogm0g4jwQJl64yVzLF
7c+scu+Y8xmIJHo7nRNUc+9FmpHNIi3asYEk95FHkJNB8hojvpjWkpODQFEU
lUGvpBCuaKKDxFKkLEBN6a5OaVOCFGn1XTIgWYJyxtjaAvNwrTn4LF7KkRWp
07fUaaAdk6neNT3dykNCKoJNcoS6IBdL8nLAz8VUHdoWKdeE3g2Q4DYRmd57
78S7gX9fiOGbXMkbqUFCpQcj2qGiq9MuBCHN0mSpUrZc4mlVLpeZr4wsi0I8
FXrLNBrFcT1TOX3tOR5rOTtdVC7IUku/5VglCKYrhTM+ihqw+K+jnBu+C6ls
pyKSHT/5UekUemiBjb/8EY4UBQA8bVO8PyHFs2/27x/xN0gG6FsO0t/fvXj1
8tlf9g527w/8AribGVXPuaJCMX87OIqhyVB5NlIbT8CqVaWsuVabKDeMmmbb
nQqT846tFocKx7LgQ04ygRwWWCPX5Qp+2+88a0JmA94wuq9bFDITIejtHi8e
0FcUHK7gdpvDnY3FcYiF+8yRikSFkWHCWhoGTRoH0q2SsDC4XlzheGxsKNm7
JdUYaiX0mc5avyEAb6qWS2XJWWAO14jisFFvPje/z8aY71iZlRUjsq3BhgHE
HYqwl6sU9T5lijKtHrBLzs9tYp7bJztcPHBmLgBCQK4hlLinGhVarMNB6EKG
zNKyxskY69wxvEIRVUHseZsai0CFQrAvsRREnXu50gVGjFCDFfnLp+tQD6Lu
YgxCijI7T5oUoD6xwbg/blfK5RilZytd0pUAOSu1zZOE8MZygyIP3sDL8L0+
hijMIWIB4jbl2oavyNPA1BlOGgZacmIp7ZmSp9XSlFTJb0UDFu/5cMjCE8fo
rhZL8Q8aMCURdWkIH2bfsN4zzjKZpphSg3cE1Os1F7WXUoR8bOpWNTePVWUl
5t9T7ZmPHtYQJtQpEt0T/kXLi2NiFBAX+yYFi0Pqx1vBZ3WQYcXnQWT2pObi
sHkqWGdSJFfKinWwoPoE8E1su1pzSbfXfTqXFE6QuNtpUIg6HBeXMzumFCnE
uIpA4syGBRdTzqUCFVgjVgYdjlt34ThGTu/1QN1btOQeWHJrUpZv8mwLbRkZ
x+4EDi6qsdsq9u2k2HdNWj/2Hdar0ZT4BYUin4tXnkUwIJqo5j8uzwiUUfA3
fP40TvKXx6+GfHAtNmSgqJrnJz2/4UtcxhgjxKz/rO4ZejjoWAxqDdz1O8lF
7dZ8NT20W3FhIThOsJ6R9TWoFXTYzpYzq4wlT1E0PqoeHag53VtHIp+qqSHi
HtJmI+VzienekjpOUunzIp9ewKKXWzFOT1B42VfEjXAD1VRwONprZ/0NjJii
/oBJ0XbPRx7HqDNNHMaGIW4xLXPmXIpKUFuTmvNCTaZjtiyFd5eIBhzArXyO
fcwv0L25wHSNLTVcBkXVFKaVZiEHmJOUakfJRfJw33ij1QxrWlGbxZDadGbI
nrCMruVXkZWP1xwTMmytGOYKS3hrTZii2TIIAg5zkbS+3EBpJtK7eXkJuhHy
BC8ZId2VjH9/dAiRFgWfYTkbnoml8IQ9uYss5SI7QMhLouMW8Sz5Ff5acsrN
BuuoFOrLSGwLTaXo2r8uze7IVYKDWK1EqlUzsT8OLHrIXwUenVYHVvQtQVKX
qwpVmajANiZPI4UPQWbCkIMgSZ+VMJbLufI1htWTZUuZhLQpQTgTX9SbAGaD
QH8kq+zLwVcxErOgUZLRoRQUzaRcKp4r85f2LJX2aE10NhVgUgXm2+ABEnMt
dhLQt2AqxlkZHp3lPQS5wLVChlFJJeaGIiKLy1qjVJK3iFGzkEQknTnh9pDG
klP9Xik9LwI1v4IvByZMUGTheJYMi95grqzYMP1OzcmKiO/Zfa0lzMu6CKsS
x6WrBxwao2FmFOlOkQjJCdx45vZZUKQ4LiHNkQukb/BtrtU/UQsf5TgMiaTA
7UZvtWNe2ipSjHvy6qoEXpRLtPz+/f19iV88/fkJf/fN/rdULoeyO+iaMmEL
VjakKDpzBWunrQgBlxxH7jKku2x0t6S8LsCGivPKBRwcs+tsbvg9XaFBHI5t
ex/jnG9sOIrI0FVMZBWxTLYLGYznPvuj/R1uWhbJYxVxxnmwVM7yAqRdFqhS
AcST8fccaY7c0fxrepcgVygaJ9PqAjGvofjAXKq+szNbQ7IiMWcigDV6te/J
PETcFjqpAQl+AFYggoIVA9LJs7TY6Fd6jaWAD/k4uiMxndjkvWLN8dZ1Zgpo
6MsidVqjj9ivEfY1ahVujk0bCpt3RaGKOB3lE1LC1LFlkwVmX5C3T1/YeKRo
iyizfB3unGGX8TpTHHW0/f4wOQ+nFLxvPRP3jIVlDOZ0wbM+/I/QYYjj9Vze
UYDSLmSPY4rwPA0EgN6HY5lIVqTEVG0Z/kzRTrIOA1TSEAGDKj70TJ1sITln
U6+aHGOwOJLCpmTnY0R2OYz8u045ETYUcyVBahCukpW9aklAzpctM/MH7ihB
atVWc5PEH/1xyIAJKdFAImmxOK6AD3J6yPDgiycQwCKPaqiPRNgUrEfml5hd
PisntL+yCzIZfe0R1QHlrbFVYlBHqeYSgVfztG+CBpUPy9vyFmOE3uItfjDq
i09V+5Ef3I34pN9xh52LdONL+vlaCeKtxrHhpd9eSwyn0c/f4zK1re2Lyu48
0S+J8HXJwUmYtJ0lfxWW9dcteFO2UMv09KjAMTOLGE9bfftVxR/1D/UUtR2E
F7BlE9XTts7atXlcP6sl7ASpIqRwOKKMfOoWKtttlexNCQNVC/29hdnCtZc6
vPIbqWJTzbGn5PMwNX1nZFB0JHFIQmuPyBEtBbuUEBQoY8bt+mQcb+zBV1kh
NSiKUCVt742BnW0WQLR8CceY9JQjRuN9fxNs44nL7YXVSQQXhtQMGjHadK6E
0/iaIfqcjggfMnNit1dCwSkyyqetLHE4XhcXrQusTGddziOpJRhibvg6WRMi
V1FdofBEOwG/NamNabTc2bbDLcayETtXWdFkNamjtxg09tIt+OxYTqob4hp5
SLV5ffvaYnjfcLtc7xJwAPq6gAcwImpLNuYCx7rluXBdsrTHAiBMw2r+BFHS
sXQo2IaM+WYp+h4Z1HW3W9aqFtNjFpRQ6t8YNh+zQzYCYEUdKYiLDuUVFVWF
nEhAqtxRfE8FUbVpi3vsMkeDiBcAzaPLr35JlpOUkjz9Q9hbthhnKIW7aOtE
uxPTYB2F7JDAGcRI4W8TtCkQcmt0YaVLyggtFz4TqCYzyksEErSQZG6f+T7K
D5OrbEHroZtnA6C9m6NSCpqwt/KrHEtdeSgEL31bXXIBJ8BaxdNlCVJh7VFv
SbDFPxeSeYGD8nvHqk6wj62USBq7vIXAcMgYPQBqAOfls5pECZfgJAVlK+tM
dNg6qClG3V6zTdVyjYDj5JK3qxa4pgwvVBBpTZcr52Q1jutK9XR5XGo9jGSu
ExCyPY9GSKLjhiOfKr6iDhbuoxOdAkcsre3vdC6EsGBydhCMEYWfctS+gvk1
ctJqhabAxtBWFejtIPJfInhCnQh+FXl0AiAUPj98VgQtZtJ4Xs92Hsm9xZtG
GTUpZUE4wsxgeINqLXdYo5BbYzolCh5Bf+JdV7OrUWXxOFWl0Gc5+OwM8smB
IncT8FaBzImiD6hfDOebCxCEpjag/nfsJ6HW52C9iWKTkwQYx2JZx7SbmK3g
ldliUQwe3iEPfogYGeydmGQVRXpTiulb9tdi62rA14lrxDzb3/xhM9ES7ekZ
RyiiGBLhdHIco2XseAARmZg9wrY7wSMqXFa8zauyoPVmMiB2Oh90QEF8WvFp
kPDloGfd6ckTzWA9PLwPR8w8Qhq75eGHxzljPrD/Vq1+bwllJRioRP6SkxT1
HoPU2rguYhZRGHaLRXbGJUL1y5ZokEjYMcc2ex9UPBgn0cQyimm5YWNIC65V
9sVsPEycKqsBR/jRwZACRD4WppWFyCUQkldnP4sLCc+/9qKUOGRTBItKOmHk
jzaZCFrCbC8+X0wqtCjU7vD1+blZjKWuIfzX7ui+/ML2S7baUAhAZ94Uh8DH
Sl213tArB4hJvhOPhIILQHuXJWPoiZ33EiVsqvVg2ARBgXSOexL3vtLjkTvW
jZJN14CrEF+AskVytVE2JZoJPG2XleTICoRUoXvf1wQRd4nbkJfZM44YQYEd
LpZMgvAjFVA4g1DiwlQqganEIwoEHo6+66x+WXWB28nkcBJ6mxh0ySxW/eeX
Qt7QSxvi5Ie5Vd4QRvKkpQzI9eIs1oAikYHLIvtEBsbnpbicz2bWSqaykbJI
dcsaJUVSLVBZhbG8YQBJBTJv49nrexv9apLWFvATb+XE9M1UXHWBl4IKK4Ac
TrDH7cvBpdM3OiQP2w7J0DPoNnkGaQarQoExLuTSmGuwsNvqJOpCBJCurM5E
AJPRQvzSVnVZJ3q1T3yI9iKtJV8v7HmDKr2jXE4nqmkKRFCvU11pvhrtgrYS
A8lpeuVsJhLUlh8q+TS92YHEnW/3DlHcWRXk72gM5qKIgASAEM7yubc8ouiL
ERNsf17igWoIjUxkS1k4FiLDEZ8SdrmFYyMxFgSpVpTJc9Gen5L3Myx7Y3vg
H/ahJRYJ4VE9na91EQV2UJ0OqrmJZTYab6T2tY+0XbXSKz4eOkI5rUB1Q4qY
pBBCd3OkitlAwoiVwNyYgSoS1LLlk3BxhUdle29nYD/wSssP+8EPIO2YDxvU
XVDvtg+Dn4GwX5SzCyzxsr7AGWzfj34VsN0LbxfdfhA8IDzwIjpU29+CIO4/
975KXmTXyVf3ojHFb+ztRq/0vjXxjr3tvXDuwQ8al7u9d7DhARavt/fCac6k
XMn2/m7wLUItc8jW9n64ZKG9YHv/fvgT/PP+jpQQtmODBcEeuf7axNFDyaK+
vMDgoEeyAIG2hT8Ha4HVi/cPxUT3qL1wjHOcmye4/ebekU2izv7xKHgTz/tQ
o9PEztjtVg8rnJxZjQHAn/VyMPhPv8z+4mRbl2gnWETaYnQAh7fjof8tIMCP
ui+FNyd4KQiW6Xmpc234zSfF9OXsCX6JsRO973Uv1MNEQfOzqdmu656Xe845
dhs4vIVx3PxuMMnw3U90yPfmYesldk31vKpXKuwMPloYqOeNLqGid4EInPG3
5/Rlz5v+oka9/Zytf6Fve17ppVsPE1k/z0hPN4209aKMtP/Fj6DET9daWjxi
KVJbPKqQgAzN3P+R5dbgzQ0KTAvtOPWp1c163ssKVdgKWsfLP3CtyxwHUF6o
z4BrmrQre+fI5EUQ9ri6VJxbxB9UPiRklZR8tdCqZdBP0DCEqsB8zxXhCHfV
UESQ4aYE0+rBXqX8NdqFgskl34NKRg4cr/qHngGzOAxCCz29acbesGIcaDAo
oPRHar94ec6licLl3VxcKNDu2SRxp+JC7JVKg8n45MDGkkrwrd5JkT0SHmJR
FSsFBdMc9UIzbcScVnyOSJoi7ARcbYUjPue4HoZzsPRMnnkE9j1qlxqkQUvm
5cPE35T9Qfssk3TNng1YdsIcyQu+slTHrMo8QxUpvcosxrIsdjBhh+XJVTUT
tJTwJe/Z3nfwDfo7atCa52mVY3ashuEsy7oZdrF8vCXF3/ZALM1blevDiYVe
m4G30Qa108km2d4Fto9bbtF8zYrLhvHJ07Aj87W74cFNwbOKLplsW9ECxJLg
ONUdtKrD9l6I8E/TkkAsjVvRuKw8rN4Y7ObIyanvjj1yilB8Tt1z8sXk0xnI
IOkMrXXz1X4U3DerBRfaCzsVKeYSald0uohojtkbLPX/xlbJ4KPZxL0N92fE
JdDSKotmgnQJTXWKKYPResm2xXVLLSpGD7qHJdqu82lDqenTbAgsYycOQ1eV
sCfO32xQiNqQTdIgz1rOvYviiQb+PsxWFaqiizJ8OwgUiiJkLFJImSNViTJn
vzS6O+oLRGmfaaPsGpbZ0x1aat8h5Hx/OL0mdh676SqdDxmF1/jkvXagM3Vp
9tVBywbFhnBE9hJaYw1ZHDFqz6HJQTRn4a6kPveFMGskY9oZEHu9al+fSn8P
X+eGuUQmBekowq4qsqJ3aLbIn7lWPAtF5TLFYMrXWABw8dvB/u+iLuE7D6TW
zhnGfv4GP+EPoC+cRFG1nJ/ESgIo96A49Otbre41rkIq14O88D4BjW6wf/8g
+fgouce78xbpvbbAg0wq+h8v48kUOkHj32HBoP0fNj3Ihi98aP9vD4Z7P8Sq
HH1kENZAsBySnXXBlUG+28dW9o6GN3W3wCgtGtsiA+lsWn+3Z33bS6aFBOFQ
3z2Q1vXBj7FeRXJsvJwPHfFrS22Vr2uFqhB/MOt612lQQEiedEkSsGciwgYr
JGDRhiskO6hgZ2x84UJaSWCbHMHkEI+eCOqVnVauJ8PWP7b4i5UNce8QaBMa
8c4168wPbhDivG/pAxgbOIf7Cp0hPjY0woajwE3C7jCysBnYV+D67rHkQiut
2UqKKrEZtNZL8uoo6egVEgGZGDIuRx5re0tLQTPP3ZYtpW5rveWSwGyIYbxR
BFUrGmUnAFJsXTfe+Vaw0nu8gHALDz4OAosrDiU4FVahLggjJR96Z7CgcjcU
+B88vBsW396nvIkk2X03y2Yz+oX+nCbb5BdtZL+oNJS2usPdsVhBj0801AiP
W+lrBgZ5O0wz8FacSYYGFTrW/eGsD+8FmcLBvEQ2S1IbsK95WKEr2ZCvo+AT
5CezGcKk+G/2uDMQMoecKBIGwzx6BI52kfLdQdLCQe4QO5zan4NLrgUuOKKe
UyF17yl82G5pCudMPIDk/qMwpy03AzGHYBF9NUPykC4yymig+4DZNCSMT9l7
vf3q7GcqKhX0hOhbevZ9U3fK0FEJimF+Qf7jw9sK06KiSFLH4WVj2H15E51y
6rsbkufuHJIXcRFc/WMv1JCzKQ6f15Iz3VhC1Ze4gxG7lR73MfpA0lb/ikIl
BoVklazH7umbMrg+4WlyEavbcIcesYeNn/E5ycOXP3//Fy3iIfnNmxnihrbh
ncBkt+mZ9w/HVfKRZLDAgBjLYLas4RMhaq46NNIoddb1PN4lGn0U1hGCKhFX
pmwDQyj3iYX74nfpcblEaNR4n18r9P6667F7/35TTa2PA/K1a7Goq45bRbdI
EaX6qz4ZtHNfKjFQ8jAla5xfXoaAgOQU3wwD7oGhdAoSwu+r97ayWUME3z69
lEGxXAcJYcAmLPhCK3VQglNgwcHZW2pAVOBgVXN9MIK1e9XxHHHsYJj71quP
aawGITxOc55eqJFKXoNPm3tB/i6uiqs4kpjvwayQ//YKk8QPWd6NwlUXEg9c
Q3uRKdR2keBrfM16ugpdXb5daby3LeidkH/RyhTcsDkW1wxjPVo2UOD8V2Gq
P/lTnHj7eGtMqNVXa5NzOsbTbb6YVMlQEY31mZ2+EmU5AVn5Yx0TBde0nxd1
ztbCz/4Y0SCCqnWB/SKFe2sgfmQko+VoLcX3u3324O+VT9Dq9pmSBPBeESOs
jpsiPGJpCLN5cJp768YjnJ7deqemnx7LUxj3cMNQqHCzBq8rGgiVmbWiGd23
W7YXHzShoUA56LxSxwHoyXiFqjInPQpuZU5h4RzrAV9UPVfRlfSyL9NBPDUv
hpyxiHRIJarAcsNBo4GDAPNj85qrA2rEcRJ70e1EbfvqKVNM/jPQg52Ojd9C
u6tsUVrW1N1dCHRUyf8vCQFkTjEmYDUeN5kX9bRoSJAALoRxirbXQpii+JRa
ypdSAILSxz4mwpl2jNduUyPWoSVVW2V1JO+tVSEVs98l+qx7rthDS7Ae7fJf
Vt6VwvnIeMTReJGBXwsjo0tlyoAjc1p2rSvTFbPcJ8UsnR5TWAacXQcTdCH+
YSorRYq84Yz1rKdwdSMBPkc98CVYgT0foM6RJ1VZLqK49TVz+QDlgdqazRGM
lqjpyuoA4fJgnahAnyY/EaXQ4bpelxurUhGtsuaVEj2Mwn7EoUGVBp1xa6sD
SgJV7BPeIAoGSCQphyR6OA2NOp9kXROcvfeQBtXqK2B5mlBEKDqGuEA6rbKt
vmSJUaIg82SDUhwnct4QNDMsdatT8VUYRYmKZzoL3yTXuQQY1kHaBKunvk/i
12VdrweGS8b4aKDVv2Upb2GYdcBJsiByUmzO8QCd5R8IsGFyFgcR48XlA2O4
VbRgjPi+h7IzWpNzgpUrCa5HY4eUNil36Hn/AMUlipz3oUB4kEGSCyEcfUmK
3jGghEy0mAMc+/rxJVNwO6QGIMcC14rRSOAyiACQENwr5SILTJZVP+F4a1uk
CdU4U2+BjodVbx+nz15cGYlEbeKQUbojpBtyFNFLghWprE9bpHc4o1/qTGMV
SVDdts8IposSCOlhKf7D+08bo9wyqGGw43rDyp4S1ahduwJkqFEkl7AYSy+9
eInYZAxuBbF++M+Egh99BnkPB4gcdRjVi3krmRTQonBbk05NPrF4QaMDrHjj
e1jMESjcUMYCixLk3ps4oIDlPj9/MSY/s2GAoRTR5A16M3Razn1goeCD5r5+
kOMAf3T0xTr54D5QYujXQ/l0//AffJqMzvTf7/QP/iY0PETPtV7oxmre9HSg
SA/6Qm8GPSE10XeDbgjMwEJbqOu9/ul8RhOtsbfDYeBRTKcNdl6zaPlo9+jz
J8GeY4rs62yRVm+4/k/7DPlcVviGGyR7jygcS8lICCCphiDAXKZsEivw0Gzv
7TxMOo5buSe5xNJaKDAV9mkdd/IqhUAflEKUhGb9L2spPiXtImaUXp/OkkUa
sLxARYvHaAcG2o9VfuZYNcBMXITf5f3fP5r9tEZbBPSbvUvJT9p29sPA53No
u/KxHNKjFM1lMb6QRB3O7hDkLKHnAaJwANCH/pZbZ6L7j+Sk3yoJfNPHX2e3
ITH8Vp8PQn3hCG96RDv64Xaj+ZfNasPnOyNa8unSndvMqqdvTSvoG82/bFp/
YK+iaXVHS5+7btad5xXil93qhfc9xP3jrXY6bqbLDr76+Jk7Hbf21WeMJmqA
OcdXH+98RN4rr9n8auu0/3YcJACgIP3V77SH7fnc4RNOvW9Wt2wm3Ag/r+iR
O57N7mR//68nLuHnN+A/v3/OkevZtRbJ7E41Gs4PG9ppQXlQ0SiRPMxxIAIJ
S/FP8YmW+L1N7PWEqYkifuygUEJhI59NsKLl/hqNtRfsIrzArMBbfqLFhkbq
N/j2hXL2C4SBrO84EmyARvKVPWFH864E8c7kMOlbizuTH20onMrdzuVnk+UN
V+QWtCz69FGyW73Y+4mIWC/1uQXxCRew98recST/ovn0f26iVJ9JqD6XTN2R
SsEdvolIvbbQA9LCX5393KZVqKNsIld3l8ZNGA8xfPBu+byS/1TSc4tPmwh+
FiUNR7Ld2ekdeiYgg3cZ37+ECv4Bync38rmB8n2mJJlE9Oau97Zfnrtb/+Hn
/6eD4ed/bzpI8UVV09xEDNFU8X/ic4hoYGTwX0DsPvtz9x35rW37+f3z79qG
kfxrWpHj0v7c8cb8K0YS88soAWTIaXmfOjQde5s8iEfHcvIG7XS5gUQWdRLw
tGR5qrk2bknVWCnVoN3XQx8/4F34jD2BBnbMJHPcnkS7s2VPQoHIms5uu/N8
kbFBctouAfD+i4Z/HLZqf3/kQmxnhA79nMGQ4WmCUBsKOPLHMHXdsiuaoLdW
Do8g9/hwmLBaXAcQU0cW9/kxwq/81Bn4NDP7kLx6/eTV8evTF3/qOXZBQz94
Gza+1nn0w6Z/fOLRm8f6of3FJ9vTr36k+A2OCmEz7b+q8b9+uPcvm9Ld1vTs
yYvHuFHJh++Gnc9demo/+eneoznd+LoEPfTvyqZP1DvtWe/rGJUR+AW0hHX4
uvza+7r8dnPvm0Z6y8Fvfv0sCwM/uPzIbV+HM/eZvd9+43pfv/uxiRyD8Mqv
x6fnfGi7Z3bjoeVGfmj3fk5rlr1bUhTT5sF/6A7lLnP/EH3xYcPU/7Ne/zoa
9IfWPD61dHr9JJ7lA32VTsOTh2WnTn7uu7Dbz9P1OONrBo/sxGOcYx7oJw7B
5usH32lPYe/x3NvfoSBC3faT8N5rcTvpKX5q00mJn4qP43cbtgLEuNMXp2c/
PXl84/ub++9bm3sf/tq7ZP2HqP9WRhLumeYsRWej9d5rf2hwzyKBslc+iXCf
bxC8IsFKwZ1jeeiKAvJXCGpeY1og/lg/9OLKQNnhQEkMA93q4nMyK4X4mYRD
jfQm1ZJ3/PoKfib8Q4/5y+DhUQiUJHH6qFPlSDPvPU8Q3xFjpB0HkpLLe5Gs
lixbh2uxTbVm1KUc/iTvcgjOjoSTNNKYSQM0KT/b6OveuXr8BfyR+8imrm8W
krfcauAqDTJHgkQAB4ek5iyy9+/TyZvhor7ErLGZByEQkAFKbpMgLYxno2gB
i9QpK9eO+a0tbwixBuZ4bNdSdCvw8UuZziCqtXb0Bj2J6kP/gjBqKdWIbHNo
11p1ZWe66ucWnUiHVWMSs3eCwBc9L6XPMCirLQgIU3u4ccPydsmz1kYbeq1v
ug6CFEApm/59pRiHVTZMq0UtuXzd0cge0j84e6mmEt6i1awqGknvgkj6Xiew
O53WqqNF5+Ghxs5KJQeK25DnyNukUp6cz+0U8QAoqkLTVATSfYhxgjhMXaHN
y0hPlHdaxlURRZNIKDc2JCE0n1jnziL3rSY2Fy9o8ku0OvHSWDCY9L1h4hPM
Wp1T+HRLJ+VRctQ7H4QFxZnBsipRJfBOiSbGnq9Tbx8IA3W48+ikhrT44KZj
0QqIlp2OjgllQWIXBRGcKH5e4t0Y3TICArRUPi8/eHoQ7udDXf0br95NBya+
R7e6ejcfieCMto6EZOlwlBFWPKwk20wyx+i0LBuGSoFWpis2IUYgG5R6wqGk
EqEqgLxCi9ZaYgNXny/llGOxKfnTUJS5zqfEcMPefFkHGTW8kddc4Gle1pj+
d7jhJEjmR10uiKFQIY/ZTUz2IRxLPvG5BZXFoWP+2T66f9OBTTawvoJRWcug
ghE2oxuNG9k9MS0BZJS8EpJGxx/f34ZTxPGf8kvACyUTkpaldewFG98GsEMR
+lQRvak0Ya5LB3X0REq0/FYr9S+mqRQoF0RyK4wlteOjhPV4bQdeMEbyXnMc
rWJFdVYkLq3IgKPybHT4CX2J0x+4eKGKV3g6i7Jzo9qVNYluKqZNc52LtKCo
yc/PnhnACD5KQJq733yLIKUc8C6DMhE/ELPC3Fgt5xWmqLBMV7Zw96MTK1Ag
obLGCDiwUaMwZUPj6q16rYBScjWrJfxNFfxmdHwywd3CSgxO65+EIKAUoU0l
E4NSBxyQTG+iwMeoRSz0Ob/l+DvMwuJdfcJaL7SWsBoNOsd0KZZx8bp3hmTB
8PCcRqAj8Hg6Lt9mkpVFh4uIuomktEGtAflAaw6x7ozu+C9wZ7K0iahne0Cy
P3jreTyGQBq8Rdsbpqh1B5NihUrM9plknErq8weqcENjMzJR97ziI6Pyer5Y
ZFNM+0dIbYqvn6x8smjLBK134guxi1fJn0m4YwVM0cZ9sRN6BCRjbK/mUpAS
zd7K6WLOpRjv02w5L9eUbBUgq1sCmrQr2Z/EG+n3UfIclgmTwVAOlJXkZzGR
AmE5mHhVxF1guMiCGO2CYNmpKjIdFo7hRcHFLTgFD6toTzjYX3IPsWWE4JYE
lvZSlyVWKZy8odQQBMfj7mAXYXhvYBF/IWTdTnYbnUW/AkNFQsIO7pVcl6rC
O58XDLVDQQpjRfRrpWsMXLt9UZvw9qdaLHIeLSlMcW93dzdZ1FJOfYWVN3w6
WNpwPkV8OAaonSKEbxlAXR3tCohyTbmvsJjv8sVqQeBAVokbaCKQyeRo/9sH
TDHxLxDER0ngvPTrIJDDdOcoDwlOMOKu49nFLN2K8liQd/k5wdl4SrlZvI2g
SH2FCEDcDu64tb7h7MHdWBHSII52Xl4Pl+U1YrUlnPA2vCqXeDuvknqSFXDO
S4IcVjx34r6nqAUWGd3x8yu6Edun5fkOkIPmuqze1Nga0hEeyzqcBtZBwMwb
1Kr+5+nw8SjPmtlw1aTDZl7vHQzzshnKunASDA6sJJTF9iEheo5zsZQzGIQu
6ggX5nWWzsk+E1R5DcelK+0H1ilG4RKRmwVqZXj2+vyVFDm4/83RIUIApMY2
1elVojx2yCdPABoeGauawDUvRbxU2J5pRrAoWqiiyIagQCdzoGbFBMv4knIV
QqQl+9Q6ApjoHP2Gc44PHV6WbF3C6aVvM06NsoZZLDDCZgjfLEj33tDtWXD+
BlqwJmnXfvD5QZQeRY+ZPOyhRk02pORDlhx2nKcCr8/PBx3KEtz8vdF9w+iH
bULHviaxurRfucA59zcoOVzEt1YVVcUJyQnz2TRMuw+1Naou1U60wHnAujOa
ihtnsYY3QBIk+En5IgsyVa1shfAFrmQfzhbFX6puPG2TSlFLUwPqBvojRQNo
9zntjCSq6TwrMpSXhNg5Olt7u0EvPSvR3RGp3MpwLI4flY1VwhyCXsayWxdo
s1uHisXahqQPrBLNkmYGItMEKYELeCDMq32xKSmH05/59sAuSwkOTxqcEkYs
yg4D+F+/nJ5E2FqGvsJQnbxv7PXmgjfQ+lZw2qiEQnOlJYJ5LFtWJ2dg4iS5
vN1N7JzgGVK4MZNMpJZnWDJYAyXOMJNb3PCtWn0Fqgb5vBnmRdiylHaizEVK
+OZ/P3K6Muk8zrbERavrVWa75m0OGcv3iASEazxyhmdCw86B0pAMQszDXgMJ
hbCXOOE1LHEMv4CY4+LqyGSDReG4rfil/LtqDpzBVDQOMQGJQknFojABVRhV
sCCY6DjOMAgjocym7HKNGDOqIjK/gXGGSdqq7KomQXyKzDNRrmVsmD2z7CqN
lgssMUhUp5hp9k++73C5V6KZ+eInWV896LbAJ4UYCQzqAsl3XBYB6fQ33+4D
+3oUQmK7ADxIqfmDb77Fp/AC8jdHu0dHHw3JjLVErbHMaOUhyPaqmm95mCFG
LjCMHl+GS+0Ihk4BU/2lyKn0+GupiZ48w1rlJSi527+8flbvGPhwpEqG87Ga
Spw6HWRDU3e0YUrxVMcKATsiGIO+UJjHK68Y4fK/wuiinvzRVsjMcOrf0/AZ
FGC4RrLos3TErI4kTuey1DTdfhjbmu3q7QgiskVbmBKZIFuRSmSM6glUcu7+
iOcUlJaRujQr9BY0MgnnbKqapCwDXisQkJgkp1Q2PeOCbqxqzHPFFUWZQzGk
4QZgyePgjdgx1gEcGmd4kUhcbdtw2qFDT2PVyNeb4apAaTfgi0tHdrOmfL1x
BF7YPFhGiEYkKBLiMN3xTMmGAk1Eupk3fM1A5+KyhbakLclCzd9T0uCodFtk
21bEEDHmIB12/jwxkDfSeLKSoPSHIrri1lKJKlsgEp/p7uioO6fNEz+mwD4T
9jrNSSEn9xhRKxnupnzWmo0ro+QZiLGMO5e6jSPZvDvdsbRXzulQeo+3L4zF
kH8EQ8klYjCPeiPELo3vpgBBitDvxgd6/jajmt8yNgPXCUBCqIyGChJrRPvr
OAMVaPwJA6sROsEt7rRS+Lx4W87xYnXpDUoLVM3ParnBadpAm5gzE10dmj+A
raZ5FeAw8sVxdnFKLRtKcFtkhlO2iMWH+ESROZM9QrH5wsPNa1kBk4kRxxWt
zFj9thpwZjfDwNy0J16+gj6FN4vBjaoOCh9r7bR3OOBZWirto7WLFsg7Fhom
FC4imbCXJ/g9e8CmbF6bYKE0qhYRkZMWATLQo1mWTbFAuvcreTydeXkJIrGq
ZFEcgiDjBzB7fDwM/ydD5YJ4Of8Qvf5Jmnu7W0x760uCBZJLtMCaZN+1QMZz
QtZEYh1Bdgmgi5ZYA3JMR1JqZPeUKrmgUrfok0EgKKCZHM0bEUwzM6tM0Z2f
89PiJ288POLQs6FPgU5PDd0q67B2Cxq+IpiTsZ2sROudkj60gXH1rkUX6JDI
kKADxTDWzxCYLnkFhzp/hzyP0V2/UUhdhQFQI5ro8T/9/PjpEFQv6GfILaCe
5VLGuSNQ3/wdtrBFZqNki81iITIwejfo4bOfjp89Q4v/1pQe3lJwfhBJV3gh
MO1HkI5wbKAGXCMNNakMLe1W3CCEEhMzSUF1t/I5nS8ElX/kNSeNl0FKydhn
cD/eZNmSiRLpAnMZKIn4sNK4nQKfQlWa8yazobHuRXFFWwSChDeT9Ra1sqE8
u4W/y34cEw6WymcR3hX9EtEf9m5EZg0qrzpgt4hiHa1dOZmsKl8Lle8B2ZSD
moEe2bIX5k6Aa6/pYBLmbFrl87UomligjQYoYrsh+3EZDvrNX3uB75jN5L5J
3F+I7Uq1h62cbx0Wl2h6sfJ2erw3MhiphkvaXsqOeS4Th0BERKrt5o/TaUzB
4uqEc1Bq5i4oKMj3j+8dmSRAjiPZFj0sWEudukZdsrWTEqJFO4gyNYIj+ek9
2mRGQ3WIbz8aUgI6RG0m4cGt80s0B2ZVhVpYWYV1ECfzsmasu+NibW6rCFWX
fVf32tUflikIADRfRoWjU8SFHa0FaV1OhALnwXCwlCSvxEPXWImHsICPXmPV
V5fEb0Ss4KmBjK1+KzhhBjxOJiZyb6VUDzUatmKhqb6CS4bl3Y59TRsx5z6R
gpjo7mZwutoFcMQsfA2FX9BiEHyYVbxFuzuZpjCqig17IEMwDQ8tqVfpEuZm
AhNKh1cgi93DEJ3kHyuQdbLGR51hvQ91j4rYI2IgqSp1PudjnGKFDDSrFVHZ
SxHdsI5xzoUOtWq5odTQCAyQr7abJ7bIKhuXJVaEJGJMneIEUrMcyoqkWnin
ha5MO/P9LtXrdQiio/Zr471AVPPsLQHCMzp2YcVJo1JLOB2pDN9ZMJpo3gRi
R6E9hzmuBKOpJZsR+stOfWvoVJxEwRRBT22qkjN1rGxqODJz7ereXJF2u0BE
K67bXKESrPqzwXY6LQBL8kRPqdjxOmk9IhFUnrVzXSsCEWY0U36Sa9sSLFyP
s/vYqtOSYOo6Ht+orE07WkDPGoXbiLMgWg9EK0OgYLoeqzpk16h/S4Xc9g10
IaImY/xp8FC4eiIhk8tMEfVA15oNl0AT7sElR8neAPuItsgGtg4UBuZVGFA0
XluYAcj06BMIjkztK0A1ZmXlol/+YpZhRSQhYUFPZhrw7A7HFTsJLWxNzpDU
vEZxKnDSyNrXytDlopuSVoQedkGDc63TTXEXGHojlX7DecBrc19kVEvL6vjR
Cq8QWTaTsiItDTqvGSYLw5cqdCaA0ItSJrYgWJwmaQ00dqPN7hjmD8Wnk9PH
tR0lspTeHzYreFrqbKeLMZBeOBJUewboNwNhAV/6KSZBmyO7tTaNmu9yoT7W
UtomZxgVZniJKVWVj6w4LdFTN1MsVoWEAQWgXk6lRdgT0xYCwwCmIeBK70e1
rOU6krGEyaYvCxXZ3eXt3aA+rK//xlxzn+AQxY4g8eP2LKeNIy2SzQyMPuTP
8n3sw20NAqmdYZdzUJyGpKNSe8m+sCl68ubqSKLKV1xkiAy5fOvwipDbJp9g
1fnkOgskYHGJ6mlkll9rJQAH1wChU9GnkWzJKPe2mLiRP2PrCa/AwNZpC0To
ZoIn6jNxzixZwXF+xF1f5rec8zu34RFELIjxG7YDbOTvd3c+kSH879/1j0/7
vfntbbwIO60vPwcSQZprDf1ub8tHd/gOb/fAIvyRke99zshD+8gf6Ht/52YU
hc2gAXp/79R7BzXrj4z94DN3XOWWP9L34Y6/bHvdZ4PLhlT7t09gVXxylQ8+
Y6b/Hffq/2U344ZnP7llh//fvRjOix+dT8iGwo3q7HvPirT3Jxhwe/6fs3Uy
6PuftXh0zfdbwCUg0gwpxFVSBlXaJNuAIjIlpyHkqsJUPIPXMGkQDREsb3AU
q8ijIHzh0++/CIClnTtGmSZfkvjhY0BVPQvi+qk6uVnQ4W9pD2OrUAiPTJoK
D062ZFAm6UHVCn9ViwDrA6xteR+nC0N8NQB4QE1RHYBZztY1LzyarV4VCqqk
JJ4jK6lFQYs8tkbnIvLcMl3Py3TKGRgsrHLc1Ww1n+Xzec1iXlXOrbYtqSLt
mqBamUpj5dGUjON/m4opL1tyIqC3fLdKybGrgHxbqMlcIzw+RX5gUyknBHJ4
36qiKh+UrjLLOGh31tLWRpJuKT4k202r3aYJQjA58xjlksBADtHIeI/iO+X2
5b6gnlQ6RC00vyzQGsFNT8N1pE7b6RkaaeUNEVb2Vzd64kOug4MXbu9DurZf
yXnnTdve3dFSdaxLrQqrSh8kcZ5riiJf3uaqyrLeR3XLB0mRLlDbjQw9IdY2
t4Qnt4ObO+oZ554fJ2om1p/XfleEGE8o8nSOlNCStUHCaxhKDYjBDBYMiNkE
NMVOjRPeDIx7e5MvCep9ptM23dFcmSWlHvj6BX1j3/9jY//rb3zKf78wvbcz
BYshCa3ycu5t7IGxQQP2+gDP+YXPQT2n5GlhGtIM+zb50lMwGcdh8KIHlW05
B2yz/5tbC1ZMS0hxUOCyYkNqkG0hS0SEhWJQREPVovNWm87G1LN1B/HWCfG7
9daFUZy6jX/9/SIYZmsnL3alOjpSNBkpt9ddFr+Lm9ZNzcbcwqZQkZ3uxOHV
Q9yz/b8dHQ7h6inU+C0WAeftj9ztJv0i2X7xwy7WMPylFkcpBbeSRSWmjlyF
nYMGEjTIcM79J/iYmkzIIl3AdlfIR5W7pUFkQ8vyJbV2GHRCs4lipwwPzOHK
MEstypbnPBybxnQFPnO2fTspYZRLRUjtipqckUkGi13TiDmmzpOtiH1Irdrr
CuuteV9JK4OPPIcOuRyFHcDDgc9GQ5XF3h573QKW6bTqlF20STrHoJBGopGj
aDLvwT6IOTm0I4hVKNFpGQ+DyhdrVTRJDDX0RsG4XscfxsP/DCNRx0LUNgOJ
4+Nm1SGQ3j/ncysrUVs873Dfz+o7mJ+3+NyA2BzM9HZLs/FzKwNTv07y+So8
f+4+8l7Izz/S9/7dVy3EVv+v67uL6P5fPe/k7tjQm/v25rloOePnu4ccX+1d
ifD3YJB/aLa3NCJ+Erj0j6zVgV+rg43o8vjprtXnmlluZdP7VDmDPzrpza+f
YSoHqaBzSkkbjUbdh7f7o+E9zPQfWpqbbWftpemgpv6LzsOhSzYAneKn9zz8
wVUNRqMmnj+2kDfbsv5Tz9ihX8j7d7xY8GrHjMbC1Y12NA7IoedOfVIjG9HI
PqeH9P0X6m9k+TBwrJoyxWiroBosy5zNNmZnUZQmPfuSXeIkEsXHpIEs7/2r
pm55zIER9czhAa6vGiwGlKDfkeOWUl9hmYLycFjrZTZgqIhJOUUjHA52/0h0
NHKC1xoQT9CxGcUzTKechBQn4oWFFL3sThH9qBTUDec5OEWgsUCgsPgtKged
tQkQXblyavI+xOaDR15wvBg/fyE+2e92R6P9v+0dDfd+eETPf8TRPKK2XPwo
l5PXgnHeHFhrYTmcd2/dzDAT0hm6n2RuolivZ6CzuRKS4/fYoB7YuoDZaKsF
ZiKS3xi0ZaxjyxYPsoX2pKta/FDoze9OpVuir06CAt8RlBgHbGSF6x3oKHmJ
s+AMjGmWTufl5A3tN8bQgq5yHIY3bE6I4Oh4Tf/oG58t6doKMmoYQ6OFUnGs
zVW70rEvZfaYLEZtYxH1SjEQEyphHua2Yo4opt5RoI7Aa0kwoQ+Sa5fwlDRJ
DKrAIM43Q7T2WjrpTjvBIIysjME4+orISVhCHLFBaTw+v8bjQsU4Q9s1Bq4e
TyYUUnvJyQYEXGhvSJQHR97ievKaUD4CZRgGSo8WU1WkFteTfjgId6nztpgb
w/eoym9hhWAbZwUn24cdT1k6ofg0jCyhbcHotXmW6jbnDORJFzsGUdM8Bp+0
GWAowVF52s2F8YYpOjE+EZsoGsXFcOoSAUcIDkxMxtukLdlelkiKOdW1Xo3/
Tu6IkjNip9k8XTOqIQJB8E741ESMu9RKwOccykIGtbqPeLXuEd4WuUaZv0hp
mIi/XCdmaNLp3HSHrFeNwbVih96WJHlDtQNdHCE5SqQlWG4xDKyNTEO4p8x1
osQlz2BopSapFFDmQL0ph6MHlVa1XmS9TAuigJZVolF/N8XFWYgnUQn8IdSt
cX+iE1ygCQ1UHPJ14Mo0iGwZpo9KHWhk+lSMcYo7jk9kGhyU1oJUZFOCtgTR
hB5yEegDnjtd0n2+WjBRSfwi2iobsVawCIbn6d4qOdYU/7RO9OLSHtWNU7qo
XiFqRPPBKFLXE79x9CqIE2k+x+hQrgKZUc6ZGNLY+fQp3hBm4krpXLftfRM7
hsapXfaONjEfyF4Svt3FkaEB4Arw47vJduAT2rHc5GBkwO+sLHAY+7ip4d71
cdFwR+zF1ZxQJD3OcYnRooPRSgkAaF6Fu12tZHntVgXwS7aR5pMNANo6aRWF
nOJU2AHDYrbZjYEI6tW9UaKF8z5LQYZpnz8SOpj8AX2qsgDXhZuVgtYof+JJ
RjAP9jfCzPy0OXc1b6O2WJTk2qbHmKzicLkuk0leTVYLSbilQrG/am5LYCpX
Ph2ITZ5iMdILS2koymn0tQ+7lKjejcIKyVj8OIqC3ReWeTbxbl7ZTC/phIOO
ob8UpyA1XAQCQGLfkY/jdYlNlk9P3UI3QEQ+yvLjKNuWQA+vq0gP13Lr1DdM
sZBXKL6Rux694whKmxn6BdEDtFgiaEgq6CLIWPfuHUaz7WCyslNLYDAbA2DT
uOEiHH3eOpgNI9wS6J/jgAxJaUpbALSSU0IBAjgk7lVTvvDkoscG2kircQ4j
RG/gn/K31laMYKWYNKZLUO350B9GVbmNqFIVc87O2/aFwBFjiMBncd9kGSSt
HIUkXNl3+SKNwrZ5vBSWcZWJ+kIoD0APaowqIC88fgN3MMp/a8GyyJNIGIbp
5SWhRDCGOSsr2F/7R8XG5rDquEE0bRxrJW8Q5WrEO0EdCq8SYq98WVNciL1M
NAlRHTFtvblaYNTYtrpjjkZ7o312yCBGxbe7u/sfP6JdhHA+CE2oJKAmkLXo
XhCp2bt34DXBPsBEg0JRyUKlHpg2+W8FIYw1k0BsdzHqx6nlNJC4pCBdslUx
0oN2FTcYSUZOgrVbYHuBbKvM2h+pMHqfOwuxWRk54qeWHlKLIcKEtg2lqZnZ
gO6NqLmhD0tAkFnd+LLj4+265zF9LBC7US5QGVNAgWo/OF5+J5RLHZVajJol
o3FmLGAargHwcARWpen1bu6IgcTJtV73wM8Z/gAQDNojD2vADkZJqDEdQcYV
wkvmkmxFzG7FuiSClo4377wm7fZOGiZFdbdRXVW3og+B55WicuOwY/1AB4wS
hB5L9Oq6GDmO06tkOVU96DgCjLkhiE9D8AIlJbVWNC4OXAqPU1c6wLUNbRux
qSb0SqNbHLlJRKrKmaMvfYUUkXPbbS5KZhys2TEmgF75TXiDhDGAoQ3FOmS3
krfB+uosR4RXsZ15wZHkfdqLKIOBRmHnJcBac0zDV7UgHkhuzlUqADn1csWQ
UTFlfYR6DSUiI4TRPAeahslWG+YzS9+STqTJXrrOnLRhxqGboSV+vcrnIs9t
CuOwmleSPH9PU9m1+JUgNVlQkiZ2UEYwbZ+QuxaWQOoRNnpxr8PfKRtMs/dX
+g4xhy3+p+b2Z9MtP5R+us6WP8Hm8H14QARvEUGJ0yPw2Jos6HzSGk+qshaQ
RbNOEEEx/Sikg7pJyMmKdWTqdQHJ9ttQVtF7EjZpJNKCMmxPRVkrVPOuOY2y
nW3VAlGWU2MLJ6aJRC5LkErTVsU1+9TxmpgIXvRFd9kax7CzBJufhlr7KPkx
SoIiCDlJN8J96Y0c84/W6SxrkY2ckfdxKWiguHjpAsYy9YqpzMRWIUKZDs1v
Ldof1B/BmEyWa5Wfj1cS2cf9EmEF1SpK+0cunE6wtQ4moEp1SvYpoRlHgVz/
rUaWBkllcU6ZAup6+oUHgHOgX5u17Ua1NcygpZXwOqgcDZWcXWiu7lbACF0L
eqDJeuRYKrtGLhWJ/aVgBi8UrhJEoFWzqrJukp0vMyDQx4FWPM9SySbmrFLD
I491ZNO5xKfSIZtYoKW9Oh6CMsA4bhVbcL1m/E7opyG9tCk+6FvQ+uRNjNxS
a9p1XsgPaubgKiL9oHt+ioxdFwm8vdVFiJBxCYa+CgyMapR642yv14OhqTWw
zKX1xkVGJohhaDQ3ibWis8zoHE4zfDdxURKFoqxy0ykdKSIMO6jWcQvn48TV
iYTszRHMIxgW7ZjrkuJuPRcRQo+JhOA5RqzvQVvsDwirl4occT1OrJVBq2iL
ZKNIOBdeuVp7fCbDolwId0SaMGAftVhqd0wFHmdon0leazkGYl8xuIiiCHfs
LxpoTXaYlwVZetqGHqqABWcX0e+qklRMQiWEN84Dx2ssd3vdKKiexQc4jLQT
9YwJLon7fPs8EF/L/VsueZbm9yDqyfU58vBsN3rwSOyOS0dou4jv6lLWyAif
jVIvkPuVGpTdRqhOcQggafEpIwkjUrWvr8q5bVz3XJv9X4L6a43qH7FByaBv
cg/9HMALO01Yrtce89nieD2oNPGmYUWO9yqd5qU9jc9dY0J4Wjt7nnGnfYPB
FpAkxMYcRskmOeW8u0d6dBmsm1edApGLKUJHru0BDLdG1W9VkAGBQFpZjVUP
XltCaR+DMGta+CYs01MC7Uj2DlzkuNPTGFhHpUsNJEm2Az9Oc7UZWE/KDzF5
y03CaLqiBTaYF6s2wq7ix3VCqREFaoaR3ij0MPQEyiGKdd46RxOQMIQSEMwo
kgEUchOWckEQOBYAFENl8ueqRdsFNa0rRAPLinNXzNZi6SvsAFRrOqWskGWJ
obTxuvU6mvHXovTguB41zEZhFoGWNQfVRMt8mqUTTGjCAbIDAc9owREMuNjb
79+H3xSXlPRzsxfEeIMmTiHKAgWml5XzFVeC9fJAIXa3/Y/q4IumIR7uOPwD
wf5Js2V/GREvJkVwz3bIL0g6lSZs3SNG5nO2Nm0woTRsjEAv57iWEr2jcqz5
5ouMIPdDeI6auSHOlXyhkfgPC2NBIjtkf1qrdIWK5mLZhAlrzVVZ+/AcWXCL
Rpf6X+0NTBgD3Svq4pXBCHO9vpq8RA3tMO7L8V+QcwiqB3plGXMa6XY5G/rj
w9EwstZNN3FOhFITjakIlt9vdqUSoIRxnPFaJR5zi3PWmRAD/zbJsFFyWCvx
T0MZ0EMkRV4MNx36GIpe3XpLjmhICGHyuAez1dx5QA/2WujUVppKYVfAx9nD
v6QvBJC7QvYZhNNbklkepk6yM9n3i8sY0OOV3HvskO9be3UC6o9uH+/rBqY+
Z+eOhgsJ2M4sCvr/w3H9EhN1b3j7j5TM3Fy5t+/zYdNL3ki88aXkr3cY3T1M
Br5rUO3/DnGx/01b0BMl2vPSf8EWwCt2L2BJt79O2ia0je8nB5/AlPjP38PP
i5lNbhNOvikYPV67nhlZbGu3Tb+Ed1s4HXS4U5/xaQ39DhHPh/+tO90OE/Y8
ozdO2IuvGBL8KwO47e0/GI7zhnMwSSY6fnI2hG8HnKaNjANzDKVoBiHNUbwH
qhLj1LPtNxRbgBoLyhmkhQqwd5DAHSTE4U/5zAkzShj0TxSj0z8zrHcdoY7P
fcADex1VTFXMJOaQwA2BL1eXOVfLyEDWIggkFaI3AlpztnZjiWxU4ZXA7vb/
dvhguBf1mejTmD1O3mougcKMccrkaxAE623sNisUbBnVjdVcqkFsGG8IEeyN
7iTa3db079MGVSYni2x5XQSiQC4GK46iNDOzXxP2VpIDpiZfjoihWreA4Stp
OXu8D7N5eqlYVTRx9H9X5jUK0epgH1XwpmVHEDnX0alafpFul6TBefDg5PSx
1+Ui03ZgPpbw4eyyJBRINoZt+QN9kU/D+g9UFuvbvUOqICEBM+gbdBQ87jWb
k1MJ4iFjK0fZRXHxEijn6BZtAEz+f7q72u22jST7H0+B9f4YKiFpiZJsx44n
ZmQl1sSOfSwl2UxORoZISMKIBBiAoEzLfoB9p/03L7b12V0NgHLi7Nk9Zz2z
OzYBdDca3dXV1bfuNYjyNIcNrMeTT7LpqTsM7m3Dhgx/qVDOurcD/+qN9ve3
BE1uS/4Bi33E9qxYJNBxwWXGoj8gKHo3kD1oJtTZhq837/pB/GCqmFvUeF3B
umNpiHA/kv1yJV4+hcCY8k6RKeL6m46l0BV3KfQa1RaWpcKc6opTgZ5TmqNE
BmKAW5IyjahLWUW01uCZzrrgI9wRZlKjaqvVRBq8bFVyLvqoHMz3cesjjY1w
VdEd93W1Ghl6lhEUytKRhxs1qW8Ia8dZCYvBoUD8A/kp3QgNxLxOuV8ySy5L
EQs6k9Cb2rFtF3enDTKBf6m57rsJyOuaINAF4SxIYZBQCHw6qnh52r6TiceH
h6bhzqDRnA0hxps4xw00viMTQbB63JnTbCoHt2IMumyBl6GJXK5504QYpLye
QdFXCWQVGg3uULIMQipd6ibXigYLq7IGsF2s0ghz0n28yoqZxADOxeDjAlXd
nnTuQh936lxBgafS5XciIjneLFPGGG4dq/gSqWWaRyAlXUXaUrvsiKH309dB
QxZ1icFkXNHwIVmhRb4IwSHZQkRLNmTo1DC+HuDR7ilaIbVTHX0utkrvRBuD
UVxhglZDBWscgqGHHbPOCMp2qTSced7tJGqOaeaGoWFtLILFz2u7uBmIOS2w
O30WyBD5y1rzSRauW2QjeKxZc6NfA60UJU3VuZAPIVc3I3bwgEYo8aPUVat8
B63vSRF1XBCnKwxZYxjUpKdhcoHQMzg5E3egoxCdinwXRu+drS3CiI48N2sT
mE48pwAcWZagP/uGUjgvpIuJXX5oOxUsmjSTuktbw0Mkooj5LYopGJCXSecj
cY5ulsNJSXxnWRSnGOik1lmvq8cM4zIg90dbsc7GLkPKADA2f27+W/WWJWcy
NQ1jEh2QbTm/7Zy8URqNIFoPaTEJCpx6hzU5Q/bqTzE3eIoXen+6N7r5d1/W
IJsOJMb2AdWwib6pO/KmopnkmGrXc24Evj8B/BGn5dRjHJ7o5LaFox85CLYe
TjUzjgwExCf0RMTlwURdWeCK/l+SbViGjV7wyo/3fy/Rxh+LCPzPkGXgeRXS
im8Fr3BLI7te7nPhJv+UkManEV80WrGz/b/MXenb8fEP3P3n07kr/0zdf5Z8
8s/U7f58Ivlks+4gg7Hxx45XHR/td/fXXJP8T7e04DaaipjyEf7sqzWjZ+ae
x/Lnr7+zrXq/b16j7D/Z1iAwp4tHV1QOl48wgx+XQYzQwQLKngTzQ/rVcCl5
MR6XIydVlHqJGRQuy2xpV9zEYBaxXAqJtF4cJbcJIxD2N4meBIgX2JCVGTMF
eLQaS2k5OrcKChC4sB5DUuK4oyVkSEcRJKHbxZ0ouRho74TZEq8gRqBjPLhH
bzdnCV09V7QN4lc9lmAgegIM2uYD3MhdIHUefj3cctYEW12U2VygunlIinVC
p4J4de3oM5OZCzp6cDg7P0kmzAqaZk3OL2KB0hxPESleWa6yCfmn3j0sVSQU
y6vnCw6mSimaMduWwpgSaon86cgxqaFOEKZrNmu0gkYtbB0OnWlByemM+iUR
l7A2+tzk7K/qWa6A+CJ+WhyzjIkVpGPlUlrkXPGxLz5tlc7Y3Ih8IoxBk1RF
jPOIKFQrDSizU4pwyColYT8hFYycIDkJtFKbThSt1GiP2Yr6pkSuKT4xhvOP
LoqCpEoqpk4VYRZ+K2mgJiBU1IUwQi8J6sehlKy0IvbQrgNRjtXQ0KJE2gth
hwUfMGp2DkvGEHDPIr/oMA2D64wHWmapycV1NKRUlM/swH8OfLen+Jesmkcs
gqyQIhg6NEe62ON2lT0Ok5VG+6PRhw+EfTvx1dGbOV0mE3z9S4XzqGT47QAJ
Xy1E3NEVsCTimuJpYRIPTmBKPIWd/ZIQ3C5JMpbaZcCxfDFm8PKQYn2Vs7Wc
T9Dzqqa2XC+EwwInRTarKCfMEBVOLlMYjs6YYfQeEz+x9+lFDvi9Nb1ENIZY
bkYGB1u17OICSSmwHXVu8lck7RElTSUfDTfwNfNJsMZky0R4itwzTn/kxBer
eoVlkeaMYmRuGwOIl0hnbDFS5kCEiQRvMVkWaGHHM0n9MQOLcsP9yYrE1Rmj
4vSfS4HbqjqP52GxQOqzNHZIFc6+pS/l4evBkI6ITaCqkfiQdj60BNlarWcv
SQaVJQNhyS00PKxr6xXLab5JXNZoXbcoW6UK3pTghDgaPB1m6fJ8QF5BlWe0
ihAsUcemz5X0tJ0JjiMcpWE+k/swBOv38WqrTANmXyN0Kq0D/pwfnX3Xj4ge
KjDX06ZQSpcS9bMi/sGUzJOcDuQicyvNPjchgm/RMZZoZslgoVg2NihSpaCK
jhgHfLCWoBoy06TCfYTPGywJ1DcQPwI7g96F3taJWnLdZs7ha/DsZDFLPtSE
iZ3KORerJrqzhIhOJguJXXjbp3LOb9NyknEC50VN4pixy2pCwHlRXnHwnalu
TjrWNZcsJWaPzZC4XB08FUMW1GZH0cYzRAZZtIc1LialMo+DugWuWCs/9Yhi
6zSE+exsah5WZl5KU/UuX+NlolsavBETqAfWOEClC2gJp+gTsU65gz1cgzQZ
TZIRHMeKe9imrTLmWSShWBo6EMVagk18hE42G1KJWJowCo9Nm9BKqOxEJ394
SRhnJILJ19ZGf4z5h6b4IH6kS8wYy4XoA4+nuCdcrw+jQ/Bp+GxXNPKWRPKc
OOAizASKaSdTdFwSESTnNEsElA8QKu3oX4syEkuGKEVCdNEbiS8lniG8c+kW
G8OrQp8Rj9IiVmSGuZxQ3kWg4pWg8apJXFU/CL8WwfPiHlIjuew2SbtO4u/H
uH05yygau8UfFxd3PiVFI4xg/qKumCYmkiZnhGGbIG9N6fU7JStccxiq9XyO
8SAWQgzT8zziLXtH8DXH5u+5PZQFQcmIdfHOofNR7jhZy3BSjDL7/tFFncAy
tkzTKowVihIy8wxATzr1Vc4zJPp5UUoT2xD93vqpDm+nBRXRfJp2YCpkpjdx
SeYupHrOZ9kVt6gxfftdjMVBYrME1yOawU7vktOZbotio5mUjnKpPq22UYdu
D16fnPCGD2kEmCOuT5eMcCSrbuII9vc/ihH5qu7qg0Csd0v3Vd4w5y4jIgJT
MnAZKdiogWmUX44xDjxJPSOcou6ZJ13JCkK6JB2JHnEsohFYDW9WKsq1jG6p
mS11UYIfdsEpHDRSJIjvHbl5mi6ZASUAHusugHxqBOnKp/iLZbTzzpnJIeVN
qDvZpgdJOLrSgPYcnhWxypWZAAwzDubBM884n3YKFZsmuK36P2m5C+jU8C9+
fZBskMilaI7dfn22btRFoskI+69ndFBeBSsNCRrTJAIzS7kI6lX6e5hoXfM1
SMvecwuyJ+CCBJw2ka2SSbBTEw8K4z+B/UBQ/zSiveYCb7oWG+n3Yub2UfMw
wAtF9CNH7V+lpNXs2s+sMcg4f5Qzb1ozl6bv/V4XmuIdrmN0h6GfumR4k8kC
LxSdwypEireSYIYvKRDiVpV9dwfRFXDMyTCNaJznMk3QzvWycxMs2xpGwXBi
kVlXXKg0kDaK4u6ovAqnJDtry4bcRyfh+3XniKt31sAZ+T1R5D0A3tHRqaLc
hOfXwquelN7hklNfktOdMgcbrjyBEdcWOp+HObi8JH3DdczQoV+lXUMS8Uj0
3CV4UjD6JylqWheVJFaxBqOTgtce5r7JXY2YEn8pDpy4NShMy25N4MdQlsHM
Awzm8zoXXysymofgDGF+OZ3uqyAjeh9QR10umaCSX0U8hcoj+cil5NQBcvY2
MgmY7Ap8n/MS07n4wFIxCmR0xMcm4WvjQBMVHypO95Zm1xMIo0aBMCpBMDjD
47YzYRUrcJSt7KHh9Kuu6Hu6A3QSWfDbG7izKDgAWGfMqsHwnsrSnLnh49cO
3l/wvgtF4UPlaHjDm5syT2El9TqzS+h/jDZSgi4ltK5brquPy/ieDgaAUilw
zLJRqcuILgzvIo+IR+LdS90RS6WyxLvXffcP8YTQjM5CjnGxqL6K/SRnVao0
FQ29b78jHcbHMDsnpJ1NZbroEIxBwjdx71D2Z8o6t7KL7IMFmi0q75K3+y0y
/QbegSET3NigQCcFyTZ9FP6p97nk4IB4SDRT89wh5BKd19w5JcYzoXrxFNma
BfX3DaBWhrsJ/nv+gmTCDCMU6jDaWCqwSmorbJrcsBDvvLElFPtj5bzJPkT+
E0saJo8PGeSuC6R51uXxnBY4kpQVg2KOJuGU3SW3ONjwMm1JTU6VvuBaHWAj
lu6STS1pwcTq+tgpSitt3t4I8oHHgWCd2B9VnyCKjunfLp8tX7ID43dNHrOk
cCmBGNOgwEqlLP6+yE4amZvpUzgXBA8BTNItsTzOJMecE1EltR9D6BJ2q5yn
PyEHTPwIopPJMFC1RDExrQ+XHvmO3weK5I5+hVeFWZpwQDRh0ofUUzDomjqk
Ul7iWjY+HD8VaRi2CFW9wJoRfu69R96CWFkVxznKCrwwjKdc6ut0TkurlEMT
8TqFdvKBGacKhiplnhGMi2jhG/AbeRgKuTIMwEZFZ7yZT3WNcNdn8QtER8L+
/y0tNyp+A8tAap25oetPibrh59fQsg/k0V2vjr9rRifLVAIpvpyGgtwlzKKk
nFyCq74E5+Qdhzrz9o0u7MtFHamLorJtrUa/hEbOYUs/DU8lYWoXU91ZLTlz
kBXi4F5+cjwVoGsY7uOLx81lh5wxNWc85TS7dgzGhjIqzbQ7YQ6gSU3Adu6e
ynnfOpjJjOuWE10qKqlF2aRadTQJPfiMnUUBchbiX1SFjjm3p5PpMnadOC2u
cxh10zTu2lmibXY7DDobp42F7Jr7bje9N5TNGil9rYXGSkT16LngzOjmhg3c
JY7UgcxFCoo7z1r6s/FYq2L/SieyCWVaZeKTCna5HyvpCyoJv+XR+Ptx66yY
fqQ8mBl6eZoWYGmKJCNkdE/3FXfw/Q/4jhO44Q7suy/AZpqcfZPz2g+RXE4b
nFlnRctRHruDXTt4+R0iPWf1nBb5Oz/fGUrjmb2UVbqiVjOZvWB3NLi3644B
7A1OE1zu1LNU9+bDzu7gFu6PfCM3IhIZkAi+kOulMf5S3Ym1g9gF/n0v3f1x
cMfmNKlcPS7TM/wejb7/Nzc6mNaEM2wCmFXc+4IIriMYc80rO5h9kbRDymoD
OK4Tvl30e96OrBQVBVt7lSOTvbviH3jQsXE/RuNuehU+YSG4V7rXMzQSRpEh
a+N8TUtLsEBoSFZC3+JOat4Xz3QM7stcx/eWLKGOWIA/kuLFVm0uAyOwhIWM
3kpyuniTSgGCxrY3lI5jccPEttMcUe8N9/mQGnvvi529+0NEOYKHPrnCia8I
GMbDHNPSU5eiPYv2gJwP1qMVq67+SkB+l7O/t0pdBFCmFbFbSzkyOsib8KRT
uGg9x0VrY6qN2hIq0qfXaNt/FLM+Sy9g63sqYhFi7P3tCG7fuScO+mOjTIYX
9h44d15kJloPztL8Ynnpf5bEISVw+gXHw6sZZnSkb5dDvvtXxdAHFzdlFWmR
YphuK/EjXSNI/ncpbAd+4QdPi/PTBSJ38ougVUcwjcuPNk1aVuc0wE4vp+Uv
K9iRoV/+a6tLnJ8g3+KXjs7g2Wqq3I534lG8G+/F+/G9+D799vmg8R/69f02
/Gfn/cH74/fP3x/Gh+9vu7cBhcYk7OfpRZpPH8p1jKKBve7zG3BZd2P52jit
+N/xAfzfoFFaD7ynLaWDlfJsSI6Tvo/pyYZHJRV0Nx0bSQ8951Y0aniA+2gY
kZjNSjUc0s2kh8P3uMpYa+X2HpKSpK73pl+k3i3tl3YJ3aMFR9+9PZ5qj5q/
ds6zD4E2zKOIYeyeo8Ah9fDmRhYgeVS61J6+Pjw+fP3j4VNMB/SJgiy5S3di
ZqC7wBFJuTAyF7hQgq2s22XvmjtxMZRtwykf1vf2zGUYajj1WO0XN1C9/VY1
SMnTUcu9oBidUx6G0XtgbuhcsWHB7sf+z13enHx2N2h8+AQt5MGf9lNmj97b
6ehO2NSc6i7Tv86O7V9ThL54b2d3w5c5nRa5LWhvQ0H8uXo7++1Pv6FJtovP
BQPcG21vKL8uZ/7Z0c6GuxDIWVfmRvveuDmRzc2MhoO5z74+tpc3BL2RfV1x
nE/BN7rsjfbtJZvtGvh8m4x6cFMMjvcprSLyzc05GF42nx8n8mhPF8TmWDlb
C0G6xhsaT4K50ZcAU/DIPEneoIPt0aFaR7W64MKsOq/S5aNPe9g0/uMPM5Vb
3NMu2rKLNn595CezNuahv2awV4/aD9lRbh4ySREdD7VMCj95mE9fnh/ij+jM
dT7XtiEPO7MhOh7umLBYbZv7+/ZnzUvaZz9SIU/sh42HON7T8ajOZFtZ7PMO
Op5oG3F6tsmt1vGkn6hBbS5fv+ORTlP9sDvPsrOljQelpd0PfoAtxHRtXS83
7cUuyKRsuNP8hHh0r+GRYv7L7uhX88wD2XLRjusXuIQXYDIdBGE93kvxDAK3
BWZVtzHa4M1rzOZxfBODueuP9nfjD4/iu3fpVVYYbNISuJG4gYf/aTmlUp5+
5Iyy/HdHf910IyO+DBVA3PojjfBbFd8dspM8pbevvhwJO8Bt1c0XpbRtni4v
i2n15Y6nIdCH3BQ1aMwvH7Sk8wKjw74Ukfp29vwnqPJ1ZRm+SPKEmUe7nLT/
Z1QNXXX9gezpiIUq82S2rhja9dwFDg4OXsQ/iHjlZDIfnCEFdPWB0UI3N19J
nIZ21jc348Ov+foHjYEqGs+HIq4IIiIUcxGGH07Hh8enO6MHp1CZgaEQtS5G
JzT0QWF2H+1wOCVXdsQYFIKR+xPXjwctKMCmEY+pYN00sqAxIz0m1W7CeEir
9cgj9xX8ZTD+fvz85+Oj48dPXx4Nd7bhv9v37+4O9ve2B7v39r4YDe6f3kcp
d3mrhAMXZ4l8AGIT1qo4FIeHALOlXLUNcWemdH5dMrEi9q/0i6LuI5Pzg7Hq
Cf7/nONt+h2HElZxhdMhULWenyGKCl9Z4AR62tD7DKbLNFtlZAZ6d5lIFLM+
ipx6m+/6B/y+mNUIFigp7FwJPA8GI2zbYSHEGBhSL6bTlNLMT2x0LNIWUPIA
htXxhR9GEWqMcGYvHiW48FZ4IrJMLvAtYVtZmWMvton9mIYWfD949byztDMS
pnQhss0l5b6kmSvJn+hROZVLUObjU2aDPMOMZ6TC/K3jOQV26nnrRFOwmPaV
GfYpcUlzyUXUj8KbMPEzGVzE3i7BQF+8FstRaIY1mGKZVlipG6NY+RJXHS2F
Wy+McIXMRE1wJ8gWZ37YBkrzoOQNDewq1UrkYpslB49bC0U5qklpLSFxjIFr
TlwogFgRCKXOJLRKGBN+vwhBOXISlOWrYrbiCCdD0SgDJvE06DxIKiXFXguu
CLlWlpxCEtlWcU5NEJGteH56wyqKFn72V1WNDGFJJANKYkVQHKwr2zrq6GRI
xxyNbrIOctse75NEvLLZOXzWvCxgk9jsDo1R214RjqB6HhXnD/mY2jWpEXym
I1ycUNTIfsfNExeZi8x9CuEK711o3NAWSVZnR9SSTMfJeTeGkN1pMZ9Q86jE
Mq8zSVlRtmJfn+ObdVVFPVmn+vGb0QxcROjXnTdbMtS1EpeRFmZgNvokErZV
llkhiaxcDJHnVAjWM1mxeZFuLHYf+LM2fu3j5IXZMo8FrBisW7A2OdOc+knH
APC0jAghw2qBikFngedVki+J42fFVEhQIwybRZXW04KdYUpkqSW5o/fq9ast
hIgjsF3Jgx4ydUIPuvGz+Letf4ziu9CbOdO8fEPEtEsEMSxNfUYjc0A40nS5
FDbs0T8G97YVikAzT99I4VtKJk2KgPUcs07f6VEUJw+Vy/PB5Ly8GCRpMh3w
yuomoy7NDs3IgAR5jd/iL3EwjHa5/Sc6SrxlFGUQzRX1JEr4lDN87tCIcK3M
wRUR4BWvoPQYonqEdkg/FGXisVoKAz9K02cue096E8qjvpIxduT8o2B0ObdJ
xpU/+3EjaufTR1S+cQzBSMGv2TFQVjQ+lvHnMQ+Z3gr++ttWY+DgGnBRQEGk
Eij2j22C75ECR8v+/X5gpLV/slyh0P24Y6TcMlCGSB7+ZvmGLNeb/A05MuSY
EuUjHQVS0gwi9CXvfJZdEE6Eh9MqVd10pqG3CWTwiCzcpSBddEQkJHtAdgeW
tJQQDWJzIh61Yp8WikTqGMDUmzKI94b73Js/OBJlxWFhlqb7wFNvRmkQo6/3
5jd+f5KRIWpv6n0CB0WMp6oXSKAvS1Mev1m90RKG+9jSTVPHgxcjm7zZmErD
/VsnU9w1maJPn0w8lGQyyRTq2jWcPpCZRdioDzxSYaCF95wePxuP9u+Fp8Lk
nhOMoV2muhCaCSCAeqqky0X269fy8b29LZc4Fy40utlq+1BQZTPHhjcaXfs8
L1vmkhnCvGRskYZFwUWGfVXXyqZkAIoq809hC+/tkauuGVOOqTBciwW9JTV4
6/bBN40wNSTJ3HpnJ9DkTUukW0nfF3qInqj6of2KlaGWcEOfvN6S0N8VDzai
45ssk6VPBDQ2Q50rNx4R9FjPEjeHaf7e58k7rnThkkO1SmeQdNN5ks0aY6Rv
kEWXqgHHwlFIwHqeJoyiVnkvK/Nnd/UdhdCMagCtaFlBTQ6aMiKgx5LKb5FX
rrLZRoLGzIiIKkfuhoiJFpACX6kdeBa3drgC0OJptMrSa+6BjfNP1TEEvR01
mjeMjzU5kRJcNs9jJ5Tm4hpgdiJDZwHDtiL4gwHL87CgPF/BDBOOGVcreOxC
Qftq6c8jN47E0KsUGsVOWLtYuRgVT8UJ624Dh+Ry9IkMk4RRbiFWTk9Y0pJD
N6JmFmkPJjey2T1iNRVq5Mextb/sI/h0/zwKX8BlP/t3QNCqZweQTyMBEhWo
ofhXSIwYv8qW5/AFKxLy0Y+iEJ+E4LiVYkCpn5xqFdbDnABwmfIlaHfEeSCc
v6QpSC6zvTdeoPHL3sYHyuKgiXF9zYvTiYpceBh4jxbFki2h1EftYSaVvgg8
IdaSiBCeFvG6qFVAYrZWOjwHsXZIfsIQNzTuNXeZUOKwvaakKuqRr4SpwdGh
EPyrqVchLNeizqOZwRxPkCxDzrwgO5Odg/HAuTW1TTfyRx0IcUctgXOqZ4RO
SdVR/4Ux3VCv5OZGRY4a0mHQ81/d1nHtTCMvJqd9afChUPG1k9WmZEEj9P3H
KrJZF0Eh8ikIsi+JgSofXuM0E0Ja4XSVbzS3fczmGBOkCXFP23P8XZPCOc1F
g0K4tGq2cYbhfMmhT6f2hfi0zK++TtpWIcK8XBOzDZEkiTGUnA+vBu615JiH
193+lVBML8vsrF4WJczZFxg8xrTmVTatk5low0/0Ht5Tb1SsAjcUryPCV+RS
MTHMPU23Mo2JlYbLXYYCs9rYHHXMJfbbQwEMTn1suRHvDJo+R2ywceOjsCFI
WipoOlnrP4ufJvBw/HWa/zOBWQZ9+G1RIEEidiZcOUvzJxf0y3BSzNkl4AdP
Los5TNBvwFBDu+H+MbgWzyUM0YOXhX/kSVls0WDDe4dy75MZXRjCchMUWJxl
UOC3sGMBuwJPPauT6zTjsn7IqdyX2P+w1sVfJ/mV1rZlS/kmnYFp/PZf/4Wh
Y4TmHZ48i/8ONgnldLCko69fxK/BQCKsXS5gE+fgxjw5x4cvago7l0PMBrFF
ayfF3yXT+grf+CqBx+KTdHKZF7PiAl2wOL7Cq0+gZcN0Wtvnj2A1zKDRdbVK
khLpy448dT4GX/H6TC8/ARN4WTR7/QWuqzl1aFXg53pRvMtmMyxsvnwCQyLF
TJHFepjDommeO7gsYW0uyJMcD+OfigIh4sgelkIrJgienyTX8OsTXKBbH/tn
qPM/svwtmyf+MPCXNf2Evz65pN+azz1DzwVFUK/oW7SGyHievCvyLb/rviU3
ilIDFzSfWUaQlh+Uaveq69vo5v+kXCGc8UR7XxgtGu6HWe9wpfCE+hEwbTHj
CAObwRCifWjY7aF1sPFixsv7wy/ijuluzt/AcaON4LNkPofVrg/dVObIoD0+
K86Sfvx9NrmCi+WC2xCN8+k6PqhzJLm9TOam3WicGE3PFiJCWkD2Ka8394U3
IUeHx9/CksEJE81iIy32ofbC0/oKvLXDMruKv4OpDH//piQdxUkSv0pmxfws
y7N+/Bx1Lw+RLGnZj/6eYK72u3cwYfL4OCmv0MH/W3EJ/5jUU5Iy+td/wlyM
f1znEyz+dXGGuPOfstkS96WvC3zwKdjqWXbdb0zFfvyiLktYy76DpQj8p2t4
cWnrj9kFODxp/Zas83i2AsMD0x+8wGQY/TexhpW1n94BAA==

-->

</rfc>
