<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.6 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-transport-28" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.44.0 -->
  <front>
    <title abbrev="QUIC Transport Protocol">QUIC: A UDP-Based Multiplexed and Secure Transport</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-transport-28"/>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
      <organization>Fastly</organization>
      <address>
        <email>jri.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2020" month="May" day="20"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <abstract>
      <t>This document defines the core of the QUIC transport protocol.  Accompanying
documents describe QUIC's loss detection and congestion control and the use of
TLS for key negotiation.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t>Discussion of this draft takes place on the QUIC working group mailing list
(<eref target="mailto:quic@ietf.org">quic@ietf.org</eref>), which is archived at
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=quic"/></t>
      <t>Working Group information can be found at <eref target="https://github.com/quicwg"/>; source
code and issues list for this draft can be found at
<eref target="https://github.com/quicwg/base-drafts/labels/-transport"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>QUIC is a multiplexed and secure general-purpose transport protocol that
provides:</t>
      <ul spacing="normal">
        <li>Stream multiplexing</li>
        <li>Stream and connection-level flow control</li>
        <li>Low-latency connection establishment</li>
        <li>Connection migration and resilience to NAT rebinding</li>
        <li>Authenticated and encrypted header and payload</li>
      </ul>
      <t>QUIC uses UDP as a substrate to avoid requiring changes to legacy client
operating systems and middleboxes.  QUIC authenticates all of its headers and
encrypts most of the data it exchanges, including its signaling, to avoid
incurring a dependency on middleboxes.</t>
      <section anchor="document-structure" numbered="true" toc="default">
        <name>Document Structure</name>
        <t>This document describes the core QUIC protocol and is structured as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Streams are the basic service abstraction that QUIC provides.
            </t>
            <ul spacing="normal">
              <li>
                <xref target="streams" format="default"/> describes core concepts related to streams,</li>
              <li>
                <xref target="stream-states" format="default"/> provides a reference model for stream states, and</li>
              <li>
                <xref target="flow-control" format="default"/> outlines the operation of flow control.</li>
            </ul>
          </li>
          <li>
            <t>Connections are the context in which QUIC endpoints communicate.
            </t>
            <ul spacing="normal">
              <li>
                <xref target="connections" format="default"/> describes core concepts related to connections,</li>
              <li>
                <xref target="version-negotiation" format="default"/> describes version negotiation,</li>
              <li>
                <xref target="handshake" format="default"/> details the process for establishing connections,</li>
              <li>
                <xref target="address-validation" format="default"/> specifies critical denial of service mitigation
mechanisms,</li>
              <li>
                <xref target="migration" format="default"/> describes how endpoints migrate a connection to a new
network path,</li>
              <li>
                <xref target="termination" format="default"/> lists the options for terminating an open connection, and</li>
              <li>
                <xref target="error-handling" format="default"/> provides general guidance for error handling.</li>
            </ul>
          </li>
          <li>
            <t>Packets and frames are the basic unit used by QUIC to communicate.
            </t>
            <ul spacing="normal">
              <li>
                <xref target="packets-frames" format="default"/> describes concepts related to packets and frames,</li>
              <li>
                <xref target="packetization" format="default"/> defines models for the transmission, retransmission, and
acknowledgement of data, and</li>
              <li>
                <xref target="packet-size" format="default"/> specifies rules for managing the size of packets.</li>
            </ul>
          </li>
          <li>
            <t>Finally, encoding details of QUIC protocol elements are described in:
            </t>
            <ul spacing="normal">
              <li>
                <xref target="versions" format="default"/> (Versions),</li>
              <li>
                <xref target="integer-encoding" format="default"/> (Integer Encoding),</li>
              <li>
                <xref target="packet-formats" format="default"/> (Packet Headers),</li>
              <li>
                <xref target="transport-parameter-encoding" format="default"/> (Transport Parameters),</li>
              <li>
                <xref target="frame-formats" format="default"/> (Frames), and</li>
              <li>
                <xref target="error-codes" format="default"/> (Errors).</li>
            </ul>
          </li>
        </ul>
        <t>Accompanying documents describe QUIC's loss detection and congestion control
<xref target="QUIC-RECOVERY" format="default"/>, and the use of TLS for key negotiation <xref target="QUIC-TLS" format="default"/>.</t>
        <t>This document defines QUIC version 1, which conforms to the protocol invariants
in <xref target="QUIC-INVARIANTS" format="default"/>.</t>
      </section>
      <section anchor="terms-and-definitions" numbered="true" toc="default">
        <name>Terms and Definitions</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&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>Commonly used terms in the document are described below.</t>
        <dl newline="false" spacing="normal">
          <dt>QUIC:</dt>
          <dd>
  The transport protocol described by this document. QUIC is a name, not an
acronym.</dd>
          <dt>QUIC packet:</dt>
          <dd>
  A complete processable unit of QUIC that can be encapsulated in a UDP
datagram.  Multiple QUIC packets can be encapsulated in a single UDP datagram.</dd>
          <dt>Ack-eliciting Packet:</dt>
          <dd>
  A QUIC packet that contains frames other than ACK, PADDING, and
CONNECTION_CLOSE. These cause a recipient to send an acknowledgment; see
<xref target="sending-acknowledgements" format="default"/>.</dd>
          <dt>Out-of-order packet:</dt>
          <dd>
  A packet that does not increase the largest received packet number for its
packet number space (<xref target="packet-numbers" format="default"/>) by exactly one. A packet can arrive
out of order if it is delayed, if earlier packets are lost or delayed, or if
the sender intentionally skips a packet number.</dd>
          <dt>Endpoint:</dt>
          <dd>
  An entity that can participate in a QUIC connection by generating,
receiving, and processing QUIC packets. There are only two types of endpoint
in QUIC: client and server.</dd>
          <dt>Client:</dt>
          <dd>
  The endpoint initiating a QUIC connection.</dd>
          <dt>Server:</dt>
          <dd>
  The endpoint accepting incoming QUIC connections.</dd>
          <dt>Address:</dt>
          <dd>
  When used without qualification, the tuple of IP version, IP address, UDP
protocol, and UDP port number that represents one end of a network path.</dd>
          <dt>Connection ID:</dt>
          <dd>
  An opaque identifier that is used to identify a QUIC connection at an
endpoint.  Each endpoint sets a value for its peer to include in packets sent
towards the endpoint.</dd>
          <dt>Stream:</dt>
          <dd>
  A unidirectional or bidirectional channel of ordered bytes within a QUIC
connection. A QUIC connection can carry multiple simultaneous streams.</dd>
          <dt>Application:</dt>
          <dd>
  An entity that uses QUIC to send and receive data.</dd>
        </dl>
      </section>
      <section anchor="notational-conventions" numbered="true" toc="default">
        <name>Notational Conventions</name>
        <t>Packet and frame diagrams in this document use a bespoke format. The purpose of
this format is to summarize, not define, protocol elements. Prose defines the
complete semantics and details of structures.</t>
        <t>Complex fields are named and then followed by a list of fields surrounded by a
pair of matching braces. Each field in this list is separated by commas.</t>
        <t>Individual fields include length information, plus indications about fixed
value, optionality, or repetitions. Individual fields use the following
notational conventions, with all lengths in bits:</t>
        <dl newline="false" spacing="normal">
          <dt>x (A):</dt>
          <dd>
  Indicates that x is A bits long</dd>
          <dt>x (i):</dt>
          <dd>
  Indicates that x uses the variable-length encoding in <xref target="integer-encoding" format="default"/></dd>
          <dt>x (A..B):</dt>
          <dd>
  Indicates that x can be any length from A to B; A can be omitted to indicate
a minimum of zero bits and B can be omitted to indicate no set upper limit;
values in this format always end on an octet boundary</dd>
          <dt>x (?) = C:</dt>
          <dd>
  Indicates that x has a fixed value of C</dd>
          <dt>x (?) = C..D:</dt>
          <dd>
  Indicates that x has a value in the range from C to D, inclusive</dd>
          <dt>[x (E)]:</dt>
          <dd>
  Indicates that x is optional (and has length of E)</dd>
          <dt>x (E) ...:</dt>
          <dd>
  Indicates that x is repeated zero or more times (and that each instance is
length E)</dd>
        </dl>
        <t>By convention, individual fields reference a complex field by using the name of
the complex field.</t>
        <t>For example:</t>
        <figure anchor="fig-ex-format">
          <name>Example Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Example Structure {
  One-bit Field (1),
  7-bit Field with Fixed Value (7) = 61,
  Arbitrary-Length Field (..),
  Variable-Length Field (8..24),
  Field With Minimum Length (16..),
  Field With Maximum Length (..128),
  [Optional Field (64)],
  Repeated Field (8) ...,
}
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="streams" numbered="true" toc="default">
      <name>Streams</name>
      <t>Streams in QUIC provide a lightweight, ordered byte-stream abstraction to an
application. Streams can be unidirectional or bidirectional.  An alternative
view of QUIC unidirectional streams is a "message" abstraction of practically
unlimited length.</t>
      <t>Streams can be created by sending data. Other processes associated with stream
management - ending, cancelling, and managing flow control - are all designed to
impose minimal overheads. For instance, a single STREAM frame (<xref target="frame-stream" format="default"/>)
can open, carry data for, and close a stream. Streams can also be long-lived and
can last the entire duration of a connection.</t>
      <t>Streams can be created by either endpoint, can concurrently send data
interleaved with other streams, and can be cancelled. QUIC does not provide any
means of ensuring ordering between bytes on different streams.</t>
      <t>QUIC allows for an arbitrary number of streams to operate concurrently and for
an arbitrary amount of data to be sent on any stream, subject to flow control
constraints and stream limits; see <xref target="flow-control" format="default"/>.</t>
      <section anchor="stream-id" numbered="true" toc="default">
        <name>Stream Types and Identifiers</name>
        <t>Streams can be unidirectional or bidirectional.  Unidirectional streams carry
data in one direction: from the initiator of the stream to its peer.
Bidirectional streams allow for data to be sent in both directions.</t>
        <t>Streams are identified within a connection by a numeric value, referred to as
the stream ID.  A stream ID is a 62-bit integer (0 to 2^62-1) that is unique for
all streams on a connection.  Stream IDs are encoded as variable-length
integers; see <xref target="integer-encoding" format="default"/>.  A QUIC endpoint MUST NOT reuse a stream ID
within a connection.</t>
        <t>The least significant bit (0x1) of the stream ID identifies the initiator of the
stream.  Client-initiated streams have even-numbered stream IDs (with the bit
set to 0), and server-initiated streams have odd-numbered stream IDs (with the
bit set to 1).</t>
        <t>The second least significant bit (0x2) of the stream ID distinguishes between
bidirectional streams (with the bit set to 0) and unidirectional streams (with
the bit set to 1).</t>
        <t>The least significant two bits from a stream ID therefore identify a stream as
one of four types, as summarized in <xref target="stream-id-types" format="default"/>.</t>
        <table anchor="stream-id-types" align="center">
          <name>Stream ID Types</name>
          <thead>
            <tr>
              <th align="left">Bits</th>
              <th align="left">Stream Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0</td>
              <td align="left">Client-Initiated, Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x1</td>
              <td align="left">Server-Initiated, Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x2</td>
              <td align="left">Client-Initiated, Unidirectional</td>
            </tr>
            <tr>
              <td align="left">0x3</td>
              <td align="left">Server-Initiated, Unidirectional</td>
            </tr>
          </tbody>
        </table>
        <t>Within each type, streams are created with numerically increasing stream IDs.  A
stream ID that is used out of order results in all streams of that type with
lower-numbered stream IDs also being opened.</t>
        <t>The first bidirectional stream opened by the client has a stream ID of 0.</t>
      </section>
      <section anchor="sending-and-receiving-data" numbered="true" toc="default">
        <name>Sending and Receiving Data</name>
        <t>STREAM frames (<xref target="frame-stream" format="default"/>) encapsulate data sent by an application. An
endpoint uses the Stream ID and Offset fields in STREAM frames to place data in
order.</t>
        <t>Endpoints MUST be able to deliver stream data to an application as an ordered
byte-stream.  Delivering an ordered byte-stream requires that an endpoint buffer
any data that is received out of order, up to the advertised flow control limit.</t>
        <t>QUIC makes no specific allowances for delivery of stream data out of
order. However, implementations MAY choose to offer the ability to deliver data
out of order to a receiving application.</t>
        <t>An endpoint could receive data for a stream at the same stream offset multiple
times.  Data that has already been received can be discarded.  The data at a
given offset MUST NOT change if it is sent multiple times; an endpoint MAY treat
receipt of different data at the same offset within a stream as a connection
error of type PROTOCOL_VIOLATION.</t>
        <t>Streams are an ordered byte-stream abstraction with no other structure visible
to QUIC.  STREAM frame boundaries are not expected to be preserved when
data is transmitted, retransmitted after packet loss, or delivered to the
application at a receiver.</t>
        <t>An endpoint MUST NOT send data on any stream without ensuring that it is within
the flow control limits set by its peer.  Flow control is described in detail in
<xref target="flow-control" format="default"/>.</t>
      </section>
      <section anchor="stream-prioritization" numbered="true" toc="default">
        <name>Stream Prioritization</name>
        <t>Stream multiplexing can have a significant effect on application performance if
resources allocated to streams are correctly prioritized.</t>
        <t>QUIC does not provide a mechanism for exchanging prioritization information.
Instead, it relies on receiving priority information from the application that
uses QUIC.</t>
        <t>A QUIC implementation SHOULD provide ways in which an application can indicate
the relative priority of streams.  When deciding which streams to dedicate
resources to, the implementation SHOULD use the information provided by the
application.</t>
      </section>
      <section anchor="stream-operations" numbered="true" toc="default">
        <name>Required Operations on Streams</name>
        <t>There are certain operations which an application MUST be able to perform when
interacting with QUIC streams.  This document does not specify an API, but
any implementation of this version of QUIC MUST expose the ability to perform
the operations described in this section on a QUIC stream.</t>
        <t>On the sending part of a stream, application protocols need to be able to:</t>
        <ul spacing="normal">
          <li>write data, understanding when stream flow control credit
(<xref target="data-flow-control" format="default"/>) has successfully been reserved to send the written
data;</li>
          <li>end the stream (clean termination), resulting in a STREAM frame
(<xref target="frame-stream" format="default"/>) with the FIN bit set; and</li>
          <li>reset the stream (abrupt termination), resulting in a RESET_STREAM frame
(<xref target="frame-reset-stream" format="default"/>), if the stream was not already in a terminal state.</li>
        </ul>
        <t>On the receiving part of a stream, application protocols need to be able to:</t>
        <ul spacing="normal">
          <li>read data; and</li>
          <li>abort reading of the stream and request closure, possibly resulting in a
STOP_SENDING frame (<xref target="frame-stop-sending" format="default"/>).</li>
        </ul>
        <t>Applications also need to be informed of state changes on streams, including
when the peer has opened or reset a stream, when a peer aborts reading on a
stream, when new data is available, and when data can or cannot be written to
the stream due to flow control.</t>
      </section>
    </section>
    <section anchor="stream-states" numbered="true" toc="default">
      <name>Stream States</name>
      <t>This section describes streams in terms of their send or receive components.
Two state machines are described: one for the streams on which an endpoint
transmits data (<xref target="stream-send-states" format="default"/>), and another for streams on which an
endpoint receives data (<xref target="stream-recv-states" format="default"/>).</t>
      <t>Unidirectional streams use the applicable state machine directly.  Bidirectional
streams use both state machines.  For the most part, the use of these state
machines is the same whether the stream is unidirectional or bidirectional.  The
conditions for opening a stream are slightly more complex for a bidirectional
stream because the opening of either send or receive sides causes the stream
to open in both directions.</t>
      <t>An endpoint MUST open streams of the same type in increasing order of stream ID.</t>
      <dl newline="false" spacing="normal">
        <dt>Note:</dt>
        <dd>
  These states are largely informative.  This document uses stream states to
describe rules for when and how different types of frames can be sent and the
reactions that are expected when different types of frames are received.
Though these state machines are intended to be useful in implementing QUIC,
these states aren't intended to constrain implementations.  An implementation
can define a different state machine as long as its behavior is consistent
with an implementation that implements these states.</dd>
      </dl>
      <section anchor="stream-send-states" numbered="true" toc="default">
        <name>Sending Stream States</name>
        <t><xref target="fig-stream-send-states" format="default"/> shows the states for the part of a stream that sends
data to a peer.</t>
        <figure anchor="fig-stream-send-states">
          <name>States for Sending Parts of Streams</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
       o
       | Create Stream (Sending)
       | Peer Creates Bidirectional Stream
       v
   +-------+
   | Ready | Send RESET_STREAM
   |       |-----------------------.
   +-------+                       |
       |                           |
       | Send STREAM /             |
       |      STREAM_DATA_BLOCKED  |
       |                           |
       | Peer Creates              |
       |      Bidirectional Stream |
       v                           |
   +-------+                       |
   | Send  | Send RESET_STREAM     |
   |       |---------------------->|
   +-------+                       |
       |                           |
       | Send STREAM + FIN         |
       v                           v
   +-------+                   +-------+
   | Data  | Send RESET_STREAM | Reset |
   | Sent  |------------------>| Sent  |
   +-------+                   +-------+
       |                           |
       | Recv All ACKs             | Recv ACK
       v                           v
   +-------+                   +-------+
   | Data  |                   | Reset |
   | Recvd |                   | Recvd |
   +-------+                   +-------+
]]></artwork>
        </figure>
        <t>The sending part of stream that the endpoint initiates (types 0
and 2 for clients, 1 and 3 for servers) is opened by the application.  The
"Ready" state represents a newly created stream that is able to accept data from
the application.  Stream data might be buffered in this state in preparation for
sending.</t>
        <t>Sending the first STREAM or STREAM_DATA_BLOCKED frame causes a sending part of a
stream to enter the "Send" state.  An implementation might choose to defer
allocating a stream ID to a stream until it sends the first STREAM frame and
enters this state, which can allow for better stream prioritization.</t>
        <t>The sending part of a bidirectional stream initiated by a peer (type 0 for a
server, type 1 for a client) starts in the "Ready" state when the receiving part
is created.</t>
        <t>In the "Send" state, an endpoint transmits - and retransmits as necessary -
stream data in STREAM frames.  The endpoint respects the flow control limits set
by its peer, and continues to accept and process MAX_STREAM_DATA frames.  An
endpoint in the "Send" state generates STREAM_DATA_BLOCKED frames if it is
blocked from sending by stream or connection flow control limits
<xref target="data-flow-control" format="default"/>.</t>
        <t>After the application indicates that all stream data has been sent and a STREAM
frame containing the FIN bit is sent, the sending part of the stream enters the
"Data Sent" state.  From this state, the endpoint only retransmits stream data
as necessary.  The endpoint does not need to check flow control limits or send
STREAM_DATA_BLOCKED frames for a stream in this state.  MAX_STREAM_DATA frames
might be received until the peer receives the final stream offset. The endpoint
can safely ignore any MAX_STREAM_DATA frames it receives from its peer for a
stream in this state.</t>
        <t>Once all stream data has been successfully acknowledged, the sending part of the
stream enters the "Data Recvd" state, which is a terminal state.</t>
        <t>From any of the "Ready", "Send", or "Data Sent" states, an application can
signal that it wishes to abandon transmission of stream data. Alternatively, an
endpoint might receive a STOP_SENDING frame from its peer.  In either case, the
endpoint sends a RESET_STREAM frame, which causes the stream to enter the "Reset
Sent" state.</t>
        <t>An endpoint MAY send a RESET_STREAM as the first frame that mentions a stream;
this causes the sending part of that stream to open and then immediately
transition to the "Reset Sent" state.</t>
        <t>Once a packet containing a RESET_STREAM has been acknowledged, the sending part
of the stream enters the "Reset Recvd" state, which is a terminal state.</t>
      </section>
      <section anchor="stream-recv-states" numbered="true" toc="default">
        <name>Receiving Stream States</name>
        <t><xref target="fig-stream-recv-states" format="default"/> shows the states for the part of a stream that
receives data from a peer.  The states for a receiving part of a stream mirror
only some of the states of the sending part of the stream at the peer.  The
receiving part of a stream does not track states on the sending part that cannot
be observed, such as the "Ready" state.  Instead, the receiving part of a stream
tracks the delivery of data to the application, some of which cannot be observed
by the sender.</t>
        <figure anchor="fig-stream-recv-states">
          <name>States for Receiving Parts of Streams</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
       o
       | Recv STREAM / STREAM_DATA_BLOCKED / RESET_STREAM
       | Create Bidirectional Stream (Sending)
       | Recv MAX_STREAM_DATA / STOP_SENDING (Bidirectional)
       | Create Higher-Numbered Stream
       v
   +-------+
   | Recv  | Recv RESET_STREAM
   |       |-----------------------.
   +-------+                       |
       |                           |
       | Recv STREAM + FIN         |
       v                           |
   +-------+                       |
   | Size  | Recv RESET_STREAM     |
   | Known |---------------------->|
   +-------+                       |
       |                           |
       | Recv All Data             |
       v                           v
   +-------+ Recv RESET_STREAM +-------+
   | Data  |--- (optional) --->| Reset |
   | Recvd |  Recv All Data    | Recvd |
   +-------+<-- (optional) ----+-------+
       |                           |
       | App Read All Data         | App Read RST
       v                           v
   +-------+                   +-------+
   | Data  |                   | Reset |
   | Read  |                   | Read  |
   +-------+                   +-------+
]]></artwork>
        </figure>
        <t>The receiving part of a stream initiated by a peer (types 1 and 3 for a client,
or 0 and 2 for a server) is created when the first STREAM, STREAM_DATA_BLOCKED,
or RESET_STREAM is received for that stream.  For bidirectional streams
initiated by a peer, receipt of a MAX_STREAM_DATA or STOP_SENDING frame for the
sending part of the stream also creates the receiving part.  The initial state
for the receiving part of stream is "Recv".</t>
        <t>The receiving part of a stream enters the "Recv" state when the sending part of
a bidirectional stream initiated by the endpoint (type 0 for a client, type 1
for a server) enters the "Ready" state.</t>
        <t>An endpoint opens a bidirectional stream when a MAX_STREAM_DATA or STOP_SENDING
frame is received from the peer for that stream.  Receiving a MAX_STREAM_DATA
frame for an unopened stream indicates that the remote peer has opened the
stream and is providing flow control credit.  Receiving a STOP_SENDING frame for
an unopened stream indicates that the remote peer no longer wishes to receive
data on this stream.  Either frame might arrive before a STREAM or
STREAM_DATA_BLOCKED frame if packets are lost or reordered.</t>
        <t>Before a stream is created, all streams of the same type with lower-numbered
stream IDs MUST be created.  This ensures that the creation order for streams is
consistent on both endpoints.</t>
        <t>In the "Recv" state, the endpoint receives STREAM and STREAM_DATA_BLOCKED
frames.  Incoming data is buffered and can be reassembled into the correct order
for delivery to the application.  As data is consumed by the application and
buffer space becomes available, the endpoint sends MAX_STREAM_DATA frames to
allow the peer to send more data.</t>
        <t>When a STREAM frame with a FIN bit is received, the final size of the stream is
known; see <xref target="final-size" format="default"/>.  The receiving part of the stream then enters the
"Size Known" state.  In this state, the endpoint no longer needs to send
MAX_STREAM_DATA frames, it only receives any retransmissions of stream data.</t>
        <t>Once all data for the stream has been received, the receiving part enters the
"Data Recvd" state.  This might happen as a result of receiving the same STREAM
frame that causes the transition to "Size Known".  After all data has been
received, any STREAM or STREAM_DATA_BLOCKED frames for the stream can be
discarded.</t>
        <t>The "Data Recvd" state persists until stream data has been delivered to the
application.  Once stream data has been delivered, the stream enters the "Data
Read" state, which is a terminal state.</t>
        <t>Receiving a RESET_STREAM frame in the "Recv" or "Size Known" states causes the
stream to enter the "Reset Recvd" state.  This might cause the delivery of
stream data to the application to be interrupted.</t>
        <t>It is possible that all stream data is received when a RESET_STREAM is received
(that is, from the "Data Recvd" state).  Similarly, it is possible for remaining
stream data to arrive after receiving a RESET_STREAM frame (the "Reset Recvd"
state).  An implementation is free to manage this situation as it chooses.</t>
        <t>Sending RESET_STREAM means that an endpoint cannot guarantee delivery of stream
data; however there is no requirement that stream data not be delivered if a
RESET_STREAM is received.  An implementation MAY interrupt delivery of stream
data, discard any data that was not consumed, and signal the receipt of the
RESET_STREAM.  A RESET_STREAM signal might be suppressed or withheld if stream
data is completely received and is buffered to be read by the application.  If
the RESET_STREAM is suppressed, the receiving part of the stream remains in
"Data Recvd".</t>
        <t>Once the application receives the signal indicating that the stream
was reset, the receiving part of the stream transitions to the "Reset Read"
state, which is a terminal state.</t>
      </section>
      <section anchor="permitted-frame-types" numbered="true" toc="default">
        <name>Permitted Frame Types</name>
        <t>The sender of a stream sends just three frame types that affect the state of a
stream at either sender or receiver: STREAM (<xref target="frame-stream" format="default"/>),
STREAM_DATA_BLOCKED (<xref target="frame-stream-data-blocked" format="default"/>), and RESET_STREAM
(<xref target="frame-reset-stream" format="default"/>).</t>
        <t>A sender MUST NOT send any of these frames from a terminal state ("Data Recvd"
or "Reset Recvd").  A sender MUST NOT send STREAM or STREAM_DATA_BLOCKED after
sending a RESET_STREAM; that is, in the terminal states and in the "Reset Sent"
state.  A receiver could receive any of these three frames in any state, due to
the possibility of delayed delivery of packets carrying them.</t>
        <t>The receiver of a stream sends MAX_STREAM_DATA (<xref target="frame-max-stream-data" format="default"/>) and
STOP_SENDING frames (<xref target="frame-stop-sending" format="default"/>).</t>
        <t>The receiver only sends MAX_STREAM_DATA in the "Recv" state.  A receiver can
send STOP_SENDING in any state where it has not received a RESET_STREAM frame;
that is states other than "Reset Recvd" or "Reset Read".  However there is
little value in sending a STOP_SENDING frame in the "Data Recvd" state, since
all stream data has been received.  A sender could receive either of these two
frames in any state as a result of delayed delivery of packets.</t>
      </section>
      <section anchor="stream-bidi-states" numbered="true" toc="default">
        <name>Bidirectional Stream States</name>
        <t>A bidirectional stream is composed of sending and receiving parts.
Implementations may represent states of the bidirectional stream as composites
of sending and receiving stream states.  The simplest model presents the stream
as "open" when either sending or receiving parts are in a non-terminal state and
"closed" when both sending and receiving streams are in terminal states.</t>
        <t><xref target="stream-bidi-mapping" format="default"/> shows a more complex mapping of bidirectional stream
states that loosely correspond to the stream states in HTTP/2
<xref target="HTTP2" format="default"/>.  This shows that multiple states on sending or receiving
parts of streams are mapped to the same composite state.  Note that this is just
one possibility for such a mapping; this mapping requires that data is
acknowledged before the transition to a "closed" or "half-closed" state.</t>
        <table anchor="stream-bidi-mapping" align="center">
          <name>Possible Mapping of Stream States to HTTP/2</name>
          <thead>
            <tr>
              <th align="left">Sending Part</th>
              <th align="left">Receiving Part</th>
              <th align="left">Composite State</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">No Stream/Ready</td>
              <td align="left">No Stream/Recv *1</td>
              <td align="left">idle</td>
            </tr>
            <tr>
              <td align="left">Ready/Send/Data Sent</td>
              <td align="left">Recv/Size Known</td>
              <td align="left">open</td>
            </tr>
            <tr>
              <td align="left">Ready/Send/Data Sent</td>
              <td align="left">Data Recvd/Data Read</td>
              <td align="left">half-closed (remote)</td>
            </tr>
            <tr>
              <td align="left">Ready/Send/Data Sent</td>
              <td align="left">Reset Recvd/Reset Read</td>
              <td align="left">half-closed (remote)</td>
            </tr>
            <tr>
              <td align="left">Data Recvd</td>
              <td align="left">Recv/Size Known</td>
              <td align="left">half-closed (local)</td>
            </tr>
            <tr>
              <td align="left">Reset Sent/Reset Recvd</td>
              <td align="left">Recv/Size Known</td>
              <td align="left">half-closed (local)</td>
            </tr>
            <tr>
              <td align="left">Reset Sent/Reset Recvd</td>
              <td align="left">Data Recvd/Data Read</td>
              <td align="left">closed</td>
            </tr>
            <tr>
              <td align="left">Reset Sent/Reset Recvd</td>
              <td align="left">Reset Recvd/Reset Read</td>
              <td align="left">closed</td>
            </tr>
            <tr>
              <td align="left">Data Recvd</td>
              <td align="left">Data Recvd/Data Read</td>
              <td align="left">closed</td>
            </tr>
            <tr>
              <td align="left">Data Recvd</td>
              <td align="left">Reset Recvd/Reset Read</td>
              <td align="left">closed</td>
            </tr>
          </tbody>
        </table>
        <dl newline="false" spacing="normal">
          <dt>Note (*1):</dt>
          <dd>
  A stream is considered "idle" if it has not yet been created, or if the
receiving part of the stream is in the "Recv" state without yet having
received any frames.</dd>
        </dl>
      </section>
      <section anchor="solicited-state-transitions" numbered="true" toc="default">
        <name>Solicited State Transitions</name>
        <t>If an application is no longer interested in the data it is receiving on a
stream, it can abort reading the stream and specify an application error code.</t>
        <t>If the stream is in the "Recv" or "Size Known" states, the transport SHOULD
signal this by sending a STOP_SENDING frame to prompt closure of the stream in
the opposite direction.  This typically indicates that the receiving application
is no longer reading data it receives from the stream, but it is not a guarantee
that incoming data will be ignored.</t>
        <t>STREAM frames received after sending STOP_SENDING are still counted toward
connection and stream flow control, even though these frames can be discarded
upon receipt.</t>
        <t>A STOP_SENDING frame requests that the receiving endpoint send a RESET_STREAM
frame.  An endpoint that receives a STOP_SENDING frame MUST send a RESET_STREAM
frame if the stream is in the Ready or Send state.  If the stream is in the Data
Sent state and any outstanding data is declared lost, an endpoint SHOULD send a
RESET_STREAM frame in lieu of a retransmission.</t>
        <t>An endpoint SHOULD copy the error code from the STOP_SENDING frame to the
RESET_STREAM frame it sends, but MAY use any application error code.  The
endpoint that sends a STOP_SENDING frame MAY ignore the error code carried in
any RESET_STREAM frame it receives.</t>
        <t>If the STOP_SENDING frame is received on a stream that is already in the
"Data Sent" state, an endpoint that wishes to cease retransmission of
previously-sent STREAM frames on that stream MUST first send a RESET_STREAM
frame.</t>
        <t>STOP_SENDING SHOULD only be sent for a stream that has not been reset by the
peer. STOP_SENDING is most useful for streams in the "Recv" or "Size Known"
states.</t>
        <t>An endpoint is expected to send another STOP_SENDING frame if a packet
containing a previous STOP_SENDING is lost.  However, once either all stream
data or a RESET_STREAM frame has been received for the stream - that is, the
stream is in any state other than "Recv" or "Size Known" - sending a
STOP_SENDING frame is unnecessary.</t>
        <t>An endpoint that wishes to terminate both directions of a bidirectional stream
can terminate one direction by sending a RESET_STREAM, and it can encourage
prompt termination in the opposite direction by sending a STOP_SENDING frame.</t>
      </section>
    </section>
    <section anchor="flow-control" numbered="true" toc="default">
      <name>Flow Control</name>
      <t>It is necessary to limit the amount of data that a receiver could buffer, to
prevent a fast sender from overwhelming a slow receiver, or to prevent a
malicious sender from consuming a large amount of memory at a receiver.  To
enable a receiver to limit memory commitment to a connection and to apply back
pressure on the sender, streams are flow controlled both individually and as an
aggregate.  A QUIC receiver controls the maximum amount of data the sender can
send on a stream at any time, as described in <xref target="data-flow-control" format="default"/> and
<xref target="fc-credit" format="default"/></t>
      <t>Similarly, to limit concurrency within a connection, a QUIC endpoint controls
the maximum cumulative number of streams that its peer can initiate, as
described in <xref target="controlling-concurrency" format="default"/>.</t>
      <t>Data sent in CRYPTO frames is not flow controlled in the same way as stream
data.  QUIC relies on the cryptographic protocol implementation to avoid
excessive buffering of data; see <xref target="QUIC-TLS" format="default"/>.  The implementation SHOULD
provide an interface to QUIC to tell it about its buffering limits so that there
is not excessive buffering at multiple layers.</t>
      <section anchor="data-flow-control" numbered="true" toc="default">
        <name>Data Flow Control</name>
        <t>QUIC employs a credit-based flow-control scheme similar to that in HTTP/2
<xref target="HTTP2" format="default"/>, where a receiver advertises the number of bytes it is prepared to
receive on a given stream and for the entire connection.  This leads to two
levels of data flow control in QUIC:</t>
        <ul spacing="normal">
          <li>Stream flow control, which prevents a single stream from consuming the entire
receive buffer for a connection by limiting the amount of data that can be
sent on any stream.</li>
          <li>Connection flow control, which prevents senders from exceeding a receiver's
buffer capacity for the connection, by limiting the total bytes of stream data
sent in STREAM frames on all streams.</li>
        </ul>
        <t>A receiver sets initial credits for all streams by sending transport parameters
during the handshake (<xref target="transport-parameters" format="default"/>).  A receiver sends
MAX_STREAM_DATA (<xref target="frame-max-stream-data" format="default"/>) or MAX_DATA (<xref target="frame-max-data" format="default"/>)
frames to the sender to advertise additional credit.</t>
        <t>A receiver advertises credit for a stream by sending a MAX_STREAM_DATA frame
with the Stream ID field set appropriately.  A MAX_STREAM_DATA frame indicates
the maximum absolute byte offset of a stream.  A receiver could use the current
offset of data consumed to determine the flow control offset to be advertised.
A receiver MAY send MAX_STREAM_DATA frames in multiple packets in order to make
sure that the sender receives an update before running out of flow control
credit, even if one of the packets is lost.</t>
        <t>A receiver advertises credit for a connection by sending a MAX_DATA frame, which
indicates the maximum of the sum of the absolute byte offsets of all streams.  A
receiver maintains a cumulative sum of bytes received on all streams, which is
used to check for flow control violations. A receiver might use a sum of bytes
consumed on all streams to determine the maximum data limit to be advertised.</t>
        <t>A receiver can advertise a larger offset by sending MAX_STREAM_DATA or MAX_DATA
frames.  Once a receiver advertises an offset, it MAY advertise a smaller
offset, but this has no effect.</t>
        <t>A receiver MUST close the connection with a FLOW_CONTROL_ERROR error
(<xref target="error-handling" format="default"/>) if the sender violates the advertised connection or stream
data limits.</t>
        <t>A sender MUST ignore any MAX_STREAM_DATA or MAX_DATA frames that do not increase
flow control limits.</t>
        <t>If a sender runs out of flow control credit, it will be unable to send new data
and is considered blocked.  A sender SHOULD send a STREAM_DATA_BLOCKED or
DATA_BLOCKED frame to indicate it has data to write but is blocked by flow
control limits.  If a sender is blocked for a period longer than the idle
timeout (<xref target="idle-timeout" format="default"/>), the connection might be closed even when data is
available for transmission.  To keep the connection from closing, a sender that
is flow control limited SHOULD periodically send a STREAM_DATA_BLOCKED or
DATA_BLOCKED frame when it has no ack-eliciting packets in flight.</t>
      </section>
      <section anchor="fc-credit" numbered="true" toc="default">
        <name>Flow Credit Increments</name>
        <t>Implementations decide when and how much credit to advertise in MAX_STREAM_DATA
and MAX_DATA frames, but this section offers a few considerations.</t>
        <t>To avoid blocking a sender, a receiver can send a MAX_STREAM_DATA or MAX_DATA
frame multiple times within a round trip or send it early enough to allow for
recovery from loss of the frame.</t>
        <t>Control frames contribute to connection overhead. Therefore, frequently sending
MAX_STREAM_DATA and MAX_DATA frames with small changes is undesirable.  On the
other hand, if updates are less frequent, larger increments to limits are
necessary to avoid blocking a sender, requiring larger resource commitments at
the receiver.  There is a trade-off between resource commitment and overhead
when determining how large a limit is advertised.</t>
        <t>A receiver can use an autotuning mechanism to tune the frequency and amount of
advertised additional credit based on a round-trip time estimate and the rate at
which the receiving application consumes data, similar to common TCP
implementations.  As an optimization, an endpoint could send frames related to
flow control only when there are other frames to send or when a peer is blocked,
ensuring that flow control does not cause extra packets to be sent.</t>
        <t>A blocked sender is not required to send STREAM_DATA_BLOCKED or DATA_BLOCKED
frames. Therefore, a receiver MUST NOT wait for a STREAM_DATA_BLOCKED or
DATA_BLOCKED frame before sending a MAX_STREAM_DATA or MAX_DATA frame; doing so
could result in the sender being blocked for the rest of the connection. Even if
the sender sends these frames, waiting for them will result in the sender being
blocked for at least an entire round trip.</t>
        <t>When a sender receives credit after being blocked, it might be able to send a
large amount of data in response, resulting in short-term congestion; see
Section 6.9 in <xref target="QUIC-RECOVERY" format="default"/> for a discussion of how a sender can avoid this
congestion.</t>
      </section>
      <section anchor="stream-cancellation" numbered="true" toc="default">
        <name>Handling Stream Cancellation</name>
        <t>Endpoints need to eventually agree on the amount of flow control credit that has
been consumed, to avoid either exceeding flow control limits or deadlocking.</t>
        <t>On receipt of a RESET_STREAM frame, an endpoint will tear down state for the
matching stream and ignore further data arriving on that stream.  Without the
offset included in RESET_STREAM, the two endpoints could disagree on
the number of bytes that count towards connection flow control.</t>
        <t>To remedy this issue, a RESET_STREAM frame (<xref target="frame-reset-stream" format="default"/>) includes the
final size of data sent on the stream.  On receiving a RESET_STREAM frame, a
receiver definitively knows how many bytes were sent on that stream before the
RESET_STREAM frame, and the receiver MUST use the final size of the stream to
account for all bytes sent on the stream in its connection level flow
controller.</t>
        <t>RESET_STREAM terminates one direction of a stream abruptly.  For a bidirectional
stream, RESET_STREAM has no effect on data flow in the opposite direction.  Both
endpoints MUST maintain flow control state for the stream in the unterminated
direction until that direction enters a terminal state, or until one of the
endpoints sends CONNECTION_CLOSE.</t>
      </section>
      <section anchor="final-size" numbered="true" toc="default">
        <name>Stream Final Size</name>
        <t>The final size is the amount of flow control credit that is consumed by a
stream.  Assuming that every contiguous byte on the stream was sent once, the
final size is the number of bytes sent.  More generally, this is one higher
than the offset of the byte with the largest offset sent on the stream, or zero
if no bytes were sent.</t>
        <t>For a stream that is reset, the final size is carried explicitly in a
RESET_STREAM frame.  Otherwise, the final size is the offset plus the length of
a STREAM frame marked with a FIN flag, or 0 in the case of incoming
unidirectional streams.</t>
        <t>An endpoint will know the final size for a stream when the receiving part of the
stream enters the "Size Known" or "Reset Recvd" state (<xref target="stream-states" format="default"/>).</t>
        <t>An endpoint MUST NOT send data on a stream at or beyond the final size.</t>
        <t>Once a final size for a stream is known, it cannot change.  If a RESET_STREAM or
STREAM frame is received indicating a change in the final size for the stream,
an endpoint SHOULD respond with a FINAL_SIZE_ERROR error; see
<xref target="error-handling" format="default"/>.  A receiver SHOULD treat receipt of data at or beyond the
final size as a FINAL_SIZE_ERROR error, even after a stream is closed.
Generating these errors is not mandatory, but only because requiring that an
endpoint generate these errors also means that the endpoint needs to maintain
the final size state for closed streams, which could mean a significant state
commitment.</t>
      </section>
      <section anchor="controlling-concurrency" numbered="true" toc="default">
        <name>Controlling Concurrency</name>
        <t>An endpoint limits the cumulative number of incoming streams a peer can open.
Only streams with a stream ID less than (max_stream * 4 +
initial_stream_id_for_type) can be opened; see <xref target="long-packet-types" format="default"/>.  Initial
limits are set in the transport parameters (see
<xref target="transport-parameter-definitions" format="default"/>) and subsequently limits are advertised
using MAX_STREAMS frames (<xref target="frame-max-streams" format="default"/>). Separate limits apply to
unidirectional and bidirectional streams.</t>
        <t>If a max_streams transport parameter or MAX_STREAMS frame is received with a
value greater than 2^60, this would allow a maximum stream ID that cannot be
expressed as a variable-length integer; see <xref target="integer-encoding" format="default"/>.
If either is received, the connection MUST be closed immediately with a
connection error of type STREAM_LIMIT_ERROR; see <xref target="immediate-close" format="default"/>.</t>
        <t>Endpoints MUST NOT exceed the limit set by their peer.  An endpoint that
receives a frame with a stream ID exceeding the limit it has sent MUST treat
this as a connection error of type STREAM_LIMIT_ERROR (<xref target="error-handling" format="default"/>).</t>
        <t>Once a receiver advertises a stream limit using the MAX_STREAMS frame,
advertising a smaller limit has no effect.  A receiver MUST ignore any
MAX_STREAMS frame that does not increase the stream limit.</t>
        <t>As with stream and connection flow control, this document leaves when and how
many streams to advertise to a peer via MAX_STREAMS to implementations.
Implementations might choose to increase limits as streams close to keep the
number of streams available to peers roughly consistent.</t>
        <t>An endpoint that is unable to open a new stream due to the peer's limits SHOULD
send a STREAMS_BLOCKED frame (<xref target="frame-streams-blocked" format="default"/>).  This signal is
considered useful for debugging. An endpoint MUST NOT wait to receive this
signal before advertising additional credit, since doing so will mean that the
peer will be blocked for at least an entire round trip, and potentially for
longer if the peer chooses to not send STREAMS_BLOCKED frames.</t>
      </section>
    </section>
    <section anchor="connections" numbered="true" toc="default">
      <name>Connections</name>
      <t>QUIC's connection establishment combines version negotiation with the
cryptographic and transport handshakes to reduce connection establishment
latency, as described in <xref target="handshake" format="default"/>.  Once established, a connection
may migrate to a different IP or port at either endpoint as
described in <xref target="migration" format="default"/>.  Finally, a connection may be terminated by either
endpoint, as described in <xref target="termination" format="default"/>.</t>
      <section anchor="connection-id" numbered="true" toc="default">
        <name>Connection ID</name>
        <t>Each connection possesses a set of connection identifiers, or connection IDs,
each of which can identify the connection.  Connection IDs are independently
selected by endpoints; each endpoint selects the connection IDs that its peer
uses.</t>
        <t>The primary function of a connection ID is to ensure that changes in addressing
at lower protocol layers (UDP, IP) don't cause packets for a QUIC
connection to be delivered to the wrong endpoint.  Each endpoint selects
connection IDs using an implementation-specific (and perhaps
deployment-specific) method which will allow packets with that connection ID to
be routed back to the endpoint and identified by the endpoint upon receipt.</t>
        <t>Connection IDs MUST NOT contain any information that can be used by an external
observer (that is, one that does not cooperate with the issuer) to correlate
them with other connection IDs for the same connection.  As a trivial example,
this means the same connection ID MUST NOT be issued more than once on the same
connection.</t>
        <t>Packets with long headers include Source Connection ID and Destination
Connection ID fields.  These fields are used to set the connection IDs for new
connections; see <xref target="negotiating-connection-ids" format="default"/> for details.</t>
        <t>Packets with short headers (<xref target="short-header" format="default"/>) only include the Destination
Connection ID and omit the explicit length.  The length of the Destination
Connection ID field is expected to be known to endpoints.  Endpoints using a
load balancer that routes based on connection ID could agree with the load
balancer on a fixed length for connection IDs, or agree on an encoding scheme.
A fixed portion could encode an explicit length, which allows the entire
connection ID to vary in length and still be used by the load balancer.</t>
        <t>A Version Negotiation (<xref target="packet-version" format="default"/>) packet echoes the connection IDs
selected by the client, both to ensure correct routing toward the client and to
allow the client to validate that the packet is in response to an Initial
packet.</t>
        <t>A zero-length connection ID can be used when a connection ID is not needed to
route to the correct endpoint. However, multiplexing connections on the same
local IP address and port while using zero-length connection IDs will cause
failures in the presence of peer connection migration, NAT rebinding, and client
port reuse; and therefore MUST NOT be done unless an endpoint is certain that
those protocol features are not in use.</t>
        <t>When an endpoint uses a non-zero-length connection ID, it needs to ensure that
the peer has a supply of connection IDs from which to choose for packets sent to
the endpoint.  These connection IDs are supplied by the endpoint using the
NEW_CONNECTION_ID frame (<xref target="frame-new-connection-id" format="default"/>).</t>
        <section anchor="issue-cid" numbered="true" toc="default">
          <name>Issuing Connection IDs</name>
          <t>Each Connection ID has an associated sequence number to assist in deduplicating
messages.  The initial connection ID issued by an endpoint is sent in the Source
Connection ID field of the long packet header (<xref target="long-header" format="default"/>) during the
handshake.  The sequence number of the initial connection ID is 0.  If the
preferred_address transport parameter is sent, the sequence number of the
supplied connection ID is 1.</t>
          <t>Additional connection IDs are communicated to the peer using NEW_CONNECTION_ID
frames (<xref target="frame-new-connection-id" format="default"/>).  The sequence number on each newly-issued
connection ID MUST increase by 1.  The connection ID randomly selected by the
client in the Initial packet and any connection ID provided by a Retry packet
are not assigned sequence numbers unless a server opts to retain them as its
initial connection ID.</t>
          <t>When an endpoint issues a connection ID, it MUST accept packets that carry this
connection ID for the duration of the connection or until its peer invalidates
the connection ID via a RETIRE_CONNECTION_ID frame
(<xref target="frame-retire-connection-id" format="default"/>).  Connection IDs that are issued and not
retired are considered active; any active connection ID is valid for use with
the current connection at any time, in any packet type.  This includes the
connection ID issued by the server via the preferred_address transport
parameter.</t>
          <t>An endpoint SHOULD ensure that its peer has a sufficient number of available and
unused connection IDs.  Endpoints advertise the number of active connection IDs
they are willing to maintain using the active_connection_id_limit transport
parameter.  An endpoint MUST NOT provide more connection IDs than the peer's
limit.  An endpoint MAY send connection IDs that temporarily exceed a peer's
limit if the NEW_CONNECTION_ID frame also requires the retirement of any excess,
by including a sufficiently large value in the Retire Prior To field.</t>
          <t>A NEW_CONNECTION_ID frame might cause an endpoint to add some active connection
IDs and retire others based on the value of the Retire Prior To field.  After
processing a NEW_CONNECTION_ID frame and adding and retiring active connection
IDs, if the number of active connection IDs exceeds the value advertised in its
active_connection_id_limit transport parameter, an endpoint MUST close the
connection with an error of type CONNECTION_ID_LIMIT_ERROR.</t>
          <t>An endpoint SHOULD supply a new connection ID when the peer retires a connection
ID.  If an endpoint provided fewer connection IDs than the peer's
active_connection_id_limit, it MAY supply a new connection ID when it receives a
packet with a previously unused connection ID.  An endpoint MAY limit the
frequency or the total number of connection IDs issued for each connection to
avoid the risk of running out of connection IDs; see <xref target="reset-token" format="default"/>.  An
endpoint MAY also limit the issuance of connection IDs to reduce the amount of
per-path state it maintains, such as path validation status, as its peer
might interact with it over as many paths as there are issued connection
IDs.</t>
          <t>An endpoint that initiates migration and requires non-zero-length connection IDs
SHOULD ensure that the pool of connection IDs available to its peer allows the
peer to use a new connection ID on migration, as the peer will close the
connection if the pool is exhausted.</t>
        </section>
        <section anchor="retire-cid" numbered="true" toc="default">
          <name>Consuming and Retiring Connection IDs</name>
          <t>An endpoint can change the connection ID it uses for a peer to another available
one at any time during the connection.  An endpoint consumes connection IDs in
response to a migrating peer; see <xref target="migration-linkability" format="default"/> for more.</t>
          <t>An endpoint maintains a set of connection IDs received from its peer, any of
which it can use when sending packets.  When the endpoint wishes to remove a
connection ID from use, it sends a RETIRE_CONNECTION_ID frame to its peer.
Sending a RETIRE_CONNECTION_ID frame indicates that the connection ID will not
be used again and requests that the peer replace it with a new connection ID
using a NEW_CONNECTION_ID frame.</t>
          <t>As discussed in <xref target="migration-linkability" format="default"/>, endpoints limit the use of a
connection ID to packets sent from a single local address to a single
destination address.  Endpoints SHOULD retire connection IDs when they are no
longer actively using either the local or destination address for which the
connection ID was used.</t>
          <t>An endpoint might need to stop accepting previously issued connection IDs in
certain circumstances.  Such an endpoint can cause its peer to retire connection
IDs by sending a NEW_CONNECTION_ID frame with an increased Retire Prior To
field.  The endpoint SHOULD continue to accept the previously issued connection
IDs until they are retired by the peer.  If the endpoint can no longer process
the indicated connection IDs, it MAY close the connection.</t>
          <t>Upon receipt of an increased Retire Prior To field, the peer MUST stop using
the corresponding connection IDs and retire them with RETIRE_CONNECTION_ID
frames before adding the newly provided connection ID to the set of active
connection IDs. This ordering allows an endpoint to replace all active
connection IDs without the possibility of a peer having no available connection
IDs and without exceeding the limit the peer sets in the
active_connection_id_limit transport parameter; see
<xref target="transport-parameter-definitions" format="default"/>. Failure to cease using the connection IDs
when requested can result in connection failures, as the issuing endpoint might
be unable to continue using the connection IDs with the active connection.</t>
          <t>An endpoint SHOULD limit the number of connection IDs it has retired locally and
have not yet been acknowledged. An endpoint SHOULD allow for sending and
tracking a number of RETIRE_CONNECTION_ID frames of at least twice the
active_connection_id limit. An endpoint MUST NOT forget a connection ID without
retiring it, though it MAY choose to treat having connection IDs in need of
retirement that exceed this limit as a connection error of type
CONNECTION_ID_LIMIT_ERROR.</t>
          <t>Endpoints SHOULD NOT issue updates of the Retire Prior To field before receiving
RETIRE_CONNECTION_ID frames that retire all connection IDs indicated by the
previous Retire Prior To value.</t>
        </section>
      </section>
      <section anchor="packet-handling" numbered="true" toc="default">
        <name>Matching Packets to Connections</name>
        <t>Incoming packets are classified on receipt.  Packets can either be associated
with an existing connection, or - for servers - potentially create a new
connection.</t>
        <t>Endpoints try to associate a packet with an existing connection. If the packet
has a non-zero-length Destination Connection ID corresponding to an existing
connection, QUIC processes that packet accordingly. Note that more than one
connection ID can be associated with a connection; see <xref target="connection-id" format="default"/>.</t>
        <t>If the Destination Connection ID is zero length and the addressing information
in the packet matches the addressing information the endpoint uses to identify a
connection with a zero-length connection ID, QUIC processes the packet as part
of that connection.  An endpoint can use just destination IP and port or both
source and destination addresses for identification, though this makes
connections fragile as described in <xref target="connection-id" format="default"/>.</t>
        <t>Endpoints can send a Stateless Reset (<xref target="stateless-reset" format="default"/>) for any packets that
cannot be attributed to an existing connection. A stateless reset allows a peer
to more quickly identify when a connection becomes unusable.</t>
        <t>Packets that are matched to an existing connection are discarded if the packets
are inconsistent with the state of that connection.  For example, packets are
discarded if they indicate a different protocol version than that of the
connection, or if the removal of packet protection is unsuccessful once the
expected keys are available.</t>
        <t>Invalid packets without packet protection, such as Initial, Retry, or Version
Negotiation, MAY be discarded.  An endpoint MUST generate a connection error if
it commits changes to state before discovering an error.</t>
        <section anchor="client-pkt-handling" numbered="true" toc="default">
          <name>Client Packet Handling</name>
          <t>Valid packets sent to clients always include a Destination Connection ID that
matches a value the client selects.  Clients that choose to receive
zero-length connection IDs can use the local address and port to identify a
connection.  Packets that don't match an existing connection are discarded.</t>
          <t>Due to packet reordering or loss, a client might receive packets for a
connection that are encrypted with a key it has not yet computed. The client MAY
drop these packets, or MAY buffer them in anticipation of later packets that
allow it to compute the key.</t>
          <t>If a client receives a packet that has an unsupported version, it MUST discard
that packet.</t>
        </section>
        <section anchor="server-pkt-handling" numbered="true" toc="default">
          <name>Server Packet Handling</name>
          <t>If a server receives a packet that has an unsupported version, but the packet is
sufficiently large to initiate a new connection for any version supported by the
server, it SHOULD send a Version Negotiation packet as described in
<xref target="send-vn" format="default"/>. Servers MAY rate control these packets to avoid storms of Version
Negotiation packets.  Otherwise, servers MUST drop packets that specify
unsupported versions.</t>
          <t>The first packet for an unsupported version can use different semantics and
encodings for any version-specific field.  In particular, different packet
protection keys might be used for different versions.  Servers that do not
support a particular version are unlikely to be able to decrypt the payload of
the packet.  Servers SHOULD NOT attempt to decode or decrypt a packet from an
unknown version, but instead send a Version Negotiation packet, provided that
the packet is sufficiently long.</t>
          <t>Packets with a supported version, or no version field, are matched to a
connection using the connection ID or - for packets with zero-length connection
IDs - the local address and port.  If the packet doesn't match an existing
connection, the server continues below.</t>
          <t>If the packet is an Initial packet fully conforming with the specification, the
server proceeds with the handshake (<xref target="handshake" format="default"/>). This commits the server to
the version that the client selected.</t>
          <t>If a server isn't currently accepting any new connections, it SHOULD send an
Initial packet containing a CONNECTION_CLOSE frame with error code
SERVER_BUSY.</t>
          <t>If the packet is a 0-RTT packet, the server MAY buffer a limited number of these
packets in anticipation of a late-arriving Initial packet. Clients are not able
to send Handshake packets prior to receiving a server response, so servers
SHOULD ignore any such packets.</t>
          <t>Servers MUST drop incoming packets under all other circumstances.</t>
        </section>
        <section anchor="considerations-for-simple-load-balancers" numbered="true" toc="default">
          <name>Considerations for Simple Load Balancers</name>
          <t>A server deployment could load balance among servers using only source and
destination IP addresses and ports. Changes to the client's IP address or port
could result in packets being forwarded to the wrong server. Such a server
deployment could use one of the following methods for connection continuity
when a client's address changes.</t>
          <ul spacing="normal">
            <li>Servers could use an out-of-band mechanism to forward packets to the correct
server based on Connection ID.</li>
            <li>If servers can use a dedicated server IP address or port, other than the one
that the client initially connects to, they could use the preferred_address
transport parameter to request that clients move connections to that dedicated
address. Note that clients could choose not to use the preferred address.</li>
          </ul>
          <t>A server in a deployment that does not implement a solution to
maintain connection continuity during connection migration
SHOULD disallow migration using the disable_active_migration transport
parameter.</t>
          <t>Server deployments that use this simple form of load balancing MUST avoid the
creation of a stateless reset oracle; see <xref target="reset-oracle" format="default"/>.</t>
        </section>
      </section>
      <section anchor="connection-lifecycle" numbered="true" toc="default">
        <name>Life of a QUIC Connection</name>
        <t>A QUIC connection is a stateful interaction between a client and server, the
primary purpose of which is to support the exchange of data by an application
protocol.  Streams (<xref target="streams" format="default"/>) are the primary means by which an application
protocol exchanges information.</t>
        <t>Each connection starts with a handshake phase, during which client and server
establish a shared secret using the cryptographic handshake protocol
<xref target="QUIC-TLS" format="default"/> and negotiate the application protocol.  The handshake
(<xref target="handshake" format="default"/>) confirms that both endpoints are willing to communicate
(<xref target="validate-handshake" format="default"/>) and establishes parameters for the connection
(<xref target="transport-parameters" format="default"/>).</t>
        <t>An application protocol can also operate in a limited fashion during the
handshake phase.  0-RTT allows application messages to be sent by a client
before receiving any messages from the server.  However, 0-RTT lacks certain key
security guarantees. In particular, there is no protection against replay
attacks in 0-RTT; see <xref target="QUIC-TLS" format="default"/>.  Separately, a server can also send
application data to a client before it receives the final cryptographic
handshake messages that allow it to confirm the identity and liveness of the
client.  These capabilities allow an application protocol to offer the option to
trade some security guarantees for reduced latency.</t>
        <t>The use of connection IDs (<xref target="connection-id" format="default"/>) allows connections to migrate to a
new network path, both as a direct choice of an endpoint and when forced by a
change in a middlebox.  <xref target="migration" format="default"/> describes mitigations for the security and
privacy issues associated with migration.</t>
        <t>For connections that are no longer needed or desired, there are several ways for
a client and server to terminate a connection (<xref target="termination" format="default"/>).</t>
      </section>
      <section anchor="required-operations-on-connections" numbered="true" toc="default">
        <name>Required Operations on Connections</name>
        <t>There are certain operations which an application MUST be able to perform when
interacting with the QUIC transport.  This document does not specify an API, but
any implementation of this version of QUIC MUST expose the ability to perform
the operations described in this section on a QUIC connection.</t>
        <t>When implementing the client role, applications need to be able to:</t>
        <ul spacing="normal">
          <li>open a connection, which begins the exchange described in <xref target="handshake" format="default"/>;</li>
          <li>enable 0-RTT when available; and</li>
          <li>be informed when 0-RTT has been accepted or rejected by a server.</li>
        </ul>
        <t>When implementing the server role, applications need to be able to:</t>
        <ul spacing="normal">
          <li>listen for incoming connections, which prepares for the exchange described in
<xref target="handshake" format="default"/>;</li>
          <li>if Early Data is supported, embed application-controlled data in the TLS
resumption ticket sent to the client; and</li>
          <li>if Early Data is supported, retrieve application-controlled data from the
client's resumption ticket and enable rejecting Early Data based on that
information.</li>
        </ul>
        <t>In either role, applications need to be able to:</t>
        <ul spacing="normal">
          <li>configure minimum values for the initial number of permitted streams of each
type, as communicated in the transport parameters (<xref target="transport-parameters" format="default"/>);</li>
          <li>control resource allocation of various types, including flow control and the
number of permitted streams of each type;</li>
          <li>identify whether the handshake has completed successfully or is still ongoing;</li>
          <li>keep a connection from silently closing, either by generating PING frames
(<xref target="frame-ping" format="default"/>) or by requesting that the transport send additional frames
before the idle timeout expires (<xref target="idle-timeout" format="default"/>); and</li>
          <li>immediately close (<xref target="immediate-close" format="default"/>) the connection.</li>
        </ul>
      </section>
    </section>
    <section anchor="version-negotiation" numbered="true" toc="default">
      <name>Version Negotiation</name>
      <t>Version negotiation ensures that client and server agree to a QUIC version
that is mutually supported. A server sends a Version Negotiation packet in
response to each packet that might initiate a new connection; see
<xref target="packet-handling" format="default"/> for details.</t>
      <t>The size of the first packet sent by a client will determine whether a server
sends a Version Negotiation packet. Clients that support multiple QUIC versions
SHOULD pad the first packet they send to the largest of the minimum packet sizes
across all versions they support. This ensures that the server responds if there
is a mutually supported version.</t>
      <section anchor="send-vn" numbered="true" toc="default">
        <name>Sending Version Negotiation Packets</name>
        <t>If the version selected by the client is not acceptable to the server, the
server responds with a Version Negotiation packet; see <xref target="packet-version" format="default"/>.  This
includes a list of versions that the server will accept.  An endpoint MUST NOT
send a Version Negotiation packet in response to receiving a Version Negotiation
packet.</t>
        <t>This system allows a server to process packets with unsupported versions without
retaining state.  Though either the Initial packet or the Version Negotiation
packet that is sent in response could be lost, the client will send new packets
until it successfully receives a response or it abandons the connection attempt.
As a result, the client discards all state for the connection and does not send
any more packets on the connection.</t>
        <t>A server MAY limit the number of Version Negotiation packets it sends.  For
instance, a server that is able to recognize packets as 0-RTT might choose not
to send Version Negotiation packets in response to 0-RTT packets with the
expectation that it will eventually receive an Initial packet.</t>
      </section>
      <section anchor="handle-vn" numbered="true" toc="default">
        <name>Handling Version Negotiation Packets</name>
        <t>Version Negotiation packets are designed to allow future versions of QUIC to
negotiate the version in use between endpoints.  Future versions of QUIC might
change how implementations that support multiple versions of QUIC react to
Version Negotiation packets when attempting to establish a connection using this
version.</t>
        <t>A client that supports only this version of QUIC MUST abandon the current
connection attempt if it receives a Version Negotiation packet, with the
following two exceptions. A client MUST discard any Version Negotiation packet
if it has received and successfully processed any other packet, including an
earlier Version Negotiation packet. A client MUST discard a Version Negotiation
packet that lists the QUIC version selected by the client.</t>
        <t>How to perform version negotiation is left as future work defined by future
versions of QUIC.  In particular, that future work will ensure robustness
against version downgrade attacks; see <xref target="version-downgrade" format="default"/>.</t>
        <section anchor="version-negotiation-between-draft-versions" numbered="true" toc="default">
          <name>Version Negotiation Between Draft Versions</name>
          <t>[[RFC editor: please remove this section before publication.]]</t>
          <t>When a draft implementation receives a Version Negotiation packet, it MAY use
it to attempt a new connection with one of the versions listed in the packet,
instead of abandoning the current connection attempt; see <xref target="handle-vn" format="default"/>.</t>
          <t>The client MUST check that the Destination and Source Connection ID fields
match the Source and Destination Connection ID fields in a packet that the
client sent.  If this check fails, the packet MUST be discarded.</t>
          <t>Once the Version Negotiation packet is determined to be valid, the client then
selects an acceptable protocol version from the list provided by the server.
The client then attempts to create a new connection using that version. The new
connection MUST use a new random Destination Connection ID different from the
one it had previously sent.</t>
          <t>Note that this mechanism does not protect against downgrade attacks and
MUST NOT be used outside of draft implementations.</t>
        </section>
      </section>
      <section anchor="using-reserved-versions" numbered="true" toc="default">
        <name>Using Reserved Versions</name>
        <t>For a server to use a new version in the future, clients need to correctly
handle unsupported versions. Some version numbers (0x?a?a?a?a as defined in
<xref target="versions" format="default"/>) are reserved for inclusion in fields that contain version
numbers.</t>
        <t>Endpoints MAY add reserved versions to any field where unknown or unsupported
versions are ignored to test that a peer correctly ignores the value. For
instance, an endpoint could include a reserved version in a Version Negotiation
packet; see <xref target="packet-version" format="default"/>. Endpoints MAY send packets with a reserved
version to test that a peer correctly discards the packet.</t>
      </section>
    </section>
    <section anchor="handshake" numbered="true" toc="default">
      <name>Cryptographic and Transport Handshake</name>
      <t>QUIC relies on a combined cryptographic and transport handshake to minimize
connection establishment latency.  QUIC uses the CRYPTO frame <xref target="frame-crypto" format="default"/>
to transmit the cryptographic handshake.  Version 0x00000001 of QUIC uses TLS as
described in <xref target="QUIC-TLS" format="default"/>; a different QUIC version number could indicate that a
different cryptographic handshake protocol is in use.</t>
      <t>QUIC provides reliable, ordered delivery of the cryptographic handshake
data. QUIC packet protection is used to encrypt as much of the handshake
protocol as possible. The cryptographic handshake MUST provide the following
properties:</t>
      <ul spacing="normal">
        <li>
          <t>authenticated key exchange, where  </t>
          <ul spacing="normal">
            <li>a server is always authenticated,</li>
            <li>a client is optionally authenticated,</li>
            <li>every connection produces distinct and unrelated keys,</li>
            <li>keying material is usable for packet protection for both 0-RTT and 1-RTT
packets, and</li>
            <li>1-RTT keys have forward secrecy</li>
          </ul>
        </li>
        <li>authenticated values for transport parameters of both endpoints, and
confidentiality protection for server transport parameters (see
<xref target="transport-parameters" format="default"/>)</li>
        <li>authenticated negotiation of an application protocol (TLS uses ALPN
<xref target="RFC7301" format="default"/> for this purpose)</li>
      </ul>
      <t>An endpoint can verify support for Explicit Congestion Notification (ECN) in the
first packets it sends, as described in <xref target="ecn-validation" format="default"/>.</t>
      <t>The CRYPTO frame can be sent in different packet number spaces
(<xref target="packet-numbers" format="default"/>).  The sequence numbers used by CRYPTO frames to ensure
ordered delivery of cryptographic handshake data start from zero in each
packet number space.</t>
      <t>Endpoints MUST explicitly negotiate an application protocol.  This avoids
situations where there is a disagreement about the protocol that is in use.</t>
      <section anchor="example-handshake-flows" numbered="true" toc="default">
        <name>Example Handshake Flows</name>
        <t>Details of how TLS is integrated with QUIC are provided in <xref target="QUIC-TLS" format="default"/>, but
some examples are provided here.  An extension of this exchange to support
client address validation is shown in <xref target="validate-retry" format="default"/>.</t>
        <t>Once any address validation exchanges are complete, the
cryptographic handshake is used to agree on cryptographic keys.  The
cryptographic handshake is carried in Initial (<xref target="packet-initial" format="default"/>) and Handshake
(<xref target="packet-handshake" format="default"/>) packets.</t>
        <t><xref target="tls-1rtt-handshake" format="default"/> provides an overview of the 1-RTT handshake.  Each line
shows a QUIC packet with the packet type and packet number shown first, followed
by the frames that are typically contained in those packets. So, for instance
the first packet is of type Initial, with packet number 0, and contains a CRYPTO
frame carrying the ClientHello.</t>
        <t>Note that multiple QUIC packets - even of different packet types - can be
coalesced into a single UDP datagram; see <xref target="packet-coalesce" format="default"/>). As a result,
this handshake may consist of as few as 4 UDP datagrams, or any number more.
For instance, the server's first flight contains Initial packets,
Handshake packets, and "0.5-RTT data" in 1-RTT packets with a short header.</t>
        <figure anchor="tls-1rtt-handshake">
          <name>Example 1-RTT Handshake</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Client                                                  Server

Initial[0]: CRYPTO[CH] ->

                                 Initial[0]: CRYPTO[SH] ACK[0]
                       Handshake[0]: CRYPTO[EE, CERT, CV, FIN]
                                 <- 1-RTT[0]: STREAM[1, "..."]

Initial[1]: ACK[0]
Handshake[0]: CRYPTO[FIN], ACK[0]
1-RTT[0]: STREAM[0, "..."], ACK[0] ->

                                          Handshake[1]: ACK[0]
                         <- 1-RTT[1]: STREAM[3, "..."], ACK[0]
]]></artwork>
        </figure>
        <t><xref target="tls-0rtt-handshake" format="default"/> shows an example of a connection with a 0-RTT handshake
and a single packet of 0-RTT data. Note that as described in
<xref target="packet-numbers" format="default"/>, the server acknowledges 0-RTT data in 1-RTT packets, and
the client sends 1-RTT packets in the same packet number space.</t>
        <figure anchor="tls-0rtt-handshake">
          <name>Example 0-RTT Handshake</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Client                                                  Server

Initial[0]: CRYPTO[CH]
0-RTT[0]: STREAM[0, "..."] ->

                                 Initial[0]: CRYPTO[SH] ACK[0]
                                  Handshake[0] CRYPTO[EE, FIN]
                          <- 1-RTT[0]: STREAM[1, "..."] ACK[0]

Initial[1]: ACK[0]
Handshake[0]: CRYPTO[FIN], ACK[0]
1-RTT[1]: STREAM[0, "..."] ACK[0] ->

                                          Handshake[1]: ACK[0]
                         <- 1-RTT[1]: STREAM[3, "..."], ACK[1]
]]></artwork>
        </figure>
      </section>
      <section anchor="negotiating-connection-ids" numbered="true" toc="default">
        <name>Negotiating Connection IDs</name>
        <t>A connection ID is used to ensure consistent routing of packets, as described in
<xref target="connection-id" format="default"/>.  The long header contains two connection IDs: the Destination
Connection ID is chosen by the recipient of the packet and is used to provide
consistent routing; the Source Connection ID is used to set the Destination
Connection ID used by the peer.</t>
        <t>During the handshake, packets with the long header (<xref target="long-header" format="default"/>) are used to
establish the connection IDs in each direction. Each endpoint uses the Source
Connection ID field to specify the connection ID that is used in the Destination
Connection ID field of packets being sent to them. Upon receiving a packet, each
endpoint sets the Destination Connection ID it sends to match the value of the
Source Connection ID that it receives.</t>
        <t>When an Initial packet is sent by a client that has not previously received an
Initial or Retry packet from the server, the client populates the Destination
Connection ID field with an unpredictable value.  This Destination Connection ID
MUST be at least 8 bytes in length.  Until a packet is received from the server,
the client MUST use the same Destination Connection ID value on all packets in
this connection. This Destination Connection ID is used to determine packet
protection keys for Initial packets.</t>
        <t>The client populates the Source Connection ID field with a value of its choosing
and sets the SCID Length field to indicate the length.</t>
        <t>The first flight of 0-RTT packets use the same Destination Connection ID and
Source Connection ID values as the client's first Initial packet.</t>
        <t>Upon first receiving an Initial or Retry packet from the server, the client uses
the Source Connection ID supplied by the server as the Destination Connection ID
for subsequent packets, including any 0-RTT packets.  This means that a client
might have to change the connection ID it sets in the Destination Connection ID
field twice during connection establishment: once in response to a Retry, and
once in response to an Initial packet from the server. Once a client has
received a valid Initial packet from the server, it MUST discard any subsequent
packet it receives with a different Source Connection ID.</t>
        <t>A client MUST change the Destination Connection ID it uses for sending packets
in response to only the first received Initial or Retry packet.  A server MUST
set the Destination Connection ID it uses for sending packets based on the first
received Initial packet. Any further changes to the Destination Connection ID
are only permitted if the values are taken from any received
NEW_CONNECTION_ID frames; if subsequent Initial packets include a different
Source Connection ID, they MUST be discarded.  This avoids unpredictable
outcomes that might otherwise result from stateless processing of multiple
Initial packets with different Source Connection IDs.</t>
        <t>The Destination Connection ID that an endpoint sends can change over the
lifetime of a connection, especially in response to connection migration
(<xref target="migration" format="default"/>); see <xref target="issue-cid" format="default"/> for details.</t>
      </section>
      <section anchor="cid-auth" numbered="true" toc="default">
        <name>Authenticating Connection IDs</name>
        <t>The choice each endpoint makes about connection IDs during the handshake is
authenticated by including all values in transport parameters; see
<xref target="transport-parameters" format="default"/>. This ensures that all connection IDs used for the
handshake are also authenticated by the cryptographic handshake.</t>
        <t>Each endpoint includes the value of the Source Connection ID field from the
first Initial packet it sent in the initial_source_connection_id transport
parameter; see <xref target="transport-parameter-definitions" format="default"/>. A server includes the
Destination Connection ID field from the first Initial packet it received from
the client in the original_destination_connection_id transport parameter; if
the server sent a Retry packet this refers to the first Initial packet received
before sending the Retry packet. If it sends a Retry packet, a server also
includes the Source Connection ID field from the Retry packet in the
retry_source_connection_id transport parameter.</t>
        <t>The values provided by a peer for these transport parameters MUST match the
values that an endpoint used in the Destination and Source Connection ID fields
of Initial packets that it sent. Including connection ID values in transport
parameters and verifying them ensures that that an attacker cannot influence
the choice of connection ID for a successful connection by injecting packets
carrying attacker-chosen connection IDs during the handshake. An endpoint MUST
treat any of the following as a connection error of type PROTOCOL_VIOLATION:</t>
        <ul spacing="normal">
          <li>absence of the initial_source_connection_id transport parameter from either
endpoint,</li>
          <li>absence of the original_destination_connection_id transport parameter from
the server,</li>
          <li>absence of the retry_source_connection_id transport parameter from the server
after receiving a Retry packet,</li>
          <li>presence of the retry_source_connection_id transport parameter when no Retry
packet was received, or</li>
          <li>a mismatch between values received from a peer in these transport parameters
and the value sent in the corresponding Destination or Source Connection ID
fields of Initial packets.</li>
        </ul>
        <t>If a zero-length connection ID is selected, the corresponding transport
parameter is included with a zero-length value.</t>
        <t><xref target="fig-auth-cid" format="default"/> shows the connection IDs that are used in a complete
handshake. The exchange of Initial packets is shown, plus the later exchange of
1-RTT packets that includes the connection ID established during the handshake.</t>
        <figure anchor="fig-auth-cid">
          <name>Use of Connection IDs in a Handshake</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Client                                                  Server

Initial: DCID=S1, SCID=C1 ->
                                  <- Initial: DCID=C1, SCID=S3
                             ...
1-RTT: DCID=S3 ->
                                             <- 1-RTT: DCID=C1
]]></artwork>
        </figure>
        <t><xref target="fig-auth-cid-retry" format="default"/> shows a similar handshake that includes a Retry packet.</t>
        <figure anchor="fig-auth-cid-retry">
          <name>Use of Connection IDs in a Handshake with Retry</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Client                                                  Server

Initial: DCID=S1, SCID=C1 ->
                                    <- Retry: DCID=C1, SCID=S2
Initial: DCID=S2, SCID=C1 ->
                                  <- Initial: DCID=C1, SCID=S3
                             ...
1-RTT: DCID=S3 ->
                                             <- 1-RTT: DCID=C1
]]></artwork>
        </figure>
        <t>For the handshakes in <xref target="fig-auth-cid" format="default"/> and <xref target="fig-auth-cid-retry" format="default"/> the client
sets the value of the initial_source_connection_id transport parameter to <tt>C1</tt>.
In <xref target="fig-auth-cid-retry" format="default"/>, the server sets original_destination_connection_id
to <tt>S1</tt>, retry_source_connection_id to <tt>S2</tt>, and initial_source_connection_id
to <tt>S3</tt>. In <xref target="fig-auth-cid" format="default"/>, the server sets
original_destination_connection_id to <tt>S1</tt>, initial_source_connection_id to
<tt>S3</tt>, and does not include retry_source_connection_id. Each endpoint validates
the transport parameters set by their peer, including the client confirming
that retry_source_connection_id is absent if no Retry packet was processed.</t>
      </section>
      <section anchor="transport-parameters" numbered="true" toc="default">
        <name>Transport Parameters</name>
        <t>During connection establishment, both endpoints make authenticated declarations
of their transport parameters.  Endpoints are required to comply with the
restrictions implied by these parameters; the description of each parameter
includes rules for its handling.</t>
        <t>Transport parameters are declarations that are made unilaterally by each
endpoint.  Each endpoint can choose values for transport parameters independent
of the values chosen by its peer.</t>
        <t>The encoding of the transport parameters is detailed in
<xref target="transport-parameter-encoding" format="default"/>.</t>
        <t>QUIC includes the encoded transport parameters in the cryptographic handshake.
Once the handshake completes, the transport parameters declared by the peer are
available.  Each endpoint validates the value provided by its peer.</t>
        <t>Definitions for each of the defined transport parameters are included in
<xref target="transport-parameter-definitions" format="default"/>.</t>
        <t>An endpoint MUST treat receipt of a transport parameter with an invalid value as
a connection error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>An endpoint MUST NOT send a parameter more than once in a given transport
parameters extension.  An endpoint SHOULD treat receipt of duplicate transport
parameters as a connection error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>Endpoints use transport parameters to authenticate the negotiation of
connection IDs during the handshake; see <xref target="cid-auth" format="default"/>.</t>
        <section anchor="zerortt-parameters" numbered="true" toc="default">
          <name>Values of Transport Parameters for 0-RTT</name>
          <t>Both endpoints store the value of the server transport parameters from
a connection and apply them to any 0-RTT packets that are sent in
subsequent connections to that peer, except for transport parameters that
are explicitly excluded. Remembered transport parameters apply to the new
connection until the handshake completes and the client starts sending
1-RTT packets. Once the handshake completes, the client uses the transport
parameters established in the handshake.</t>
          <t>The definition of new transport parameters (<xref target="new-transport-parameters" format="default"/>) MUST
specify whether they MUST, MAY, or MUST NOT be stored for 0-RTT. A client need
not store a transport parameter it cannot process.</t>
          <t>A client MUST NOT use remembered values for the following parameters:
ack_delay_exponent, max_ack_delay, initial_source_connection_id,
original_destination_connection_id, preferred_address,
retry_source_connection_id, and stateless_reset_token. The client MUST use the
server's new values in the handshake instead, and absent new values from the
server, the default value.</t>
          <t>A client that attempts to send 0-RTT data MUST remember all other transport
parameters used by the server. The server can remember these transport
parameters, or store an integrity-protected copy of the values in the ticket
and recover the information when accepting 0-RTT data. A server uses the
transport parameters in determining whether to accept 0-RTT data.</t>
          <t>If 0-RTT data is accepted by the server, the server MUST NOT reduce any
limits or alter any values that might be violated by the client with its
0-RTT data.  In particular, a server that accepts 0-RTT data MUST NOT set
values for the following parameters (<xref target="transport-parameter-definitions" format="default"/>)
that are smaller than the remembered value of the parameters.</t>
          <ul spacing="normal">
            <li>active_connection_id_limit</li>
            <li>initial_max_data</li>
            <li>initial_max_stream_data_bidi_local</li>
            <li>initial_max_stream_data_bidi_remote</li>
            <li>initial_max_stream_data_uni</li>
            <li>initial_max_streams_bidi</li>
            <li>initial_max_streams_uni</li>
          </ul>
          <t>Omitting or setting a zero value for certain transport parameters can result in
0-RTT data being enabled, but not usable.  The applicable subset of transport
parameters that permit sending of application data SHOULD be set to non-zero
values for 0-RTT.  This includes initial_max_data and either
initial_max_streams_bidi and initial_max_stream_data_bidi_remote, or
initial_max_streams_uni and initial_max_stream_data_uni.</t>
          <t>A server MUST either reject 0-RTT data or abort a handshake if the implied
values for transport parameters cannot be supported.</t>
          <t>When sending frames in 0-RTT packets, a client MUST only use remembered
transport parameters; importantly, it MUST NOT use updated values that it learns
from the server's updated transport parameters or from frames received in 1-RTT
packets.  Updated values of transport parameters from the handshake apply only
to 1-RTT packets.  For instance, flow control limits from remembered transport
parameters apply to all 0-RTT packets even if those values are increased by the
handshake or by frames sent in 1-RTT packets.  A server MAY treat use of updated
transport parameters in 0-RTT as a connection error of type PROTOCOL_VIOLATION.</t>
        </section>
        <section anchor="new-transport-parameters" numbered="true" toc="default">
          <name>New Transport Parameters</name>
          <t>New transport parameters can be used to negotiate new protocol behavior.  An
endpoint MUST ignore transport parameters that it does not support.  Absence of
a transport parameter therefore disables any optional protocol feature that is
negotiated using the parameter.  As described in <xref target="transport-parameter-grease" format="default"/>,
some identifiers are reserved in order to exercise this requirement.</t>
          <t>New transport parameters can be registered according to the rules in
<xref target="iana-transport-parameters" format="default"/>.</t>
        </section>
      </section>
      <section anchor="cryptographic-message-buffering" numbered="true" toc="default">
        <name>Cryptographic Message Buffering</name>
        <t>Implementations need to maintain a buffer of CRYPTO data received out of order.
Because there is no flow control of CRYPTO frames, an endpoint could
potentially force its peer to buffer an unbounded amount of data.</t>
        <t>Implementations MUST support buffering at least 4096 bytes of data received in
CRYPTO frames out of order. Endpoints MAY choose to allow more data to be
buffered during the handshake. A larger limit during the handshake could allow
for larger keys or credentials to be exchanged. An endpoint's buffer size does
not need to remain constant during the life of the connection.</t>
        <t>Being unable to buffer CRYPTO frames during the handshake can lead to a
connection failure. If an endpoint's buffer is exceeded during the handshake, it
can expand its buffer temporarily to complete the handshake. If an endpoint
does not expand its buffer, it MUST close the connection with a
CRYPTO_BUFFER_EXCEEDED error code.</t>
        <t>Once the handshake completes, if an endpoint is unable to buffer all data in a
CRYPTO frame, it MAY discard that CRYPTO frame and all CRYPTO frames received in
the future, or it MAY close the connection with a CRYPTO_BUFFER_EXCEEDED error
code. Packets containing discarded CRYPTO frames MUST be acknowledged because
the packet has been received and processed by the transport even though the
CRYPTO frame was discarded.</t>
      </section>
    </section>
    <section anchor="address-validation" numbered="true" toc="default">
      <name>Address Validation</name>
      <t>Address validation is used by QUIC to avoid being used for a traffic
amplification attack.  In such an attack, a packet is sent to a server with
spoofed source address information that identifies a victim.  If a server
generates more or larger packets in response to that packet, the attacker can
use the server to send more data toward the victim than it would be able to send
on its own.</t>
      <t>The primary defense against amplification attack is verifying that an endpoint
is able to receive packets at the transport address that it claims.  Address
validation is performed both during connection establishment (see
<xref target="validate-handshake" format="default"/>) and during connection migration (see
<xref target="migrate-validate" format="default"/>).</t>
      <section anchor="validate-handshake" numbered="true" toc="default">
        <name>Address Validation During Connection Establishment</name>
        <t>Connection establishment implicitly provides address validation for both
endpoints.  In particular, receipt of a packet protected with Handshake keys
confirms that the client received the Initial packet from the server.  Once the
server has successfully processed a Handshake packet from the client, it can
consider the client address to have been validated.</t>
        <t>Prior to validating the client address, servers MUST NOT send more than three
times as many bytes as the number of bytes they have received.  This limits the
magnitude of any amplification attack that can be mounted using spoofed source
addresses.  For the purposes of avoiding amplification prior to address
validation, servers MUST count all of the payload bytes received in datagrams
that are uniquely attributed to a single connection. This includes datagrams
that contain packets that are successfully processed and datagrams that contain
packets that are all discarded.</t>
        <t>Clients MUST ensure that UDP datagrams containing Initial packets have UDP
payloads of at least 1200 bytes, adding padding to packets in the datagram as
necessary. Sending padded datagrams ensures that the server is not overly
constrained by the amplification restriction.</t>
        <t>Loss of an Initial or Handshake packet from the server can cause a deadlock if
the client does not send additional Initial or Handshake packets. A deadlock
could occur when the server reaches its anti-amplification limit and the client
has received acknowledgements for all the data it has sent.  In this case, when
the client has no reason to send additional packets, the server will be unable
to send more data because it has not validated the client's address. To prevent
this deadlock, clients MUST send a packet on a probe timeout
(PTO, see Section 5.3 of <xref target="QUIC-RECOVERY" format="default"/>). Specifically, the client MUST send
an Initial packet in a UDP datagram of at least 1200 bytes if it does not have
Handshake keys, and otherwise send a Handshake packet.</t>
        <t>A server might wish to validate the client address before starting the
cryptographic handshake. QUIC uses a token in the Initial packet to provide
address validation prior to completing the handshake. This token is delivered to
the client during connection establishment with a Retry packet (see
<xref target="validate-retry" format="default"/>) or in a previous connection using the NEW_TOKEN frame (see
<xref target="validate-future" format="default"/>).</t>
        <t>In addition to sending limits imposed prior to address validation, servers are
also constrained in what they can send by the limits set by the congestion
controller.  Clients are only constrained by the congestion controller.</t>
        <section anchor="token-construction" numbered="true" toc="default">
          <name>Token Construction</name>
          <t>A token sent in a NEW_TOKEN frames or a Retry packet MUST be constructed in a
way that allows the server to identify how it was provided to a client.  These
tokens are carried in the same field, but require different handling from
servers.</t>
        </section>
        <section anchor="validate-retry" numbered="true" toc="default">
          <name>Address Validation using Retry Packets</name>
          <t>Upon receiving the client's Initial packet, the server can request address
validation by sending a Retry packet (<xref target="packet-retry" format="default"/>) containing a token. This
token MUST be repeated by the client in all Initial packets it sends for that
connection after it receives the Retry packet.  In response to processing an
Initial containing a token, a server can either abort the connection or permit
it to proceed.</t>
          <t>As long as it is not possible for an attacker to generate a valid token for
its own address (see <xref target="token-integrity" format="default"/>) and the client is able to return
that token, it proves to the server that it received the token.</t>
          <t>A server can also use a Retry packet to defer the state and processing costs of
connection establishment. Requiring the server to provide a different
connection ID, along with the original_destination_connection_id transport
parameter defined in <xref target="transport-parameter-definitions" format="default"/>, forces the server to
demonstrate that it, or an entity it cooperates with, received the original
Initial packet from the client. Providing a different connection ID also grants
a server some control over how subsequent packets are routed. This can be used
to direct connections to a different server instance.</t>
          <t>If a server receives a client Initial that can be unprotected but contains an
invalid Retry token, it knows the client will not accept another Retry token.
The server can discard such a packet and allow the client to time out to
detect handshake failure, but that could impose a significant latency penalty on
the client.  Instead, the server SHOULD immediately close (<xref target="immediate-close" format="default"/>)
the connection with an INVALID_TOKEN error.  Note that a server has not
established any state for the connection at this point and so does not enter the
closing period.</t>
          <t>A flow showing the use of a Retry packet is shown in <xref target="fig-retry" format="default"/>.</t>
          <figure anchor="fig-retry">
            <name>Example Handshake with Retry</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
Client                                                  Server

Initial[0]: CRYPTO[CH] ->

                                                <- Retry+Token

Initial+Token[1]: CRYPTO[CH] ->

                                 Initial[0]: CRYPTO[SH] ACK[1]
                       Handshake[0]: CRYPTO[EE, CERT, CV, FIN]
                                 <- 1-RTT[0]: STREAM[1, "..."]
]]></artwork>
          </figure>
        </section>
        <section anchor="validate-future" numbered="true" toc="default">
          <name>Address Validation for Future Connections</name>
          <t>A server MAY provide clients with an address validation token during one
connection that can be used on a subsequent connection.  Address validation is
especially important with 0-RTT because a server potentially sends a significant
amount of data to a client in response to 0-RTT data.</t>
          <t>The server uses the NEW_TOKEN frame <xref target="frame-new-token" format="default"/> to provide the client
with an address validation token that can be used to validate future
connections.  The client includes this token in Initial packets to provide
address validation in a future connection.  The client MUST include the token in
all Initial packets it sends, unless a Retry replaces the token with a newer
one.  The client MUST NOT use the token provided in a Retry for future
connections. Servers MAY discard any Initial packet that does not carry the
expected token.</t>
          <t>Unlike the token that is created for a Retry packet, which is used immediately,
the token sent in the NEW_TOKEN frame might be used after some period of
time has passed.  Thus, a token SHOULD have an expiration time, which could
be either an explicit expiration time or an issued timestamp that can be
used to dynamically calculate the expiration time.  A server can store the
expiration time or include it in an encrypted form in the token.</t>
          <t>A token issued with NEW_TOKEN MUST NOT include information that would allow
values to be linked by an observer to the connection on which it was
issued, unless the values are encrypted.  For example, it cannot include the
previous connection ID or addressing information.  A server MUST ensure that
every NEW_TOKEN frame it sends is unique across all clients, with the exception
of those sent to repair losses of previously sent NEW_TOKEN frames.  Information
that allows the server to distinguish between tokens from Retry and NEW_TOKEN
MAY be accessible to entities other than the server.</t>
          <t>It is unlikely that the client port number is the same on two different
connections; validating the port is therefore unlikely to be successful.</t>
          <t>A token received in a NEW_TOKEN frame is applicable to any server that the
connection is considered authoritative for (e.g., server names included in the
certificate).  When connecting to a server for which the client retains an
applicable and unused token, it SHOULD include that token in the Token field of
its Initial packet.  Including a token might allow the server to validate the
client address without an additional round trip.  A client MUST NOT include a
token that is not applicable to the server that it is connecting to, unless the
client has the knowledge that the server that issued the token and the server
the client is connecting to are jointly managing the tokens.  A client MAY use a
token from any previous connection to that server.</t>
          <t>A token allows a server to correlate activity between the connection where the
token was issued and any connection where it is used.  Clients that want to
break continuity of identity with a server MAY discard tokens provided using the
NEW_TOKEN frame.  In comparison, a token obtained in a Retry packet MUST be used
immediately during the connection attempt and cannot be used in subsequent
connection attempts.</t>
          <t>A client SHOULD NOT reuse a NEW_TOKEN token for different connection attempts.
Reusing a token allows connections to be linked by entities on the network path;
see <xref target="migration-linkability" format="default"/>.</t>
          <t>Clients might receive multiple tokens on a single connection.  Aside from
preventing linkability, any token can be used in any connection attempt.
Servers can send additional tokens to either enable address validation for
multiple connection attempts or to replace older tokens that might become
invalid.  For a client, this ambiguity means that sending the most recent unused
token is most likely to be effective.  Though saving and using older tokens has
no negative consequences, clients can regard older tokens as being less likely
be useful to the server for address validation.</t>
          <t>When a server receives an Initial packet with an address validation token, it
MUST attempt to validate the token, unless it has already completed address
validation.  If the token is invalid then the server SHOULD proceed as if
the client did not have a validated address, including potentially sending
a Retry. If the validation succeeds, the server SHOULD then allow the
handshake to proceed.</t>
          <dl newline="false" spacing="normal">
            <dt>Note:</dt>
            <dd>
  The rationale for treating the client as unvalidated rather than discarding
the packet is that the client might have received the token in a previous
connection using the NEW_TOKEN frame, and if the server has lost state, it
might be unable to validate the token at all, leading to connection failure if
the packet is discarded.  A server SHOULD encode tokens provided with
NEW_TOKEN frames and Retry packets differently, and validate the latter more
strictly.</dd>
          </dl>
          <t>In a stateless design, a server can use encrypted and authenticated tokens to
pass information to clients that the server can later recover and use to
validate a client address.  Tokens are not integrated into the cryptographic
handshake and so they are not authenticated.  For instance, a client might be
able to reuse a token.  To avoid attacks that exploit this property, a server
can limit its use of tokens to only the information needed to validate client
addresses.</t>
          <t>Clients MAY use tokens obtained on one connection for any connection attempt
using the same version.  When selecting a token to use, clients do not need to
consider other properties of the connection that is being attempted, including
the choice of possible application protocols, session tickets, or other
connection properties.</t>
          <t>Attackers could replay tokens to use servers as amplifiers in DDoS attacks. To
protect against such attacks, servers SHOULD ensure that tokens sent in Retry
packets are only accepted for a short time. Tokens that are provided in
NEW_TOKEN frames (<xref target="frame-new-token" format="default"/>) need to be valid for longer, but
SHOULD NOT be accepted multiple times in a short period. Servers are encouraged
to allow tokens to be used only once, if possible.</t>
        </section>
        <section anchor="token-integrity" numbered="true" toc="default">
          <name>Address Validation Token Integrity</name>
          <t>An address validation token MUST be difficult to guess.  Including a large
enough random value in the token would be sufficient, but this depends on the
server remembering the value it sends to clients.</t>
          <t>A token-based scheme allows the server to offload any state associated with
validation to the client.  For this design to work, the token MUST be covered by
integrity protection against modification or falsification by clients.  Without
integrity protection, malicious clients could generate or guess values for
tokens that would be accepted by the server.  Only the server requires access to
the integrity protection key for tokens.</t>
          <t>There is no need for a single well-defined format for the token because the
server that generates the token also consumes it.  Tokens sent in Retry packets
SHOULD include information that allows the server to verify that the source IP
address and port in client packets remains constant.</t>
          <t>Tokens sent in NEW_TOKEN frames MUST include information that allows the server
to verify that the client IP address has not changed from when the token was
issued. Servers can use tokens from NEW_TOKEN in deciding not to send a Retry
packet, even if the client address has changed. If the client IP address has
changed, the server MUST adhere to the anti-amplification limits found in
<xref target="validate-handshake" format="default"/>.  Note that in the presence of NAT, this requirement
might be insufficient to protect other hosts that share the NAT from
amplification attack.</t>
          <t>Servers MUST ensure that replay of tokens is prevented or limited.  For
instance, servers might limit the time over which a token is accepted.  Tokens
provided in NEW_TOKEN frames might need to allow longer validity periods.
Tokens MAY include additional information about clients to further narrow
applicability or reuse.</t>
        </section>
      </section>
      <section anchor="migrate-validate" numbered="true" toc="default">
        <name>Path Validation</name>
        <t>Path validation is used during connection migration (see <xref target="migration" format="default"/> and
<xref target="preferred-address" format="default"/>) by the migrating endpoint to verify reachability of a
peer from a new local address.  In path validation, endpoints test reachability
between a specific local address and a specific peer address, where an address
is the two-tuple of IP address and port.</t>
        <t>Path validation tests that packets (PATH_CHALLENGE) can be both sent to and
received (PATH_RESPONSE) from a peer on the path.  Importantly, it validates
that the packets received from the migrating endpoint do not carry a spoofed
source address.</t>
        <t>Path validation can be used at any time by either endpoint.  For instance, an
endpoint might check that a peer is still in possession of its address after a
period of quiescence.</t>
        <t>Path validation is not designed as a NAT traversal mechanism. Though the
mechanism described here might be effective for the creation of NAT bindings
that support NAT traversal, the expectation is that one or other peer is able to
receive packets without first having sent a packet on that path. Effective NAT
traversal needs additional synchronization mechanisms that are not provided
here.</t>
        <t>An endpoint MAY bundle PATH_CHALLENGE and PATH_RESPONSE frames that are used for
path validation with other frames.  In particular, an endpoint may pad a packet
carrying a PATH_CHALLENGE for PMTU discovery, or an endpoint may bundle a
PATH_RESPONSE with its own PATH_CHALLENGE.</t>
        <t>When probing a new path, an endpoint might want to ensure that its peer has an
unused connection ID available for responses. The endpoint can send
NEW_CONNECTION_ID and PATH_CHALLENGE frames in the same packet. This ensures
that an unused connection ID will be available to the peer when sending a
response.</t>
      </section>
      <section anchor="initiating-path-validation" numbered="true" toc="default">
        <name>Initiating Path Validation</name>
        <t>To initiate path validation, an endpoint sends a PATH_CHALLENGE frame containing
a random payload on the path to be validated.</t>
        <t>An endpoint MAY send multiple PATH_CHALLENGE frames to guard against packet
loss. However, an endpoint SHOULD NOT send multiple PATH_CHALLENGE frames in a
single packet.  An endpoint SHOULD NOT send a PATH_CHALLENGE more frequently
than it would an Initial packet, ensuring that connection migration is no more
load on a new path than establishing a new connection.</t>
        <t>The endpoint MUST use unpredictable data in every PATH_CHALLENGE frame so that
it can associate the peer's response with the corresponding PATH_CHALLENGE.</t>
      </section>
      <section anchor="path-validation-responses" numbered="true" toc="default">
        <name>Path Validation Responses</name>
        <t>On receiving a PATH_CHALLENGE frame, an endpoint MUST respond immediately by
echoing the data contained in the PATH_CHALLENGE frame in a PATH_RESPONSE frame.</t>
        <t>An endpoint MUST NOT send more than one PATH_RESPONSE frame in response to one
PATH_CHALLENGE frame; see <xref target="retransmission-of-information" format="default"/>.  The peer is
expected to send more PATH_CHALLENGE frames as necessary to evoke additional
PATH_RESPONSE frames.</t>
      </section>
      <section anchor="successful-path-validation" numbered="true" toc="default">
        <name>Successful Path Validation</name>
        <t>A new address is considered valid when a PATH_RESPONSE frame is received that
contains the data that was sent in a previous PATH_CHALLENGE. Receipt of an
acknowledgment for a packet containing a PATH_CHALLENGE frame is not adequate
validation, since the acknowledgment can be spoofed by a malicious peer.</t>
        <t>Note that receipt on a different local address does not result in path
validation failure, as it might be a result of a forwarded packet (see
<xref target="off-path-forward" format="default"/>) or misrouting. It is possible that a valid PATH_RESPONSE
might be received in the future.</t>
      </section>
      <section anchor="failed-path-validation" numbered="true" toc="default">
        <name>Failed Path Validation</name>
        <t>Path validation only fails when the endpoint attempting to validate the path
abandons its attempt to validate the path.</t>
        <t>Endpoints SHOULD abandon path validation based on a timer. When setting this
timer, implementations are cautioned that the new path could have a longer
round-trip time than the original.  A value of three times the larger of the
current Probe Timeout (PTO) or the initial timeout (that is, 2*kInitialRtt) as
defined in <xref target="QUIC-RECOVERY" format="default"/> is RECOMMENDED.  That is:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   validation_timeout = max(3*PTO, 6*kInitialRtt)
]]></artwork>
        <t>Note that the endpoint might receive packets containing other frames on the new
path, but a PATH_RESPONSE frame with appropriate data is required for path
validation to succeed.</t>
        <t>When an endpoint abandons path validation, it determines that the path is
unusable.  This does not necessarily imply a failure of the connection -
endpoints can continue sending packets over other paths as appropriate.  If no
paths are available, an endpoint can wait for a new path to become available or
close the connection.</t>
        <t>A path validation might be abandoned for other reasons besides
failure. Primarily, this happens if a connection migration to a new path is
initiated while a path validation on the old path is in progress.</t>
      </section>
    </section>
    <section anchor="migration" numbered="true" toc="default">
      <name>Connection Migration</name>
      <t>The use of a connection ID allows connections to survive changes to endpoint
addresses (IP address and port), such as those caused by an
endpoint migrating to a new network.  This section describes the process by
which an endpoint migrates to a new address.</t>
      <t>The design of QUIC relies on endpoints retaining a stable address for the
duration of the handshake.  An endpoint MUST NOT initiate connection migration
before the handshake is confirmed, as defined in section 4.1.2 of <xref target="QUIC-TLS" format="default"/>.</t>
      <t>An endpoint also MUST NOT send packets from a different local address, actively
initiating migration, if the peer sent the disable_active_migration transport
parameter during the handshake. An endpoint which has sent this transport
parameter, but detects that a peer has nonetheless migrated to a different
network MUST either drop the incoming packets on that path without generating a
stateless reset or proceed with path validation and allow the peer to migrate.
Generating a stateless reset or closing the connection would allow third parties
in the network to cause connections to close by spoofing or otherwise
manipulating observed traffic.</t>
      <t>Not all changes of peer address are intentional, or active, migrations. The peer
could experience NAT rebinding: a change of address due to a middlebox, usually
a NAT, allocating a new outgoing port or even a new outgoing IP address for a
flow.  An endpoint MUST perform path validation (<xref target="migrate-validate" format="default"/>) if it
detects any change to a peer's address, unless it has previously validated that
address.</t>
      <t>When an endpoint has no validated path on which to send packets, it MAY discard
connection state.  An endpoint capable of connection migration MAY wait for a
new path to become available before discarding connection state.</t>
      <t>This document limits migration of connections to new client addresses, except as
described in <xref target="preferred-address" format="default"/>. Clients are responsible for initiating all
migrations.  Servers do not send non-probing packets (see <xref target="probing" format="default"/>) toward a
client address until they see a non-probing packet from that address.  If a
client receives packets from an unknown server address, the client MUST discard
these packets.</t>
      <section anchor="probing" numbered="true" toc="default">
        <name>Probing a New Path</name>
        <t>An endpoint MAY probe for peer reachability from a new local address using path
validation <xref target="migrate-validate" format="default"/> prior to migrating the connection to the new
local address.  Failure of path validation simply means that the new path is not
usable for this connection.  Failure to validate a path does not cause the
connection to end unless there are no valid alternative paths available.</t>
        <t>An endpoint uses a new connection ID for probes sent from a new local address;
see <xref target="migration-linkability" format="default"/> for further discussion. An endpoint that uses
a new local address needs to ensure that at least one new connection ID is
available at the peer. That can be achieved by including a NEW_CONNECTION_ID
frame in the probe.</t>
        <t>Receiving a PATH_CHALLENGE frame from a peer indicates that the peer is probing
for reachability on a path. An endpoint sends a PATH_RESPONSE in response as per
<xref target="migrate-validate" format="default"/>.</t>
        <t>PATH_CHALLENGE, PATH_RESPONSE, NEW_CONNECTION_ID, and PADDING frames are
"probing frames", and all other frames are "non-probing frames".  A packet
containing only probing frames is a "probing packet", and a packet containing
any other frame is a "non-probing packet".</t>
      </section>
      <section anchor="initiating-migration" numbered="true" toc="default">
        <name>Initiating Connection Migration</name>
        <t>An endpoint can migrate a connection to a new local address by sending packets
containing non-probing frames from that address.</t>
        <t>Each endpoint validates its peer's address during connection establishment.
Therefore, a migrating endpoint can send to its peer knowing that the peer is
willing to receive at the peer's current address. Thus an endpoint can migrate
to a new local address without first validating the peer's address.</t>
        <t>When migrating, the new path might not support the endpoint's current sending
rate. Therefore, the endpoint resets its congestion controller, as described in
<xref target="migration-cc" format="default"/>.</t>
        <t>The new path might not have the same ECN capability. Therefore, the endpoint
verifies ECN capability as described in <xref target="ecn" format="default"/>.</t>
        <t>Receiving acknowledgments for data sent on the new path serves as proof of the
peer's reachability from the new address.  Note that since acknowledgments may
be received on any path, return reachability on the new path is not established.
To establish return reachability on the new path, an endpoint MAY concurrently
initiate path validation <xref target="migrate-validate" format="default"/> on the new path or it MAY choose
to wait for the peer to send the next non-probing frame to its new address.</t>
      </section>
      <section anchor="migration-response" numbered="true" toc="default">
        <name>Responding to Connection Migration</name>
        <t>Receiving a packet from a new peer address containing a non-probing frame
indicates that the peer has migrated to that address.</t>
        <t>In response to such a packet, an endpoint MUST start sending subsequent packets
to the new peer address and MUST initiate path validation (<xref target="migrate-validate" format="default"/>)
to verify the peer's ownership of the unvalidated address.</t>
        <t>An endpoint MAY send data to an unvalidated peer address, but it MUST protect
against potential attacks as described in <xref target="address-spoofing" format="default"/> and
<xref target="on-path-spoofing" format="default"/>.  An endpoint MAY skip validation of a peer address if that
address has been seen recently.  In particular, if an endpoint returns to a
previously-validated path after detecting some form of spurious migration,
skipping address validation and restoring loss detection and congestion state
can reduce the performance impact of the attack.</t>
        <t>An endpoint only changes the address that it sends packets to in response to the
highest-numbered non-probing packet. This ensures that an endpoint does not send
packets to an old peer address in the case that it receives reordered packets.</t>
        <t>After changing the address to which it sends non-probing packets, an endpoint
could abandon any path validation for other addresses.</t>
        <t>Receiving a packet from a new peer address might be the result of a NAT
rebinding at the peer.</t>
        <t>After verifying a new client address, the server SHOULD send new address
validation tokens (<xref target="address-validation" format="default"/>) to the client.</t>
        <section anchor="address-spoofing" numbered="true" toc="default">
          <name>Peer Address Spoofing</name>
          <t>It is possible that a peer is spoofing its source address to cause an endpoint
to send excessive amounts of data to an unwilling host.  If the endpoint sends
significantly more data than the spoofing peer, connection migration might be
used to amplify the volume of data that an attacker can generate toward a
victim.</t>
          <t>As described in <xref target="migration-response" format="default"/>, an endpoint is required to validate a
peer's new address to confirm the peer's possession of the new address.  Until a
peer's address is deemed valid, an endpoint MUST limit the rate at which it
sends data to this address.  The endpoint MUST NOT send more than a minimum
congestion window's worth of data per estimated round-trip time (kMinimumWindow,
as defined in <xref target="QUIC-RECOVERY" format="default"/>).  In the absence of this limit, an endpoint
risks being used for a denial of service attack against an unsuspecting victim.
Note that since the endpoint will not have any round-trip time measurements to
this address, the estimate SHOULD be the default initial value; see
<xref target="QUIC-RECOVERY" format="default"/>.</t>
          <t>If an endpoint skips validation of a peer address as described in
<xref target="migration-response" format="default"/>, it does not need to limit its sending rate.</t>
        </section>
        <section anchor="on-path-spoofing" numbered="true" toc="default">
          <name>On-Path Address Spoofing</name>
          <t>An on-path attacker could cause a spurious connection migration by copying and
forwarding a packet with a spoofed address such that it arrives before the
original packet.  The packet with the spoofed address will be seen to come from
a migrating connection, and the original packet will be seen as a duplicate and
dropped. After a spurious migration, validation of the source address will fail
because the entity at the source address does not have the necessary
cryptographic keys to read or respond to the PATH_CHALLENGE frame that is sent
to it even if it wanted to.</t>
          <t>To protect the connection from failing due to such a spurious migration, an
endpoint MUST revert to using the last validated peer address when validation of
a new peer address fails.</t>
          <t>If an endpoint has no state about the last validated peer address, it MUST close
the connection silently by discarding all connection state. This results in new
packets on the connection being handled generically. For instance, an endpoint
MAY send a stateless reset in response to any further incoming packets.</t>
          <t>Note that receipt of packets with higher packet numbers from the legitimate peer
address will trigger another connection migration.  This will cause the
validation of the address of the spurious migration to be abandoned.</t>
        </section>
        <section anchor="off-path-forward" numbered="true" toc="default">
          <name>Off-Path Packet Forwarding</name>
          <t>An off-path attacker that can observe packets might forward copies of genuine
packets to endpoints.  If the copied packet arrives before the genuine packet,
this will appear as a NAT rebinding.  Any genuine packet will be discarded as a
duplicate.  If the attacker is able to continue forwarding packets, it might be
able to cause migration to a path via the attacker.  This places the attacker on
path, giving it the ability to observe or drop all subsequent packets.</t>
          <t>Unlike the attack described in <xref target="on-path-spoofing" format="default"/>, the attacker can ensure
that the new path is successfully validated.</t>
          <t>This style of attack relies on the attacker using a path that is approximately
as fast as the direct path between endpoints.  The attack is more reliable if
relatively few packets are sent or if packet loss coincides with the attempted
attack.</t>
          <t>A non-probing packet received on the original path that increases the maximum
received packet number will cause the endpoint to move back to that path.
Eliciting packets on this path increases the likelihood that the attack is
unsuccessful.  Therefore, mitigation of this attack relies on triggering the
exchange of packets.</t>
          <t>In response to an apparent migration, endpoints MUST validate the previously
active path using a PATH_CHALLENGE frame.  This induces the sending of new
packets on that path.  If the path is no longer viable, the validation attempt
will time out and fail; if the path is viable, but no longer desired, the
validation will succeed, but only results in probing packets being sent on the
path.</t>
          <t>An endpoint that receives a PATH_CHALLENGE on an active path SHOULD send a
non-probing packet in response.  If the non-probing packet arrives before any
copy made by an attacker, this results in the connection being migrated back to
the original path.  Any subsequent migration to another path restarts this
entire process.</t>
          <t>This defense is imperfect, but this is not considered a serious problem. If the
path via the attack is reliably faster than the original path despite multiple
attempts to use that original path, it is not possible to distinguish between
attack and an improvement in routing.</t>
          <t>An endpoint could also use heuristics to improve detection of this style of
attack.  For instance, NAT rebinding is improbable if packets were recently
received on the old path, similarly rebinding is rare on IPv6 paths.  Endpoints
can also look for duplicated packets.  Conversely, a change in connection ID is
more likely to indicate an intentional migration rather than an attack.</t>
        </section>
      </section>
      <section anchor="migration-cc" numbered="true" toc="default">
        <name>Loss Detection and Congestion Control</name>
        <t>The capacity available on the new path might not be the same as the old path.
Packets sent on the old path MUST NOT contribute to congestion control or RTT
estimation for the new path.</t>
        <t>On confirming a peer's ownership of its new address, an endpoint MUST
immediately reset the congestion controller and round-trip time estimator for
the new path to initial values (see Sections A.3 and B.3 in <xref target="QUIC-RECOVERY" format="default"/>)
unless it has knowledge that a previous send rate or round-trip time estimate is
valid for the new path.  For instance, an endpoint might infer that a change in
only the client's port number is indicative of a NAT rebinding, meaning that the
new path is likely to have similar bandwidth and round-trip time. However, this
determination will be imperfect.  If the determination is incorrect, the
congestion controller and the RTT estimator are expected to adapt to the new
path.  Generally, implementations are advised to be cautious when using previous
values on a new path.</t>
        <t>There may be apparent reordering at the receiver when an endpoint sends data and
probes from/to multiple addresses during the migration period, since the two
resulting paths may have different round-trip times.  A receiver of packets on
multiple paths will still send ACK frames covering all received packets.</t>
        <t>While multiple paths might be used during connection migration, a single
congestion control context and a single loss recovery context (as described in
<xref target="QUIC-RECOVERY" format="default"/>) may be adequate.  For instance, an endpoint might delay
switching to a new congestion control context until it is confirmed that an old
path is no longer needed (such as the case in <xref target="off-path-forward" format="default"/>).</t>
        <t>A sender can make exceptions for probe packets so that their loss detection is
independent and does not unduly cause the congestion controller to reduce its
sending rate.  An endpoint might set a separate timer when a PATH_CHALLENGE is
sent, which is cancelled if the corresponding PATH_RESPONSE is received. If
the timer fires before the PATH_RESPONSE is received, the endpoint might send a
new PATH_CHALLENGE, and restart the timer for a longer period of time.
This timer SHOULD be set as described in Section 5.3 of <xref target="QUIC-RECOVERY" format="default"/> and
MUST NOT be more aggressive.</t>
      </section>
      <section anchor="migration-linkability" numbered="true" toc="default">
        <name>Privacy Implications of Connection Migration</name>
        <t>Using a stable connection ID on multiple network paths allows a passive observer
to correlate activity between those paths.  An endpoint that moves between
networks might not wish to have their activity correlated by any entity other
than their peer, so different connection IDs are used when sending from
different local addresses, as discussed in <xref target="connection-id" format="default"/>.  For this to be
effective endpoints need to ensure that connection IDs they provide cannot be
linked by any other entity.</t>
        <t>At any time, endpoints MAY change the Destination Connection ID they send to a
value that has not been used on another path.</t>
        <t>An endpoint MUST NOT reuse a connection ID when sending from more than one local
address, for example when initiating connection migration as described in
<xref target="initiating-migration" format="default"/> or when probing a new network path as described in
<xref target="probing" format="default"/>.</t>
        <t>Similarly, an endpoint MUST NOT reuse a connection ID when sending to more than
one destination address.  Due to network changes outside the control of its
peer, an endpoint might receive packets from a new source address with the same
destination connection ID, in which case it MAY continue to use the current
connection ID with the new remote address while still sending from the same
local address.</t>
        <t>These requirements regarding connection ID reuse apply only to the sending of
packets, as unintentional changes in path without a change in connection ID are
possible.  For example, after a period of network inactivity, NAT rebinding
might cause packets to be sent on a new path when the client resumes sending.
An endpoint responds to such an event as described in <xref target="migration-response" format="default"/>.</t>
        <t>Using different connection IDs for packets sent in both directions on each new
network path eliminates the use of the connection ID for linking packets from
the same connection across different network paths.  Header protection ensures
that packet numbers cannot be used to correlate activity.  This does not prevent
other properties of packets, such as timing and size, from being used to
correlate activity.</t>
        <t>An endpoint SHOULD NOT initiate migration with a peer that has requested a
zero-length connection ID, because traffic over the new path might be trivially
linkable to traffic over the old one.  If the server is able to route packets
with a zero-length connection ID to the right connection, it means that the
server is using other information to demultiplex packets.  For example, a server
might provide a unique address to every client, for instance using HTTP
alternative services <xref target="ALTSVC" format="default"/>.  Information that might allow correct
routing of packets across multiple network paths will also allow activity on
those paths to be linked by entities other than the peer.</t>
        <t>A client might wish to reduce linkability by employing a new connection ID and
source UDP port when sending traffic after a period of inactivity.  Changing the
UDP port from which it sends packets at the same time might cause the packet to
appear as a connection migration. This ensures that the mechanisms that support
migration are exercised even for clients that don't experience NAT rebindings or
genuine migrations.  Changing port number can cause a peer to reset its
congestion state (see <xref target="migration-cc" format="default"/>), so the port SHOULD only be changed
infrequently.</t>
        <t>An endpoint that exhausts available connection IDs cannot probe new paths or
initiate migration, nor can it respond to probes or attempts by its peer to
migrate.  To ensure that migration is possible and packets sent on different
paths cannot be correlated, endpoints SHOULD provide new connection IDs before
peers migrate; see <xref target="issue-cid" format="default"/>.  If a peer might have exhausted available
connection IDs, a migrating endpoint could include a NEW_CONNECTION_ID frame in
all packets sent on a new network path.</t>
      </section>
      <section anchor="preferred-address" numbered="true" toc="default">
        <name>Server's Preferred Address</name>
        <t>QUIC allows servers to accept connections on one IP address and attempt to
transfer these connections to a more preferred address shortly after the
handshake.  This is particularly useful when clients initially connect to an
address shared by multiple servers but would prefer to use a unicast address to
ensure connection stability. This section describes the protocol for migrating a
connection to a preferred server address.</t>
        <t>Migrating a connection to a new server address mid-connection is left for future
work. If a client receives packets from a new server address not indicated by
the preferred_address transport parameter, the client SHOULD discard these
packets.</t>
        <section anchor="communicating-a-preferred-address" numbered="true" toc="default">
          <name>Communicating a Preferred Address</name>
          <t>A server conveys a preferred address by including the preferred_address
transport parameter in the TLS handshake.</t>
          <t>Servers MAY communicate a preferred address of each address family (IPv4 and
IPv6) to allow clients to pick the one most suited to their network attachment.</t>
          <t>Once the handshake is confirmed, the client SHOULD select one of the two
server's preferred addresses and initiate path validation (see
<xref target="migrate-validate" format="default"/>) of that address using any previously unused active
connection ID, taken from either the preferred_address transport parameter or
a NEW_CONNECTION_ID frame.</t>
          <t>If path validation succeeds, the client SHOULD immediately begin sending all
future packets to the new server address using the new connection ID and
discontinue use of the old server address.  If path validation fails, the client
MUST continue sending all future packets to the server's original IP address.</t>
        </section>
        <section anchor="responding-to-connection-migration" numbered="true" toc="default">
          <name>Responding to Connection Migration</name>
          <t>A server might receive a packet addressed to its preferred IP address at any
time after it accepts a connection.  If this packet contains a PATH_CHALLENGE
frame, the server sends a PATH_RESPONSE frame as per <xref target="migrate-validate" format="default"/>.  The
server MUST send other non-probing frames from its original address until it
receives a non-probing packet from the client at its preferred address and until
the server has validated the new path.</t>
          <t>The server MUST probe on the path toward the client from its preferred address.
This helps to guard against spurious migration initiated by an attacker.</t>
          <t>Once the server has completed its path validation and has received a non-probing
packet with a new largest packet number on its preferred address, the server
begins sending non-probing packets to the client exclusively from its preferred
IP address.  It SHOULD drop packets for this connection received on the old IP
address, but MAY continue to process delayed packets.</t>
          <t>The addresses that a server provides in the preferred_address transport
parameter are only valid for the connection in which they are provided. A
client MUST NOT use these for other connections, including connections that are
resumed from the current connection.</t>
        </section>
        <section anchor="interaction-of-client-migration-and-preferred-address" numbered="true" toc="default">
          <name>Interaction of Client Migration and Preferred Address</name>
          <t>A client might need to perform a connection migration before it has migrated to
the server's preferred address.  In this case, the client SHOULD perform path
validation to both the original and preferred server address from the client's
new address concurrently.</t>
          <t>If path validation of the server's preferred address succeeds, the client MUST
abandon validation of the original address and migrate to using the server's
preferred address.  If path validation of the server's preferred address fails
but validation of the server's original address succeeds, the client MAY migrate
to its new address and continue sending to the server's original address.</t>
          <t>If the connection to the server's preferred address is not from the same client
address, the server MUST protect against potential attacks as described in
<xref target="address-spoofing" format="default"/> and <xref target="on-path-spoofing" format="default"/>.  In addition to intentional
simultaneous migration, this might also occur because the client's access
network used a different NAT binding for the server's preferred address.</t>
          <t>Servers SHOULD initiate path validation to the client's new address upon
receiving a probe packet from a different address.  Servers MUST NOT send more
than a minimum congestion window's worth of non-probing packets to the new
address before path validation is complete.</t>
          <t>A client that migrates to a new address SHOULD use a preferred address from the
same address family for the server.</t>
          <t>The connection ID provided in the preferred_address transport parameter is not
specific to the addresses that are provided. This connection ID is provided to
ensure that the client has a connection ID available for migration, but the
client MAY use this connection ID on any path.</t>
        </section>
      </section>
      <section anchor="ipv6-flow-label" numbered="true" toc="default">
        <name>Use of IPv6 Flow-Label and Migration</name>
        <t>Endpoints that send data using IPv6 SHOULD apply an IPv6 flow label
in compliance with <xref target="RFC6437" format="default"/>, unless the local API does not allow
setting IPv6 flow labels.</t>
        <t>The IPv6 flow label SHOULD be a pseudo-random function of the source and
destination addresses, source and destination UDP ports, and the destination
CID.  The flow label generation MUST be designed to minimize the chances of
linkability with a previously used flow label, as this would enable correlating
activity on multiple paths; see <xref target="migration-linkability" format="default"/>.</t>
        <t>A possible implementation is to compute the flow label as a cryptographic hash
function of the source and destination addresses, source and destination
UDP ports, destination CID, and a local secret.</t>
      </section>
    </section>
    <section anchor="termination" numbered="true" toc="default">
      <name>Connection Termination</name>
      <t>An established QUIC connection can be terminated in one of three ways:</t>
      <ul spacing="normal">
        <li>idle timeout (<xref target="idle-timeout" format="default"/>)</li>
        <li>immediate close (<xref target="immediate-close" format="default"/>)</li>
        <li>stateless reset (<xref target="stateless-reset" format="default"/>)</li>
      </ul>
      <t>An endpoint MAY discard connection state if it does not have a validated path on
which it can send packets; see <xref target="migrate-validate" format="default"/>.</t>
      <section anchor="draining" numbered="true" toc="default">
        <name>Closing and Draining Connection States</name>
        <t>The closing and draining connection states exist to ensure that connections
close cleanly and that delayed or reordered packets are properly discarded.
These states SHOULD persist for at least three times the current Probe Timeout
(PTO) interval as defined in <xref target="QUIC-RECOVERY" format="default"/>.</t>
        <t>An endpoint enters a closing period after initiating an immediate close;
<xref target="immediate-close" format="default"/>.  While closing, an endpoint MUST NOT send packets unless
they contain a CONNECTION_CLOSE frame; see <xref target="immediate-close" format="default"/> for details.  An
endpoint retains only enough information to generate a packet containing a
CONNECTION_CLOSE frame and to identify packets as belonging to the connection.
The endpoint's selected connection ID and the QUIC version are sufficient
information to identify packets for a closing connection; an endpoint can
discard all other connection state. An endpoint MAY retain packet protection
keys for incoming packets to allow it to read and process a CONNECTION_CLOSE
frame.</t>
        <t>The draining state is entered once an endpoint receives a signal that its peer
is closing or draining.  While otherwise identical to the closing state, an
endpoint in the draining state MUST NOT send any packets.  Retaining packet
protection keys is unnecessary once a connection is in the draining state.</t>
        <t>An endpoint MAY transition from the closing period to the draining period if it
receives a CONNECTION_CLOSE frame or stateless reset, both of which indicate
that the peer is also closing or draining.  The draining period SHOULD end when
the closing period would have ended.  In other words, the endpoint can use the
same end time, but cease retransmission of the closing packet.</t>
        <t>Disposing of connection state prior to the end of the closing or draining period
could cause delayed or reordered packets to generate an unnecessary stateless
reset. Endpoints that have some alternative means to ensure that late-arriving
packets on the connection do not induce a response, such as those that are able
to close the UDP socket, MAY use an abbreviated draining period which can allow
for faster resource recovery.  Servers that retain an open socket for accepting
new connections SHOULD NOT exit the closing or draining period early.</t>
        <t>Once the closing or draining period has ended, an endpoint SHOULD discard all
connection state.  This results in new packets on the connection being handled
generically.  For instance, an endpoint MAY send a stateless reset in response
to any further incoming packets.</t>
        <t>The draining and closing periods do not apply when a stateless reset
(<xref target="stateless-reset" format="default"/>) is sent.</t>
        <t>An endpoint is not expected to handle key updates when it is closing or
draining.  A key update might prevent the endpoint from moving from the closing
state to draining, but it otherwise has no impact.</t>
        <t>While in the closing period, an endpoint could receive packets from a new source
address, indicating a connection migration; <xref target="migration" format="default"/>. An endpoint in the
closing state MUST strictly limit the number of packets it sends to this new
address until the address is validated; see <xref target="migrate-validate" format="default"/>. A server in
the closing state MAY instead choose to discard packets received from a new
source address.</t>
      </section>
      <section anchor="idle-timeout" numbered="true" toc="default">
        <name>Idle Timeout</name>
        <t>If a max_idle_timeout is specified by either peer in its transport parameters
(<xref target="transport-parameter-definitions" format="default"/>), the connection is silently closed
and its state is discarded when it remains idle for longer than the minimum of
both peers max_idle_timeout values and three times the current Probe Timeout
(PTO).</t>
        <t>Each endpoint advertises a max_idle_timeout, but the effective value
at an endpoint is computed as the minimum of the two advertised values. By
announcing a max_idle_timeout, an endpoint commits to initiating an immediate
close (<xref target="immediate-close" format="default"/>) if it abandons the connection prior to the effective
value.</t>
        <t>An endpoint restarts its idle timer when a packet from its peer is received and
processed successfully. An endpoint also restarts its idle timer when sending an
ack-eliciting packet if no other ack-eliciting packets have been sent since last
receiving and processing a packet. Restarting this timer when sending a packet
ensures that connections are not closed after new activity is initiated.</t>
        <t>An endpoint might need to send ack-eliciting packets to avoid an idle timeout
if it is expecting response data, but does not have or is unable to send
application data.</t>
        <t>An endpoint that sends packets close to the effective timeout risks having
them be discarded at the peer, since the peer might enter its draining state
before these packets arrive. An endpoint can send a PING or another
ack-eliciting frame to test the connection for liveness if the peer could
time out soon, such as within a PTO; see Section 6.6 of <xref target="QUIC-RECOVERY" format="default"/>.
This is especially useful if any available application data cannot be safely
retried. Note that the application determines what data is safe to retry.</t>
      </section>
      <section anchor="immediate-close" numbered="true" toc="default">
        <name>Immediate Close</name>
        <t>An endpoint sends a CONNECTION_CLOSE frame (<xref target="frame-connection-close" format="default"/>) to
terminate the connection immediately.  A CONNECTION_CLOSE frame causes all
streams to immediately become closed; open streams can be assumed to be
implicitly reset.</t>
        <t>After sending a CONNECTION_CLOSE frame, an endpoint immediately enters the
closing state.</t>
        <t>During the closing period, an endpoint that sends a CONNECTION_CLOSE frame
SHOULD respond to any incoming packet that can be decrypted with another packet
containing a CONNECTION_CLOSE frame.  Such an endpoint SHOULD limit the number
of packets it generates containing a CONNECTION_CLOSE frame.  For instance, an
endpoint could wait for a progressively increasing number of received packets or
amount of time before responding to a received packet.</t>
        <t>An endpoint is allowed to drop the packet protection keys when entering the
closing period (<xref target="draining" format="default"/>) and send a packet containing a CONNECTION_CLOSE in
response to any UDP datagram that is received.  However, an endpoint without the
packet protection keys cannot identify and discard invalid packets.  To avoid
creating an unwitting amplification attack, such endpoints MUST reduce the
frequency with which it sends packets containing a CONNECTION_CLOSE frame.  To
minimize the state that an endpoint maintains for a closing connection,
endpoints MAY send the exact same packet.</t>
        <dl newline="false" spacing="normal">
          <dt>Note:</dt>
          <dd>
  Allowing retransmission of a closing packet contradicts other advice in this
document that recommends the creation of new packet numbers for every packet.
Sending new packet numbers is primarily of advantage to loss recovery and
congestion control, which are not expected to be relevant for a closed
connection.  Retransmitting the final packet requires less state.</dd>
        </dl>
        <t>New packets from unverified addresses could be used to create an amplification
attack; see <xref target="address-validation" format="default"/>.  To avoid this, endpoints MUST either limit
transmission of CONNECTION_CLOSE frames to validated addresses or drop packets
without response if the response would be more than three times larger than the
received packet.</t>
        <t>After receiving a CONNECTION_CLOSE frame, endpoints enter the draining state.
An endpoint that receives a CONNECTION_CLOSE frame MAY send a single packet
containing a CONNECTION_CLOSE frame before entering the draining state, using a
CONNECTION_CLOSE frame and a NO_ERROR code if appropriate.  An endpoint MUST NOT
send further packets, which could result in a constant exchange of
CONNECTION_CLOSE frames until the closing period on either peer ended.</t>
        <t>An immediate close can be used after an application protocol has arranged to
close a connection.  This might be after the application protocols negotiates a
graceful shutdown.  The application protocol exchanges whatever messages that
are needed to cause both endpoints to agree to close the connection, after which
the application requests that the connection be closed.  The application
protocol can use a CONNECTION_CLOSE frame with an appropriate error code to
signal closure.</t>
        <section anchor="immediate-close-hs" numbered="true" toc="default">
          <name>Immediate Close During the Handshake</name>
          <t>When sending CONNECTION_CLOSE, the goal is to ensure that the peer will process
the frame.  Generally, this means sending the frame in a packet with the highest
level of packet protection to avoid the packet being discarded.  After the
handshake is confirmed (see Section 4.1.2 of <xref target="QUIC-TLS" format="default"/>), an endpoint MUST
send any CONNECTION_CLOSE frames in a 1-RTT packet.  However, prior to
confirming the handshake, it is possible that more advanced packet protection
keys are not available to the peer, so another CONNECTION_CLOSE frame MAY be
sent in a packet that uses a lower packet protection level.  More specifically:</t>
          <ul spacing="normal">
            <li>A client will always know whether the server has Handshake keys (see
<xref target="discard-initial" format="default"/>), but it is possible that a server does not know whether
the client has Handshake keys.  Under these circumstances, a server SHOULD
send a CONNECTION_CLOSE frame in both Handshake and Initial packets to ensure
that at least one of them is processable by the client.</li>
            <li>A client that sends CONNECTION_CLOSE in a 0-RTT packet cannot be assured of
the server has accepted 0-RTT and so sending a CONNECTION_CLOSE frame in an
Initial packet makes it more likely that the server can receive the close
signal, even if the application error code might not be received.</li>
            <li>Prior to confirming the handshake, a peer might be unable to process 1-RTT
packets, so an endpoint SHOULD send CONNECTION_CLOSE in both Handshake and
1-RTT packets.  A server SHOULD also send CONNECTION_CLOSE in an Initial
packet.</li>
          </ul>
          <t>Sending a CONNECTION_CLOSE of type 0x1d in an Initial or Handshake packet could
expose application state or be used to alter application state. A
CONNECTION_CLOSE of type 0x1d MUST be replaced by a CONNECTION_CLOSE of type
0x1c when sending the frame in Initial or Handshake packets. Otherwise,
information about the application state might be revealed. Endpoints MUST clear
the value of the Reason Phrase field and SHOULD use the APPLICATION_ERROR code
when converting to a CONNECTION_CLOSE of type 0x1c.</t>
          <t>CONNECTION_CLOSE frames sent in multiple packet types can be coalesced into a
single UDP datagram; see <xref target="packet-coalesce" format="default"/>.</t>
          <t>An endpoint might send a CONNECTION_CLOSE frame in an Initial packet or in
response to unauthenticated information received in Initial or Handshake
packets.  Such an immediate close might expose legitimate connections to a
denial of service.  QUIC does not include defensive measures for on-path attacks
during the handshake; see <xref target="handshake-dos" format="default"/>.  However, at the cost of reducing
feedback about errors for legitimate peers, some forms of denial of service can
be made more difficult for an attacker if endpoints discard illegal packets
rather than terminating a connection with CONNECTION_CLOSE.  For this reason,
endpoints MAY discard packets rather than immediately close if errors are
detected in packets that lack authentication.</t>
          <t>An endpoint that has not established state, such as a server that detects an
error in an Initial packet, does not enter the closing state.  An endpoint that
has no state for the connection does not enter a closing or draining period on
sending a CONNECTION_CLOSE frame.</t>
        </section>
      </section>
      <section anchor="stateless-reset" numbered="true" toc="default">
        <name>Stateless Reset</name>
        <t>A stateless reset is provided as an option of last resort for an endpoint that
does not have access to the state of a connection.  A crash or outage might
result in peers continuing to send data to an endpoint that is unable to
properly continue the connection.  An endpoint MAY send a stateless reset in
response to receiving a packet that it cannot associate with an active
connection.</t>
        <t>A stateless reset is not appropriate for signaling error conditions.  An
endpoint that wishes to communicate a fatal connection error MUST use a
CONNECTION_CLOSE frame if it has sufficient state to do so.</t>
        <t>To support this process, a token is sent by endpoints.  The token is carried in
the Stateless Reset Token field of a NEW_CONNECTION_ID frame.  Servers can also
specify a stateless_reset_token transport parameter during the handshake that
applies to the connection ID that it selected during the handshake; clients
cannot use this transport parameter because their transport parameters don't
have confidentiality protection.  These tokens are protected by encryption, so
only client and server know their value.  Tokens are invalidated when their
associated connection ID is retired via a RETIRE_CONNECTION_ID frame
(<xref target="frame-retire-connection-id" format="default"/>).</t>
        <t>An endpoint that receives packets that it cannot process sends a packet in the
following layout:</t>
        <figure anchor="fig-stateless-reset">
          <name>Stateless Reset Packet</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Stateless Reset {
  Fixed Bits (2) = 1,
  Unpredictable Bits (38..),
  Stateless Reset Token (128),
}
]]></artwork>
        </figure>
        <t>This design ensures that a stateless reset packet is - to the extent possible -
indistinguishable from a regular packet with a short header.</t>
        <t>A stateless reset uses an entire UDP datagram, starting with the first two bits
of the packet header.  The remainder of the first byte and an arbitrary number
of bytes following it that are set to unpredictable values.  The last 16 bytes
of the datagram contain a Stateless Reset Token.</t>
        <t>To entities other than its intended recipient, a stateless reset will appear to
be a packet with a short header.  For the stateless reset to appear as a valid
QUIC packet, the Unpredictable Bits field needs to include at least 38 bits of
data (or 5 bytes, less the two fixed bits).</t>
        <t>A minimum size of 21 bytes does not guarantee that a stateless reset is
difficult to distinguish from other packets if the recipient requires the use of
a connection ID.  To prevent a resulting stateless reset from being trivially
distinguishable from a valid packet, all packets sent by an endpoint SHOULD be
padded to at least 22 bytes longer than the minimum connection ID that the
endpoint might use.  An endpoint that sends a stateless reset in response to
packet that is 43 bytes or less in length SHOULD send a stateless reset that is
one byte shorter than the packet it responds to.</t>
        <t>These values assume that the Stateless Reset Token is the same as the minimum
expansion of the packet protection AEAD.  Additional unpredictable bytes are
necessary if the endpoint could have negotiated a packet protection scheme with
a larger minimum expansion.</t>
        <t>An endpoint MUST NOT send a stateless reset that is three times or more larger
than the packet it receives to avoid being used for amplification.
<xref target="reset-looping" format="default"/> describes additional limits on stateless reset size.</t>
        <t>Endpoints MUST discard packets that are too small to be valid QUIC packets.
With the set of AEAD functions defined in <xref target="QUIC-TLS" format="default"/>, packets that are smaller
than 21 bytes are never valid.</t>
        <t>Endpoints MUST send stateless reset packets formatted as a packet with a short
header.  However, endpoints MUST treat any packet ending in a valid stateless
reset token as a stateless reset, as other QUIC versions might allow the use of
a long header.</t>
        <t>An endpoint MAY send a stateless reset in response to a packet with a long
header.  Sending a stateless reset is not effective prior to the stateless reset
token being available to a peer.  In this QUIC version, packets with a long
header are only used during connection establishment.   Because the stateless
reset token is not available until connection establishment is complete or near
completion, ignoring an unknown packet with a long header might be as effective
as sending a stateless reset.</t>
        <t>An endpoint cannot determine the Source Connection ID from a packet with a short
header, therefore it cannot set the Destination Connection ID in the stateless
reset packet.  The Destination Connection ID will therefore differ from the
value used in previous packets.  A random Destination Connection ID makes the
connection ID appear to be the result of moving to a new connection ID that was
provided using a NEW_CONNECTION_ID frame (<xref target="frame-new-connection-id" format="default"/>).</t>
        <t>Using a randomized connection ID results in two problems:</t>
        <ul spacing="normal">
          <li>The packet might not reach the peer.  If the Destination Connection ID is
critical for routing toward the peer, then this packet could be incorrectly
routed.  This might also trigger another Stateless Reset in response; see
<xref target="reset-looping" format="default"/>.  A Stateless Reset that is not correctly routed is
an ineffective error detection and recovery mechanism.  In this
case, endpoints will need to rely on other methods - such as timers - to
detect that the connection has failed.</li>
          <li>The randomly generated connection ID can be used by entities other than the
peer to identify this as a potential stateless reset.  An endpoint that
occasionally uses different connection IDs might introduce some uncertainty
about this.</li>
        </ul>
        <t>This stateless reset design is specific to QUIC version 1.  An endpoint that
supports multiple versions of QUIC needs to generate a stateless reset that will
be accepted by peers that support any version that the endpoint might support
(or might have supported prior to losing state).  Designers of new versions of
QUIC need to be aware of this and either reuse this design, or use a portion of
the packet other than the last 16 bytes for carrying data.</t>
        <section anchor="detecting-a-stateless-reset" numbered="true" toc="default">
          <name>Detecting a Stateless Reset</name>
          <t>An endpoint detects a potential stateless reset using the trailing 16 bytes of
the UDP datagram.  An endpoint remembers all Stateless Reset Tokens associated
with the connection IDs and remote addresses for datagrams it has recently sent.
This includes Stateless Reset Tokens from NEW_CONNECTION_ID frames and the
server's transport parameters but excludes Stateless Reset Tokens associated
with connection IDs that are either unused or retired.  The endpoint identifies
a received datagram as a stateless reset by comparing the last 16 bytes of the
datagram with all Stateless Reset Tokens associated with the remote address on
which the datagram was received.</t>
          <t>This comparison can be performed for every inbound datagram.  Endpoints MAY skip
this check if any packet from a datagram is successfully processed.  However,
the comparison MUST be performed when the first packet in an incoming datagram
either cannot be associated with a connection, or cannot be decrypted.</t>
          <t>An endpoint MUST NOT check for any Stateless Reset Tokens associated with
connection IDs it has not used or for connection IDs that have been retired.</t>
          <t>When comparing a datagram to Stateless Reset Token values, endpoints MUST
perform the comparison without leaking information about the value of the token.
For example, performing this comparison in constant time protects the value of
individual Stateless Reset Tokens from information leakage through timing side
channels.  Another approach would be to store and compare the transformed values
of Stateless Reset Tokens instead of the raw token values, where the
transformation is defined as a cryptographically-secure pseudo-random function
using a secret key (e.g., block cipher, HMAC <xref target="RFC2104" format="default"/>). An endpoint is not
expected to protect information about whether a packet was successfully
decrypted, or the number of valid Stateless Reset Tokens.</t>
          <t>If the last 16 bytes of the datagram are identical in value to a Stateless Reset
Token, the endpoint MUST enter the draining period and not send any further
packets on this connection.</t>
        </section>
        <section anchor="reset-token" numbered="true" toc="default">
          <name>Calculating a Stateless Reset Token</name>
          <t>The stateless reset token MUST be difficult to guess.  In order to create a
Stateless Reset Token, an endpoint could randomly generate <xref target="RFC4086" format="default"/> a secret
for every connection that it creates.  However, this presents a coordination
problem when there are multiple instances in a cluster or a storage problem for
an endpoint that might lose state.  Stateless reset specifically exists to
handle the case where state is lost, so this approach is suboptimal.</t>
          <t>A single static key can be used across all connections to the same endpoint by
generating the proof using a second iteration of a preimage-resistant function
that takes a static key and the connection ID chosen by the endpoint (see
<xref target="connection-id" format="default"/>) as input.  An endpoint could use HMAC <xref target="RFC2104" format="default"/> (for
example, HMAC(static_key, connection_id)) or HKDF <xref target="RFC5869" format="default"/> (for example,
using the static key as input keying material, with the connection ID as salt).
The output of this function is truncated to 16 bytes to produce the Stateless
Reset Token for that connection.</t>
          <t>An endpoint that loses state can use the same method to generate a valid
Stateless Reset Token.  The connection ID comes from the packet that the
endpoint receives.</t>
          <t>This design relies on the peer always sending a connection ID in its packets so
that the endpoint can use the connection ID from a packet to reset the
connection.  An endpoint that uses this design MUST either use the same
connection ID length for all connections or encode the length of the connection
ID such that it can be recovered without state.  In addition, it cannot provide
a zero-length connection ID.</t>
          <t>Revealing the Stateless Reset Token allows any entity to terminate the
connection, so a value can only be used once.  This method for choosing the
Stateless Reset Token means that the combination of connection ID and static key
MUST NOT be used for another connection.  A denial of service attack is possible
if the same connection ID is used by instances that share a static key, or if an
attacker can cause a packet to be routed to an instance that has no state but
the same static key; see <xref target="reset-oracle" format="default"/>.  A connection ID from a connection
that is reset by revealing the Stateless Reset Token MUST NOT be reused for new
connections at nodes that share a static key.</t>
          <t>The same Stateless Reset Token MUST NOT be used for multiple connection IDs.
Endpoints are not required to compare new values against all previous values,
but a duplicate value MAY be treated as a connection error of type
PROTOCOL_VIOLATION.</t>
          <t>Note that Stateless Reset packets do not have any cryptographic protection.</t>
        </section>
        <section anchor="reset-looping" numbered="true" toc="default">
          <name>Looping</name>
          <t>The design of a Stateless Reset is such that without knowing the stateless reset
token it is indistinguishable from a valid packet.  For instance, if a server
sends a Stateless Reset to another server it might receive another Stateless
Reset in response, which could lead to an infinite exchange.</t>
          <t>An endpoint MUST ensure that every Stateless Reset that it sends is smaller than
the packet which triggered it, unless it maintains state sufficient to prevent
looping.  In the event of a loop, this results in packets eventually being too
small to trigger a response.</t>
          <t>An endpoint can remember the number of Stateless Reset packets that it has sent
and stop generating new Stateless Reset packets once a limit is reached.  Using
separate limits for different remote addresses will ensure that Stateless Reset
packets can be used to close connections when other peers or connections have
exhausted limits.</t>
          <t>Reducing the size of a Stateless Reset below 41 bytes means that the packet
could reveal to an observer that it is a Stateless Reset, depending upon the
length of the peer's connection IDs.  Conversely, refusing to send a Stateless
Reset in response to a small packet might result in Stateless Reset not being
useful in detecting cases of broken connections where only very small packets
are sent; such failures might only be detected by other means, such as timers.</t>
        </section>
      </section>
    </section>
    <section anchor="error-handling" numbered="true" toc="default">
      <name>Error Handling</name>
      <t>An endpoint that detects an error SHOULD signal the existence of that error to
its peer.  Both transport-level and application-level errors can affect an
entire connection; see <xref target="connection-errors" format="default"/>.  Only application-level
errors can be isolated to a single stream; see <xref target="stream-errors" format="default"/>.</t>
      <t>The most appropriate error code (<xref target="error-codes" format="default"/>) SHOULD be included in the
frame that signals the error.  Where this specification identifies error
conditions, it also identifies the error code that is used; though these are
worded as requirements, different implementation strategies might lead to
different errors being reported.  In particular, an endpoint MAY use any
applicable error code when it detects an error condition; a generic error code
(such as PROTOCOL_VIOLATION or INTERNAL_ERROR) can always be used in place of
specific error codes.</t>
      <t>A stateless reset (<xref target="stateless-reset" format="default"/>) is not suitable for any error that can
be signaled with a CONNECTION_CLOSE or RESET_STREAM frame.  A stateless reset
MUST NOT be used by an endpoint that has the state necessary to send a frame on
the connection.</t>
      <section anchor="connection-errors" numbered="true" toc="default">
        <name>Connection Errors</name>
        <t>Errors that result in the connection being unusable, such as an obvious
violation of protocol semantics or corruption of state that affects an entire
connection, MUST be signaled using a CONNECTION_CLOSE frame
(<xref target="frame-connection-close" format="default"/>). An endpoint MAY close the connection in this
manner even if the error only affects a single stream.</t>
        <t>Application protocols can signal application-specific protocol errors using the
application-specific variant of the CONNECTION_CLOSE frame.  Errors that are
specific to the transport, including all those described in this document, are
carried in the QUIC-specific variant of the CONNECTION_CLOSE frame.</t>
        <t>A CONNECTION_CLOSE frame could be sent in a packet that is lost.  An endpoint
SHOULD be prepared to retransmit a packet containing a CONNECTION_CLOSE frame if
it receives more packets on a terminated connection. Limiting the number of
retransmissions and the time over which this final packet is sent limits the
effort expended on terminated connections.</t>
        <t>An endpoint that chooses not to retransmit packets containing a CONNECTION_CLOSE
frame risks a peer missing the first such packet.  The only mechanism available
to an endpoint that continues to receive data for a terminated connection is to
use the stateless reset process (<xref target="stateless-reset" format="default"/>).</t>
      </section>
      <section anchor="stream-errors" numbered="true" toc="default">
        <name>Stream Errors</name>
        <t>If an application-level error affects a single stream, but otherwise leaves the
connection in a recoverable state, the endpoint can send a RESET_STREAM frame
(<xref target="frame-reset-stream" format="default"/>) with an appropriate error code to terminate just the
affected stream.</t>
        <t>Resetting a stream without the involvement of the application protocol could
cause the application protocol to enter an unrecoverable state.  RESET_STREAM
MUST only be instigated by the application protocol that uses QUIC.</t>
        <t>The semantics of the application error code carried in RESET_STREAM are
defined by the application protocol.  Only the application protocol is able to
cause a stream to be terminated.  A local instance of the application protocol
uses a direct API call and a remote instance uses the STOP_SENDING frame, which
triggers an automatic RESET_STREAM.</t>
        <t>Application protocols SHOULD define rules for handling streams that are
prematurely cancelled by either endpoint.</t>
      </section>
    </section>
    <section anchor="packets-frames" numbered="true" toc="default">
      <name>Packets and Frames</name>
      <t>QUIC endpoints communicate by exchanging packets. Packets have confidentiality
and integrity protection; see <xref target="packet-protected" format="default"/>. Packets are carried in UDP
datagrams; see <xref target="packet-coalesce" format="default"/>.</t>
      <t>This version of QUIC uses the long packet header during connection
establishment; see <xref target="long-header" format="default"/>.  Packets with the long header are Initial
(<xref target="packet-initial" format="default"/>), 0-RTT (<xref target="packet-0rtt" format="default"/>), Handshake (<xref target="packet-handshake" format="default"/>),
and Retry (<xref target="packet-retry" format="default"/>).  Version negotiation uses a version-independent
packet with a long header; see <xref target="packet-version" format="default"/>.</t>
      <t>Packets with the short header are designed for minimal overhead and are used
after a connection is established and 1-RTT keys are available; see
<xref target="short-header" format="default"/>.</t>
      <section anchor="packet-protected" numbered="true" toc="default">
        <name>Protected Packets</name>
        <t>All QUIC packets except Version Negotiation packets use authenticated
encryption with additional data (AEAD) <xref target="RFC5116" format="default"/> to provide confidentiality
and integrity protection.  Retry packets use AEAD to provide integrity
protection.  Details of packet protection are found in <xref target="QUIC-TLS" format="default"/>; this
section includes an overview of the process.</t>
        <t>Initial packets are protected using keys that are statically derived. This
packet protection is not effective confidentiality protection.  Initial
protection only exists to ensure that the sender of the packet is on the network
path. Any entity that receives the Initial packet from a client can recover the
keys necessary to remove packet protection or to generate packets that will be
successfully authenticated.</t>
        <t>All other packets are protected with keys derived from the cryptographic
handshake. The type of the packet from the long header or key phase from the
short header are used to identify which encryption keys are used. Packets
protected with 0-RTT and 1-RTT keys are expected to have confidentiality and
data origin authentication; the cryptographic handshake ensures that only the
communicating endpoints receive the corresponding keys.</t>
        <t>The packet number field contains a packet number, which has additional
confidentiality protection that is applied after packet protection is applied;
see <xref target="QUIC-TLS" format="default"/> for details.  The underlying packet number increases with each
packet sent in a given packet number space; see <xref target="packet-numbers" format="default"/> for details.</t>
      </section>
      <section anchor="packet-coalesce" numbered="true" toc="default">
        <name>Coalescing Packets</name>
        <t>Initial (<xref target="packet-initial" format="default"/>), 0-RTT (<xref target="packet-0rtt" format="default"/>), and Handshake
(<xref target="packet-handshake" format="default"/>) packets contain a Length field, which determines the end
of the packet.  The length includes both the Packet Number and Payload
fields, both of which are confidentiality protected and initially of unknown
length. The length of the Payload field is learned once header protection is
removed.</t>
        <t>Using the Length field, a sender can coalesce multiple QUIC packets into one UDP
datagram.  This can reduce the number of UDP datagrams needed to complete the
cryptographic handshake and start sending data.  This can also be used to
construct PMTU probes; see <xref target="pmtu-probes-src-cid" format="default"/>.  Receivers MUST be able to
process coalesced packets.</t>
        <t>Coalescing packets in order of increasing encryption levels (Initial, 0-RTT,
Handshake, 1-RTT; see Section 4.1.4 of <xref target="QUIC-TLS" format="default"/>) makes it more likely the
receiver will be able to process all the packets in a single pass. A packet
with a short header does not include a length, so it can only be the last
packet included in a UDP datagram. An endpoint SHOULD NOT coalesce multiple
packets at the same encryption level.</t>
        <t>Senders MUST NOT coalesce QUIC packets for different connections into a single
UDP datagram. Receivers SHOULD ignore any subsequent packets with a different
Destination Connection ID than the first packet in the datagram.</t>
        <t>Every QUIC packet that is coalesced into a single UDP datagram is separate and
complete.  The receiver of coalesced QUIC packets MUST individually process each
QUIC packet and separately acknowledge them, as if they were received as the
payload of different UDP datagrams.  For example, if decryption fails (because
the keys are not available or any other reason), the receiver MAY either discard
or buffer the packet for later processing and MUST attempt to process the
remaining packets.</t>
        <t>Retry packets (<xref target="packet-retry" format="default"/>), Version Negotiation packets
(<xref target="packet-version" format="default"/>), and packets with a short header (<xref target="short-header" format="default"/>) do not
contain a Length field and so cannot be followed by other packets in the same
UDP datagram.  Note also that there is no situation where a Retry or Version
Negotiation packet is coalesced with another packet.</t>
      </section>
      <section anchor="packet-numbers" numbered="true" toc="default">
        <name>Packet Numbers</name>
        <t>The packet number is an integer in the range 0 to 2^62-1.  This number is used
in determining the cryptographic nonce for packet protection.  Each endpoint
maintains a separate packet number for sending and receiving.</t>
        <t>Packet numbers are limited to this range because they need to be representable
in whole in the Largest Acknowledged field of an ACK frame (<xref target="frame-ack" format="default"/>).
When present in a long or short header however, packet numbers are reduced and
encoded in 1 to 4 bytes; see <xref target="packet-encoding" format="default"/>.</t>
        <t>Version Negotiation (<xref target="packet-version" format="default"/>) and Retry (<xref target="packet-retry" format="default"/>) packets
do not include a packet number.</t>
        <t>Packet numbers are divided into 3 spaces in QUIC:</t>
        <ul spacing="normal">
          <li>Initial space: All Initial packets (<xref target="packet-initial" format="default"/>) are in this space.</li>
          <li>Handshake space: All Handshake packets (<xref target="packet-handshake" format="default"/>) are in this
space.</li>
          <li>Application data space: All 0-RTT and 1-RTT encrypted packets
(<xref target="packet-protected" format="default"/>) are in this space.</li>
        </ul>
        <t>As described in <xref target="QUIC-TLS" format="default"/>, each packet type uses different protection keys.</t>
        <t>Conceptually, a packet number space is the context in which a packet can be
processed and acknowledged.  Initial packets can only be sent with Initial
packet protection keys and acknowledged in packets which are also Initial
packets.  Similarly, Handshake packets are sent at the Handshake encryption
level and can only be acknowledged in Handshake packets.</t>
        <t>This enforces cryptographic separation between the data sent in the different
packet sequence number spaces.  Packet numbers in each space start at packet
number 0.  Subsequent packets sent in the same packet number space MUST increase
the packet number by at least one.</t>
        <t>0-RTT and 1-RTT data exist in the same packet number space to make loss recovery
algorithms easier to implement between the two packet types.</t>
        <t>A QUIC endpoint MUST NOT reuse a packet number within the same packet number
space in one connection.  If the packet number for sending reaches 2^62 - 1, the
sender MUST close the connection without sending a CONNECTION_CLOSE frame or any
further packets; an endpoint MAY send a Stateless Reset (<xref target="stateless-reset" format="default"/>) in
response to further packets that it receives.</t>
        <t>A receiver MUST discard a newly unprotected packet unless it is certain that it
has not processed another packet with the same packet number from the same
packet number space. Duplicate suppression MUST happen after removing packet
protection for the reasons described in Section 9.3 of <xref target="QUIC-TLS" format="default"/>. An
efficient algorithm for duplicate suppression can be found in Section 3.4.3 of
<xref target="RFC4303" format="default"/>.</t>
        <t>Packet number encoding at a sender and decoding at a receiver are described in
<xref target="packet-encoding" format="default"/>.</t>
      </section>
      <section anchor="frames" numbered="true" toc="default">
        <name>Frames and Frame Types</name>
        <t>The payload of QUIC packets, after removing packet protection, consists of a
sequence of complete frames, as shown in <xref target="packet-frames" format="default"/>.  Version
Negotiation, Stateless Reset, and Retry packets do not contain frames.</t>
        <figure anchor="packet-frames">
          <name>QUIC Payload</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Packet Payload {
  Frame (..) ...,
}
]]></artwork>
        </figure>
        <t>The payload of a packet that contains frames MUST contain at least one frame,
and MAY contain multiple frames and multiple frame types.  Frames always fit
within a single QUIC packet and cannot span multiple packets.</t>
        <t>Each frame begins with a Frame Type, indicating its type, followed by
additional type-dependent fields:</t>
        <figure anchor="frame-layout">
          <name>Generic Frame Layout</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Frame {
  Frame Type (i),
  Type-Dependent Fields (..),
}
]]></artwork>
        </figure>
        <t>The frame types defined in this specification are listed in <xref target="frame-types" format="default"/>.
The Frame Type in ACK, STREAM, MAX_STREAMS, STREAMS_BLOCKED, and
CONNECTION_CLOSE frames is used to carry other frame-specific flags. For all
other frames, the Frame Type field simply identifies the frame.  These
frames are explained in more detail in <xref target="frame-formats" format="default"/>.</t>
        <table anchor="frame-types" align="center">
          <name>Frame Types</name>
          <thead>
            <tr>
              <th align="left">Type Value</th>
              <th align="left">Frame Type Name</th>
              <th align="left">Definition</th>
              <th align="left">Packets</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">PADDING</td>
              <td align="left">
                <xref target="frame-padding" format="default"/></td>
              <td align="left">IH01</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">PING</td>
              <td align="left">
                <xref target="frame-ping" format="default"/></td>
              <td align="left">IH01</td>
            </tr>
            <tr>
              <td align="left">0x02 - 0x03</td>
              <td align="left">ACK</td>
              <td align="left">
                <xref target="frame-ack" format="default"/></td>
              <td align="left">IH_1</td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">RESET_STREAM</td>
              <td align="left">
                <xref target="frame-reset-stream" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">STOP_SENDING</td>
              <td align="left">
                <xref target="frame-stop-sending" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">CRYPTO</td>
              <td align="left">
                <xref target="frame-crypto" format="default"/></td>
              <td align="left">IH_1</td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">NEW_TOKEN</td>
              <td align="left">
                <xref target="frame-new-token" format="default"/></td>
              <td align="left">___1</td>
            </tr>
            <tr>
              <td align="left">0x08 - 0x0f</td>
              <td align="left">STREAM</td>
              <td align="left">
                <xref target="frame-stream" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x10</td>
              <td align="left">MAX_DATA</td>
              <td align="left">
                <xref target="frame-max-data" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x11</td>
              <td align="left">MAX_STREAM_DATA</td>
              <td align="left">
                <xref target="frame-max-stream-data" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x12 - 0x13</td>
              <td align="left">MAX_STREAMS</td>
              <td align="left">
                <xref target="frame-max-streams" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x14</td>
              <td align="left">DATA_BLOCKED</td>
              <td align="left">
                <xref target="frame-data-blocked" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x15</td>
              <td align="left">STREAM_DATA_BLOCKED</td>
              <td align="left">
                <xref target="frame-stream-data-blocked" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x16 - 0x17</td>
              <td align="left">STREAMS_BLOCKED</td>
              <td align="left">
                <xref target="frame-streams-blocked" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x18</td>
              <td align="left">NEW_CONNECTION_ID</td>
              <td align="left">
                <xref target="frame-new-connection-id" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x19</td>
              <td align="left">RETIRE_CONNECTION_ID</td>
              <td align="left">
                <xref target="frame-retire-connection-id" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x1a</td>
              <td align="left">PATH_CHALLENGE</td>
              <td align="left">
                <xref target="frame-path-challenge" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x1b</td>
              <td align="left">PATH_RESPONSE</td>
              <td align="left">
                <xref target="frame-path-response" format="default"/></td>
              <td align="left">__01</td>
            </tr>
            <tr>
              <td align="left">0x1c - 0x1d</td>
              <td align="left">CONNECTION_CLOSE</td>
              <td align="left">
                <xref target="frame-connection-close" format="default"/></td>
              <td align="left">ih01</td>
            </tr>
            <tr>
              <td align="left">0x1e</td>
              <td align="left">HANDSHAKE_DONE</td>
              <td align="left">
                <xref target="frame-handshake-done" format="default"/></td>
              <td align="left">___1</td>
            </tr>
          </tbody>
        </table>
        <t>The "Packets" column in <xref target="frame-types" format="default"/> does not form part of the IANA registry;
see <xref target="iana-frames" format="default"/>.  This column lists the types of packets that each frame
type could appear in, indicated by the following characters:</t>
        <dl newline="false" spacing="normal">
          <dt>I:</dt>
          <dd>
  Initial (<xref target="packet-initial" format="default"/>)</dd>
          <dt>H:</dt>
          <dd>
  Handshake (<xref target="packet-handshake" format="default"/>)</dd>
          <dt>0:</dt>
          <dd>
  0-RTT (<xref target="packet-0rtt" format="default"/>)</dd>
          <dt>1:</dt>
          <dd>
  1-RTT (<xref target="short-header" format="default"/>)</dd>
          <dt>ih:</dt>
          <dd>
  A CONNECTION_CLOSE frame of type 0x1d cannot appear in Initial or Handshake
packets.</dd>
        </dl>
        <t>Section 4 of <xref target="QUIC-TLS" format="default"/> provides more detail about these restrictions.  Note
that all frames can appear in 1-RTT packets.</t>
        <t>An endpoint MUST treat the receipt of a frame of unknown type as a connection
error of type FRAME_ENCODING_ERROR.</t>
        <t>All QUIC frames are idempotent in this version of QUIC.  That is, a valid
frame does not cause undesirable side effects or errors when received more
than once.</t>
        <t>The Frame Type field uses a variable length integer encoding (see
<xref target="integer-encoding" format="default"/>) with one exception.  To ensure simple and efficient
implementations of frame parsing, a frame type MUST use the shortest possible
encoding.  For frame types defined in this document, this means a single-byte
encoding, even though it is possible to encode these values as a two-, four-
or eight-byte variable length integer.  For instance, though 0x4001 is
a legitimate two-byte encoding for a variable-length integer with a value
of 1, PING frames are always encoded as a single byte with the value 0x01.
This rule applies to all current and future QUIC frame types.  An endpoint
MAY treat the receipt of a frame type that uses a longer encoding than
necessary as a connection error of type PROTOCOL_VIOLATION.</t>
      </section>
    </section>
    <section anchor="packetization" numbered="true" toc="default">
      <name>Packetization and Reliability</name>
      <t>A sender bundles one or more frames in a QUIC packet; see <xref target="frames" format="default"/>.</t>
      <t>A sender can minimize per-packet bandwidth and computational costs by bundling
as many frames as possible within a QUIC packet.  A sender MAY wait for a short
period of time to bundle multiple frames before sending a packet that is not
maximally packed, to avoid sending out large numbers of small packets.  An
implementation MAY use knowledge about application sending behavior or
heuristics to determine whether and for how long to wait.  This waiting period
is an implementation decision, and an implementation should be careful to delay
conservatively, since any delay is likely to increase application-visible
latency.</t>
      <t>Stream multiplexing is achieved by interleaving STREAM frames from multiple
streams into one or more QUIC packets.  A single QUIC packet can include
multiple STREAM frames from one or more streams.</t>
      <t>One of the benefits of QUIC is avoidance of head-of-line blocking across
multiple streams.  When a packet loss occurs, only streams with data in that
packet are blocked waiting for a retransmission to be received, while other
streams can continue making progress.  Note that when data from multiple streams
is bundled into a single QUIC packet, loss of that packet blocks all those
streams from making progress.  Implementations are advised to bundle as few
streams as necessary in outgoing packets without losing transmission efficiency
to underfilled packets.</t>
      <section anchor="processing" numbered="true" toc="default">
        <name>Packet Processing</name>
        <t>A packet MUST NOT be acknowledged until packet protection has been successfully
removed and all frames contained in the packet have been processed.  For STREAM
frames, this means the data has been enqueued in preparation to be received by
the application protocol, but it does not require that data is delivered and
consumed.</t>
        <t>Once the packet has been fully processed, a receiver acknowledges receipt by
sending one or more ACK frames containing the packet number of the received
packet.</t>
      </section>
      <section anchor="generating-acks" numbered="true" toc="default">
        <name>Generating Acknowledgements</name>
        <t>Endpoints acknowledge all packets they receive and process. However, only
ack-eliciting packets cause an ACK frame to be sent within the maximum ack
delay.  Packets that are not ack-eliciting are only acknowledged when an ACK
frame is sent for other reasons.</t>
        <t>When sending a packet for any reason, an endpoint SHOULD attempt to bundle an
ACK frame if one has not been sent recently. Doing so helps with timely loss
detection at the peer.</t>
        <t>In general, frequent feedback from a receiver improves loss and congestion
response, but this has to be balanced against excessive load generated by a
receiver that sends an ACK frame in response to every ack-eliciting packet.  The
guidance offered below seeks to strike this balance.</t>
        <section anchor="sending-acknowledgements" numbered="true" toc="default">
          <name>Sending ACK Frames</name>
          <t>Every packet SHOULD be acknowledged at least once, and ack-eliciting packets
MUST be acknowledged at least once within the maximum ack delay. An endpoint
communicates its maximum delay using the max_ack_delay transport parameter;
see <xref target="transport-parameter-definitions" format="default"/>.  max_ack_delay declares an explicit
contract: an endpoint promises to never intentionally delay acknowledgments
of an ack-eliciting packet by more than the indicated value. If it does,
any excess accrues to the RTT estimate and could result in spurious or
delayed retransmissions from the peer. For Initial and Handshake packets,
a max_ack_delay of 0 is used. The sender uses the receiver's max_ack_delay
value in determining timeouts for timer-based retransmission, as detailed in
Section 5.2.1 of <xref target="QUIC-RECOVERY" format="default"/>.</t>
          <t>An ACK frame SHOULD be generated for at least every second ack-eliciting packet.
This recommendation is in keeping with standard practice for TCP <xref target="RFC5681" format="default"/>.
A receiver could decide to send an ACK frame less frequently if it has
information about how frequently the sender's congestion controller
needs feedback, or if the receiver is CPU or bandwidth constrained.</t>
          <t>In order to assist loss detection at the sender, an endpoint SHOULD send an ACK
frame immediately on receiving an ack-eliciting packet that is out of order. The
endpoint SHOULD NOT continue sending ACK frames immediately unless more
ack-eliciting packets are received out of order.  If every subsequent
ack-eliciting packet arrives out of order, then an ACK frame SHOULD be sent
immediately for every received ack-eliciting packet.</t>
          <t>Similarly, packets marked with the ECN Congestion Experienced (CE) codepoint in
the IP header SHOULD be acknowledged immediately, to reduce the peer's response
time to congestion events.</t>
          <t>As an optimization, a receiver MAY process multiple packets before sending any
ACK frames in response.  In this case the receiver can determine whether an
immediate or delayed acknowledgement should be generated after processing
incoming packets.</t>
          <t>Packets containing PADDING frames are considered to be in flight for congestion
control purposes <xref target="QUIC-RECOVERY" format="default"/>. Sending only PADDING frames might cause the
sender to become limited by the congestion controller with no acknowledgments
forthcoming from the receiver. Therefore, a sender SHOULD ensure that other
frames are sent in addition to PADDING frames to elicit acknowledgments from
the receiver.</t>
          <t>An endpoint that is only sending ACK frames will not receive acknowledgments
from its peer unless those acknowledgements are included in packets with
ack-eliciting frames.  An endpoint SHOULD bundle ACK frames with other frames
when there are new ack-eliciting packets to acknowledge.  When only
non-ack-eliciting packets need to be acknowledged, an endpoint MAY wait until an
ack-eliciting packet has been received to bundle an ACK frame with outgoing
frames.</t>
          <t>The algorithms in <xref target="QUIC-RECOVERY" format="default"/> are resilient to receivers that do not
follow guidance offered above. However, an implementor should only deviate from
these requirements after careful consideration of the performance implications
of doing so.</t>
          <t>Packets containing only ACK frames are not congestion controlled, so there are
limits on how frequently they can be sent.  An endpoint MUST NOT send more than
one ACK-frame-only packet in response to receiving an ack-eliciting packet.  An
endpoint MUST NOT send a non-ack-eliciting packet in response to a
non-ack-eliciting packet, even if there are packet gaps which precede the
received packet. Limiting ACK frames avoids an infinite feedback loop of
acknowledgements, which could prevent the connection from ever becoming idle.
However, the endpoint acknowledges non-ACK-eliciting packets when it sends an
ACK frame.</t>
          <t>An endpoint SHOULD treat receipt of an acknowledgment for a packet it did not
send as a connection error of type PROTOCOL_VIOLATION, if it is able to detect
the condition.</t>
        </section>
        <section anchor="managing-ack-ranges" numbered="true" toc="default">
          <name>Managing ACK Ranges</name>
          <t>When an ACK frame is sent, one or more ranges of acknowledged packets are
included.  Including older packets reduces the chance of spurious retransmits
caused by losing previously sent ACK frames, at the cost of larger ACK frames.</t>
          <t>ACK frames SHOULD always acknowledge the most recently received packets, and the
more out-of-order the packets are, the more important it is to send an updated
ACK frame quickly, to prevent the peer from declaring a packet as lost and
spuriously retransmitting the frames it contains.  An ACK frame is expected
to fit within a single QUIC packet.  If it does not, then older ranges
(those with the smallest packet numbers) are omitted.</t>
          <t><xref target="ack-tracking" format="default"/> and <xref target="ack-limiting" format="default"/> describe an exemplary approach for
determining what packets to acknowledge in each ACK frame.  Though the goal of
these algorithms is to generate an acknowledgment for every packet that is
processed, it is still possible for acknowledgments to be lost.  A sender cannot
expect to receive an acknowledgment for every packet that the receiver
processes.</t>
        </section>
        <section anchor="ack-tracking" numbered="true" toc="default">
          <name>Receiver Tracking of ACK Frames</name>
          <t>When a packet containing an ACK frame is sent, the largest acknowledged in that
frame may be saved.  When a packet containing an ACK frame is acknowledged, the
receiver can stop acknowledging packets less than or equal to the largest
acknowledged in the sent ACK frame.</t>
          <t>In cases without ACK frame loss, this algorithm allows for a minimum of 1 RTT
of reordering. In cases with ACK frame loss and reordering, this approach does
not guarantee that every acknowledgement is seen by the sender before it is no
longer included in the ACK frame. Packets could be received out of order and
all subsequent ACK frames containing them could be lost. In this case, the
loss recovery algorithm could cause spurious retransmits, but the sender will
continue making forward progress.</t>
        </section>
        <section anchor="ack-limiting" numbered="true" toc="default">
          <name>Limiting ACK Ranges</name>
          <t>A receiver limits the number of ACK Ranges (<xref target="ack-ranges" format="default"/>) it remembers and
sends in ACK frames, both to limit the size of ACK frames and to avoid resource
exhaustion. After receiving acknowledgments for an ACK frame, the receiver
SHOULD stop tracking those acknowledged ACK Ranges.</t>
          <t>It is possible that retaining many ACK Ranges could cause an ACK frame to become
too large. A receiver can discard unacknowledged ACK Ranges to limit ACK frame
size, at the cost of increased retransmissions from the sender. This is
necessary if an ACK frame would be too large to fit in a packet, however
receivers MAY also limit ACK frame size further to preserve space for other
frames.</t>
          <t>A receiver MUST retain an ACK Range unless it can ensure that it will not
subsequently accept packets with numbers in that range. Maintaining a minimum
packet number that increases as ranges are discarded is one way to achieve this
with minimal state.</t>
          <t>Receivers can discard all ACK Ranges, but they MUST retain the largest packet
number that has been successfully processed as that is used to recover packet
numbers from subsequent packets; see <xref target="packet-encoding" format="default"/>.</t>
          <t>A receiver SHOULD include an ACK Range containing the largest received packet
number in every ACK frame. The Largest Acknowledged field is used in ECN
validation at a sender and including a lower value than what was included in a
previous ACK frame could cause ECN to be unnecessarily disabled; see
<xref target="ecn-validation" format="default"/>.</t>
          <t>A receiver that sends only non-ack-eliciting packets, such as ACK frames, might
not receive an acknowledgement for a long period of time.  This could cause the
receiver to maintain state for a large number of ACK frames for a long period of
time, and ACK frames it sends could be unnecessarily large.  In such a case, a
receiver could bundle a PING or other small ack-eliciting frame occasionally,
such as once per round trip, to elicit an ACK from the peer.</t>
          <t>A receiver MUST NOT bundle an ack-eliciting frame with all packets that would
otherwise be non-ack-eliciting, to avoid an infinite feedback loop of
acknowledgements.</t>
        </section>
        <section anchor="host-delay" numbered="true" toc="default">
          <name>Measuring and Reporting Host Delay</name>
          <t>An endpoint measures the delays intentionally introduced between the time the
packet with the largest packet number is received and the time an acknowledgment
is sent.  The endpoint encodes this delay in the Ack Delay field of an ACK
frame; see <xref target="frame-ack" format="default"/>.  This allows the receiver of the ACK to adjust for any
intentional delays, which is important for getting a better estimate of the path
RTT when acknowledgments are delayed.  A packet might be held in the OS kernel
or elsewhere on the host before being processed.  An endpoint MUST NOT include
delays that it does not control when populating the Ack Delay field in an ACK
frame.</t>
        </section>
        <section anchor="ack-frames-and-packet-protection" numbered="true" toc="default">
          <name>ACK Frames and Packet Protection</name>
          <t>ACK frames MUST only be carried in a packet that has the same packet number
space as the packet being ACKed; see <xref target="packet-protected" format="default"/>.  For instance,
packets that are protected with 1-RTT keys MUST be acknowledged in packets that
are also protected with 1-RTT keys.</t>
          <t>Packets that a client sends with 0-RTT packet protection MUST be acknowledged by
the server in packets protected by 1-RTT keys.  This can mean that the client is
unable to use these acknowledgments if the server cryptographic handshake
messages are delayed or lost.  Note that the same limitation applies to other
data sent by the server protected by the 1-RTT keys.</t>
        </section>
      </section>
      <section anchor="retransmission-of-information" numbered="true" toc="default">
        <name>Retransmission of Information</name>
        <t>QUIC packets that are determined to be lost are not retransmitted whole. The
same applies to the frames that are contained within lost packets. Instead, the
information that might be carried in frames is sent again in new frames as
needed.</t>
        <t>New frames and packets are used to carry information that is determined to have
been lost.  In general, information is sent again when a packet containing that
information is determined to be lost and sending ceases when a packet
containing that information is acknowledged.</t>
        <ul spacing="normal">
          <li>Data sent in CRYPTO frames is retransmitted according to the rules in
<xref target="QUIC-RECOVERY" format="default"/>, until all data has been acknowledged.  Data in CRYPTO
frames for Initial and Handshake packets is discarded when keys for the
corresponding packet number space are discarded.</li>
          <li>Application data sent in STREAM frames is retransmitted in new STREAM frames
unless the endpoint has sent a RESET_STREAM for that stream.  Once an endpoint
sends a RESET_STREAM frame, no further STREAM frames are needed.</li>
          <li>ACK frames carry the most recent set of acknowledgements and the Ack Delay
from the largest acknowledged packet, as described in
<xref target="sending-acknowledgements" format="default"/>. Delaying the transmission of packets
containing ACK frames or sending old ACK frames can cause the peer to
generate an inflated RTT sample or unnecessarily disable ECN.</li>
          <li>Cancellation of stream transmission, as carried in a RESET_STREAM frame, is
sent until acknowledged or until all stream data is acknowledged by the peer
(that is, either the "Reset Recvd" or "Data Recvd" state is reached on the
sending part of the stream). The content of a RESET_STREAM frame MUST NOT
change when it is sent again.</li>
          <li>Similarly, a request to cancel stream transmission, as encoded in a
STOP_SENDING frame, is sent until the receiving part of the stream enters
either a "Data Recvd" or "Reset Recvd" state; see
<xref target="solicited-state-transitions" format="default"/>.</li>
          <li>Connection close signals, including packets that contain CONNECTION_CLOSE
frames, are not sent again when packet loss is detected, but as described in
<xref target="termination" format="default"/>.</li>
          <li>The current connection maximum data is sent in MAX_DATA frames. An updated
value is sent in a MAX_DATA frame if the packet containing the most recently
sent MAX_DATA frame is declared lost, or when the endpoint decides to update
the limit.  Care is necessary to avoid sending this frame too often as the
limit can increase frequently and cause an unnecessarily large number of
MAX_DATA frames to be sent.</li>
          <li>The current maximum stream data offset is sent in MAX_STREAM_DATA frames.
Like MAX_DATA, an updated value is sent when the packet containing the most
recent MAX_STREAM_DATA frame for a stream is lost or when the limit is
updated, with care taken to prevent the frame from being sent too often. An
endpoint SHOULD stop sending MAX_STREAM_DATA frames when the receiving part of
the stream enters a "Size Known" state.</li>
          <li>The limit on streams of a given type is sent in MAX_STREAMS frames.  Like
MAX_DATA, an updated value is sent when a packet containing the most recent
MAX_STREAMS for a stream type frame is declared lost or when the limit is
updated, with care taken to prevent the frame from being sent too often.</li>
          <li>Blocked signals are carried in DATA_BLOCKED, STREAM_DATA_BLOCKED, and
STREAMS_BLOCKED frames. DATA_BLOCKED frames have connection scope,
STREAM_DATA_BLOCKED frames have stream scope, and STREAMS_BLOCKED frames are
scoped to a specific stream type. New frames are sent if packets containing
the most recent frame for a scope is lost, but only while the endpoint is
blocked on the corresponding limit. These frames always include the limit that
is causing blocking at the time that they are transmitted.</li>
          <li>A liveness or path validation check using PATH_CHALLENGE frames is sent
periodically until a matching PATH_RESPONSE frame is received or until there
is no remaining need for liveness or path validation checking. PATH_CHALLENGE
frames include a different payload each time they are sent.</li>
          <li>Responses to path validation using PATH_RESPONSE frames are sent just once.
The peer is expected to send more PATH_CHALLENGE frames as necessary to evoke
additional PATH_RESPONSE frames.</li>
          <li>New connection IDs are sent in NEW_CONNECTION_ID frames and retransmitted if
the packet containing them is lost.  Retransmissions of this frame carry the
same sequence number value.  Likewise, retired connection IDs are sent in
RETIRE_CONNECTION_ID frames and retransmitted if the packet containing them is
lost.</li>
          <li>NEW_TOKEN frames are retransmitted if the packet containing them is lost.  No
special support is made for detecting reordered and duplicated NEW_TOKEN
frames other than a direct comparison of the frame contents.</li>
          <li>PING and PADDING frames contain no information, so lost PING or PADDING frames
do not require repair.</li>
          <li>The HANDSHAKE_DONE frame MUST be retransmitted until it is acknowledged.</li>
        </ul>
        <t>Endpoints SHOULD prioritize retransmission of data over sending new data, unless
priorities specified by the application indicate otherwise; see
<xref target="stream-prioritization" format="default"/>.</t>
        <t>Even though a sender is encouraged to assemble frames containing up-to-date
information every time it sends a packet, it is not forbidden to retransmit
copies of frames from lost packets.  A sender that retransmits copies of frames
needs to handle decreases in available payload size due to change in packet
number length, connection ID length, and path MTU.  A receiver MUST accept
packets containing an outdated frame, such as a MAX_DATA frame carrying a
smaller maximum data than one found in an older packet.</t>
        <t>Upon detecting losses, a sender MUST take appropriate congestion control action.
The details of loss detection and congestion control are described in
<xref target="QUIC-RECOVERY" format="default"/>.</t>
      </section>
      <section anchor="ecn" numbered="true" toc="default">
        <name>Explicit Congestion Notification</name>
        <t>QUIC endpoints can use Explicit Congestion Notification (ECN) <xref target="RFC3168" format="default"/> to
detect and respond to network congestion.  ECN allows a network node to indicate
congestion in the network by setting a codepoint in the IP header of a packet
instead of dropping it.  Endpoints react to congestion by reducing their sending
rate in response, as described in <xref target="QUIC-RECOVERY" format="default"/>.</t>
        <t>To use ECN, QUIC endpoints first determine whether a path supports ECN marking
and the peer is able to access the ECN codepoint in the IP header.  A network
path does not support ECN if ECN marked packets get dropped or ECN markings are
rewritten on the path. An endpoint validates the use of ECN on the path, both
during connection establishment and when migrating to a new path
(<xref target="migration" format="default"/>).</t>
        <section anchor="ecn-counts" numbered="true" toc="default">
          <name>ECN Counts</name>
          <t>On receiving a QUIC packet with an ECT or CE codepoint, an ECN-enabled endpoint
that can access the ECN codepoints from the enclosing IP packet increases the
corresponding ECT(0), ECT(1), or CE count, and includes these counts in
subsequent ACK frames; see <xref target="generating-acks" format="default"/> and <xref target="frame-ack" format="default"/>.  Note that
this requires being able to read the ECN codepoints from the enclosing IP
packet, which is not possible on all platforms.</t>
          <t>A packet detected by a receiver as a duplicate does not affect the receiver's
local ECN codepoint counts; see (<xref target="security-ecn" format="default"/>) for relevant security
concerns.</t>
          <t>If an endpoint receives a QUIC packet without an ECT or CE codepoint in the IP
packet header, it responds per <xref target="generating-acks" format="default"/> with an ACK frame without
increasing any ECN counts.  If an endpoint does not implement ECN
support or does not have access to received ECN codepoints, it does not increase
ECN counts.</t>
          <t>Coalesced packets (see <xref target="packet-coalesce" format="default"/>) mean that several packets can share
the same IP header.  The ECN counter for the ECN codepoint received in the
associated IP header are incremented once for each QUIC packet, not per
enclosing IP packet or UDP datagram.</t>
          <t>Each packet number space maintains separate acknowledgement state and separate
ECN counts.  For example, if one each of an Initial, 0-RTT, Handshake, and 1-RTT
QUIC packet are coalesced, the corresponding counts for the Initial and
Handshake packet number space will be incremented by one and the counts for the
1-RTT packet number space will be increased by two.</t>
        </section>
        <section anchor="ecn-validation" numbered="true" toc="default">
          <name>ECN Validation</name>
          <t>It is possible for faulty network devices to corrupt or erroneously drop packets
with ECN markings.  To provide robust connectivity in the presence of such
devices, each endpoint independently validates ECN counts and disables ECN if
errors are detected.</t>
          <t>Endpoints validate ECN for packets sent on each network path independently.  An
endpoint thus validates ECN on new connection establishment, when switching to a
new server preferred address, and on active connection migration to a new path.
<xref target="ecn-alg" format="default"/> describes one possible algorithm for testing paths for ECN support.</t>
          <t>Even if an endpoint does not use ECN markings on packets it transmits, the
endpoint MUST provide feedback about ECN markings received from the peer if they
are accessible.  Failing to report ECN counts will cause the peer to disable ECN
marking.</t>
          <section anchor="sending-ecn-markings" numbered="true" toc="default">
            <name>Sending ECN Markings</name>
            <t>To start ECN validation, an endpoint SHOULD do the following when sending
packets on a new path to a peer:</t>
            <ul spacing="normal">
              <li>Set the ECT(0) codepoint in the IP header of early outgoing packets sent on a
new path to the peer <xref target="RFC8311" format="default"/>.</li>
              <li>If all packets that were sent with the ECT(0) codepoint are eventually deemed
lost <xref target="QUIC-RECOVERY" format="default"/>, validation is deemed to have failed.</li>
            </ul>
            <t>To reduce the chances of misinterpreting congestive loss as packets dropped by a
faulty network element, an endpoint could set the ECT(0) codepoint in the first
ten outgoing packets on a path, or for a period of three RTTs, whichever occurs
first.</t>
            <t>Implementations MAY experiment with and use other strategies for use of ECN.
Other methods of probing paths for ECN support are possible, as are different
marking strategies.  Implementations can also use the ECT(1) codepoint, as
specified in <xref target="RFC8311" format="default"/>.</t>
          </section>
          <section anchor="ecn-ack" numbered="true" toc="default">
            <name>Receiving ACK Frames</name>
            <t>An endpoint that sets ECT(0) or ECT(1) codepoints on packets it transmits MUST
use the following steps on receiving an ACK frame to validate ECN.</t>
            <ul spacing="normal">
              <li>If this ACK frame newly acknowledges a packet that the endpoint sent with
either ECT(0) or ECT(1) codepoints set, and if no ECN feedback is present in
the ACK frame, validation fails.  This step protects against both a network
element that zeroes out ECN bits and a peer that is unable to access ECN
markings, since the peer could respond without ECN feedback in these cases.</li>
              <li>For validation to succeed, the total increase in ECT(0), ECT(1), and CE counts
MUST be no smaller than the total number of QUIC packets sent with an ECT
codepoint that are newly acknowledged in this ACK frame.  This step detects
any network remarking from ECT(0), ECT(1), or CE codepoints to Not-ECT.</li>
              <li>Any increase in either ECT(0) or ECT(1) counts, plus any increase in the CE
count, MUST be no smaller than the number of packets sent with the
corresponding ECT codepoint that are newly acknowledged in this ACK frame.
This step detects any erroneous network remarking from ECT(0) to ECT(1) (or
vice versa).</li>
            </ul>
            <t>Processing ECN counts out of order can result in validation failure.  An
endpoint SHOULD NOT perform this validation if this ACK frame does not advance
the largest packet number acknowledged in this connection.</t>
            <t>An endpoint could miss acknowledgements for a packet when ACK frames are lost.
It is therefore possible for the total increase in ECT(0), ECT(1), and CE counts
to be greater than the number of packets acknowledged in an ACK frame.  When
this happens, and if validation succeeds, the local reference counts MUST be
increased to match the counts in the ACK frame.</t>
          </section>
          <section anchor="validation-outcomes" numbered="true" toc="default">
            <name>Validation Outcomes</name>
            <t>If validation fails, then the endpoint stops sending ECN markings in subsequent
IP packets with the expectation that either the network path or the peer does
not support ECN.</t>
            <t>Upon successful validation, an endpoint can continue to set ECT codepoints in
subsequent packets with the expectation that the path is ECN-capable.  Network
routing and path elements can change mid-connection however; an endpoint MUST
disable ECN if validation fails at any point in the connection.</t>
            <t>Even if validation fails, an endpoint MAY revalidate ECN on the same path at any
later time in the connection.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="packet-size" numbered="true" toc="default">
      <name>Packet Size</name>
      <t>The QUIC packet size includes the QUIC header and protected payload, but not the
UDP or IP header.</t>
      <t>A client MUST expand the payload of all UDP datagrams carrying Initial packets
to at least 1200 bytes, by adding PADDING frames to the Initial packet or by
coalescing the Initial packet; see <xref target="packet-coalesce" format="default"/>.  Sending a UDP datagram
of this size ensures that the network path from the client to the server
supports a reasonable Maximum Transmission Unit (MTU).  Padding datagrams also
helps reduce the amplitude of amplification attacks caused by server responses
toward an unverified client address; see <xref target="address-validation" format="default"/>.</t>
      <t>Enforcement of the max_udp_payload_size transport parameter
(<xref target="transport-parameter-definitions" format="default"/>) might act as an additional limit on
packet size. Exceeding this limit can be avoided once the value is known.
However, prior to learning the value of the transport parameter, endpoints risk
datagrams being lost if they send packets larger than 1200 bytes.</t>
      <t>Datagrams containing Initial packets MAY exceed 1200 bytes if the client
believes that the network path and peer both support the size that it chooses.</t>
      <t>UDP datagrams MUST NOT be fragmented at the IP layer.  In IPv4
<xref target="IPv4" format="default"/>, the DF bit MUST be set to prevent fragmentation on the path.</t>
      <t>A server MUST discard an Initial packet that is carried in a UDP datagram with
a payload that is less than 1200 bytes. A server MAY also immediately close the
connection by sending a CONNECTION_CLOSE frame with an error code of
PROTOCOL_VIOLATION; see <xref target="immediate-close-hs" format="default"/>.</t>
      <t>The server MUST also limit the number of bytes it sends before validating the
address of the client; see <xref target="address-validation" format="default"/>.</t>
      <section anchor="path-maximum-transmission-unit-pmtu" numbered="true" toc="default">
        <name>Path Maximum Transmission Unit (PMTU)</name>
        <t>The Path Maximum Transmission Unit (PMTU) is the maximum size of the entire IP
packet including the IP header, UDP header, and UDP payload.  The UDP payload
includes the QUIC packet header, protected payload, and any authentication
fields.  The PMTU can depend on path characteristics, and can therefore change
over time.  The largest UDP payload an endpoint sends at any given time is
referred to as the endpoint's maximum packet size.</t>
        <t>QUIC depends on a PMTU of at least 1280 bytes. This is the IPv6 minimum size
<xref target="RFC8200" format="default"/> and is also supported by most modern IPv4 networks.  All QUIC
packets (except for PMTU probe packets) SHOULD be sized to fit within the
maximum packet size to avoid the packet being fragmented or dropped
<xref target="RFC8085" format="default"/>.</t>
        <t>An endpoint SHOULD use Datagram Packetization Layer PMTU Discovery
(<xref target="DPLPMTUD" format="default"/>) or implement Path MTU Discovery
(PMTUD) <xref target="RFC1191" format="default"/> <xref target="RFC8201" format="default"/> to determine whether the path to a destination
will support a desired message size without fragmentation.</t>
        <t>In the absence of these mechanisms, QUIC endpoints SHOULD NOT send IP packets
larger than 1280 bytes. Assuming the minimum IP header size, this results in a
QUIC maximum packet size of 1232 bytes for IPv6 and 1252 bytes for IPv4. A QUIC
implementation MAY be more conservative in computing the QUIC maximum packet
size to allow for unknown tunnel overheads or IP header options/extensions.</t>
        <t>Each pair of local and remote addresses could have a different PMTU.  QUIC
implementations that implement any kind of PMTU discovery therefore SHOULD
maintain a maximum packet size for each combination of local and remote IP
addresses.</t>
        <t>If a QUIC endpoint determines that the PMTU between any pair of local and remote
IP addresses has fallen below the size needed to support the smallest allowed
maximum packet size, it MUST immediately cease sending QUIC packets, except for
PMTU probe packets, on the affected path.  An endpoint MAY terminate the
connection if an alternative path cannot be found.</t>
      </section>
      <section anchor="icmp-pmtud" numbered="true" toc="default">
        <name>ICMP Packet Too Big Messages</name>
        <t>PMTU discovery <xref target="RFC1191" format="default"/> <xref target="RFC8201" format="default"/> relies on reception of ICMP messages
(e.g., IPv6 Packet Too Big messages) that indicate when a packet is dropped
because it is larger than the local router MTU. DPLPMTUD can also optionally use
these messages.  This use of ICMP messages is potentially vulnerable to off-path
attacks that successfully guess the addresses used on the path and reduce the
PMTU to a bandwidth-inefficient value.</t>
        <t>An endpoint MUST ignore an ICMP message that claims the PMTU has decreased below
1280 bytes.</t>
        <t>The requirements for generating ICMP (<xref target="RFC1812" format="default"/>, <xref target="RFC4443" format="default"/>) state that the
quoted packet should contain as much of the original packet as possible without
exceeding the minimum MTU for the IP version.  The size of the quoted packet can
actually be smaller, or the information unintelligible, as described in Section
1.1 of <xref target="DPLPMTUD" format="default"/>.</t>
        <t>QUIC endpoints SHOULD validate ICMP messages to protect from off-path injection
as specified in <xref target="RFC8201" format="default"/> and Section 5.2 of <xref target="RFC8085" format="default"/>. This validation
SHOULD use the quoted packet supplied in the payload of an ICMP message to
associate the message with a corresponding transport connection <xref target="DPLPMTUD" format="default"/>.</t>
        <t>ICMP message validation MUST include matching IP addresses and UDP ports
<xref target="RFC8085" format="default"/> and, when possible, connection IDs to an active QUIC session.</t>
        <t>The endpoint SHOULD ignore all ICMP messages that fail validation.</t>
        <t>An endpoint MUST NOT increase PMTU based on ICMP messages; see Section 3, clause
6 of <xref target="DPLPMTUD" format="default"/>.  Any reduction in the QUIC maximum packet size in response
to ICMP messages MAY be provisional until QUIC's loss detection algorithm
determines that the quoted packet has actually been lost.</t>
      </section>
      <section anchor="datagram-packetization-layer-pmtu-discovery" numbered="true" toc="default">
        <name>Datagram Packetization Layer PMTU Discovery</name>
        <t>Section 6.3 of <xref target="DPLPMTUD" format="default"/> provides considerations for implementing Datagram
Packetization Layer PMTUD (DPLPMTUD) with QUIC.</t>
        <t>When implementing the algorithm in Section 5 of <xref target="DPLPMTUD" format="default"/>, the initial
value of BASE_PMTU SHOULD be consistent with the minimum QUIC packet size (1232
bytes for IPv6 and 1252 bytes for IPv4).</t>
        <t>PING and PADDING frames can be used to generate PMTU probe packets. These frames
might not be retransmitted if a probe packet containing them is lost.  However,
these frames do consume congestion window, which could delay the transmission of
subsequent application data.</t>
        <t>A PING frame can be included in a PMTU probe to ensure that a valid probe is
acknowledged.</t>
        <t>The considerations for processing ICMP messages in the previous section also
apply if these messages are used by DPLPMTUD.</t>
        <section anchor="pmtu-probes-src-cid" numbered="true" toc="default">
          <name>PMTU Probes Containing Source Connection ID</name>
          <t>Endpoints that rely on the destination connection ID for routing incoming QUIC
packets are likely to require that the connection ID be included in PMTU probe
packets to route any resulting ICMP messages (<xref target="icmp-pmtud" format="default"/>) back to the
correct endpoint.  However, only long header packets (<xref target="long-header" format="default"/>) contain
source connection IDs, and long header packets are not decrypted or acknowledged
by the peer once the handshake is complete.</t>
          <t>One way to construct a probe for the path MTU is to coalesce (see
<xref target="packet-coalesce" format="default"/>) a Handshake packet (<xref target="packet-handshake" format="default"/>) with a short
header packet in a single UDP datagram.  If the UDP datagram reaches the
endpoint, the Handshake packet will be ignored, but the short header packet will
be acknowledged.  If the UDP datagram causes an ICMP message to be sent, the
first part of the datagram will be quoted in that message.  If the source
connection ID is within the quoted portion of the UDP datagram, that could be
used for routing.</t>
        </section>
      </section>
    </section>
    <section anchor="versions" numbered="true" toc="default">
      <name>Versions</name>
      <t>QUIC versions are identified using a 32-bit unsigned number.</t>
      <t>The version 0x00000000 is reserved to represent version negotiation.  This
version of the specification is identified by the number 0x00000001.</t>
      <t>Other versions of QUIC might have different properties to this version.  The
properties of QUIC that are guaranteed to be consistent across all versions of
the protocol are described in <xref target="QUIC-INVARIANTS" format="default"/>.</t>
      <t>Version 0x00000001 of QUIC uses TLS as a cryptographic handshake protocol, as
described in <xref target="QUIC-TLS" format="default"/>.</t>
      <t>Versions with the most significant 16 bits of the version number cleared are
reserved for use in future IETF consensus documents.</t>
      <t>Versions that follow the pattern 0x?a?a?a?a are reserved for use in forcing
version negotiation to be exercised.  That is, any version number where the low
four bits of all bytes is 1010 (in binary).  A client or server MAY advertise
support for any of these reserved versions.</t>
      <t>Reserved version numbers will never represent a real protocol; a client MAY use
one of these version numbers with the expectation that the server will initiate
version negotiation; a server MAY advertise support for one of these versions
and can expect that clients ignore the value.</t>
      <t>[[RFC editor: please remove the remainder of this section before
publication.]]</t>
      <t>The version number for the final version of this specification (0x00000001), is
reserved for the version of the protocol that is published as an RFC.</t>
      <t>Version numbers used to identify IETF drafts are created by adding the draft
number to 0xff000000.  For example, draft-ietf-quic-transport-13 would be
identified as 0xff00000D.</t>
      <t>Implementors are encouraged to register version numbers of QUIC that they are
using for private experimentation on the GitHub wiki at
<eref target="https://github.com/quicwg/base-drafts/wiki/QUIC-Versions"/>.</t>
    </section>
    <section anchor="integer-encoding" numbered="true" toc="default">
      <name>Variable-Length Integer Encoding</name>
      <t>QUIC packets and frames commonly use a variable-length encoding for non-negative
integer values.  This encoding ensures that smaller integer values need fewer
bytes to encode.</t>
      <t>The QUIC variable-length integer encoding reserves the two most significant bits
of the first byte to encode the base 2 logarithm of the integer encoding length
in bytes.  The integer value is encoded on the remaining bits, in network byte
order.</t>
      <t>This means that integers are encoded on 1, 2, 4, or 8 bytes and can encode 6,
14, 30, or 62 bit values respectively.  <xref target="integer-summary" format="default"/> summarizes the
encoding properties.</t>
      <table anchor="integer-summary" align="center">
        <name>Summary of Integer Encodings</name>
        <thead>
          <tr>
            <th align="left">2Bit</th>
            <th align="left">Length</th>
            <th align="left">Usable Bits</th>
            <th align="left">Range</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">00</td>
            <td align="left">1</td>
            <td align="left">6</td>
            <td align="left">0-63</td>
          </tr>
          <tr>
            <td align="left">01</td>
            <td align="left">2</td>
            <td align="left">14</td>
            <td align="left">0-16383</td>
          </tr>
          <tr>
            <td align="left">10</td>
            <td align="left">4</td>
            <td align="left">30</td>
            <td align="left">0-1073741823</td>
          </tr>
          <tr>
            <td align="left">11</td>
            <td align="left">8</td>
            <td align="left">62</td>
            <td align="left">0-4611686018427387903</td>
          </tr>
        </tbody>
      </table>
      <t>For example, the eight byte sequence c2 19 7c 5e ff 14 e8 8c (in hexadecimal)
decodes to the decimal value 151288809941952652; the four byte sequence 9d 7f 3e
7d decodes to 494878333; the two byte sequence 7b bd decodes to 15293; and the
single byte 25 decodes to 37 (as does the two byte sequence 40 25).</t>
      <t>Error codes (<xref target="error-codes" format="default"/>) and versions (<xref target="versions" format="default"/>) are described using
integers, but do not use this encoding.</t>
    </section>
    <section anchor="packet-formats" numbered="true" toc="default">
      <name>Packet Formats</name>
      <t>All numeric values are encoded in network byte order (that is, big-endian) and
all field sizes are in bits.  Hexadecimal notation is used for describing the
value of fields.</t>
      <section anchor="packet-encoding" numbered="true" toc="default">
        <name>Packet Number Encoding and Decoding</name>
        <t>Packet numbers are integers in the range 0 to 2^62-1 (<xref target="packet-numbers" format="default"/>).  When
present in long or short packet headers, they are encoded in 1 to 4 bytes.  The
number of bits required to represent the packet number is reduced by including
the least significant bits of the packet number.</t>
        <t>The encoded packet number is protected as described in Section 5.4 of
<xref target="QUIC-TLS" format="default"/>.</t>
        <t>The sender MUST use a packet number size able to represent more than twice as
large a range than the difference between the largest acknowledged packet and
packet number being sent.  A peer receiving the packet will then correctly
decode the packet number, unless the packet is delayed in transit such that it
arrives after many higher-numbered packets have been received.  An endpoint
SHOULD use a large enough packet number encoding to allow the packet number to
be recovered even if the packet arrives after packets that are sent afterwards.</t>
        <t>As a result, the size of the packet number encoding is at least one bit more
than the base-2 logarithm of the number of contiguous unacknowledged packet
numbers, including the new packet.</t>
        <t>For example, if an endpoint has received an acknowledgment for packet 0xabe8bc,
sending a packet with a number of 0xac5c02 requires a packet number encoding
with 16 bits or more; whereas the 24-bit packet number encoding is needed to
send a packet with a number of 0xace8fe.</t>
        <t>At a receiver, protection of the packet number is removed prior to recovering
the full packet number. The full packet number is then reconstructed based on
the number of significant bits present, the value of those bits, and the largest
packet number received on a successfully authenticated packet. Recovering the
full packet number is necessary to successfully remove packet protection.</t>
        <t>Once header protection is removed, the packet number is decoded by finding the
packet number value that is closest to the next expected packet.  The next
expected packet is the highest received packet number plus one.  For example, if
the highest successfully authenticated packet had a packet number of 0xa82f30ea,
then a packet containing a 16-bit value of 0x9b32 will be decoded as 0xa82f9b32.
Example pseudo-code for packet number decoding can be found in
<xref target="sample-packet-number-decoding" format="default"/>.</t>
      </section>
      <section anchor="long-header" numbered="true" toc="default">
        <name>Long Header Packets</name>
        <figure anchor="fig-long-header">
          <name>Long Header Packet Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Long Header Packet {
  Header Form (1) = 1,
  Fixed Bit (1) = 1,
  Long Packet Type (2),
  Type-Specific Bits (4),
  Version (32),
  DCID Length (8),
  Destination Connection ID (0..160),
  SCID Length (8),
  Source Connection ID (0..160),
}
]]></artwork>
        </figure>
        <t>Long headers are used for packets that are sent prior to the establishment
of 1-RTT keys. Once 1-RTT keys are available,
a sender switches to sending packets using the short header
(<xref target="short-header" format="default"/>).  The long form allows for special packets - such as the
Version Negotiation packet - to be represented in this uniform fixed-length
packet format. Packets that use the long header contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Header Form:</dt>
          <dd>
  The most significant bit (0x80) of byte 0 (the first byte) is set to 1 for
long headers.</dd>
          <dt>Fixed Bit:</dt>
          <dd>
  The next bit (0x40) of byte 0 is set to 1.  Packets containing a zero value
for this bit are not valid packets in this version and MUST be discarded.</dd>
          <dt>Long Packet Type:</dt>
          <dd>
  The next two bits (those with a mask of 0x30) of byte 0 contain a packet type.
Packet types are listed in <xref target="long-packet-types" format="default"/>.</dd>
          <dt>Type-Specific Bits:</dt>
          <dd>
  The lower four bits (those with a mask of 0x0f) of byte 0 are type-specific.</dd>
          <dt>Version:</dt>
          <dd>
  The QUIC Version is a 32-bit field that follows the first byte.  This field
indicates which version of QUIC is in use and determines how the rest of the
protocol fields are interpreted.</dd>
          <dt>DCID Length:</dt>
          <dd>
  The byte following the version contains the length in bytes of the Destination
Connection ID field that follows it.  This length is encoded as an 8-bit
unsigned integer.  In QUIC version 1, this value MUST NOT exceed 20.
Endpoints that receive a version 1 long header with a value larger than
20 MUST drop the packet. Servers SHOULD be able to read longer connection IDs
from other QUIC versions in order to properly form a version negotiation
packet.</dd>
          <dt>Destination Connection ID:</dt>
          <dd>
  The Destination Connection ID field follows the DCID Length field and is
between 0 and 20 bytes in length. <xref target="negotiating-connection-ids" format="default"/> describes
the use of this field in more detail.</dd>
          <dt>SCID Length:</dt>
          <dd>
  The byte following the Destination Connection ID contains the length in bytes
of the Source Connection ID field that follows it.  This length is encoded as
a 8-bit unsigned integer.  In QUIC version 1, this value MUST NOT exceed 20
bytes. Endpoints that receive a version 1 long header with a value larger than
20 MUST drop the packet. Servers SHOULD be able to read longer connection IDs
from other QUIC versions in order to properly form a version negotiation
packet.</dd>
          <dt>Source Connection ID:</dt>
          <dd>
  The Source Connection ID field follows the SCID Length field and is between 0
and 20 bytes in length. <xref target="negotiating-connection-ids" format="default"/> describes the use of
this field in more detail.</dd>
        </dl>
        <t>In this version of QUIC, the following packet types with the long header are
defined:</t>
        <table anchor="long-packet-types" align="center">
          <name>Long Header Packet Types</name>
          <thead>
            <tr>
              <th align="right">Type</th>
              <th align="left">Name</th>
              <th align="left">Section</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0x0</td>
              <td align="left">Initial</td>
              <td align="left">
                <xref target="packet-initial" format="default"/></td>
            </tr>
            <tr>
              <td align="right">0x1</td>
              <td align="left">0-RTT</td>
              <td align="left">
                <xref target="packet-0rtt" format="default"/></td>
            </tr>
            <tr>
              <td align="right">0x2</td>
              <td align="left">Handshake</td>
              <td align="left">
                <xref target="packet-handshake" format="default"/></td>
            </tr>
            <tr>
              <td align="right">0x3</td>
              <td align="left">Retry</td>
              <td align="left">
                <xref target="packet-retry" format="default"/></td>
            </tr>
          </tbody>
        </table>
        <t>The header form bit, connection ID lengths byte, Destination and Source
Connection ID fields, and Version fields of a long header packet are
version-independent. The other fields in the first byte are version-specific.
See <xref target="QUIC-INVARIANTS" format="default"/> for details on how packets from different versions of
QUIC are interpreted.</t>
        <t>The interpretation of the fields and the payload are specific to a version and
packet type.  While type-specific semantics for this version are described in
the following sections, several long-header packets in this version of QUIC
contain these additional fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Reserved Bits:</dt>
          <dd>
  Two bits (those with a mask of 0x0c) of byte 0 are reserved across multiple
packet types.  These bits are protected using header protection; see Section
5.4 of <xref target="QUIC-TLS" format="default"/>. The value included prior to protection MUST be set to 0.
An endpoint MUST treat receipt of a packet that has a non-zero value for these
bits, after removing both packet and header protection, as a connection error
of type PROTOCOL_VIOLATION. Discarding such a packet after only removing
header protection can expose the endpoint to attacks; see Section 9.3 of
<xref target="QUIC-TLS" format="default"/>.</dd>
          <dt>Packet Number Length:</dt>
          <dd>
  In packet types which contain a Packet Number field, the least significant two
bits (those with a mask of 0x03) of byte 0 contain the length of the packet
number, encoded as an unsigned, two-bit integer that is one less than the
length of the packet number field in bytes.  That is, the length of the packet
number field is the value of this field, plus one.  These bits are protected
using header protection; see Section 5.4 of <xref target="QUIC-TLS" format="default"/>.</dd>
          <dt>Length:</dt>
          <dd>
  The length of the remainder of the packet (that is, the Packet Number and
Payload fields) in bytes, encoded as a variable-length integer
(<xref target="integer-encoding" format="default"/>).</dd>
          <dt>Packet Number:</dt>
          <dd>
  The packet number field is 1 to 4 bytes long. The packet number has
confidentiality protection separate from packet protection, as described in
Section 5.4 of <xref target="QUIC-TLS" format="default"/>. The length of the packet number field is encoded
in the Packet Number Length bits of byte 0; see above.</dd>
        </dl>
        <section anchor="packet-version" numbered="true" toc="default">
          <name>Version Negotiation Packet</name>
          <t>A Version Negotiation packet is inherently not version-specific. Upon receipt by
a client, it will be identified as a Version Negotiation packet based on the
Version field having a value of 0.</t>
          <t>The Version Negotiation packet is a response to a client packet that contains a
version that is not supported by the server, and is only sent by servers.</t>
          <t>The layout of a Version Negotiation packet is:</t>
          <figure anchor="version-negotiation-format">
            <name>Version Negotiation Packet</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
Version Negotiation Packet {
  Header Form (1) = 1,
  Unused (7),
  Version (32) = 0,
  DCID Length (8),
  Destination Connection ID (0..2040),
  SCID Length (8),
  Source Connection ID (0..2040),
  Supported Version (32) ...,
}
]]></artwork>
          </figure>
          <t>The value in the Unused field is selected randomly by the server.  Clients MUST
ignore the value of this field.  Servers SHOULD set the most significant bit of
this field (0x40) to 1 so that Version Negotiation packets appear to have the
Fixed Bit field.</t>
          <t>The Version field of a Version Negotiation packet MUST be set to 0x00000000.</t>
          <t>The server MUST include the value from the Source Connection ID field of the
packet it receives in the Destination Connection ID field.  The value for Source
Connection ID MUST be copied from the Destination Connection ID of the received
packet, which is initially randomly selected by a client.  Echoing both
connection IDs gives clients some assurance that the server received the packet
and that the Version Negotiation packet was not generated by an off-path
attacker.</t>
          <t>As future versions of QUIC may support Connection IDs larger than the version 1
limit, Version Negotiation packets could carry Connection IDs that are longer
than 20 bytes.</t>
          <t>The remainder of the Version Negotiation packet is a list of 32-bit versions
which the server supports.</t>
          <t>A Version Negotiation packet cannot be explicitly acknowledged in an ACK frame
by a client.  Receiving another Initial packet implicitly acknowledges a Version
Negotiation packet.</t>
          <t>The Version Negotiation packet does not include the Packet Number and Length
fields present in other packets that use the long header form.  Consequently,
a Version Negotiation packet consumes an entire UDP datagram.</t>
          <t>A server MUST NOT send more than one Version Negotiation packet in response to a
single UDP datagram.</t>
          <t>See <xref target="version-negotiation" format="default"/> for a description of the version negotiation
process.</t>
        </section>
        <section anchor="packet-initial" numbered="true" toc="default">
          <name>Initial Packet</name>
          <t>An Initial packet uses long headers with a type value of 0x0.  It carries the
first CRYPTO frames sent by the client and server to perform key exchange, and
carries ACKs in either direction.</t>
          <figure anchor="initial-format">
            <name>Initial Packet</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
Initial Packet {
  Header Form (1) = 1,
  Fixed Bit (1) = 1,
  Long Packet Type (2) = 0,
  Reserved Bits (2),
  Packet Number Length (2),
  Version (32),
  DCID Length (8),
  Destination Connection ID (0..160),
  SCID Length (8),
  Source Connection ID (0..160),
  Token Length (i),
  Token (..),
  Length (i),
  Packet Number (8..32),
  Packet Payload (..),
}
]]></artwork>
          </figure>
          <t>The Initial packet contains a long header as well as the Length and Packet
Number fields.  The first byte contains the Reserved and Packet Number Length
bits.  Between the SCID and Length fields, there are two additional
fields specific to the Initial packet.</t>
          <dl newline="false" spacing="normal">
            <dt>Token Length:</dt>
            <dd>
  A variable-length integer specifying the length of the Token field, in bytes.
This value is zero if no token is present.  Initial packets sent by the server
MUST set the Token Length field to zero; clients that receive an Initial
packet with a non-zero Token Length field MUST either discard the packet or
generate a connection error of type PROTOCOL_VIOLATION.</dd>
            <dt>Token:</dt>
            <dd>
  The value of the token that was previously provided in a Retry packet or
NEW_TOKEN frame.</dd>
            <dt>Packet Payload:</dt>
            <dd>
  The payload of the packet.</dd>
          </dl>
          <t>In order to prevent tampering by version-unaware middleboxes, Initial packets
are protected with connection- and version-specific keys (Initial keys) as
described in <xref target="QUIC-TLS" format="default"/>.  This protection does not provide confidentiality or
integrity against on-path attackers, but provides some level of protection
against off-path attackers.</t>
          <t>The client and server use the Initial packet type for any packet that contains
an initial cryptographic handshake message. This includes all cases where a new
packet containing the initial cryptographic message needs to be created, such as
the packets sent after receiving a Retry packet (<xref target="packet-retry" format="default"/>).</t>
          <t>A server sends its first Initial packet in response to a client Initial.  A
server may send multiple Initial packets.  The cryptographic key exchange could
require multiple round trips or retransmissions of this data.</t>
          <t>The payload of an Initial packet includes a CRYPTO frame (or frames) containing
a cryptographic handshake message, ACK frames, or both.  PING, PADDING, and
CONNECTION_CLOSE frames are also permitted.  An endpoint that receives an
Initial packet containing other frames can either discard the packet as spurious
or treat it as a connection error.</t>
          <t>The first packet sent by a client always includes a CRYPTO frame that contains
the start or all of the first cryptographic handshake message.  The first
CRYPTO frame sent always begins at an offset of 0; see <xref target="handshake" format="default"/>.</t>
          <t>Note that if the server sends a HelloRetryRequest, the client will send another
series of Initial packets.  These Initial packets will continue the
cryptographic handshake and will contain CRYPTO frames starting at an offset
matching the size of the CRYPTO frames sent in the first flight of Initial
packets.</t>
          <section anchor="discard-initial" numbered="true" toc="default">
            <name>Abandoning Initial Packets</name>
            <t>A client stops both sending and processing Initial packets when it sends its
first Handshake packet.  A server stops sending and processing Initial packets
when it receives its first Handshake packet.  Though packets might still be in
flight or awaiting acknowledgment, no further Initial packets need to be
exchanged beyond this point.  Initial packet protection keys are discarded (see
Section 4.10.1 of <xref target="QUIC-TLS" format="default"/>) along with any loss recovery and congestion
control state; see Section 6.5 of <xref target="QUIC-RECOVERY" format="default"/>.</t>
            <t>Any data in CRYPTO frames is discarded - and no longer retransmitted - when
Initial keys are discarded.</t>
          </section>
        </section>
        <section anchor="packet-0rtt" numbered="true" toc="default">
          <name>0-RTT</name>
          <t>A 0-RTT packet uses long headers with a type value of 0x1, followed by the
Length and Packet Number fields. The first byte contains the Reserved and Packet
Number Length bits.  It is used to carry "early" data from the client to the
server as part of the first flight, prior to handshake completion. As part of
the TLS handshake, the server can accept or reject this early data.</t>
          <t>See Section 2.3 of <xref target="TLS13" format="default"/> for a discussion of 0-RTT data and its
limitations.</t>
          <figure>
            <name>0-RTT Packet</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
0-RTT Packet {
  Header Form (1) = 1,
  Fixed Bit (1) = 1,
  Long Packet Type (2) = 1,
  Reserved Bits (2),
  Packet Number Length (2),
  Version (32),
  DCID Length (8),
  Destination Connection ID (0..160),
  SCID Length (8),
  Source Connection ID (0..160),
  Length (i),
  Packet Number (8..32),
  Packet Payload (..),
}
]]></artwork>
          </figure>
          <t>Packet numbers for 0-RTT protected packets use the same space as 1-RTT protected
packets.</t>
          <t>After a client receives a Retry packet, 0-RTT packets are likely to have been
lost or discarded by the server.  A client SHOULD attempt to resend data in
0-RTT packets after it sends a new Initial packet.</t>
          <t>A client MUST NOT reset the packet number it uses for 0-RTT packets, since the
keys used to protect 0-RTT packets will not change as a result of responding to
a Retry packet.  Sending packets with the same packet number in that case is
likely to compromise the packet protection for all 0-RTT packets because the
same key and nonce could be used to protect different content.</t>
          <t>A client only receives acknowledgments for its 0-RTT packets once the handshake
is complete.  Consequently, a server might expect 0-RTT packets to start with a
packet number of 0.  Therefore, in determining the length of the packet number
encoding for 0-RTT packets, a client MUST assume that all packets up to the
current packet number are in flight, starting from a packet number of 0.  Thus,
0-RTT packets could need to use a longer packet number encoding.</t>
          <t>A client MUST NOT send 0-RTT packets once it starts processing 1-RTT packets
from the server.  This means that 0-RTT packets cannot contain any response to
frames from 1-RTT packets.  For instance, a client cannot send an ACK frame in a
0-RTT packet, because that can only acknowledge a 1-RTT packet.  An
acknowledgment for a 1-RTT packet MUST be carried in a 1-RTT packet.</t>
          <t>A server SHOULD treat a violation of remembered limits as a connection error of
an appropriate type (for instance, a FLOW_CONTROL_ERROR for exceeding stream
data limits).</t>
        </section>
        <section anchor="packet-handshake" numbered="true" toc="default">
          <name>Handshake Packet</name>
          <t>A Handshake packet uses long headers with a type value of 0x2, followed by the
Length and Packet Number fields.  The first byte contains the Reserved and
Packet Number Length bits.  It is used to carry acknowledgments and
cryptographic handshake messages from the server and client.</t>
          <figure anchor="handshake-format">
            <name>Handshake Protected Packet</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
Handshake Packet {
  Header Form (1) = 1,
  Fixed Bit (1) = 1,
  Long Packet Type (2) = 2,
  Reserved Bits (2),
  Packet Number Length (2),
  Version (32),
  DCID Length (8),
  Destination Connection ID (0..160),
  SCID Length (8),
  Source Connection ID (0..160),
  Length (i),
  Packet Number (8..32),
  Packet Payload (..),
}
]]></artwork>
          </figure>
          <t>Once a client has received a Handshake packet from a server, it uses Handshake
packets to send subsequent cryptographic handshake messages and acknowledgments
to the server.</t>
          <t>The Destination Connection ID field in a Handshake packet contains a connection
ID that is chosen by the recipient of the packet; the Source Connection ID
includes the connection ID that the sender of the packet wishes to use; see
<xref target="negotiating-connection-ids" format="default"/>.</t>
          <t>Handshake packets are their own packet number space, and thus the first
Handshake packet sent by a server contains a packet number of 0.</t>
          <t>The payload of this packet contains CRYPTO frames and could contain PING,
PADDING, or ACK frames. Handshake packets MAY contain CONNECTION_CLOSE frames.
Endpoints MUST treat receipt of Handshake packets with other frames as a
connection error.</t>
          <t>Like Initial packets (see <xref target="discard-initial" format="default"/>), data in CRYPTO frames for
Handshake packets is discarded - and no longer retransmitted - when Handshake
protection keys are discarded.</t>
        </section>
        <section anchor="packet-retry" numbered="true" toc="default">
          <name>Retry Packet</name>
          <t>A Retry packet uses a long packet header with a type value of 0x3. It carries
an address validation token created by the server. It is used by a server that
wishes to perform a retry; see <xref target="validate-handshake" format="default"/>.</t>
          <figure anchor="retry-format">
            <name>Retry Packet</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
Retry Packet {
  Header Form (1) = 1,
  Fixed Bit (1) = 1,
  Long Packet Type (2) = 3,
  Unused (4),
  Version (32),
  DCID Length (8),
  Destination Connection ID (0..160),
  SCID Length (8),
  Source Connection ID (0..160),
  Retry Token (..),
  Retry Integrity Tag (128),
}
]]></artwork>
          </figure>
          <t>A Retry packet (shown in <xref target="retry-format" format="default"/>) does not contain any protected
fields. The value in the Unused field is selected randomly by the server. In
addition to the fields from the long header, it contains these additional
fields:</t>
          <dl newline="false" spacing="normal">
            <dt>Retry Token:</dt>
            <dd>
  An opaque token that the server can use to validate the client's address.</dd>
            <dt>Retry Integrity Tag:</dt>
            <dd>
  See the Retry Packet Integrity section of <xref target="QUIC-TLS" format="default"/>.</dd>
          </dl>
          <section anchor="sending-a-retry-packet" numbered="true" toc="default">
            <name>Sending a Retry Packet</name>
            <t>The server populates the Destination Connection ID with the connection ID that
the client included in the Source Connection ID of the Initial packet.</t>
            <t>The server includes a connection ID of its choice in the Source Connection ID
field.  This value MUST not be equal to the Destination Connection ID field of
the packet sent by the client.  A client MUST discard a Retry packet that
contains a Source Connection ID field that is identical to the Destination
Connection ID field of its Initial packet.  The client MUST use the value from
the Source Connection ID field of the Retry packet in the Destination Connection
ID field of subsequent packets that it sends.</t>
            <t>A server MAY send Retry packets in response to Initial and 0-RTT packets.  A
server can either discard or buffer 0-RTT packets that it receives.  A server
can send multiple Retry packets as it receives Initial or 0-RTT packets.  A
server MUST NOT send more than one Retry packet in response to a single UDP
datagram.</t>
          </section>
          <section anchor="handling-a-retry-packet" numbered="true" toc="default">
            <name>Handling a Retry Packet</name>
            <t>A client MUST accept and process at most one Retry packet for each connection
attempt.  After the client has received and processed an Initial or Retry packet
from the server, it MUST discard any subsequent Retry packets that it receives.</t>
            <t>Clients MUST discard Retry packets that have a Retry Integrity Tag that cannot
be validated, see the Retry Packet Integrity section of <xref target="QUIC-TLS" format="default"/>. This
diminishes an off-path attacker's ability to inject a Retry packet and protects
against accidental corruption of Retry packets.  A client MUST discard a Retry
packet with a zero-length Retry Token field.</t>
            <t>The client responds to a Retry packet with an Initial packet that includes the
provided Retry Token to continue connection establishment.</t>
            <t>A client sets the Destination Connection ID field of this Initial packet to the
value from the Source Connection ID in the Retry packet. Changing Destination
Connection ID also results in a change to the keys used to protect the Initial
packet. It also sets the Token field to the token provided in the Retry. The
client MUST NOT change the Source Connection ID because the server could include
the connection ID as part of its token validation logic; see
<xref target="token-integrity" format="default"/>.</t>
            <t>A Retry packet does not include a packet number and cannot be explicitly
acknowledged by a client.</t>
          </section>
          <section anchor="continuing-a-handshake-after-retry" numbered="true" toc="default">
            <name>Continuing a Handshake After Retry</name>
            <t>The next Initial packet from the client uses the connection ID and token values
from the Retry packet; see <xref target="negotiating-connection-ids" format="default"/>.  Aside from this,
the Initial packet sent by the client is subject to the same restrictions as the
first Initial packet.  A client MUST use the same cryptographic handshake
message it includes in this packet.  A server MAY treat a packet that
contains a different cryptographic handshake message as a connection error or
discard it.</t>
            <t>A client MAY attempt 0-RTT after receiving a Retry packet by sending 0-RTT
packets to the connection ID provided by the server.  A client MUST NOT change
the cryptographic handshake message it sends in response to receiving a Retry.</t>
            <t>A client MUST NOT reset the packet number for any packet number space after
processing a Retry packet; <xref target="packet-0rtt" format="default"/> contains more information on this.</t>
            <t>A server acknowledges the use of a Retry packet for a connection using the
retry_source_connection_id transport parameter; see
<xref target="transport-parameter-definitions" format="default"/>.  If the server sends a Retry packet, it
also subsequently includes the value of the Source Connection ID field from
the Retry packet in its retry_source_connection_id transport parameter.</t>
            <t>If the client received and processed a Retry packet, it MUST validate that the
retry_source_connection_id transport parameter is present and correct;
otherwise, it MUST validate that the transport parameter is absent. A client
MUST treat a failed validation as a connection error of type
PROTOCOL_VIOLATION.</t>
          </section>
        </section>
      </section>
      <section anchor="short-header" numbered="true" toc="default">
        <name>Short Header Packets</name>
        <t>This version of QUIC defines a single packet type which uses the
short packet header.</t>
        <figure anchor="fig-short-header">
          <name>Short Header Packet Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Short Header Packet {
  Header Form (1) = 0,
  Fixed Bit (1) = 1,
  Spin Bit (1),
  Reserved Bits (2),
  Key Phase (1),
  Packet Number Length (2),
  Destination Connection ID (0..160),
  Packet Number (8..32),
  Packet Payload (..),
}
]]></artwork>
        </figure>
        <t>The short header can be used after the version and 1-RTT keys are negotiated.
Packets that use the short header contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Header Form:</dt>
          <dd>
  The most significant bit (0x80) of byte 0 is set to 0 for the short header.</dd>
          <dt>Fixed Bit:</dt>
          <dd>
  The next bit (0x40) of byte 0 is set to 1.  Packets containing a zero value
for this bit are not valid packets in this version and MUST be discarded.</dd>
          <dt>Spin Bit:</dt>
          <dd>
  The third most significant bit (0x20) of byte 0 is the latency spin bit, set
as described in <xref target="spin-bit" format="default"/>.</dd>
          <dt>Reserved Bits:</dt>
          <dd>
  The next two bits (those with a mask of 0x18) of byte 0 are reserved.  These
bits are protected using header protection; see Section 5.4 of
<xref target="QUIC-TLS" format="default"/>.  The value included prior to protection MUST be set to 0.  An
endpoint MUST treat receipt of a packet that has a non-zero value for these
bits, after removing both packet and header protection, as a connection error
of type PROTOCOL_VIOLATION. Discarding such a packet after only removing
header protection can expose the endpoint to attacks; see Section 9.3 of
<xref target="QUIC-TLS" format="default"/>.</dd>
          <dt>Key Phase:</dt>
          <dd>
  The next bit (0x04) of byte 0 indicates the key phase, which allows a
recipient of a packet to identify the packet protection keys that are used to
protect the packet.  See <xref target="QUIC-TLS" format="default"/> for details.  This bit is protected
using header protection; see Section 5.4 of <xref target="QUIC-TLS" format="default"/>.</dd>
          <dt>Packet Number Length:</dt>
          <dd>
  The least significant two bits (those with a mask of 0x03) of byte 0 contain
the length of the packet number, encoded as an unsigned, two-bit integer that
is one less than the length of the packet number field in bytes.  That is, the
length of the packet number field is the value of this field, plus one.  These
bits are protected using header protection; see Section 5.4 of <xref target="QUIC-TLS" format="default"/>.</dd>
          <dt>Destination Connection ID:</dt>
          <dd>
  The Destination Connection ID is a connection ID that is chosen by the
intended recipient of the packet.  See <xref target="connection-id" format="default"/> for more details.</dd>
          <dt>Packet Number:</dt>
          <dd>
  The packet number field is 1 to 4 bytes long. The packet number has
confidentiality protection separate from packet protection, as described in
Section 5.4 of <xref target="QUIC-TLS" format="default"/>. The length of the packet number field is encoded
in Packet Number Length field. See <xref target="packet-encoding" format="default"/> for details.</dd>
          <dt>Packet Payload:</dt>
          <dd>
  Packets with a short header always include a 1-RTT protected payload.</dd>
        </dl>
        <t>The header form bit and the connection ID field of a short header packet are
version-independent.  The remaining fields are specific to the selected QUIC
version.  See <xref target="QUIC-INVARIANTS" format="default"/> for details on how packets from different
versions of QUIC are interpreted.</t>
        <section anchor="spin-bit" numbered="true" toc="default">
          <name>Latency Spin Bit</name>
          <t>The latency spin bit enables passive latency monitoring from observation points
on the network path throughout the duration of a connection. The spin bit is
only present in the short packet header, since it is possible to measure the
initial RTT of a connection by observing the handshake. Therefore, the spin bit
is available after version negotiation and connection establishment are
completed. On-path measurement and use of the latency spin bit is further
discussed in <xref target="QUIC-MANAGEABILITY" format="default"/>.</t>
          <t>The spin bit is an OPTIONAL feature of QUIC. A QUIC stack that chooses to
support the spin bit MUST implement it as specified in this section.</t>
          <t>Each endpoint unilaterally decides if the spin bit is enabled or disabled for a
connection. Implementations MUST allow administrators of clients and servers
to disable the spin bit either globally or on a per-connection basis. Even when
the spin bit is not disabled by the administrator, endpoints MUST disable their
use of the spin bit for a random selection of at least one in every 16 network
paths, or for one in every 16 connection IDs.  As each endpoint disables the
spin bit independently, this ensures that the spin bit signal is disabled on
approximately one in eight network paths.</t>
          <t>When the spin bit is disabled, endpoints MAY set the spin bit to any value, and
MUST ignore any incoming value. It is RECOMMENDED that endpoints set the spin
bit to a random value either chosen independently for each packet or chosen
independently for each connection ID.</t>
          <t>If the spin bit is enabled for the connection, the endpoint maintains a spin
value and sets the spin bit in the short header to the currently stored
value when a packet with a short header is sent out. The spin value is
initialized to 0 in the endpoint at connection start.  Each endpoint also
remembers the highest packet number seen from its peer on the connection.</t>
          <t>When a server receives a short header packet that increments the highest
packet number seen by the server from the client, it sets the spin value to be
equal to the spin bit in the received packet.</t>
          <t>When a client receives a short header packet that increments the highest
packet number seen by the client from the server, it sets the spin value to the
inverse of the spin bit in the received packet.</t>
          <t>An endpoint resets its spin value to zero when sending the first packet of a
given connection with a new connection ID. This reduces the risk that transient
spin bit state can be used to link flows across connection migration or ID
change.</t>
          <t>With this mechanism, the server reflects the spin value received, while the
client 'spins' it after one RTT. On-path observers can measure the time
between two spin bit toggle events to estimate the end-to-end RTT of a
connection.</t>
        </section>
      </section>
    </section>
    <section anchor="transport-parameter-encoding" numbered="true" toc="default">
      <name>Transport Parameter Encoding</name>
      <t>The extension_data field of the quic_transport_parameters extension defined in
<xref target="QUIC-TLS" format="default"/> contains the QUIC transport parameters. They are encoded as a
sequence of transport parameters, as shown in <xref target="transport-parameter-sequence" format="default"/>:</t>
      <figure anchor="transport-parameter-sequence">
        <name>Sequence of Transport Parameters</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Transport Parameters {
  Transport Parameter (..) ...,
}
]]></artwork>
      </figure>
      <t>Each transport parameter is encoded as an (identifier, length, value) tuple,
as shown in <xref target="transport-parameter-encoding-fig" format="default"/>:</t>
      <figure anchor="transport-parameter-encoding-fig">
        <name>Transport Parameter Encoding</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Transport Parameter {
  Transport Parameter ID (i),
  Transport Parameter Length (i),
  Transport Parameter Value (..),
}
]]></artwork>
      </figure>
      <t>The Transport Parameter Length field contains the length of the Transport
Parameter Value field.</t>
      <t>QUIC encodes transport parameters into a sequence of bytes, which are then
included in the cryptographic handshake.</t>
      <section anchor="transport-parameter-grease" numbered="true" toc="default">
        <name>Reserved Transport Parameters</name>
        <t>Transport parameters with an identifier of the form <tt>31 * N + 27</tt> for integer
values of N are reserved to exercise the requirement that unknown transport
parameters be ignored.  These transport parameters have no semantics, and may
carry arbitrary values.</t>
      </section>
      <section anchor="transport-parameter-definitions" numbered="true" toc="default">
        <name>Transport Parameter Definitions</name>
        <t>This section details the transport parameters defined in this document.</t>
        <t>Many transport parameters listed here have integer values.  Those transport
parameters that are identified as integers use a variable-length integer
encoding; see <xref target="integer-encoding" format="default"/>.  Transport parameters have a default value
of 0 if the transport parameter is absent unless otherwise stated.</t>
        <t>The following transport parameters are defined:</t>
        <dl newline="false" spacing="normal">
          <dt>original_destination_connection_id (0x00):</dt>
          <dd>
  The value of the Destination Connection ID field from the first Initial packet
sent by the client; see <xref target="cid-auth" format="default"/>.  This transport parameter is only sent
by a server.</dd>
          <dt>max_idle_timeout (0x01):</dt>
          <dd>
  The max idle timeout is a value in milliseconds that is encoded as an integer;
see (<xref target="idle-timeout" format="default"/>).  Idle timeout is disabled when both endpoints omit
this transport parameter or specify a value of 0.</dd>
          <dt>stateless_reset_token (0x02):</dt>
          <dd>
  A stateless reset token is used in verifying a stateless reset; see
<xref target="stateless-reset" format="default"/>.  This parameter is a sequence of 16 bytes.  This
transport parameter MUST NOT be sent by a client, but MAY be sent by a server.
A server that does not send this transport parameter cannot use stateless
reset (<xref target="stateless-reset" format="default"/>) for the connection ID negotiated during the
handshake.</dd>
          <dt>max_udp_payload_size (0x03):</dt>
          <dd>
  The maximum UDP payload size parameter is an integer value that limits the
size of UDP payloads that the endpoint is willing to receive.  UDP packets
with payloads larger than this limit are not likely to be processed by the
receiver.</dd>
          <dt/>
          <dd>The default for this parameter is the maximum permitted UDP payload of 65527.
Values below 1200 are invalid.</dd>
          <dt/>
          <dd>This limit does act as an additional constraint on datagram size in the same
way as the path MTU, but it is a property of the endpoint and not the path. It
is expected that this is the space an endpoint dedicates to holding incoming
packets.</dd>
          <dt>initial_max_data (0x04):</dt>
          <dd>
  The initial maximum data parameter is an integer value that contains the
initial value for the maximum amount of data that can be sent on the
connection.  This is equivalent to sending a MAX_DATA (<xref target="frame-max-data" format="default"/>) for
the connection immediately after completing the handshake.</dd>
          <dt>initial_max_stream_data_bidi_local (0x05):</dt>
          <dd>
  This parameter is an integer value specifying the initial flow control limit
for locally-initiated bidirectional streams.  This limit applies to newly
created bidirectional streams opened by the endpoint that sends the transport
parameter.  In client transport parameters, this applies to streams with an
identifier with the least significant two bits set to 0x0; in server transport
parameters, this applies to streams with the least significant two bits set to
0x1.</dd>
          <dt>initial_max_stream_data_bidi_remote (0x06):</dt>
          <dd>
  This parameter is an integer value specifying the initial flow control limit
for peer-initiated bidirectional streams.  This limit applies to newly created
bidirectional streams opened by the endpoint that receives the transport
parameter.  In client transport parameters, this applies to streams with an
identifier with the least significant two bits set to 0x1; in server transport
parameters, this applies to streams with the least significant two bits set to
0x0.</dd>
          <dt>initial_max_stream_data_uni (0x07):</dt>
          <dd>
  This parameter is an integer value specifying the initial flow control limit
for unidirectional streams.  This limit applies to newly created
unidirectional streams opened by the endpoint that receives the transport
parameter.  In client transport parameters, this applies to streams with an
identifier with the least significant two bits set to 0x3; in server transport
parameters, this applies to streams with the least significant two bits set to
0x2.</dd>
          <dt>initial_max_streams_bidi (0x08):</dt>
          <dd>
  The initial maximum bidirectional streams parameter is an integer value that
contains the initial maximum number of bidirectional streams the peer may
initiate.  If this parameter is absent or zero, the peer cannot open
bidirectional streams until a MAX_STREAMS frame is sent.  Setting this
parameter is equivalent to sending a MAX_STREAMS (<xref target="frame-max-streams" format="default"/>) of
the corresponding type with the same value.</dd>
          <dt>initial_max_streams_uni (0x09):</dt>
          <dd>
  The initial maximum unidirectional streams parameter is an integer value that
contains the initial maximum number of unidirectional streams the peer may
initiate.  If this parameter is absent or zero, the peer cannot open
unidirectional streams until a MAX_STREAMS frame is sent.  Setting this
parameter is equivalent to sending a MAX_STREAMS (<xref target="frame-max-streams" format="default"/>) of
the corresponding type with the same value.</dd>
          <dt>ack_delay_exponent (0x0a):</dt>
          <dd>
  The ACK delay exponent is an integer value indicating an
exponent used to decode the ACK Delay field in the ACK frame (<xref target="frame-ack" format="default"/>).
If this value is absent, a default value of 3 is assumed (indicating a
multiplier of 8). Values above 20 are invalid.</dd>
          <dt>max_ack_delay (0x0b):</dt>
          <dd>
  The maximum ACK delay is an integer value indicating the
maximum amount of time in milliseconds by which the endpoint will delay
sending acknowledgments.  This value SHOULD include the receiver's expected
delays in alarms firing.  For example, if a receiver sets a timer for 5ms
and alarms commonly fire up to 1ms late, then it should send a max_ack_delay
of 6ms.  If this value is absent, a default of 25 milliseconds is assumed.
Values of 2^14 or greater are invalid.</dd>
          <dt>disable_active_migration (0x0c):</dt>
          <dd>
  The disable active migration transport parameter is included if the endpoint
does not support active connection migration (<xref target="migration" format="default"/>). Peers of an
endpoint that sets this transport parameter MUST NOT send any packets,
including probing packets (<xref target="probing" format="default"/>), from a local address or port other
than that used to perform the handshake.  This parameter is a zero-length
value.</dd>
          <dt>preferred_address (0x0d):</dt>
          <dd>
  The server's preferred address is used to effect a change in server address at
the end of the handshake, as described in <xref target="preferred-address" format="default"/>.  The format
of this transport parameter is shown in <xref target="fig-preferred-address" format="default"/>.  This
transport parameter is only sent by a server. Servers MAY choose to only send
a preferred address of one address family by sending an all-zero address and
port (0.0.0.0:0 or ::.0) for the other family. IP addresses are encoded in
network byte order.</dd>
          <dt/>
          <dd>The Connection ID field and the Stateless Reset Token field contain an
alternative connection ID that has a sequence number of 1; see <xref target="issue-cid" format="default"/>.
Having these values bundled with the preferred address ensures that there will
be at least one unused active connection ID when the client initiates
migration to the preferred address.</dd>
          <dt/>
          <dd>The Connection ID and Stateless Reset Token fields of a preferred address are
identical in syntax and semantics to the corresponding fields of a
NEW_CONNECTION_ID frame (<xref target="frame-new-connection-id" format="default"/>).  A server that chooses
a zero-length connection ID MUST NOT provide a preferred address.  Similarly,
a server MUST NOT include a zero-length connection ID in this transport
parameter.  A client MUST treat violation of these requirements as a
connection error of type TRANSPORT_PARAMETER_ERROR.</dd>
        </dl>
        <figure anchor="fig-preferred-address">
          <name>Preferred Address format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Preferred Address {
  IPv4 Address (32),
  IPv4 Port (16),
  IPv6 Address (128),
  IPv6 Port (16),
  CID Length (8),
  Connection ID (..),
  Stateless Reset Token (128),
}
]]></artwork>
        </figure>
        <dl newline="false" spacing="normal">
          <dt>active_connection_id_limit (0x0e):</dt>
          <dd>
  The active connection ID limit is an integer value specifying the
maximum number of connection IDs from the peer that an endpoint is willing
to store. This value includes the connection ID received during the handshake,
that received in the preferred_address transport parameter, and those received
in NEW_CONNECTION_ID frames.
The value of the active_connection_id_limit parameter MUST be at least 2.
An endpoint that receives a value less than 2 MUST close the connection
with an error of type TRANSPORT_PARAMETER_ERROR.
If this transport parameter is absent, a default of 2 is assumed.  If an
endpoint issues a zero-length connection ID, it will never send a
NEW_CONNECTION_ID frame and therefore ignores the active_connection_id_limit
value received from its peer.</dd>
          <dt>initial_source_connection_id (0x0f):</dt>
          <dd>
  The value that the endpoint included in the Source Connection ID field of the
first Initial packet it sends for the connection; see <xref target="cid-auth" format="default"/>.</dd>
          <dt>retry_source_connection_id (0x10):</dt>
          <dd>
  The value that the the server included in the Source Connection ID field of a
Retry packet; see <xref target="cid-auth" format="default"/>.  This transport parameter is only sent by a
server.</dd>
        </dl>
        <t>If present, transport parameters that set initial flow control limits
(initial_max_stream_data_bidi_local, initial_max_stream_data_bidi_remote, and
initial_max_stream_data_uni) are equivalent to sending a MAX_STREAM_DATA frame
(<xref target="frame-max-stream-data" format="default"/>) on every stream of the corresponding type
immediately after opening.  If the transport parameter is absent, streams of
that type start with a flow control limit of 0.</t>
        <t>A client MUST NOT include any server-only transport parameter:
original_destination_connection_id, preferred_address,
retry_source_connection_id, or stateless_reset_token. A server MUST treat
receipt of any of these transport parameters as a connection error of type
TRANSPORT_PARAMETER_ERROR.</t>
      </section>
    </section>
    <section anchor="frame-formats" numbered="true" toc="default">
      <name>Frame Types and Formats</name>
      <t>As described in <xref target="frames" format="default"/>, packets contain one or more frames. This section
describes the format and semantics of the core QUIC frame types.</t>
      <section anchor="frame-padding" numbered="true" toc="default">
        <name>PADDING Frame</name>
        <t>The PADDING frame (type=0x00) has no semantic value.  PADDING frames can be used
to increase the size of a packet.  Padding can be used to increase an initial
client packet to the minimum required size, or to provide protection against
traffic analysis for protected packets.</t>
        <t>A PADDING frame has no content.  That is, a PADDING frame consists of the single
byte that identifies the frame as a PADDING frame.</t>
      </section>
      <section anchor="frame-ping" numbered="true" toc="default">
        <name>PING Frame</name>
        <t>Endpoints can use PING frames (type=0x01) to verify that their peers are still
alive or to check reachability to the peer. The PING frame contains no
additional fields.</t>
        <t>The receiver of a PING frame simply needs to acknowledge the packet containing
this frame.</t>
        <t>The PING frame can be used to keep a connection alive when an application or
application protocol wishes to prevent the connection from timing out. An
application protocol SHOULD provide guidance about the conditions under which
generating a PING is recommended.  This guidance SHOULD indicate whether it is
the client or the server that is expected to send the PING.  Having both
endpoints send PING frames without coordination can produce an excessive number
of packets and poor performance.</t>
        <t>A connection will time out if no packets are sent or received for a period
longer than the time negotiated using the max_idle_timeout transport parameter;
see <xref target="termination" format="default"/>.  However, state in middleboxes might time out earlier than
that.  Though REQ-5 in <xref target="RFC4787" format="default"/> recommends a 2 minute timeout interval,
experience shows that sending packets every 15 to 30 seconds is necessary to
prevent the majority of middleboxes from losing state for UDP flows.</t>
      </section>
      <section anchor="frame-ack" numbered="true" toc="default">
        <name>ACK Frames</name>
        <t>Receivers send ACK frames (types 0x02 and 0x03) to inform senders of packets
they have received and processed. The ACK frame contains one or more ACK Ranges.
ACK Ranges identify acknowledged packets. If the frame type is 0x03, ACK frames
also contain the sum of QUIC packets with associated ECN marks received on the
connection up until this point.  QUIC implementations MUST properly handle both
types and, if they have enabled ECN for packets they send, they SHOULD use the
information in the ECN section to manage their congestion state.</t>
        <t>QUIC acknowledgements are irrevocable.  Once acknowledged, a packet remains
acknowledged, even if it does not appear in a future ACK frame.  This is unlike
TCP SACKs (<xref target="RFC2018" format="default"/>).</t>
        <t>Packets from different packet number spaces can be identified using the same
numeric value. An acknowledgment for a packet needs to indicate both a packet
number and a packet number space. This is accomplished by having each ACK frame
only acknowledge packet numbers in the same space as the packet in which the
ACK frame is contained.</t>
        <t>Version Negotiation and Retry packets cannot be acknowledged because they do not
contain a packet number.  Rather than relying on ACK frames, these packets are
implicitly acknowledged by the next Initial packet sent by the client.</t>
        <t>An ACK frame is shown in <xref target="ack-format" format="default"/>.</t>
        <figure anchor="ack-format">
          <name>ACK Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
ACK Frame {
  Type (i) = 0x02..0x03,
  Largest Acknowledged (i),
  ACK Delay (i),
  ACK Range Count (i),
  First ACK Range (i),
  ACK Range (..) ...,
  [ECN Counts (..)],
}
]]></artwork>
        </figure>
        <t>ACK frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Largest Acknowledged:</dt>
          <dd>
  A variable-length integer representing the largest packet number the peer is
acknowledging; this is usually the largest packet number that the peer has
received prior to generating the ACK frame.  Unlike the packet number in the
QUIC long or short header, the value in an ACK frame is not truncated.</dd>
          <dt>ACK Delay:</dt>
          <dd>
  A variable-length integer representing the time delta in microseconds between
when this ACK was sent and when the largest acknowledged packet, as indicated
in the Largest Acknowledged field, was received by this peer.  The value of
the ACK Delay field is scaled by multiplying the encoded value by 2 to the
power of the value of the ack_delay_exponent transport parameter set by the
sender of the ACK frame; see <xref target="transport-parameter-definitions" format="default"/>.  Scaling in
this fashion allows for a larger range of values with a shorter encoding at
the cost of lower resolution.  Because the receiver doesn't use the ACK Delay
for Initial and Handshake packets, a sender SHOULD send a value of 0.</dd>
          <dt>ACK Range Count:</dt>
          <dd>
  A variable-length integer specifying the number of Gap and ACK Range fields in
the frame.</dd>
          <dt>First ACK Range:</dt>
          <dd>
  A variable-length integer indicating the number of contiguous packets
preceding the Largest Acknowledged that are being acknowledged.  The First ACK
Range is encoded as an ACK Range; see <xref target="ack-ranges" format="default"/> starting from the
Largest Acknowledged.  That is, the smallest packet acknowledged in the
range is determined by subtracting the First ACK Range value from the Largest
Acknowledged.</dd>
          <dt>ACK Ranges:</dt>
          <dd>
  Contains additional ranges of packets which are alternately not
acknowledged (Gap) and acknowledged (ACK Range); see <xref target="ack-ranges" format="default"/>.</dd>
          <dt>ECN Counts:</dt>
          <dd>
  The three ECN Counts; see <xref target="ack-ecn-counts" format="default"/>.</dd>
        </dl>
        <section anchor="ack-ranges" numbered="true" toc="default">
          <name>ACK Ranges</name>
          <t>Each ACK Range consists of alternating Gap and ACK Range values in descending
packet number order. ACK Ranges can be repeated. The number of Gap and ACK
Range values is determined by the ACK Range Count field; one of each value is
present for each value in the ACK Range Count field.</t>
          <t>ACK Ranges are structured as shown in <xref target="ack-range-format" format="default"/>.</t>
          <figure anchor="ack-range-format">
            <name>ACK Ranges</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
ACK Range {
  Gap (i),
  ACK Range Length (i),
}
]]></artwork>
          </figure>
          <t>The fields that form each ACK Range are:</t>
          <dl newline="false" spacing="normal">
            <dt>Gap:</dt>
            <dd>
  A variable-length integer indicating the number of contiguous unacknowledged
packets preceding the packet number one lower than the smallest in the
preceding ACK Range.</dd>
            <dt>ACK Range Length:</dt>
            <dd>
  A variable-length integer indicating the number of contiguous acknowledged
packets preceding the largest packet number, as determined by the
preceding Gap.</dd>
          </dl>
          <t>Gap and ACK Range value use a relative integer encoding for efficiency.  Though
each encoded value is positive, the values are subtracted, so that each ACK
Range describes progressively lower-numbered packets.</t>
          <t>Each ACK Range acknowledges a contiguous range of packets by indicating the
number of acknowledged packets that precede the largest packet number in that
range.  A value of zero indicates that only the largest packet number is
acknowledged.  Larger ACK Range values indicate a larger range, with
corresponding lower values for the smallest packet number in the range.  Thus,
given a largest packet number for the range, the smallest value is determined by
the formula:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
   smallest = largest - ack_range
]]></artwork>
          <t>An ACK Range acknowledges all packets between the smallest packet number and the
largest, inclusive.</t>
          <t>The largest value for an ACK Range is determined by cumulatively subtracting the
size of all preceding ACK Ranges and Gaps.</t>
          <t>Each Gap indicates a range of packets that are not being acknowledged.  The
number of packets in the gap is one higher than the encoded value of the Gap
field.</t>
          <t>The value of the Gap field establishes the largest packet number value for the
subsequent ACK Range using the following formula:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
   largest = previous_smallest - gap - 2
]]></artwork>
          <t>If any computed packet number is negative, an endpoint MUST generate a
connection error of type FRAME_ENCODING_ERROR.</t>
        </section>
        <section anchor="ack-ecn-counts" numbered="true" toc="default">
          <name>ECN Counts</name>
          <t>The ACK frame uses the least significant bit (that is, type 0x03) to indicate
ECN feedback and report receipt of QUIC packets with associated ECN codepoints
of ECT(0), ECT(1), or CE in the packet's IP header.  ECN Counts are only present
when the ACK frame type is 0x03.</t>
          <t>ECN Counts are only parsed when the ACK frame type is 0x03.  There are 3 ECN
counts, as shown in <xref target="ecn-count-format" format="default"/>.</t>
          <figure anchor="ecn-count-format">
            <name>ECN Count Format</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
ECN Counts {
  ECT0 Count (i),
  ECT1 Count (i),
  ECN-CE Count (i),
}
]]></artwork>
          </figure>
          <t>The three ECN Counts are:</t>
          <dl newline="false" spacing="normal">
            <dt>ECT0 Count:</dt>
            <dd>
  A variable-length integer representing the total number of packets received
with the ECT(0) codepoint in the packet number space of the ACK frame.</dd>
            <dt>ECT1 Count:</dt>
            <dd>
  A variable-length integer representing the total number of packets received
with the ECT(1) codepoint in the packet number space of the ACK frame.</dd>
            <dt>CE Count:</dt>
            <dd>
  A variable-length integer representing the total number of packets received
with the CE codepoint in the packet number space of the ACK frame.</dd>
          </dl>
          <t>ECN counts are maintained separately for each packet number space.</t>
        </section>
      </section>
      <section anchor="frame-reset-stream" numbered="true" toc="default">
        <name>RESET_STREAM Frame</name>
        <t>An endpoint uses a RESET_STREAM frame (type=0x04) to abruptly terminate the
sending part of a stream.</t>
        <t>After sending a RESET_STREAM, an endpoint ceases transmission and retransmission
of STREAM frames on the identified stream.  A receiver of RESET_STREAM can
discard any data that it already received on that stream.</t>
        <t>An endpoint that receives a RESET_STREAM frame for a send-only stream MUST
terminate the connection with error STREAM_STATE_ERROR.</t>
        <t>The RESET_STREAM frame is shown in <xref target="fig-reset-stream" format="default"/>.</t>
        <figure anchor="fig-reset-stream">
          <name>RESET_STREAM Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
RESET_STREAM Frame {
  Type (i) = 0x04,
  Stream ID (i),
  Application Protocol Error Code (i),
  Final Size (i),
}
]]></artwork>
        </figure>
        <t>RESET_STREAM frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Stream ID:</dt>
          <dd>
  A variable-length integer encoding of the Stream ID of the stream being
terminated.</dd>
          <dt>Application Protocol Error Code:</dt>
          <dd>
  A variable-length integer containing the application protocol error
code (see <xref target="app-error-codes" format="default"/>) which indicates why the stream is being
closed.</dd>
          <dt>Final Size:</dt>
          <dd>
  A variable-length integer indicating the final size of the stream by the
RESET_STREAM sender, in unit of bytes.</dd>
        </dl>
      </section>
      <section anchor="frame-stop-sending" numbered="true" toc="default">
        <name>STOP_SENDING Frame</name>
        <t>An endpoint uses a STOP_SENDING frame (type=0x05) to communicate that incoming
data is being discarded on receipt at application request.  STOP_SENDING
requests that a peer cease transmission on a stream.</t>
        <t>A STOP_SENDING frame can be sent for streams in the Recv or Size Known states;
see <xref target="stream-send-states" format="default"/>.  Receiving a STOP_SENDING frame for a
locally-initiated stream that has not yet been created MUST be treated as a
connection error of type STREAM_STATE_ERROR.  An endpoint that receives a
STOP_SENDING frame for a receive-only stream MUST terminate the connection with
error STREAM_STATE_ERROR.</t>
        <t>The STOP_SENDING frame is shown in <xref target="fig-stop-sending" format="default"/>.</t>
        <figure anchor="fig-stop-sending">
          <name>STOP_SENDING Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
STOP_SENDING Frame {
  Type (i) = 0x05,
  Stream ID (i),
  Application Protocol Error Code (i),
}
]]></artwork>
        </figure>
        <t>STOP_SENDING frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Stream ID:</dt>
          <dd>
  A variable-length integer carrying the Stream ID of the stream being ignored.</dd>
          <dt>Application Protocol Error Code:</dt>
          <dd>
  A variable-length integer containing the application-specified reason the
sender is ignoring the stream; see <xref target="app-error-codes" format="default"/>.</dd>
        </dl>
      </section>
      <section anchor="frame-crypto" numbered="true" toc="default">
        <name>CRYPTO Frame</name>
        <t>The CRYPTO frame (type=0x06) is used to transmit cryptographic handshake
messages. It can be sent in all packet types except 0-RTT. The CRYPTO frame
offers the cryptographic protocol an in-order stream of bytes.  CRYPTO frames
are functionally identical to STREAM frames, except that they do not bear a
stream identifier; they are not flow controlled; and they do not carry markers
for optional offset, optional length, and the end of the stream.</t>
        <t>The CRYPTO frame is shown in <xref target="fig-crypto" format="default"/>.</t>
        <figure anchor="fig-crypto">
          <name>CRYPTO Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
CRYPTO Frame {
  Type (i) = 0x06,
  Offset (i),
  Length (i),
  Crypto Data (..),
}
]]></artwork>
        </figure>
        <t>CRYPTO frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Offset:</dt>
          <dd>
  A variable-length integer specifying the byte offset in the stream for the
data in this CRYPTO frame.</dd>
          <dt>Length:</dt>
          <dd>
  A variable-length integer specifying the length of the Crypto Data field in
this CRYPTO frame.</dd>
          <dt>Crypto Data:</dt>
          <dd>
  The cryptographic message data.</dd>
        </dl>
        <t>There is a separate flow of cryptographic handshake data in each encryption
level, each of which starts at an offset of 0. This implies that each encryption
level is treated as a separate CRYPTO stream of data.</t>
        <t>The largest offset delivered on a stream - the sum of the offset and data
length - cannot exceed 2^62-1.  Receipt of a frame that exceeds this limit MUST
be treated as a connection error of type FRAME_ENCODING_ERROR or
CRYPTO_BUFFER_EXCEEDED.</t>
        <t>Unlike STREAM frames, which include a Stream ID indicating to which stream the
data belongs, the CRYPTO frame carries data for a single stream per encryption
level. The stream does not have an explicit end, so CRYPTO frames do not have a
FIN bit.</t>
      </section>
      <section anchor="frame-new-token" numbered="true" toc="default">
        <name>NEW_TOKEN Frame</name>
        <t>A server sends a NEW_TOKEN frame (type=0x07) to provide the client with a token
to send in the header of an Initial packet for a future connection.</t>
        <t>The NEW_TOKEN frame is shown in <xref target="fig-new-token" format="default"/>.</t>
        <figure anchor="fig-new-token">
          <name>NEW_TOKEN Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
NEW_TOKEN Frame {
  Type (i) = 0x07,
  Token Length (i),
  Token (..),
}
]]></artwork>
        </figure>
        <t>NEW_TOKEN frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Token Length:</dt>
          <dd>
  A variable-length integer specifying the length of the token in bytes.</dd>
          <dt>Token:</dt>
          <dd>
  An opaque blob that the client may use with a future Initial packet. The token
MUST NOT be empty.  An endpoint MUST treat receipt of a NEW_TOKEN frame with
an empty Token field as a connection error of type FRAME_ENCODING_ERROR.</dd>
        </dl>
        <t>An endpoint might receive multiple NEW_TOKEN frames that contain the same token
value if packets containing the frame are incorrectly determined to be lost.
Endpoints are responsible for discarding duplicate values, which might be used
to link connection attempts; see <xref target="validate-future" format="default"/>.</t>
        <t>Clients MUST NOT send NEW_TOKEN frames.  Servers MUST treat receipt of a
NEW_TOKEN frame as a connection error of type PROTOCOL_VIOLATION.</t>
      </section>
      <section anchor="frame-stream" numbered="true" toc="default">
        <name>STREAM Frames</name>
        <t>STREAM frames implicitly create a stream and carry stream data.  The STREAM
frame takes the form 0b00001XXX (or the set of values from 0x08 to 0x0f).  The
value of the three low-order bits of the frame type determines the fields that
are present in the frame.</t>
        <ul spacing="normal">
          <li>The OFF bit (0x04) in the frame type is set to indicate that there is an
Offset field present.  When set to 1, the Offset field is present.  When set
to 0, the Offset field is absent and the Stream Data starts at an offset of 0
(that is, the frame contains the first bytes of the stream, or the end of a
stream that includes no data).</li>
          <li>The LEN bit (0x02) in the frame type is set to indicate that there is a Length
field present.  If this bit is set to 0, the Length field is absent and the
Stream Data field extends to the end of the packet.  If this bit is set to 1,
the Length field is present.</li>
          <li>The FIN bit (0x01) of the frame type is set only on frames that contain the
final size of the stream.  Setting this bit indicates that the frame
marks the end of the stream.</li>
        </ul>
        <t>An endpoint MUST terminate the connection with error STREAM_STATE_ERROR if it
receives a STREAM frame for a locally-initiated stream that has not yet been
created, or for a send-only stream.</t>
        <t>The STREAM frames are shown in <xref target="fig-stream" format="default"/>.</t>
        <figure anchor="fig-stream">
          <name>STREAM Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
STREAM Frame {
  Type (i) = 0x08..0x0f,
  Stream ID (i),
  [Offset (i)],
  [Length (i)],
  Stream Data (..),
}
]]></artwork>
        </figure>
        <t>STREAM frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Stream ID:</dt>
          <dd>
  A variable-length integer indicating the stream ID of the stream; see
<xref target="stream-id" format="default"/>.</dd>
          <dt>Offset:</dt>
          <dd>
  A variable-length integer specifying the byte offset in the stream for the
data in this STREAM frame.  This field is present when the OFF bit is set to
1.  When the Offset field is absent, the offset is 0.</dd>
          <dt>Length:</dt>
          <dd>
  A variable-length integer specifying the length of the Stream Data field in
this STREAM frame.  This field is present when the LEN bit is set to 1.  When
the LEN bit is set to 0, the Stream Data field consumes all the remaining
bytes in the packet.</dd>
          <dt>Stream Data:</dt>
          <dd>
  The bytes from the designated stream to be delivered.</dd>
        </dl>
        <t>When a Stream Data field has a length of 0, the offset in the STREAM frame is
the offset of the next byte that would be sent.</t>
        <t>The first byte in the stream has an offset of 0.  The largest offset delivered
on a stream - the sum of the offset and data length - cannot exceed 2^62-1, as
it is not possible to provide flow control credit for that data.  Receipt of a
frame that exceeds this limit MUST be treated as a connection error of type
FRAME_ENCODING_ERROR or FLOW_CONTROL_ERROR.</t>
      </section>
      <section anchor="frame-max-data" numbered="true" toc="default">
        <name>MAX_DATA Frame</name>
        <t>The MAX_DATA frame (type=0x10) is used in flow control to inform the peer of
the maximum amount of data that can be sent on the connection as a whole.</t>
        <t>The MAX_DATA frame is shown in <xref target="fig-max-data" format="default"/>.</t>
        <figure anchor="fig-max-data">
          <name>MAX_DATA Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
MAX_DATA Frame {
  Type (i) = 0x10,
  Maximum Data (i),
}
]]></artwork>
        </figure>
        <t>MAX_DATA frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Maximum Data:</dt>
          <dd>
  A variable-length integer indicating the maximum amount of data that can be
sent on the entire connection, in units of bytes.</dd>
        </dl>
        <t>All data sent in STREAM frames counts toward this limit.  The sum of the largest
received offsets on all streams - including streams in terminal states - MUST
NOT exceed the value advertised by a receiver.  An endpoint MUST terminate a
connection with a FLOW_CONTROL_ERROR error if it receives more data than the
maximum data value that it has sent, unless this is a result of a change in
the initial limits; see <xref target="zerortt-parameters" format="default"/>.</t>
      </section>
      <section anchor="frame-max-stream-data" numbered="true" toc="default">
        <name>MAX_STREAM_DATA Frame</name>
        <t>The MAX_STREAM_DATA frame (type=0x11) is used in flow control to inform a peer
of the maximum amount of data that can be sent on a stream.</t>
        <t>A MAX_STREAM_DATA frame can be sent for streams in the Recv state; see
<xref target="stream-send-states" format="default"/>. Receiving a MAX_STREAM_DATA frame for a
locally-initiated stream that has not yet been created MUST be treated as a
connection error of type STREAM_STATE_ERROR.  An endpoint that receives a
MAX_STREAM_DATA frame for a receive-only stream MUST terminate the connection
with error STREAM_STATE_ERROR.</t>
        <t>The MAX_STREAM_DATA frame is shown in <xref target="fig-max-stream-data" format="default"/>.</t>
        <figure anchor="fig-max-stream-data">
          <name>MAX_STREAM_DATA Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
MAX_STREAM_DATA Frame {
  Type (i) = 0x11,
  Stream ID (i),
  Maximum Stream Data (i),
}
]]></artwork>
        </figure>
        <t>MAX_STREAM_DATA frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Stream ID:</dt>
          <dd>
  The stream ID of the stream that is affected encoded as a variable-length
integer.</dd>
          <dt>Maximum Stream Data:</dt>
          <dd>
  A variable-length integer indicating the maximum amount of data that can be
sent on the identified stream, in units of bytes.</dd>
        </dl>
        <t>When counting data toward this limit, an endpoint accounts for the largest
received offset of data that is sent or received on the stream.  Loss or
reordering can mean that the largest received offset on a stream can be greater
than the total size of data received on that stream.  Receiving STREAM frames
might not increase the largest received offset.</t>
        <t>The data sent on a stream MUST NOT exceed the largest maximum stream data value
advertised by the receiver.  An endpoint MUST terminate a connection with a
FLOW_CONTROL_ERROR error if it receives more data than the largest maximum
stream data that it has sent for the affected stream, unless this is a result of
a change in the initial limits; see <xref target="zerortt-parameters" format="default"/>.</t>
      </section>
      <section anchor="frame-max-streams" numbered="true" toc="default">
        <name>MAX_STREAMS Frames</name>
        <t>The MAX_STREAMS frames (type=0x12 and 0x13) inform the peer of the cumulative
number of streams of a given type it is permitted to open.  A MAX_STREAMS frame
with a type of 0x12 applies to bidirectional streams, and a MAX_STREAMS frame
with a type of 0x13 applies to unidirectional streams.</t>
        <t>The MAX_STREAMS frames are shown in <xref target="fig-max-streams" format="default"/>;</t>
        <figure anchor="fig-max-streams">
          <name>MAX_STREAMS Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
MAX_STREAMS Frame {
  Type (i) = 0x12..0x13,
  Maximum Streams (i),
}
]]></artwork>
        </figure>
        <t>MAX_STREAMS frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Maximum Streams:</dt>
          <dd>
  A count of the cumulative number of streams of the corresponding type that
can be opened over the lifetime of the connection.  This value cannot exceed
2^60, as it is not possible to encode stream IDs larger than 2^62-1.
Receipt of a frame that permits opening of a stream larger than this limit
MUST be treated as a FRAME_ENCODING_ERROR.</dd>
        </dl>
        <t>Loss or reordering can cause a MAX_STREAMS frame to be received which states a
lower stream limit than an endpoint has previously received.  MAX_STREAMS frames
which do not increase the stream limit MUST be ignored.</t>
        <t>An endpoint MUST NOT open more streams than permitted by the current stream
limit set by its peer.  For instance, a server that receives a unidirectional
stream limit of 3 is permitted to open stream 3, 7, and 11, but not stream 15.
An endpoint MUST terminate a connection with a STREAM_LIMIT_ERROR error if a
peer opens more streams than was permitted.</t>
        <t>Note that these frames (and the corresponding transport parameters) do not
describe the number of streams that can be opened concurrently.  The limit
includes streams that have been closed as well as those that are open.</t>
      </section>
      <section anchor="frame-data-blocked" numbered="true" toc="default">
        <name>DATA_BLOCKED Frame</name>
        <t>A sender SHOULD send a DATA_BLOCKED frame (type=0x14) when it wishes to send
data, but is unable to due to connection-level flow control; see
<xref target="flow-control" format="default"/>.  DATA_BLOCKED frames can be used as input to tuning of flow
control algorithms; see <xref target="fc-credit" format="default"/>.</t>
        <t>The DATA_BLOCKED frame is shown in <xref target="fig-data-blocked" format="default"/>.</t>
        <figure anchor="fig-data-blocked">
          <name>DATA_BLOCKED Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
DATA_BLOCKED Frame {
  Type (i) = 0x14,
  Maximum Data (i),
}
]]></artwork>
        </figure>
        <t>DATA_BLOCKED frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Maximum Data:</dt>
          <dd>
  A variable-length integer indicating the connection-level limit at which
blocking occurred.</dd>
        </dl>
      </section>
      <section anchor="frame-stream-data-blocked" numbered="true" toc="default">
        <name>STREAM_DATA_BLOCKED Frame</name>
        <t>A sender SHOULD send a STREAM_DATA_BLOCKED frame (type=0x15) when it wishes to
send data, but is unable to due to stream-level flow control.  This frame is
analogous to DATA_BLOCKED (<xref target="frame-data-blocked" format="default"/>).</t>
        <t>An endpoint that receives a STREAM_DATA_BLOCKED frame for a send-only stream
MUST terminate the connection with error STREAM_STATE_ERROR.</t>
        <t>The STREAM_DATA_BLOCKED frame is shown in <xref target="fig-stream-data-blocked" format="default"/>.</t>
        <figure anchor="fig-stream-data-blocked">
          <name>STREAM_DATA_BLOCKED Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
STREAM_DATA_BLOCKED Frame {
  Type (i) = 0x15,
  Stream ID (i),
  Maximum Stream Data (i),
}
]]></artwork>
        </figure>
        <t>STREAM_DATA_BLOCKED frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Stream ID:</dt>
          <dd>
  A variable-length integer indicating the stream which is flow control blocked.</dd>
          <dt>Maximum Stream Data:</dt>
          <dd>
  A variable-length integer indicating the offset of the stream at which the
blocking occurred.</dd>
        </dl>
      </section>
      <section anchor="frame-streams-blocked" numbered="true" toc="default">
        <name>STREAMS_BLOCKED Frames</name>
        <t>A sender SHOULD send a STREAMS_BLOCKED frame (type=0x16 or 0x17) when it wishes
to open a stream, but is unable to due to the maximum stream limit set by its
peer; see <xref target="frame-max-streams" format="default"/>.  A STREAMS_BLOCKED frame of type 0x16 is used
to indicate reaching the bidirectional stream limit, and a STREAMS_BLOCKED frame
of type 0x17 indicates reaching the unidirectional stream limit.</t>
        <t>A STREAMS_BLOCKED frame does not open the stream, but informs the peer that a
new stream was needed and the stream limit prevented the creation of the stream.</t>
        <t>The STREAMS_BLOCKED frames are shown in <xref target="fig-streams-blocked" format="default"/>.</t>
        <figure anchor="fig-streams-blocked">
          <name>STREAMS_BLOCKED Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
STREAMS_BLOCKED Frame {
  Type (i) = 0x16..0x17,
  Maximum Streams (i),
}
]]></artwork>
        </figure>
        <t>STREAMS_BLOCKED frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Maximum Streams:</dt>
          <dd>
  A variable-length integer indicating the maximum number of streams allowed
at the time the frame was sent.  This value cannot exceed 2^60, as it is
not possible to encode stream IDs larger than 2^62-1.  Receipt of a frame
that encodes a larger stream ID MUST be treated as a STREAM_LIMIT_ERROR or a
FRAME_ENCODING_ERROR.</dd>
        </dl>
      </section>
      <section anchor="frame-new-connection-id" numbered="true" toc="default">
        <name>NEW_CONNECTION_ID Frame</name>
        <t>An endpoint sends a NEW_CONNECTION_ID frame (type=0x18) to provide its peer with
alternative connection IDs that can be used to break linkability when migrating
connections; see <xref target="migration-linkability" format="default"/>.</t>
        <t>The NEW_CONNECTION_ID frame is shown in <xref target="fig-new-connection-id" format="default"/>.</t>
        <figure anchor="fig-new-connection-id">
          <name>NEW_CONNECTION_ID Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
NEW_CONNECTION_ID Frame {
  Type (i) = 0x18,
  Sequence Number (i),
  Retire Prior To (i),
  Length (8),
  Connection ID (8..160),
  Stateless Reset Token (128),
}
]]></artwork>
        </figure>
        <t>NEW_CONNECTION_ID frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Sequence Number:</dt>
          <dd>
  The sequence number assigned to the connection ID by the sender.  See
<xref target="issue-cid" format="default"/>.</dd>
          <dt>Retire Prior To:</dt>
          <dd>
  A variable-length integer indicating which connection IDs should be retired;
see <xref target="retire-cid" format="default"/>.</dd>
          <dt>Length:</dt>
          <dd>
  An 8-bit unsigned integer containing the length of the connection ID.  Values
less than 1 and greater than 20 are invalid and MUST be treated as a
connection error of type FRAME_ENCODING_ERROR.</dd>
          <dt>Connection ID:</dt>
          <dd>
  A connection ID of the specified length.</dd>
          <dt>Stateless Reset Token:</dt>
          <dd>
  A 128-bit value that will be used for a stateless reset when the associated
connection ID is used; see <xref target="stateless-reset" format="default"/>.</dd>
        </dl>
        <t>An endpoint MUST NOT send this frame if it currently requires that its peer send
packets with a zero-length Destination Connection ID.  Changing the length of a
connection ID to or from zero-length makes it difficult to identify when the
value of the connection ID changed.  An endpoint that is sending packets with a
zero-length Destination Connection ID MUST treat receipt of a NEW_CONNECTION_ID
frame as a connection error of type PROTOCOL_VIOLATION.</t>
        <t>Transmission errors, timeouts and retransmissions might cause the same
NEW_CONNECTION_ID frame to be received multiple times.  Receipt of the same
frame multiple times MUST NOT be treated as a connection error.  A receiver can
use the sequence number supplied in the NEW_CONNECTION_ID frame to identify new
connection IDs from old ones.</t>
        <t>If an endpoint receives a NEW_CONNECTION_ID frame that repeats a previously
issued connection ID with a different Stateless Reset Token or a different
sequence number, or if a sequence number is used for different connection
IDs, the endpoint MAY treat that receipt as a connection error of type
PROTOCOL_VIOLATION.</t>
        <t>The Retire Prior To field counts connection IDs established during connection
setup and the preferred_address transport parameter; see <xref target="retire-cid" format="default"/>. The
Retire Prior To field MUST be less than or equal to the Sequence Number field.
Receiving a value greater than the Sequence Number MUST be treated as a
connection error of type FRAME_ENCODING_ERROR.</t>
        <t>Once a sender indicates a Retire Prior To value, smaller values sent in
subsequent NEW_CONNECTION_ID frames have no effect. A receiver MUST ignore any
Retire Prior To fields that do not increase the largest received Retire Prior To
value.</t>
        <t>An endpoint that receives a NEW_CONNECTION_ID frame with a sequence number
smaller than the Retire Prior To field of a previously received
NEW_CONNECTION_ID frame MUST send a corresponding RETIRE_CONNECTION_ID frame
that retires the newly received connection ID, unless it has already done so
for that sequence number.</t>
      </section>
      <section anchor="frame-retire-connection-id" numbered="true" toc="default">
        <name>RETIRE_CONNECTION_ID Frame</name>
        <t>An endpoint sends a RETIRE_CONNECTION_ID frame (type=0x19) to indicate that it
will no longer use a connection ID that was issued by its peer. This may include
the connection ID provided during the handshake.  Sending a RETIRE_CONNECTION_ID
frame also serves as a request to the peer to send additional connection IDs for
future use; see <xref target="connection-id" format="default"/>.  New connection IDs can be delivered to a
peer using the NEW_CONNECTION_ID frame (<xref target="frame-new-connection-id" format="default"/>).</t>
        <t>Retiring a connection ID invalidates the stateless reset token associated with
that connection ID.</t>
        <t>The RETIRE_CONNECTION_ID frame is shown in <xref target="fig-retire-connection-id" format="default"/>.</t>
        <figure anchor="fig-retire-connection-id">
          <name>RETIRE_CONNECTION_ID Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
RETIRE_CONNECTION_ID Frame {
  Type (i) = 0x19,
  Sequence Number (i),
}
]]></artwork>
        </figure>
        <t>RETIRE_CONNECTION_ID frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Sequence Number:</dt>
          <dd>
  The sequence number of the connection ID being retired; see <xref target="retire-cid" format="default"/>.</dd>
        </dl>
        <t>Receipt of a RETIRE_CONNECTION_ID frame containing a sequence number greater
than any previously sent to the peer MUST be treated as a connection error of
type PROTOCOL_VIOLATION.</t>
        <t>The sequence number specified in a RETIRE_CONNECTION_ID frame MUST NOT refer
to the Destination Connection ID field of the packet in which the frame is
contained.  The peer MAY treat this as a connection error of type
FRAME_ENCODING_ERROR.</t>
        <t>An endpoint cannot send this frame if it was provided with a zero-length
connection ID by its peer.  An endpoint that provides a zero-length connection
ID MUST treat receipt of a RETIRE_CONNECTION_ID frame as a connection error of
type PROTOCOL_VIOLATION.</t>
      </section>
      <section anchor="frame-path-challenge" numbered="true" toc="default">
        <name>PATH_CHALLENGE Frame</name>
        <t>Endpoints can use PATH_CHALLENGE frames (type=0x1a) to check reachability to the
peer and for path validation during connection migration.</t>
        <t>The PATH_CHALLENGE frame is shown in <xref target="fig-path-challenge" format="default"/>.</t>
        <figure anchor="fig-path-challenge">
          <name>PATH_CHALLENGE Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
PATH_CHALLENGE Frame {
  Type (i) = 0x1a,
  Data (64),
}
]]></artwork>
        </figure>
        <t>PATH_CHALLENGE frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Data:</dt>
          <dd>
  This 8-byte field contains arbitrary data.</dd>
        </dl>
        <t>A PATH_CHALLENGE frame containing 8 bytes that are hard to guess is sufficient
to ensure that it is easier to receive the packet than it is to guess the value
correctly.</t>
        <t>The recipient of this frame MUST generate a PATH_RESPONSE frame
(<xref target="frame-path-response" format="default"/>) containing the same Data.</t>
      </section>
      <section anchor="frame-path-response" numbered="true" toc="default">
        <name>PATH_RESPONSE Frame</name>
        <t>The PATH_RESPONSE frame (type=0x1b) is sent in response to a PATH_CHALLENGE
frame.  Its format, shown in <xref target="fig-path-response" format="default"/> is identical to the
PATH_CHALLENGE frame (<xref target="frame-path-challenge" format="default"/>).</t>
        <figure anchor="fig-path-response">
          <name>PATH_RESPONSE Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
PATH_RESPONSE Frame {
  Type (i) = 0x1b,
  Data (64),
}
]]></artwork>
        </figure>
        <t>If the content of a PATH_RESPONSE frame does not match the content of a
PATH_CHALLENGE frame previously sent by the endpoint, the endpoint MAY generate
a connection error of type PROTOCOL_VIOLATION.</t>
      </section>
      <section anchor="frame-connection-close" numbered="true" toc="default">
        <name>CONNECTION_CLOSE Frames</name>
        <t>An endpoint sends a CONNECTION_CLOSE frame (type=0x1c or 0x1d) to notify its
peer that the connection is being closed.  The CONNECTION_CLOSE with a frame
type of 0x1c is used to signal errors at only the QUIC layer, or the absence of
errors (with the NO_ERROR code).  The CONNECTION_CLOSE frame with a type of 0x1d
is used to signal an error with the application that uses QUIC.</t>
        <t>If there are open streams that haven't been explicitly closed, they are
implicitly closed when the connection is closed.</t>
        <t>The CONNECTION_CLOSE frames are shown in <xref target="fig-connection-close" format="default"/>.</t>
        <figure anchor="fig-connection-close">
          <name>CONNECTION_CLOSE Frame Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
CONNECTION_CLOSE Frame {
  Type (i) = 0x1c..0x1d,
  Error Code (i),
  [Frame Type (i)],
  Reason Phrase Length (i),
  Reason Phrase (..),
}
]]></artwork>
        </figure>
        <t>CONNECTION_CLOSE frames contain the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Error Code:</dt>
          <dd>
  A variable length integer error code which indicates the reason for
closing this connection.  A CONNECTION_CLOSE frame of type 0x1c uses codes
from the space defined in <xref target="error-codes" format="default"/>.  A CONNECTION_CLOSE frame of
type 0x1d uses codes from the application protocol error code space;
see <xref target="app-error-codes" format="default"/></dd>
          <dt>Frame Type:</dt>
          <dd>
  A variable-length integer encoding the type of frame that triggered the error.
A value of 0 (equivalent to the mention of the PADDING frame) is used when the
frame type is unknown.  The application-specific variant of CONNECTION_CLOSE
(type 0x1d) does not include this field.</dd>
          <dt>Reason Phrase Length:</dt>
          <dd>
  A variable-length integer specifying the length of the reason phrase in bytes.
Because a CONNECTION_CLOSE frame cannot be split between packets, any limits
on packet size will also limit the space available for a reason phrase.</dd>
          <dt>Reason Phrase:</dt>
          <dd>
  A human-readable explanation for why the connection was closed.  This can be
zero length if the sender chooses to not give details beyond the Error Code.
This SHOULD be a UTF-8 encoded string <xref target="RFC3629" format="default"/>.</dd>
        </dl>
        <t>The application-specific variant of CONNECTION_CLOSE (type 0x1d) can only be
sent using 0-RTT or 1-RTT packets (<xref target="QUIC-TLS" format="default"/>, Section 4).  When an
application wishes to abandon a connection during the handshake, an endpoint
can send a CONNECTION_CLOSE frame (type 0x1c) with an error code of
APPLICATION_ERROR in an Initial or a Handshake packet.</t>
      </section>
      <section anchor="frame-handshake-done" numbered="true" toc="default">
        <name>HANDSHAKE_DONE frame</name>
        <t>The server uses the HANDSHAKE_DONE frame (type=0x1e) to signal confirmation of
the handshake to the client.  The HANDSHAKE_DONE frame contains no additional
fields.</t>
        <t>This frame can only be sent by the server. Servers MUST NOT send a
HANDSHAKE_DONE frame before completing the handshake.  A server MUST treat
receipt of a HANDSHAKE_DONE frame as a connection error of type
PROTOCOL_VIOLATION.</t>
      </section>
      <section anchor="extension-frames" numbered="true" toc="default">
        <name>Extension Frames</name>
        <t>QUIC frames do not use a self-describing encoding.  An endpoint therefore needs
to understand the syntax of all frames before it can successfully process a
packet.  This allows for efficient encoding of frames, but it means that an
endpoint cannot send a frame of a type that is unknown to its peer.</t>
        <t>An extension to QUIC that wishes to use a new type of frame MUST first ensure
that a peer is able to understand the frame.  An endpoint can use a transport
parameter to signal its willingness to receive one or more extension frame types
with the one transport parameter.</t>
        <t>Extensions that modify or replace core protocol functionality (including frame
types) will be difficult to combine with other extensions which modify or
replace the same functionality unless the behavior of the combination is
explicitly defined.  Such extensions SHOULD define their interaction with
previously-defined extensions modifying the same protocol components.</t>
        <t>Extension frames MUST be congestion controlled and MUST cause an ACK frame to
be sent.  The exception is extension frames that replace or supplement the ACK
frame.  Extension frames are not included in flow control unless specified
in the extension.</t>
        <t>An IANA registry is used to manage the assignment of frame types; see
<xref target="iana-frames" format="default"/>.</t>
      </section>
    </section>
    <section anchor="error-codes" numbered="true" toc="default">
      <name>Transport Error Codes</name>
      <t>QUIC error codes are 62-bit unsigned integers.</t>
      <t>This section lists the defined QUIC transport error codes that may be used in a
CONNECTION_CLOSE frame.  These errors apply to the entire connection.</t>
      <dl newline="false" spacing="normal">
        <dt>NO_ERROR (0x0):</dt>
        <dd>
  An endpoint uses this with CONNECTION_CLOSE to signal that the connection is
being closed abruptly in the absence of any error.</dd>
        <dt>INTERNAL_ERROR (0x1):</dt>
        <dd>
  The endpoint encountered an internal error and cannot continue with the
connection.</dd>
        <dt>SERVER_BUSY (0x2):</dt>
        <dd>
  The server is currently busy and does not accept any new connections.</dd>
        <dt>FLOW_CONTROL_ERROR (0x3):</dt>
        <dd>
  An endpoint received more data than it permitted in its advertised data
limits; see <xref target="flow-control" format="default"/>.</dd>
        <dt>STREAM_LIMIT_ERROR (0x4):</dt>
        <dd>
  An endpoint received a frame for a stream identifier that exceeded its
advertised stream limit for the corresponding stream type.</dd>
        <dt>STREAM_STATE_ERROR (0x5):</dt>
        <dd>
  An endpoint received a frame for a stream that was not in a state that
permitted that frame; see <xref target="stream-states" format="default"/>.</dd>
        <dt>FINAL_SIZE_ERROR (0x6):</dt>
        <dd>
  An endpoint received a STREAM frame containing data that exceeded the
previously established final size.  Or an endpoint received a STREAM frame or
a RESET_STREAM frame containing a final size that was lower than the size of
stream data that was already received.  Or an endpoint received a STREAM frame
or a RESET_STREAM frame containing a different final size to the one already
established.</dd>
        <dt>FRAME_ENCODING_ERROR (0x7):</dt>
        <dd>
  An endpoint received a frame that was badly formatted.  For instance, a frame
of an unknown type, or an ACK frame that has more acknowledgment ranges than
the remainder of the packet could carry.</dd>
        <dt>TRANSPORT_PARAMETER_ERROR (0x8):</dt>
        <dd>
  An endpoint received transport parameters that were badly formatted, included
an invalid value, was absent even though it is mandatory, was present though
it is forbidden, or is otherwise in error.</dd>
        <dt>CONNECTION_ID_LIMIT_ERROR (0x9):</dt>
        <dd>
  The number of connection IDs provided by the peer exceeds the advertised
active_connection_id_limit.</dd>
        <dt>PROTOCOL_VIOLATION (0xA):</dt>
        <dd>
  An endpoint detected an error with protocol compliance that was not covered by
more specific error codes.</dd>
        <dt>INVALID_TOKEN (0xB):</dt>
        <dd>
  A server received a Retry Token in a client Initial that is invalid.</dd>
        <dt>APPLICATION_ERROR (0xC):</dt>
        <dd>
  The application or application protocol caused the connection to be closed.</dd>
        <dt>CRYPTO_BUFFER_EXCEEDED (0xD):</dt>
        <dd>
  An endpoint has received more data in CRYPTO frames than it can buffer.</dd>
        <dt>CRYPTO_ERROR (0x1XX):</dt>
        <dd>
  The cryptographic handshake failed.  A range of 256 values is reserved for
carrying error codes specific to the cryptographic handshake that is used.
Codes for errors occurring when TLS is used for the crypto handshake are
described in Section 4.8 of <xref target="QUIC-TLS" format="default"/>.</dd>
      </dl>
      <t>See <xref target="iana-error-codes" format="default"/> for details of registering new error codes.</t>
      <t>In defining these error codes, several principles are applied.  Error conditions
that might require specific action on the part of a recipient are given unique
codes.  Errors that represent common conditions are given specific codes.
Absent either of these conditions, error codes are used to identify a general
function of the stack, like flow control or transport parameter handling.
Finally, generic errors are provided for conditions where implementations are
unable or unwilling to use more specific codes.</t>
      <section anchor="app-error-codes" numbered="true" toc="default">
        <name>Application Protocol Error Codes</name>
        <t>Application protocol error codes are 62-bit unsigned integers, but the
management of application error codes is left to application protocols.
Application protocol error codes are used for the RESET_STREAM frame
(<xref target="frame-reset-stream" format="default"/>), the STOP_SENDING frame (<xref target="frame-stop-sending" format="default"/>), and
the CONNECTION_CLOSE frame with a type of 0x1d (<xref target="frame-connection-close" format="default"/>).</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="handshake-dos" numbered="true" toc="default">
        <name>Handshake Denial of Service</name>
        <t>As an encrypted and authenticated transport QUIC provides a range of protections
against denial of service.  Once the cryptographic handshake is complete, QUIC
endpoints discard most packets that are not authenticated, greatly limiting the
ability of an attacker to interfere with existing connections.</t>
        <t>Once a connection is established QUIC endpoints might accept some
unauthenticated ICMP packets (see <xref target="icmp-pmtud" format="default"/>), but the use of these packets
is extremely limited.  The only other type of packet that an endpoint might
accept is a stateless reset (<xref target="stateless-reset" format="default"/>) which relies on the token
being kept secret until it is used.</t>
        <t>During the creation of a connection, QUIC only provides protection against
attack from off the network path.  All QUIC packets contain proof that the
recipient saw a preceding packet from its peer.</t>
        <t>Addresses cannot change during the handshake, so endpoints can discard packets
that are received on a different network path.</t>
        <t>The Source and Destination Connection ID fields are the primary means of
protection against off-path attack during the handshake.  These are required to
match those set by a peer.  Except for an Initial and stateless reset packets,
an endpoint only accepts packets that include a Destination Connection ID field
that matches a value the endpoint previously chose.  This is the only protection
offered for Version Negotiation packets.</t>
        <t>The Destination Connection ID field in an Initial packet is selected by a client
to be unpredictable, which serves an additional purpose.  The packets that carry
the cryptographic handshake are protected with a key that is derived from this
connection ID and salt specific to the QUIC version.  This allows endpoints to
use the same process for authenticating packets that they receive as they use
after the cryptographic handshake completes.  Packets that cannot be
authenticated are discarded.  Protecting packets in this fashion provides a
strong assurance that the sender of the packet saw the Initial packet and
understood it.</t>
        <t>These protections are not intended to be effective against an attacker that is
able to receive QUIC packets prior to the connection being established.  Such an
attacker can potentially send packets that will be accepted by QUIC endpoints.
This version of QUIC attempts to detect this sort of attack, but it expects that
endpoints will fail to establish a connection rather than recovering.  For the
most part, the cryptographic handshake protocol <xref target="QUIC-TLS" format="default"/> is responsible for
detecting tampering during the handshake.</t>
        <t>Endpoints are permitted to use other methods to detect and attempt to recover
from interference with the handshake.  Invalid packets may be identified and
discarded using other methods, but no specific method is mandated in this
document.</t>
      </section>
      <section anchor="amplification-attack" numbered="true" toc="default">
        <name>Amplification Attack</name>
        <t>An attacker might be able to receive an address validation token
(<xref target="address-validation" format="default"/>) from a server and then release the IP address it used
to acquire that token.  At a later time, the attacker may initiate a 0-RTT
connection with a server by spoofing this same address, which might now address
a different (victim) endpoint.  The attacker can thus potentially cause the
server to send an initial congestion window's worth of data towards the victim.</t>
        <t>Servers SHOULD provide mitigations for this attack by limiting the usage and
lifetime of address validation tokens; see <xref target="validate-future" format="default"/>.</t>
      </section>
      <section anchor="optimistic-ack-attack" numbered="true" toc="default">
        <name>Optimistic ACK Attack</name>
        <t>An endpoint that acknowledges packets it has not received might cause a
congestion controller to permit sending at rates beyond what the network
supports.  An endpoint MAY skip packet numbers when sending packets to detect
this behavior.  An endpoint can then immediately close the connection with a
connection error of type PROTOCOL_VIOLATION; see <xref target="immediate-close" format="default"/>.</t>
      </section>
      <section anchor="slowloris-attacks" numbered="true" toc="default">
        <name>Slowloris Attacks</name>
        <t>The attacks commonly known as Slowloris <xref target="SLOWLORIS" format="default"/> try to keep many
connections to the target endpoint open and hold them open as long as possible.
These attacks can be executed against a QUIC endpoint by generating the minimum
amount of activity necessary to avoid being closed for inactivity.  This might
involve sending small amounts of data, gradually opening flow control windows in
order to control the sender rate, or manufacturing ACK frames that simulate a
high loss rate.</t>
        <t>QUIC deployments SHOULD provide mitigations for the Slowloris attacks, such as
increasing the maximum number of clients the server will allow, limiting the
number of connections a single IP address is allowed to make, imposing
restrictions on the minimum transfer speed a connection is allowed to have, and
restricting the length of time an endpoint is allowed to stay connected.</t>
      </section>
      <section anchor="stream-fragmentation-and-reassembly-attacks" numbered="true" toc="default">
        <name>Stream Fragmentation and Reassembly Attacks</name>
        <t>An adversarial sender might intentionally send fragments of stream data in
order to cause disproportionate receive buffer memory commitment and/or
creation of a large and inefficient data structure.</t>
        <t>An adversarial receiver might intentionally not acknowledge packets
containing stream data in order to force the sender to store the
unacknowledged stream data for retransmission.</t>
        <t>The attack on receivers is mitigated if flow control windows correspond to
available memory.  However, some receivers will over-commit memory and
advertise flow control offsets in the aggregate that exceed actual available
memory.  The over-commitment strategy can lead to better performance when
endpoints are well behaved, but renders endpoints vulnerable to the stream
fragmentation attack.</t>
        <t>QUIC deployments SHOULD provide mitigations against stream fragmentation
attacks.  Mitigations could consist of avoiding over-committing memory,
limiting the size of tracking data structures, delaying reassembly
of STREAM frames, implementing heuristics based on the age and
duration of reassembly holes, or some combination.</t>
      </section>
      <section anchor="stream-commitment-attack" numbered="true" toc="default">
        <name>Stream Commitment Attack</name>
        <t>An adversarial endpoint can open lots of streams, exhausting state on an
endpoint.  The adversarial endpoint could repeat the process on a large number
of connections, in a manner similar to SYN flooding attacks in TCP.</t>
        <t>Normally, clients will open streams sequentially, as explained in <xref target="stream-id" format="default"/>.
However, when several streams are initiated at short intervals, loss or
reordering may cause STREAM frames that open streams to be received out of
sequence.  On receiving a higher-numbered stream ID, a receiver is required to
open all intervening streams of the same type; see <xref target="stream-recv-states" format="default"/>.
Thus, on a new connection, opening stream 4000000 opens 1 million and 1
client-initiated bidirectional streams.</t>
        <t>The number of active streams is limited by the initial_max_streams_bidi and
initial_max_streams_uni transport parameters, as explained in
<xref target="controlling-concurrency" format="default"/>.  If chosen judiciously, these limits mitigate the
effect of the stream commitment attack.  However, setting the limit too low
could affect performance when applications expect to open large number of
streams.</t>
      </section>
      <section anchor="useless" numbered="true" toc="default">
        <name>Peer Denial of Service</name>
        <t>QUIC and TLS both contain messages that have legitimate uses in some contexts,
but that can be abused to cause a peer to expend processing resources without
having any observable impact on the state of the connection.</t>
        <t>Messages can also be used to change and revert state in small or inconsequential
ways, such as by sending small increments to flow control limits.</t>
        <t>If processing costs are disproportionately large in comparison to bandwidth
consumption or effect on state, then this could allow a malicious peer to
exhaust processing capacity.</t>
        <t>While there are legitimate uses for all messages, implementations SHOULD track
cost of processing relative to progress and treat excessive quantities of any
non-productive packets as indicative of an attack.  Endpoints MAY respond to
this condition with a connection error, or by dropping packets.</t>
      </section>
      <section anchor="security-ecn" numbered="true" toc="default">
        <name>Explicit Congestion Notification Attacks</name>
        <t>An on-path attacker could manipulate the value of ECN codepoints in the IP
header to influence the sender's rate. <xref target="RFC3168" format="default"/> discusses manipulations and
their effects in more detail.</t>
        <t>An on-the-side attacker can duplicate and send packets with modified ECN
codepoints to affect the sender's rate.  If duplicate packets are discarded by a
receiver, an off-path attacker will need to race the duplicate packet against
the original to be successful in this attack.  Therefore, QUIC endpoints ignore
the ECN codepoint field on an IP packet unless at least one QUIC packet in that
IP packet is successfully processed; see <xref target="ecn" format="default"/>.</t>
      </section>
      <section anchor="reset-oracle" numbered="true" toc="default">
        <name>Stateless Reset Oracle</name>
        <t>Stateless resets create a possible denial of service attack analogous to a TCP
reset injection. This attack is possible if an attacker is able to cause a
stateless reset token to be generated for a connection with a selected
connection ID. An attacker that can cause this token to be generated can reset
an active connection with the same connection ID.</t>
        <t>If a packet can be routed to different instances that share a static key, for
example by changing an IP address or port, then an attacker can cause the server
to send a stateless reset.  To defend against this style of denial service,
endpoints that share a static key for stateless reset (see <xref target="reset-token" format="default"/>) MUST
be arranged so that packets with a given connection ID always arrive at an
instance that has connection state, unless that connection is no longer active.</t>
        <t>In the case of a cluster that uses dynamic load balancing, it's possible that a
change in load balancer configuration could happen while an active instance
retains connection state; even if an instance retains connection state, the
change in routing and resulting stateless reset will result in the connection
being terminated.  If there is no chance in the packet being routed to the
correct instance, it is better to send a stateless reset than wait for
connections to time out.  However, this is acceptable only if the routing cannot
be influenced by an attacker.</t>
      </section>
      <section anchor="version-downgrade" numbered="true" toc="default">
        <name>Version Downgrade</name>
        <t>This document defines QUIC Version Negotiation packets in
<xref target="version-negotiation" format="default"/>, which can be used to negotiate the QUIC version used
between two endpoints. However, this document does not specify how this
negotiation will be performed between this version and subsequent future
versions.  In particular, Version Negotiation packets do not contain any
mechanism to prevent version downgrade attacks.  Future versions of QUIC that
use Version Negotiation packets MUST define a mechanism that is robust against
version downgrade attacks.</t>
      </section>
      <section anchor="targeted-attacks-by-routing" numbered="true" toc="default">
        <name>Targeted Attacks by Routing</name>
        <t>Deployments should limit the ability of an attacker to target a new connection
to a particular server instance.  This means that client-controlled fields, such
as the initial Destination Connection ID used on Initial and 0-RTT packets
SHOULD NOT be used by themselves to make routing decisions.  Ideally, routing
decisions are made independently of client-selected values; a Source Connection
ID can be selected to route later packets to the same server.</t>
      </section>
      <section anchor="security-properties" numbered="true" toc="default">
        <name>Overview of Security Properties</name>
        <t>A complete security analysis of QUIC is outside the scope of this document.
This section provides an informal description of the desired security properties
as an aid to implementors and to help guide protocol analysis.</t>
        <t>QUIC assumes the threat model described in <xref target="SEC-CONS" format="default"/> and provides
protections against many of the attacks that arise from that model.</t>
        <t>For this purpose, attacks are divided into passive and active attacks.  Passive
attackers have the capability to read packets from the network, while active
attackers also have the capability to write packets into the network.  However,
a passive attack may involve an attacker with the ability to cause a routing
change or other modification in the path taken by packets that comprise a
connection.</t>
        <t>Attackers are additionally categorized as either on-path attackers or off-path
attackers; see Section 3.5 of <xref target="SEC-CONS" format="default"/>.  An on-path attacker can read,
modify, or remove any packet it observes such that it no longer reaches its
destination, while an off-path attacker observes the packets, but cannot prevent
the original packet from reaching its intended destination.  An off-path
attacker can also transmit arbitrary packets.</t>
        <t>Properties of the handshake, protected packets, and connection migration are
considered separately.</t>
        <section anchor="handshake-properties" numbered="true" toc="default">
          <name>Handshake</name>
          <t>The QUIC handshake incorporates the TLS 1.3 handshake and inherits the
cryptographic properties described in Appendix E.1 of <xref target="TLS13" format="default"/>. Many
of the security properties of QUIC depend on the TLS handshake providing these
properties. Any attack on the TLS handshake could affect QUIC.</t>
          <t>Any attack on the TLS handshake that compromises the secrecy or uniqueness
of session keys affects other security guarantees provided by QUIC that depends
on these keys. For instance, migration (<xref target="migration" format="default"/>) depends on the efficacy
of confidentiality protections, both for the negotiation of keys using the TLS
handshake and for QUIC packet protection, to avoid linkability across network
paths.</t>
          <t>An attack on the integrity of the TLS handshake might allow an attacker to
affect the selection of application protocol or QUIC version.</t>
          <t>In addition to the properties provided by TLS, the QUIC handshake provides some
defense against DoS attacks on the handshake.</t>
          <section anchor="anti-amplification" numbered="true" toc="default">
            <name>Anti-Amplification</name>
            <t>Address validation (<xref target="address-validation" format="default"/>) is used to verify that an entity
that claims a given address is able to receive packets at that address. Address
validation limits amplification attack targets to addresses for which an
attacker is either on-path or off-path.</t>
            <t>Prior to validation, endpoints are limited in what they are able to send.
During the handshake, a server cannot send more than three times the data it
receives; clients that initiate new connections or migrate to a new network
path are limited.</t>
          </section>
          <section anchor="server-side-dos" numbered="true" toc="default">
            <name>Server-Side DoS</name>
            <t>Computing the server's first flight for a full handshake is potentially
expensive, requiring both a signature and a key exchange computation. In order
to prevent computational DoS attacks, the Retry packet provides a cheap token
exchange mechanism which allows servers to validate a client's IP address prior
to doing any expensive computations at the cost of a single round trip. After a
successful handshake, servers can issue new tokens to a client which will allow
new connection establishment without incurring this cost.</t>
          </section>
          <section anchor="on-path-handshake-termination" numbered="true" toc="default">
            <name>On-Path Handshake Termination</name>
            <t>An on-path or off-path attacker can force a handshake to fail by replacing or
racing Initial packets. Once valid Initial packets have been exchanged,
subsequent Handshake packets are protected with the handshake keys and an
on-path attacker cannot force handshake failure other than by dropping packets
to cause endpoints to abandon the attempt.</t>
            <t>An on-path attacker can also replace the addresses of packets on either side and
therefore cause the client or server to have an incorrect view of the remote
addresses. Such an attack is indistinguishable from the functions performed by a
NAT.</t>
          </section>
          <section anchor="parameter-negotiation" numbered="true" toc="default">
            <name>Parameter Negotiation</name>
            <t>The entire handshake is cryptographically protected, with the Initial packets
being encrypted with per-version keys and the Handshake and later packets being
encrypted with keys derived from the TLS key exchange.  Further, parameter
negotiation is folded into the TLS transcript and thus provides the same
integrity guarantees as ordinary TLS negotiation.  An attacker can observe
the client's transport parameters (as long as it knows the version-specific
keys) but cannot observe the server's transport parameters and cannot influence
parameter negotiation.</t>
            <t>Connection IDs are unencrypted but integrity protected in all packets.</t>
            <t>This version of QUIC does not incorporate a version negotiation mechanism;
implementations of incompatible versions will simply fail to establish a
connection.</t>
          </section>
        </section>
        <section anchor="protected-packet-properties" numbered="true" toc="default">
          <name>Protected Packets</name>
          <t>Packet protection (<xref target="packet-protected" format="default"/>) provides authentication and encryption
of all packets except Version Negotiation packets, though Initial and Retry
packets have limited encryption and authentication based on version-specific
keys; see <xref target="QUIC-TLS" format="default"/> for more details. This section considers passive and
active attacks against protected packets.</t>
          <t>Both on-path and off-path attackers can mount a passive attack in which they
save observed packets for an offline attack against packet protection at a
future time; this is true for any observer of any packet on any network.</t>
          <t>A blind attacker, one who injects packets without being able to observe valid
packets for a connection, is unlikely to be successful, since packet protection
ensures that valid packets are only generated by endpoints which possess the
key material established during the handshake; see <xref target="handshake" format="default"/> and
<xref target="handshake-properties" format="default"/>. Similarly, any active attacker that observes packets
and attempts to insert new data or modify existing data in those packets should
not be able to generate packets deemed valid by the receiving endpoint.</t>
          <t>A spoofing attack, in which an active attacker rewrites unprotected parts of a
packet that it forwards or injects, such as the source or destination
address, is only effective if the attacker can forward packets to the original
endpoint.  Packet protection ensures that the packet payloads can only be
processed by the endpoints that completed the handshake, and invalid
packets are ignored by those endpoints.</t>
          <t>An attacker can also modify the boundaries between packets and UDP datagrams,
causing multiple packets to be coalesced into a single datagram, or splitting
coalesced packets into multiple datagrams. Aside from datagrams containing
Initial packets, which require padding, modification of how packets are
arranged in datagrams has no functional effect on a connection, although it
might change some performance characteristics.</t>
        </section>
        <section anchor="migration-properties" numbered="true" toc="default">
          <name>Connection Migration</name>
          <t>Connection Migration (<xref target="migration" format="default"/>) provides endpoints with the ability to
transition between IP addresses and ports on multiple paths, using one path at a
time for transmission and receipt of non-probing frames.  Path validation
(<xref target="migrate-validate" format="default"/>) establishes that a peer is both willing and able
to receive packets sent on a particular path.  This helps reduce the effects of
address spoofing by limiting the number of packets sent to a spoofed address.</t>
          <t>This section describes the intended security properties of connection migration
when under various types of DoS attacks.</t>
          <section anchor="on-path-active-attacks" numbered="true" toc="default">
            <name>On-Path Active Attacks</name>
            <t>An attacker that can cause a packet it observes to no longer reach its intended
destination is considered an on-path attacker. When an attacker is present
between a client and server, endpoints are required to send packets through the
attacker to establish connectivity on a given path.</t>
            <t>An on-path attacker can:</t>
            <ul spacing="normal">
              <li>Inspect packets</li>
              <li>Modify IP and UDP packet headers</li>
              <li>Inject new packets</li>
              <li>Delay packets</li>
              <li>Reorder packets</li>
              <li>Drop packets</li>
              <li>Split and merge datagrams along packet boundaries</li>
            </ul>
            <t>An on-path attacker cannot:</t>
            <ul spacing="normal">
              <li>Modify an authenticated portion of a packet and cause the recipient to accept
that packet</li>
            </ul>
            <t>An on-path attacker has the opportunity to modify the packets that it observes,
however any modifications to an authenticated portion of a packet will cause it
to be dropped by the receiving endpoint as invalid, as packet payloads are both
authenticated and encrypted.</t>
            <t>In the presence of an on-path attacker, QUIC aims to provide the following
properties:</t>
            <ol spacing="normal" type="1">
              <li>An on-path attacker can prevent use of a path for a connection, causing
it to fail if it cannot use a different path that does not contain the
attacker. This can be achieved by dropping all packets, modifying them so
that they fail to decrypt, or other methods.</li>
              <li>An on-path attacker can prevent migration to a new path for which the
attacker is also on-path by causing path validation to fail on the new path.</li>
              <li>An on-path attacker cannot prevent a client from migrating to a path for
which the attacker is not on-path.</li>
              <li>An on-path attacker can reduce the throughput of a connection by delaying
packets or dropping them.</li>
              <li>An on-path attacker cannot cause an endpoint to accept a packet for which it
has modified an authenticated portion of that packet.</li>
            </ol>
          </section>
          <section anchor="off-path-active-attacks" numbered="true" toc="default">
            <name>Off-Path Active Attacks</name>
            <t>An off-path attacker is not directly on the path between a client and server,
but could be able to obtain copies of some or all packets sent between the
client and the server. It is also able to send copies of those packets to
either endpoint.</t>
            <t>An off-path attacker can:</t>
            <ul spacing="normal">
              <li>Inspect packets</li>
              <li>Inject new packets</li>
              <li>Reorder injected packets</li>
            </ul>
            <t>An off-path attacker cannot:</t>
            <ul spacing="normal">
              <li>Modify any part of a packet</li>
              <li>Delay packets</li>
              <li>Drop packets</li>
              <li>Reorder original packets</li>
            </ul>
            <t>An off-path attacker can modify packets that it has observed and inject them
back into the network, potentially with spoofed source and destination
addresses.</t>
            <t>For the purposes of this discussion, it is assumed that an off-path attacker
has the ability to observe, modify, and re-inject a packet into the network
that will reach the destination endpoint prior to the arrival of the original
packet observed by the attacker. In other words, an attacker has the ability to
consistently "win" a race with the legitimate packets between the endpoints,
potentially causing the original packet to be ignored by the recipient.</t>
            <t>It is also assumed that an attacker has the resources necessary to affect NAT
state, potentially both causing an endpoint to lose its NAT binding, and an
attacker to obtain the same port for use with its traffic.</t>
            <t>In the presence of an off-path attacker, QUIC aims to provide the following
properties:</t>
            <ol spacing="normal" type="1">
              <li>An off-path attacker can race packets and attempt to become a "limited"
on-path attacker.</li>
              <li>An off-path attacker can cause path validation to succeed for forwarded
packets with the source address listed as the off-path attacker as long as
it can provide improved connectivity between the client and the server.</li>
              <li>An off-path attacker cannot cause a connection to close once the handshake
has completed.</li>
              <li>An off-path attacker cannot cause migration to a new path to fail if it
cannot observe the new path.</li>
              <li>An off-path attacker can become a limited on-path attacker during migration
to a new path for which it is also an off-path attacker.</li>
              <li>An off-path attacker can become a limited on-path attacker by affecting
shared NAT state such that it sends packets to the server from the same IP
address and port that the client originally used.</li>
            </ol>
          </section>
          <section anchor="limited-on-path-active-attacks" numbered="true" toc="default">
            <name>Limited On-Path Active Attacks</name>
            <t>A limited on-path attacker is an off-path attacker that has offered improved
routing of packets by duplicating and forwarding original packets between the
server and the client, causing those packets to arrive before the original
copies such that the original packets are dropped by the destination endpoint.</t>
            <t>A limited on-path attacker differs from an on-path attacker in that it is not on
the original path between endpoints, and therefore the original packets sent by
an endpoint are still reaching their destination.  This means that a future
failure to route copied packets to the destination faster than their original
path will not prevent the original packets from reaching the destination.</t>
            <t>A limited on-path attacker can:</t>
            <ul spacing="normal">
              <li>Inspect packets</li>
              <li>Inject new packets</li>
              <li>Modify unencrypted packet headers</li>
              <li>Reorder packets</li>
            </ul>
            <t>A limited on-path attacker cannot:</t>
            <ul spacing="normal">
              <li>Delay packets so that they arrive later than packets sent on the original path</li>
              <li>Drop packets</li>
              <li>Modify the authenticated and encrypted portion of a packet and cause the
 recipient to accept that packet</li>
            </ul>
            <t>A limited on-path attacker can only delay packets up to the point that the
original packets arrive before the duplicate packets, meaning that it cannot
offer routing with worse latency than the original path.  If a limited on-path
attacker drops packets, the original copy will still arrive at the destination
endpoint.</t>
            <t>In the presence of a limited on-path attacker, QUIC aims to provide the
following properties:</t>
            <ol spacing="normal" type="1">
              <li>A limited on-path attacker cannot cause a connection to close once the
handshake has completed.</li>
              <li>A limited on-path attacker cannot cause an idle connection to close if the
client is first to resume activity.</li>
              <li>A limited on-path attacker can cause an idle connection to be deemed lost if
the server is the first to resume activity.</li>
            </ol>
            <t>Note that these guarantees are the same guarantees provided for any NAT, for the
same reasons.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document establishes several registries for the management of codepoints in
QUIC.  These registries operate on a common set of policies as defined in
<xref target="iana-policy" format="default"/>.</t>
      <section anchor="iana-policy" numbered="true" toc="default">
        <name>Registration Policies for QUIC Registries</name>
        <t>All QUIC registries allow for both provisional and permanent registration of
codepoints.  This section documents policies that are common to these
registries.</t>
        <section anchor="iana-provisional" numbered="true" toc="default">
          <name>Provisional Registrations</name>
          <t>Provisional registration of codepoints are intended to allow for private use and
experimentation with extensions to QUIC.  Provisional registrations only require
the inclusion of the codepoint value and contact information.  However,
provisional registrations could be reclaimed and reassigned for another purpose.</t>
          <t>Provisional registrations require Expert Review, as defined in Section 4.5 of
<xref target="RFC8126" format="default"/>.  Designated expert(s) are advised that only registrations for an
excessive proportion of remaining codepoint space or the very first unassigned
value (see <xref target="iana-random" format="default"/>) can be rejected.</t>
          <t>Provisional registrations will include a date field that indicates when the
registration was last updated.  A request to update the date on any provisional
registration can be made without review from the designated expert(s).</t>
          <t>All QUIC registries include the following fields to support provisional
registration:</t>
          <dl newline="false" spacing="normal">
            <dt>Value:</dt>
            <dd>
  The assigned codepoint.</dd>
            <dt>Status:</dt>
            <dd>
  "Permanent" or "Provisional".</dd>
            <dt>Specification:</dt>
            <dd>
  A reference to a publicly available specification for the value.</dd>
            <dt>Date:</dt>
            <dd>
  The date of last update to the registration.</dd>
            <dt>Contact:</dt>
            <dd>
  Contact details for the registrant.</dd>
            <dt>Notes:</dt>
            <dd>
  Supplementary notes about the registration.</dd>
          </dl>
          <t>Provisional registrations MAY omit the Specification and Notes fields, plus any
additional fields that might be required for a permanent registration.  The Date
field is not required as part of requesting a registration as it is set to the
date the registration is created or updated.</t>
        </section>
        <section anchor="iana-random" numbered="true" toc="default">
          <name>Selecting Codepoints</name>
          <t>New uses of codepoints from QUIC registries SHOULD use a randomly selected
codepoint that excludes both existing allocations and the first unallocated
codepoint in the selected space.  Requests for multiple codepoints MAY use a
contiguous range.  This minimizes the risk that differing semantics are
attributed to the same codepoint by different implementations.  Use of the first
codepoint in a range is intended for use by specifications that are developed
through the standards process <xref target="STD" format="default"/> and its allocation MUST be
negotiated with IANA before use.</t>
          <t>For codepoints that are encoded in variable-length integers
(<xref target="integer-encoding" format="default"/>), such as frame types, codepoints that encode to four or
eight bytes (that is, values 2^14 and above) SHOULD be used unless the usage is
especially sensitive to having a longer encoding.</t>
          <t>Applications to register codepoints in QUIC registries MAY include a codepoint
as part of the registration.  IANA MUST allocate the selected codepoint unless
that codepoint is already assigned or the codepoint is the first unallocated
codepoint in the registry.</t>
        </section>
        <section anchor="reclaiming-provisional-codepoints" numbered="true" toc="default">
          <name>Reclaiming Provisional Codepoints</name>
          <t>A request might be made to remove an unused provisional registration from the
registry to reclaim space in a registry, or portion of the registry (such as the
64-16383 range for codepoints that use variable-length encodings).  This SHOULD
be done only for the codepoints with the earliest recorded date and entries that
have been updated less than a year prior SHOULD NOT be reclaimed.</t>
          <t>A request to remove a codepoint MUST be reviewed by the designated expert(s).
The expert(s) MUST attempt to determine whether the codepoint is still in use.
Experts are advised to contact the listed contacts for the registration, plus as
wide a set of protocol implementers as possible in order to determine whether
any use of the codepoint is known.  The expert(s) are advised to allow at least
four weeks for responses.</t>
          <t>If any use of the codepoints is identified by this search or a request to update
the registration is made, the codepoint MUST NOT be reclaimed.  Instead, the
date on the registration is updated.  A note might be added for the registration
recording relevant information that was learned.</t>
          <t>If no use of the codepoint was identified and no request was made to update the
registration, the codepoint MAY be removed from the registry.</t>
          <t>This process also applies to requests to change a provisional registration into
a permanent registration, except that the goal is not to determine whether there
is no use of the codepoint, but to determine that the registration is an
accurate representation of any deployed usage.</t>
        </section>
        <section anchor="iana-permanent" numbered="true" toc="default">
          <name>Permanent Registrations</name>
          <t>Permanent registrations in QUIC registries use the Specification Required policy
<xref target="RFC8126" format="default"/>, unless otherwise specified.  The designated expert(s) verify that
a specification exists and is readily accessible.  Expert(s) are encouraged to
be biased towards approving registrations unless they are abusive, frivolous, or
actively harmful (not merely aesthetically displeasing, or architecturally
dubious).  The creation of a registry MAY specify additional constraints on
permanent registrations.</t>
          <t>The creation of a registries MAY identify a range of codepoints where
registrations are governed by a different registration policy.  For instance,
the registries for 62-bit codepoints in this document have stricter policies for
codepoints in the range from 0 to 63.</t>
          <t>Any stricter requirements for permanent registrations do not prevent provisional
registrations for affected codepoints.  For instance, a provisional registration
for a frame type <xref target="iana-frames" format="default"/> of 61 could be requested.</t>
          <t>All registrations made by Standards Track publications MUST be permanent.</t>
          <t>All registrations in this document are assigned a permanent status and list as
contact both the IESG (ietf@ietf.org) and the QUIC working group
(<eref target="mailto:quic@ietf.org">quic@ietf.org</eref>).</t>
        </section>
      </section>
      <section anchor="iana-transport-parameters" numbered="true" toc="default">
        <name>QUIC Transport Parameter Registry</name>
        <t>IANA [SHALL add/has added] a registry for "QUIC Transport Parameters" under a
"QUIC" heading.</t>
        <t>The "QUIC Transport Parameters" registry governs a 62-bit space.  This registry
follows the registration policy from <xref target="iana-policy" format="default"/>.  Permanent registrations
in this registry are assigned using the Specification Required policy
<xref target="RFC8126" format="default"/>.</t>
        <t>In addition to the fields in <xref target="iana-provisional" format="default"/>, permanent registrations in
this registry MUST include the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Parameter Name:</dt>
          <dd>
  A short mnemonic for the parameter.</dd>
        </dl>
        <t>The initial contents of this registry are shown in <xref target="iana-tp-table" format="default"/>.</t>
        <table anchor="iana-tp-table" align="center">
          <name>Initial QUIC Transport Parameters Entries</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Parameter Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">original_destination_connection_id</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">max_idle_timeout</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">stateless_reset_token</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">max_udp_payload_size</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">initial_max_data</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">initial_max_stream_data_bidi_local</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">initial_max_stream_data_bidi_remote</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">initial_max_stream_data_uni</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x08</td>
              <td align="left">initial_max_streams_bidi</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x09</td>
              <td align="left">initial_max_streams_uni</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x0a</td>
              <td align="left">ack_delay_exponent</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x0b</td>
              <td align="left">max_ack_delay</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x0c</td>
              <td align="left">disable_active_migration</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x0d</td>
              <td align="left">preferred_address</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x0e</td>
              <td align="left">active_connection_id_limit</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x0f</td>
              <td align="left">initial_source_connection_id</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x10</td>
              <td align="left">retry_source_connection_id</td>
              <td align="left">
                <xref target="transport-parameter-definitions" format="default"/></td>
            </tr>
          </tbody>
        </table>
        <t>Additionally, each value of the format <tt>31 * N + 27</tt> for integer values of N
(that is, 27, 58, 89, ...) are reserved and MUST NOT be assigned by IANA.</t>
      </section>
      <section anchor="iana-frames" numbered="true" toc="default">
        <name>QUIC Frame Type Registry</name>
        <t>IANA [SHALL add/has added] a registry for "QUIC Frame Types" under a
"QUIC" heading.</t>
        <t>The "QUIC Frame Types" registry governs a 62-bit space.  This registry follows
the registration policy from <xref target="iana-policy" format="default"/>.  Permanent registrations in this
registry are assigned using the Specification Required policy <xref target="RFC8126" format="default"/>,
except for values between 0x00 and 0x3f (in hexadecimal; inclusive), which are
assigned using Standards Action or IESG Approval as defined in Section 4.9 and
4.10 of <xref target="RFC8126" format="default"/>.</t>
        <t>In addition to the fields in <xref target="iana-provisional" format="default"/>, permanent registrations in
this registry MUST include the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Frame Name:</dt>
          <dd>
  A short mnemonic for the frame type.</dd>
        </dl>
        <t>In addition to the advice in <xref target="iana-policy" format="default"/>, specifications for new permanent
registrations SHOULD describe the means by which an endpoint might determine
that it can send the identified type of frame.  An accompanying transport
parameter registration is expected for most registrations; see
<xref target="iana-transport-parameters" format="default"/>.  Specifications for permanent registrations also
needs to describe the format and assigned semantics of any fields in the frame.</t>
        <t>The initial contents of this registry are tabulated in <xref target="frame-types" format="default"/>.</t>
      </section>
      <section anchor="iana-error-codes" numbered="true" toc="default">
        <name>QUIC Transport Error Codes Registry</name>
        <t>IANA [SHALL add/has added] a registry for "QUIC Transport Error Codes" under a
"QUIC" heading.</t>
        <t>The "QUIC Transport Error Codes" registry governs a 62-bit space.  This space is
split into three spaces that are governed by different policies.  Permanent
registrations in this registry are assigned using the Specification Required
policy <xref target="RFC8126" format="default"/>, except for values between 0x00 and 0x3f (in hexadecimal;
inclusive), which are assigned using Standards Action or IESG Approval as
defined in Section 4.9 and 4.10 of <xref target="RFC8126" format="default"/>.</t>
        <t>In addition to the fields in <xref target="iana-provisional" format="default"/>, permanent registrations in
this registry MUST include the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Code:</dt>
          <dd>
  A short mnemonic for the parameter.</dd>
          <dt>Description:</dt>
          <dd>
  A brief description of the error code semantics, which MAY be a summary if a
specification reference is provided.</dd>
        </dl>
        <t>The initial contents of this registry are shown in <xref target="iana-error-table" format="default"/>.</t>
        <table anchor="iana-error-table" align="center">
          <name>Initial QUIC Transport Error Codes Entries</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Error</th>
              <th align="left">Description</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0</td>
              <td align="left">NO_ERROR</td>
              <td align="left">No error</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x1</td>
              <td align="left">INTERNAL_ERROR</td>
              <td align="left">Implementation error</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x2</td>
              <td align="left">SERVER_BUSY</td>
              <td align="left">Server currently busy</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x3</td>
              <td align="left">FLOW_CONTROL_ERROR</td>
              <td align="left">Flow control error</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x4</td>
              <td align="left">STREAM_LIMIT_ERROR</td>
              <td align="left">Too many streams opened</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x5</td>
              <td align="left">STREAM_STATE_ERROR</td>
              <td align="left">Frame received in invalid stream state</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x6</td>
              <td align="left">FINAL_SIZE_ERROR</td>
              <td align="left">Change to final size</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x7</td>
              <td align="left">FRAME_ENCODING_ERROR</td>
              <td align="left">Frame encoding error</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x8</td>
              <td align="left">TRANSPORT_PARAMETER_ERROR</td>
              <td align="left">Error in transport parameters</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x9</td>
              <td align="left">CONNECTION_ID_LIMIT_ERROR</td>
              <td align="left">Too many connection IDs received</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0xA</td>
              <td align="left">PROTOCOL_VIOLATION</td>
              <td align="left">Generic protocol violation</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0xB</td>
              <td align="left">INVALID_TOKEN</td>
              <td align="left">Invalid Token Received</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0xC</td>
              <td align="left">APPLICATION_ERROR</td>
              <td align="left">Application error</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0xD</td>
              <td align="left">CRYPTO_BUFFER_EXCEEDED</td>
              <td align="left">CRYPTO data buffer overflowed</td>
              <td align="left">
                <xref target="error-codes" format="default"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-recovery-28"/>
            <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
              <organization>Fastly</organization>
            </author>
            <author initials="I." surname="Swett" fullname="Ian Swett" role="editor">
              <organization>Google</organization>
            </author>
            <date year="2020" month="May" day="20"/>
          </front>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using Transport Layer Security (TLS) to Secure QUIC</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-tls-28"/>
            <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
              <organization>Mozilla</organization>
            </author>
            <author initials="S." surname="Turner" fullname="Sean Turner" role="editor">
              <organization>sn3rd</organization>
            </author>
            <date year="2020" month="May" day="20"/>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6437" target="https://www.rfc-editor.org/info/rfc6437">
          <front>
            <title>IPv6 Flow Label Specification</title>
            <seriesInfo name="DOI" value="10.17487/RFC6437"/>
            <seriesInfo name="RFC" value="6437"/>
            <author initials="S." surname="Amante" fullname="S. Amante">
              <organization/>
            </author>
            <author initials="B." surname="Carpenter" fullname="B. Carpenter">
              <organization/>
            </author>
            <author initials="S." surname="Jiang" fullname="S. Jiang">
              <organization/>
            </author>
            <author initials="J." surname="Rajahalme" fullname="J. Rajahalme">
              <organization/>
            </author>
            <date year="2011" month="November"/>
            <abstract>
              <t>This document specifies the IPv6 Flow Label field and the minimum requirements for IPv6 nodes labeling flows, IPv6 nodes forwarding labeled packets, and flow state establishment methods.  Even when mentioned as examples of possible uses of the flow labeling, more detailed requirements for specific use cases are out of the scope for this document.</t>
              <t>The usage of the Flow Label field enables efficient IPv6 flow classification based only on IPv6 main header fields in fixed positions.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <seriesInfo name="DOI" value="10.17487/RFC4086"/>
            <seriesInfo name="RFC" value="4086"/>
            <seriesInfo name="BCP" value="106"/>
            <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3rd">
              <organization/>
            </author>
            <author initials="J." surname="Schiller" fullname="J. Schiller">
              <organization/>
            </author>
            <author initials="S." surname="Crocker" fullname="S. Crocker">
              <organization/>
            </author>
            <date year="2005" month="June"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5116" target="https://www.rfc-editor.org/info/rfc5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <seriesInfo name="DOI" value="10.17487/RFC5116"/>
            <seriesInfo name="RFC" value="5116"/>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization/>
            </author>
            <date year="2008" month="January"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms.  The interface and registry can be used as an application-independent set of cryptoalgorithm suites.  This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC3168" target="https://www.rfc-editor.org/info/rfc3168">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <seriesInfo name="DOI" value="10.17487/RFC3168"/>
            <seriesInfo name="RFC" value="3168"/>
            <author initials="K." surname="Ramakrishnan" fullname="K. Ramakrishnan">
              <organization/>
            </author>
            <author initials="S." surname="Floyd" fullname="S. Floyd">
              <organization/>
            </author>
            <author initials="D." surname="Black" fullname="D. Black">
              <organization/>
            </author>
            <date year="2001" month="September"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8311" target="https://www.rfc-editor.org/info/rfc8311">
          <front>
            <title>Relaxing Restrictions on Explicit Congestion Notification (ECN) Experimentation</title>
            <seriesInfo name="DOI" value="10.17487/RFC8311"/>
            <seriesInfo name="RFC" value="8311"/>
            <author initials="D." surname="Black" fullname="D. Black">
              <organization/>
            </author>
            <date year="2018" month="January"/>
            <abstract>
              <t>This memo updates RFC 3168, which specifies Explicit Congestion Notification (ECN) as an alternative to packet drops for indicating network congestion to endpoints.  It relaxes restrictions in RFC 3168 that hinder experimentation towards benefits beyond just removal of loss.  This memo summarizes the anticipated areas of experimentation and updates RFC 3168 to enable experimentation in these areas.  An Experimental RFC in the IETF document stream is required to take advantage of any of these enabling updates.  In addition, this memo makes related updates to the ECN specifications for RTP in RFC 6679 and for the Datagram Congestion Control Protocol (DCCP) in RFCs 4341, 4342, and 5622.  This memo also records the conclusion of the ECN nonce experiment in RFC 3540 and provides the rationale for reclassification of RFC 3540 from Experimental to Historic; this reclassification enables new experimental use of the ECT(1) codepoint.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="IPv4" target="https://www.rfc-editor.org/info/rfc791">
          <front>
            <title>Internet Protocol</title>
            <seriesInfo name="DOI" value="10.17487/RFC0791"/>
            <seriesInfo name="RFC" value="791"/>
            <seriesInfo name="STD" value="5"/>
            <author initials="J." surname="Postel" fullname="J. Postel">
              <organization/>
            </author>
            <date year="1981" month="September"/>
          </front>
        </reference>
        <reference anchor="RFC8085" target="https://www.rfc-editor.org/info/rfc8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <seriesInfo name="DOI" value="10.17487/RFC8085"/>
            <seriesInfo name="RFC" value="8085"/>
            <seriesInfo name="BCP" value="145"/>
            <author initials="L." surname="Eggert" fullname="L. Eggert">
              <organization/>
            </author>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst">
              <organization/>
            </author>
            <author initials="G." surname="Shepherd" fullname="G. Shepherd">
              <organization/>
            </author>
            <date year="2017" month="March"/>
            <abstract>
              <t>The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms.  This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP.  Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t>Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic.  They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t>Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t>This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="DPLPMTUD" target="http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-datagram-plpmtud-21.txt">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-datagram-plpmtud-21"/>
            <author initials="G" surname="Fairhurst" fullname="Gorry Fairhurst">
              <organization/>
            </author>
            <author initials="T" surname="Jones" fullname="Tom Jones">
              <organization/>
            </author>
            <author initials="M" surname="Tuexen" fullname="Michael Tuexen">
              <organization/>
            </author>
            <author initials="I" surname="Ruengeler" fullname="Irene Ruengeler">
              <organization/>
            </author>
            <author initials="T" surname="Voelker" fullname="Timo Voelker">
              <organization/>
            </author>
            <date month="May" day="12" year="2020"/>
            <abstract>
              <t>This document describes a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs).  It describes an extension to RFC 1191 and RFC 8201, which specifies ICMP-based Path MTU Discovery for IPv4 and IPv6.  The method allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram.  This can be used to detect and reduce the message size when a sender encounters a packet black hole (where packets are discarded).  The method can probe a network path with progressively larger packets to discover whether the maximum packet size can be increased.  This allows a sender to determine an appropriate packet size, providing functionality for datagram transports that is equivalent to the Packetization Layer PMTUD specification for TCP, specified in RFC 4821.  This document updates RFC 4821 to specify the PLPMTUD method for datagram PLs.  It also updates RFC 8085 to refer to the method specified in this document instead of the method in RFC 4821 for use with UDP datagrams.  Section 7.3 of RFC 4960 recommends an endpoint apply the techniques in RFC 4821 on a per-destination-address basis. RFC 4960, RFC 6951, and RFC 8261 are updated to recommend that SCTP, SCTP encapsulated in UDP and SCTP encapsulated in DTLS use the method specified in this document instead of the method in RFC 4821.  The document also provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.  When published, this specification updates RFC 4960, RFC 4821, RFC 8085 and RFC 8261.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC1191" target="https://www.rfc-editor.org/info/rfc1191">
          <front>
            <title>Path MTU discovery</title>
            <seriesInfo name="DOI" value="10.17487/RFC1191"/>
            <seriesInfo name="RFC" value="1191"/>
            <author initials="J.C." surname="Mogul" fullname="J.C. Mogul">
              <organization/>
            </author>
            <author initials="S.E." surname="Deering" fullname="S.E. Deering">
              <organization/>
            </author>
            <date year="1990" month="November"/>
            <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>
        </reference>
        <reference anchor="RFC8201" target="https://www.rfc-editor.org/info/rfc8201">
          <front>
            <title>Path MTU Discovery for IP version 6</title>
            <seriesInfo name="DOI" value="10.17487/RFC8201"/>
            <seriesInfo name="RFC" value="8201"/>
            <seriesInfo name="STD" value="87"/>
            <author initials="J." surname="McCann" fullname="J. McCann">
              <organization/>
            </author>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization/>
            </author>
            <author initials="J." surname="Mogul" fullname="J. Mogul">
              <organization/>
            </author>
            <author initials="R." surname="Hinden" fullname="R. Hinden" role="editor">
              <organization/>
            </author>
            <date year="2017" month="July"/>
            <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>
        </reference>
        <reference anchor="TLS13" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <seriesInfo name="DOI" value="10.17487/RFC8446"/>
            <seriesInfo name="RFC" value="8446"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <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>
        </reference>
        <reference anchor="RFC3629" target="https://www.rfc-editor.org/info/rfc3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <seriesInfo name="DOI" value="10.17487/RFC3629"/>
            <seriesInfo name="RFC" value="3629"/>
            <seriesInfo name="STD" value="63"/>
            <author initials="F." surname="Yergeau" fullname="F. Yergeau">
              <organization/>
            </author>
            <date year="2003" month="November"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="BCP" value="26"/>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization/>
            </author>
            <date year="2017" month="June"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="QUIC-INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-invariants-08"/>
            <author initials="M." surname="Thomson" fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <date year="2020" month="May" day="20"/>
          </front>
        </reference>
        <reference anchor="EARLY-DESIGN" target="https://goo.gl/dMVtFi">
          <front>
            <title>QUIC: Multiplexed Transport Over UDP</title>
            <author initials="J." surname="Roskind">
              <organization/>
            </author>
            <date year="2013" month="December" day="02"/>
          </front>
        </reference>
        <reference anchor="SLOWLORIS" target="https://web.archive.org/web/20150315054838/http://ha.ckers.org/slowloris/">
          <front>
            <title>Welcome to Slowloris...</title>
            <author initials="R." surname="RSnake Hansen">
              <organization/>
            </author>
            <date year="2009" month="June"/>
          </front>
        </reference>
        <reference anchor="HTTP2" target="https://www.rfc-editor.org/info/rfc7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7540"/>
            <seriesInfo name="RFC" value="7540"/>
            <author initials="M." surname="Belshe" fullname="M. Belshe">
              <organization/>
            </author>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson" role="editor">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7301" target="https://www.rfc-editor.org/info/rfc7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <seriesInfo name="DOI" value="10.17487/RFC7301"/>
            <seriesInfo name="RFC" value="7301"/>
            <author initials="S." surname="Friedl" fullname="S. Friedl">
              <organization/>
            </author>
            <author initials="A." surname="Popov" fullname="A. Popov">
              <organization/>
            </author>
            <author initials="A." surname="Langley" fullname="A. Langley">
              <organization/>
            </author>
            <author initials="E." surname="Stephan" fullname="E. Stephan">
              <organization/>
            </author>
            <date year="2014" month="July"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="ALTSVC" target="https://www.rfc-editor.org/info/rfc7838">
          <front>
            <title>HTTP Alternative Services</title>
            <seriesInfo name="DOI" value="10.17487/RFC7838"/>
            <seriesInfo name="RFC" value="7838"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="P." surname="McManus" fullname="P. McManus">
              <organization/>
            </author>
            <author initials="J." surname="Reschke" fullname="J. Reschke">
              <organization/>
            </author>
            <date year="2016" month="April"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2104" target="https://www.rfc-editor.org/info/rfc2104">
          <front>
            <title>HMAC: Keyed-Hashing for Message Authentication</title>
            <seriesInfo name="DOI" value="10.17487/RFC2104"/>
            <seriesInfo name="RFC" value="2104"/>
            <author initials="H." surname="Krawczyk" fullname="H. Krawczyk">
              <organization/>
            </author>
            <author initials="M." surname="Bellare" fullname="M. Bellare">
              <organization/>
            </author>
            <author initials="R." surname="Canetti" fullname="R. Canetti">
              <organization/>
            </author>
            <date year="1997" month="February"/>
            <abstract>
              <t>This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared key.  The cryptographic strength of HMAC depends on the properties of the underlying hash function.  This memo provides information for the Internet community.  This memo does not specify an Internet standard of any kind</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <seriesInfo name="DOI" value="10.17487/RFC5869"/>
            <seriesInfo name="RFC" value="5869"/>
            <author initials="H." surname="Krawczyk" fullname="H. Krawczyk">
              <organization/>
            </author>
            <author initials="P." surname="Eronen" fullname="P. Eronen">
              <organization/>
            </author>
            <date year="2010" month="May"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications.  The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC4303" target="https://www.rfc-editor.org/info/rfc4303">
          <front>
            <title>IP Encapsulating Security Payload (ESP)</title>
            <seriesInfo name="DOI" value="10.17487/RFC4303"/>
            <seriesInfo name="RFC" value="4303"/>
            <author initials="S." surname="Kent" fullname="S. Kent">
              <organization/>
            </author>
            <date year="2005" month="December"/>
            <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>
        </reference>
        <reference anchor="RFC5681" target="https://www.rfc-editor.org/info/rfc5681">
          <front>
            <title>TCP Congestion Control</title>
            <seriesInfo name="DOI" value="10.17487/RFC5681"/>
            <seriesInfo name="RFC" value="5681"/>
            <author initials="M." surname="Allman" fullname="M. Allman">
              <organization/>
            </author>
            <author initials="V." surname="Paxson" fullname="V. Paxson">
              <organization/>
            </author>
            <author initials="E." surname="Blanton" fullname="E. Blanton">
              <organization/>
            </author>
            <date year="2009" month="September"/>
            <abstract>
              <t>This document defines TCP's four intertwined congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery.  In addition, the document specifies how TCP should begin transmission after a relatively long idle period, as well as discussing various acknowledgment generation methods.  This document obsoletes RFC 2581.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8200" target="https://www.rfc-editor.org/info/rfc8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <seriesInfo name="DOI" value="10.17487/RFC8200"/>
            <seriesInfo name="RFC" value="8200"/>
            <seriesInfo name="STD" value="86"/>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization/>
            </author>
            <author initials="R." surname="Hinden" fullname="R. Hinden">
              <organization/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC1812" target="https://www.rfc-editor.org/info/rfc1812">
          <front>
            <title>Requirements for IP Version 4 Routers</title>
            <seriesInfo name="DOI" value="10.17487/RFC1812"/>
            <seriesInfo name="RFC" value="1812"/>
            <author initials="F." surname="Baker" fullname="F. Baker" role="editor">
              <organization/>
            </author>
            <date year="1995" month="June"/>
            <abstract>
              <t>This memo defines and discusses requirements for devices that perform the network layer forwarding function of the Internet protocol suite. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC4443" target="https://www.rfc-editor.org/info/rfc4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <seriesInfo name="DOI" value="10.17487/RFC4443"/>
            <seriesInfo name="RFC" value="4443"/>
            <seriesInfo name="STD" value="89"/>
            <author initials="A." surname="Conta" fullname="A. Conta">
              <organization/>
            </author>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization/>
            </author>
            <author initials="M." surname="Gupta" fullname="M. Gupta" role="editor">
              <organization/>
            </author>
            <date year="2006" month="March"/>
            <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>
        </reference>
        <reference anchor="QUIC-MANAGEABILITY" target="http://www.ietf.org/internet-drafts/draft-ietf-quic-manageability-06.txt">
          <front>
            <title>Manageability of the QUIC Transport Protocol</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-manageability-06"/>
            <author initials="M" surname="Kuehlewind" fullname="Mirja Kuehlewind">
              <organization/>
            </author>
            <author initials="B" surname="Trammell" fullname="Brian Trammell">
              <organization/>
            </author>
            <date month="January" day="6" year="2020"/>
            <abstract>
              <t>This document discusses manageability of the QUIC transport protocol, focusing on caveats impacting network operations involving QUIC traffic.  Its intended audience is network operators, as well as content providers that rely on the use of QUIC-aware middleboxes, e.g. for load balancing.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC4787" target="https://www.rfc-editor.org/info/rfc4787">
          <front>
            <title>Network Address Translation (NAT) Behavioral Requirements for Unicast UDP</title>
            <seriesInfo name="DOI" value="10.17487/RFC4787"/>
            <seriesInfo name="RFC" value="4787"/>
            <seriesInfo name="BCP" value="127"/>
            <author initials="F." surname="Audet" fullname="F. Audet" role="editor">
              <organization/>
            </author>
            <author initials="C." surname="Jennings" fullname="C. Jennings">
              <organization/>
            </author>
            <date year="2007" month="January"/>
            <abstract>
              <t>This document defines basic terminology for describing different types of Network Address Translation (NAT) behavior when handling Unicast UDP and also defines a set of requirements that would allow many applications, such as multimedia communications or online gaming, to work consistently.  Developing NATs that meet this set of requirements will greatly increase the likelihood that these applications will function properly.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2018" target="https://www.rfc-editor.org/info/rfc2018">
          <front>
            <title>TCP Selective Acknowledgment Options</title>
            <seriesInfo name="DOI" value="10.17487/RFC2018"/>
            <seriesInfo name="RFC" value="2018"/>
            <author initials="M." surname="Mathis" fullname="M. Mathis">
              <organization/>
            </author>
            <author initials="J." surname="Mahdavi" fullname="J. Mahdavi">
              <organization/>
            </author>
            <author initials="S." surname="Floyd" fullname="S. Floyd">
              <organization/>
            </author>
            <author initials="A." surname="Romanow" fullname="A. Romanow">
              <organization/>
            </author>
            <date year="1996" month="October"/>
            <abstract>
              <t>This memo proposes an implementation of SACK and discusses its performance and related issues.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="SEC-CONS" target="https://www.rfc-editor.org/info/rfc3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <seriesInfo name="DOI" value="10.17487/RFC3552"/>
            <seriesInfo name="RFC" value="3552"/>
            <seriesInfo name="BCP" value="72"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <author initials="B." surname="Korver" fullname="B. Korver">
              <organization/>
            </author>
            <date year="2003" month="July"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak.  This document provides guidelines to RFC authors on how to write a good Security Considerations section.   This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="STD" target="https://www.rfc-editor.org/info/rfc2026">
          <front>
            <title>The Internet Standards Process -- Revision 3</title>
            <seriesInfo name="DOI" value="10.17487/RFC2026"/>
            <seriesInfo name="RFC" value="2026"/>
            <seriesInfo name="BCP" value="9"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1996" month="October"/>
            <abstract>
              <t>This memo documents the process used by the Internet community for the standardization of protocols and procedures.  It defines the stages in the standardization process, the requirements for moving a document between stages and the types of documents used during this process. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="sample-packet-number-decoding" numbered="true" toc="default">
      <name>Sample Packet Number Decoding Algorithm</name>
      <t>The pseudo-code in <xref target="alg-decode-pn" format="default"/> shows how an implementation can decode
packet numbers after header protection has been removed.</t>
      <figure anchor="alg-decode-pn">
        <name>Sample Packet Number Decoding Algorithm</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
DecodePacketNumber(largest_pn, truncated_pn, pn_nbits):
   expected_pn  = largest_pn + 1
   pn_win       = 1 << pn_nbits
   pn_hwin      = pn_win / 2
   pn_mask      = pn_win - 1
   // The incoming packet number should be greater than
   // expected_pn - pn_hwin and less than or equal to
   // expected_pn + pn_hwin
   //
   // This means we can't just strip the trailing bits from
   // expected_pn and add the truncated_pn because that might
   // yield a value outside the window.
   //
   // The following code calculates a candidate value and
   // makes sure it's within the packet number window.
   // Note the extra checks to prevent overflow and underflow.
   candidate_pn = (expected_pn & ~pn_mask) | truncated_pn
   if candidate_pn <= expected_pn - pn_hwin and
      candidate_pn < (1 << 62) - pn_win:
      return candidate_pn + pn_win
   if candidate_pn > expected_pn + pn_hwin and
      candidate_pn >= pn_win:
      return candidate_pn - pn_win
   return candidate_pn
]]></artwork>
      </figure>
    </section>
    <section anchor="ecn-alg" numbered="true" toc="default">
      <name>Sample ECN Validation Algorithm</name>
      <t>Each time an endpoint commences sending on a new network path, it determines
whether the path supports ECN; see <xref target="ecn" format="default"/>.  If the path supports ECN, the goal
is to use ECN.  Endpoints might also periodically reassess a path that was
determined to not support ECN.</t>
      <t>This section describes one method for testing new paths.  This algorithm is
intended to show how a path might be tested for ECN support.  Endpoints can
implement different methods.</t>
      <t>The path is assigned an ECN state that is one of "testing", "unknown", "failed",
or "capable".  On paths with a "testing" or "capable" state the endpoint sends
packets with an ECT marking, by default ECT(0); otherwise, the endpoint sends
unmarked packets.</t>
      <t>To start testing a path, the ECN state is set to "testing" and existing ECN
counts are remembered as a baseline.</t>
      <t>The testing period runs for a number of packets or round-trip times, as
determined by the endpoint.  The goal is not to limit the duration of the
testing period, but to ensure that enough marked packets are sent for received
ECN counts to provide a clear indication of how the path treats marked packets.
<xref target="ecn-ack" format="default"/> suggests limiting this to 10 packets or 3 round-trip times.</t>
      <t>After the testing period ends, the ECN state for the path becomes "unknown".
From the "unknown" state, successful validation of the ECN counts an ACK frame
(see <xref target="ecn-ack" format="default"/>) causes the ECN state for the path to become "capable", unless
no marked packet has been acknowledged.</t>
      <t>If validation of ECN counts fails at any time, the ECN state for the affected
path becomes "failed".  An endpoint can also mark the ECN state for a path as
"failed" if marked packets are all declared lost or if they are all CE marked.</t>
      <t>Following this algorithm ensures that ECN is rarely disabled for paths that
properly support ECN.  Any path that incorrectly modifies markings will cause
ECN to be disabled.  For those rare cases where marked packets are discarded by
the path, the short duration of the testing period limits the number of losses
incurred.</t>
    </section>
    <section anchor="change-log" numbered="true" toc="default">
      <name>Change Log</name>
      <ul empty="true" spacing="normal">
        <li>
          <strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a
final version of this document.</li>
      </ul>
      <t>Issue and pull request numbers are listed with a leading octothorp.</t>
      <section anchor="since-draft-ietf-quic-transport-27" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-27</name>
        <ul spacing="normal">
          <li>Allowed CONNECTION_CLOSE in any packet number space, with a requirement to
use a new transport-level error for application-specific errors in Initial
and Handshake packets (#3430, #3435, #3440)</li>
          <li>Clearer requirements for address validation (#2125, #3327)</li>
          <li>Security analysis of handshake and migration (#2143, #2387, #2925)</li>
          <li>The entire payload of a datagram is used when counting bytes for
mitigating amplification attacks (#3333, #3470)</li>
          <li>Connection IDs can be used at any time, including in the handshake (#3348,
#3560, #3438, #3565)</li>
          <li>Only one ACK should be sent for each instance of reordering (#3357, #3361)</li>
          <li>Remove text allowing a server to proceed with a bad Retry token (#3396,
#3398)</li>
          <li>Ignore active_connection_id_limit with a zero-length connection ID (#3427,
#3426)</li>
          <li>Require active_connection_id_limit be remembered for 0-RTT (#3423, #3425)</li>
          <li>Require ack_delay not be remembered for 0-RTT (#3433, #3545)</li>
          <li>Redefined max_packet_size to max_udp_datagram_size (#3471, #3473)</li>
          <li>Guidance on limiting outstanding attempts to retire connection IDs (#3489,
#3509, #3557, #3547)</li>
          <li>Restored text on dropping bogus Version Negotiation packets (#3532, #3533)</li>
          <li>Clarified that largest acknowledged needs to be saved, but not necessarily
signaled in all cases (#3541, #3581)</li>
          <li>Addressed linkability risk with the use of preferred_address (#3559, #3563)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-26" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-26</name>
        <ul spacing="normal">
          <li>Change format of transport parameters to use varints (#3294, #3169)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-25" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-25</name>
        <ul spacing="normal">
          <li>Define the use of CONNECTION_CLOSE prior to establishing connection state
(#3269, #3297, #3292)</li>
          <li>Allow use of address validation tokens after client address changes (#3307,
#3308)</li>
          <li>Define the timer for address validation (#2910, #3339)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-24" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-24</name>
        <ul spacing="normal">
          <li>Added HANDSHAKE_DONE to signal handshake confirmation (#2863, #3142, #3145)</li>
          <li>Add integrity check to Retry packets (#3014, #3274, #3120)</li>
          <li>Specify handling of reordered NEW_CONNECTION_ID frames (#3194, #3202)</li>
          <li>Require checking of sequence numbers in RETIRE_CONNECTION_ID (#3037, #3036)</li>
          <li>active_connection_id_limit is enforced (#3193, #3197, #3200, #3201)</li>
          <li>Correct overflow in packet number decode algorithm (#3187, #3188)</li>
          <li>Allow use of CRYPTO_BUFFER_EXCEEDED for CRYPTO frame errors (#3258, #3186)</li>
          <li>Define applicability and scope of NEW_TOKEN (#3150, #3152, #3155, #3156)</li>
          <li>Tokens from Retry and NEW_TOKEN must be differentiated (#3127, #3128)</li>
          <li>Allow CONNECTION_CLOSE in response to invalid token (#3168, #3107)</li>
          <li>Treat an invalid CONNECTION_CLOSE as an invalid frame (#2475, #3230, #3231)</li>
          <li>Throttle when sending CONNECTION_CLOSE after discarding state (#3095, #3157)</li>
          <li>Application-variant of CONNECTION_CLOSE can only be sent in 0-RTT or 1-RTT
packets (#3158, #3164)</li>
          <li>Advise sending while blocked to avoid idle timeout (#2744, #3266)</li>
          <li>Define error codes for invalid frames (#3027, #3042)</li>
          <li>Idle timeout is symmetric (#2602, #3099)</li>
          <li>Prohibit IP fragmentation (#3243, #3280)</li>
          <li>Define the use of provisional registration for all registries (#3109, #3020,
#3102, #3170)</li>
          <li>Packets on one path must not adjust values for a different path (#2909,
#3139)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-23" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-23</name>
        <ul spacing="normal">
          <li>Allow ClientHello to span multiple packets (#2928, #3045)</li>
          <li>Client Initial size constraints apply to UDP datagram payload (#3053, #3051)</li>
          <li>
            <t>Stateless reset changes (#2152, #2993)
            </t>
            <ul spacing="normal">
              <li>tokens need to be compared in constant time</li>
              <li>detection uses UDP datagrams, not packets</li>
              <li>tokens cannot be reused (#2785, #2968)</li>
            </ul>
          </li>
          <li>Clearer rules for sharing of UDP ports and use of connection IDs when doing so
(#2844, #2851)</li>
          <li>A new connection ID is necessary when responding to migration (#2778, #2969)</li>
          <li>Stronger requirements for connection ID retirement (#3046, #3096)</li>
          <li>NEW_TOKEN cannot be empty (#2978, #2977)</li>
          <li>PING can be sent at any encryption level (#3034, #3035)</li>
          <li>CONNECTION_CLOSE is not ack-eliciting (#3097, #3098)</li>
          <li>Frame encoding error conditions updated (#3027, #3042)</li>
          <li>Non-ack-eliciting packets cannot be sent in response to non-ack-eliciting
packets (#3100, #3104)</li>
          <li>Servers have to change connection IDs in Retry (#2837, #3147)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-22" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-22</name>
        <ul spacing="normal">
          <li>Rules for preventing correlation by connection ID tightened (#2084, #2929)</li>
          <li>Clarified use of CONNECTION_CLOSE in Handshake packets (#2151, #2541, #2688)</li>
          <li>Discourage regressions of largest acknowledged in ACK (#2205, #2752)</li>
          <li>Improved robustness of validation process for ECN counts (#2534, #2752)</li>
          <li>Require endpoints to ignore spurious migration attempts (#2342, #2893)</li>
          <li>Transport parameter for disabling migration clarified to allow NAT rebinding
(#2389, #2893)</li>
          <li>Document principles for defining new error codes (#2388, #2880)</li>
          <li>Reserve transport parameters for greasing (#2550, #2873)</li>
          <li>A maximum ACK delay of 0 is used for handshake packet number spaces (#2646,
#2638)</li>
          <li>Improved rules for use of congestion control state on new paths (#2685, #2918)</li>
          <li>Removed recommendation to coordinate spin for multiple connections that share
a path (#2763, #2882)</li>
          <li>Allow smaller stateless resets and recommend a smaller minimum on packets
that might trigger a stateless reset (#2770, #2869, #2927, #3007).</li>
          <li>Provide guidance around the interface to QUIC as used by application protocols
(#2805, #2857)</li>
          <li>Frames other than STREAM can cause STREAM_LIMIT_ERROR (#2825, #2826)</li>
          <li>Tighter rules about processing of rejected 0-RTT packets (#2829, #2840, #2841)</li>
          <li>Explanation of the effect of Retry on 0-RTT packets (#2842, #2852)</li>
          <li>Cryptographic handshake needs to provide server transport parameter encryption
(#2920, #2921)</li>
          <li>Moved ACK generation guidance from recovery draft to transport draft (#1860,
#2916).</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-21" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-21</name>
        <ul spacing="normal">
          <li>Connection ID lengths are now one octet, but limited in version 1 to 20 octets
of length (#2736, #2749)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-20" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-20</name>
        <ul spacing="normal">
          <li>Error codes are encoded as variable-length integers (#2672, #2680)</li>
          <li>NEW_CONNECTION_ID includes a request to retire old connection IDs (#2645,
#2769)</li>
          <li>Tighter rules for generating and explicitly eliciting ACK frames (#2546,
#2794)</li>
          <li>Recommend having only one packet per encryption level in a datagram (#2308,
#2747)</li>
          <li>More normative language about use of stateless reset (#2471, #2574)</li>
          <li>Allow reuse of stateless reset tokens (#2732, #2733)</li>
          <li>Allow, but not require, enforcing non-duplicate transport parameters (#2689,
#2691)</li>
          <li>Added an active_connection_id_limit transport parameter (#1994, #1998)</li>
          <li>max_ack_delay transport parameter defaults to 0 (#2638, #2646)</li>
          <li>When sending 0-RTT, only remembered transport parameters apply (#2458, #2360,
#2466, #2461)</li>
          <li>Define handshake completion and confirmation; define clearer rules when it
encryption keys should be discarded (#2214, #2267, #2673)</li>
          <li>Prohibit path migration prior to handshake confirmation (#2309, #2370)</li>
          <li>PATH_RESPONSE no longer needs to be received on the validated path (#2582,
#2580, #2579, #2637)</li>
          <li>PATH_RESPONSE frames are not stored and retransmitted (#2724, #2729)</li>
          <li>Document hack for enabling routing of ICMP when doing PMTU probing (#1243,
#2402)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-19" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-19</name>
        <ul spacing="normal">
          <li>Refine discussion of 0-RTT transport parameters (#2467, #2464)</li>
          <li>Fewer transport parameters need to be remembered for 0-RTT (#2624, #2467)</li>
          <li>Spin bit text incorporated (#2564)</li>
          <li>Close the connection when maximum stream ID in MAX_STREAMS exceeds 2^62 - 1
(#2499, #2487)</li>
          <li>New connection ID required for intentional migration (#2414, #2413)</li>
          <li>Connection ID issuance can be rate-limited (#2436, #2428)</li>
          <li>The "QUIC bit" is ignored in Version Negotiation (#2400, #2561)</li>
          <li>Initial packets from clients need to be padded to 1200 unless a Handshake
packet is sent as well (#2522, #2523)</li>
          <li>CRYPTO frames can be discarded if too much data is buffered (#1834, #2524)</li>
          <li>Stateless reset uses a short header packet (#2599, #2600)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-18" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-18</name>
        <ul spacing="normal">
          <li>Removed version negotiation; version negotiation, including authentication of
the result, will be addressed in the next version of QUIC (#1773, #2313)</li>
          <li>Added discussion of the use of IPv6 flow labels (#2348, #2399)</li>
          <li>A connection ID can't be retired in a packet that uses that connection ID
(#2101, #2420)</li>
          <li>Idle timeout transport parameter is in milliseconds (from seconds) (#2453,
#2454)</li>
          <li>Endpoints are required to use new connection IDs when they use new network
paths (#2413, #2414)</li>
          <li>Increased the set of permissible frames in 0-RTT (#2344, #2355)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-17" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-17</name>
        <ul spacing="normal">
          <li>Stream-related errors now use STREAM_STATE_ERROR (#2305)</li>
          <li>Endpoints discard initial keys as soon as handshake keys are available (#1951,
#2045)</li>
          <li>Expanded conditions for ignoring ICMP packet too big messages (#2108, #2161)</li>
          <li>Remove rate control from PATH_CHALLENGE/PATH_RESPONSE (#2129, #2241)</li>
          <li>Endpoints are permitted to discard malformed initial packets (#2141)</li>
          <li>Clarified ECN implementation and usage requirements (#2156, #2201)</li>
          <li>Disable ECN count verification for packets that arrive out of order (#2198,
#2215)</li>
          <li>Use Probe Timeout (PTO) instead of RTO (#2206, #2238)</li>
          <li>Loosen constraints on retransmission of ACK ranges (#2199, #2245)</li>
          <li>Limit Retry and Version Negotiation to once per datagram (#2259, #2303)</li>
          <li>Set a maximum value for max_ack_delay transport parameter (#2282, #2301)</li>
          <li>Allow server preferred address for both IPv4 and IPv6 (#2122, #2296)</li>
          <li>Corrected requirements for migration to a preferred address (#2146, #2349)</li>
          <li>ACK of non-existent packet is illegal (#2298, #2302)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-16" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-16</name>
        <ul spacing="normal">
          <li>Stream limits are defined as counts, not maximums (#1850, #1906)</li>
          <li>Require amplification attack defense after closing (#1905, #1911)</li>
          <li>Remove reservation of application error code 0 for STOPPING (#1804, #1922)</li>
          <li>Renumbered frames (#1945)</li>
          <li>Renumbered transport parameters (#1946)</li>
          <li>Numeric transport parameters are expressed as varints (#1608, #1947, #1955)</li>
          <li>Reorder the NEW_CONNECTION_ID frame (#1952, #1963)</li>
          <li>
            <t>Rework the first byte (#2006)
            </t>
            <ul spacing="normal">
              <li>Fix the 0x40 bit</li>
              <li>Change type values for long header</li>
              <li>Add spin bit to short header (#631, #1988)</li>
              <li>Encrypt the remainder of the first byte (#1322)</li>
              <li>Move packet number length to first byte</li>
              <li>Move ODCIL to first byte of retry packets</li>
              <li>Simplify packet number protection (#1575)</li>
            </ul>
          </li>
          <li>Allow STOP_SENDING to open a remote bidirectional stream (#1797, #2013)</li>
          <li>Added mitigation for off-path migration attacks (#1278, #1749, #2033)</li>
          <li>Don't let the PMTU to drop below 1280 (#2063, #2069)</li>
          <li>Require peers to replace retired connection IDs (#2085)</li>
          <li>Servers are required to ignore Version Negotiation packets (#2088)</li>
          <li>Tokens are repeated in all Initial packets (#2089)</li>
          <li>Clarified how PING frames are sent after loss (#2094)</li>
          <li>Initial keys are discarded once Handshake are available (#1951, #2045)</li>
          <li>ICMP PTB validation clarifications (#2161, #2109, #2108)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-15" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-15</name>
        <t>Substantial editorial reorganization; no technical changes.</t>
      </section>
      <section anchor="since-draft-ietf-quic-transport-14" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-14</name>
        <ul spacing="normal">
          <li>Merge ACK and ACK_ECN (#1778, #1801)</li>
          <li>Explicitly communicate max_ack_delay (#981, #1781)</li>
          <li>Validate original connection ID after Retry packets (#1710, #1486, #1793)</li>
          <li>Idle timeout is optional and has no specified maximum (#1765)</li>
          <li>Update connection ID handling; add RETIRE_CONNECTION_ID type (#1464, #1468,
#1483, #1484, #1486, #1495, #1729, #1742, #1799, #1821)</li>
          <li>Include a Token in all Initial packets (#1649, #1794)</li>
          <li>Prevent handshake deadlock (#1764, #1824)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-13" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-13</name>
        <ul spacing="normal">
          <li>Streams open when higher-numbered streams of the same type open (#1342, #1549)</li>
          <li>Split initial stream flow control limit into 3 transport parameters (#1016,
#1542)</li>
          <li>All flow control transport parameters are optional (#1610)</li>
          <li>Removed UNSOLICITED_PATH_RESPONSE error code (#1265, #1539)</li>
          <li>Permit stateless reset in response to any packet (#1348, #1553)</li>
          <li>Recommended defense against stateless reset spoofing (#1386, #1554)</li>
          <li>Prevent infinite stateless reset exchanges (#1443, #1627)</li>
          <li>Forbid processing of the same packet number twice (#1405, #1624)</li>
          <li>Added a packet number decoding example (#1493)</li>
          <li>More precisely define idle timeout (#1429, #1614, #1652)</li>
          <li>Corrected format of Retry packet and prevented looping (#1492, #1451, #1448,
#1498)</li>
          <li>Permit 0-RTT after receiving Version Negotiation or Retry (#1507, #1514,
#1621)</li>
          <li>Permit Retry in response to 0-RTT (#1547, #1552)</li>
          <li>Looser verification of ECN counters to account for ACK loss (#1555, #1481,
#1565)</li>
          <li>Remove frame type field from APPLICATION_CLOSE (#1508, #1528)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-12" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-12</name>
        <ul spacing="normal">
          <li>
            <t>Changes to integration of the TLS handshake (#829, #1018, #1094, #1165, #1190,
#1233, #1242, #1252, #1450, #1458)
            </t>
            <ul spacing="normal">
              <li>The cryptographic handshake uses CRYPTO frames, not stream 0</li>
              <li>QUIC packet protection is used in place of TLS record protection</li>
              <li>Separate QUIC packet number spaces are used for the handshake</li>
              <li>Changed Retry to be independent of the cryptographic handshake</li>
              <li>Added NEW_TOKEN frame and Token fields to Initial packet</li>
              <li>Limit the use of HelloRetryRequest to address TLS needs (like key shares)</li>
            </ul>
          </li>
          <li>Enable server to transition connections to a preferred address (#560, #1251,
#1373)</li>
          <li>Added ECN feedback mechanisms and handling; new ACK_ECN frame (#804, #805,
#1372)</li>
          <li>Changed rules and recommendations for use of new connection IDs (#1258, #1264,
#1276, #1280, #1419, #1452, #1453, #1465)</li>
          <li>Added a transport parameter to disable intentional connection migration
(#1271, #1447)</li>
          <li>Packets from different connection ID can't be coalesced (#1287, #1423)</li>
          <li>Fixed sampling method for packet number encryption; the length field in long
headers includes the packet number field in addition to the packet payload
(#1387, #1389)</li>
          <li>Stateless Reset is now symmetric and subject to size constraints (#466, #1346)</li>
          <li>Added frame type extension mechanism (#58, #1473)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-11" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-11</name>
        <ul spacing="normal">
          <li>Enable server to transition connections to a preferred address (#560, #1251)</li>
          <li>Packet numbers are encrypted (#1174, #1043, #1048, #1034, #850, #990, #734,
#1317, #1267, #1079)</li>
          <li>Packet numbers use a variable-length encoding (#989, #1334)</li>
          <li>STREAM frames can now be empty (#1350)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-10" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-10</name>
        <ul spacing="normal">
          <li>Swap payload length and packed number fields in long header (#1294)</li>
          <li>Clarified that CONNECTION_CLOSE is allowed in Handshake packet (#1274)</li>
          <li>Spin bit reserved (#1283)</li>
          <li>Coalescing multiple QUIC packets in a UDP datagram (#1262, #1285)</li>
          <li>A more complete connection migration (#1249)</li>
          <li>Refine opportunistic ACK defense text (#305, #1030, #1185)</li>
          <li>A Stateless Reset Token isn't mandatory (#818, #1191)</li>
          <li>Removed implicit stream opening (#896, #1193)</li>
          <li>An empty STREAM frame can be used to open a stream without sending data (#901,
#1194)</li>
          <li>Define stream counts in transport parameters rather than a maximum stream ID
(#1023, #1065)</li>
          <li>STOP_SENDING is now prohibited before streams are used (#1050)</li>
          <li>Recommend including ACK in Retry packets and allow PADDING (#1067, #882)</li>
          <li>Endpoints now become closing after an idle timeout (#1178, #1179)</li>
          <li>Remove implication that Version Negotiation is sent when a packet of the wrong
version is received (#1197)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-09" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-09</name>
        <ul spacing="normal">
          <li>Added PATH_CHALLENGE and PATH_RESPONSE frames to replace PING with Data and
PONG frame. Changed ACK frame type from 0x0e to 0x0d. (#1091, #725, #1086)</li>
          <li>A server can now only send 3 packets without validating the client address
(#38, #1090)</li>
          <li>Delivery order of stream data is no longer strongly specified (#252, #1070)</li>
          <li>Rework of packet handling and version negotiation (#1038)</li>
          <li>Stream 0 is now exempt from flow control until the handshake completes (#1074,
#725, #825, #1082)</li>
          <li>Improved retransmission rules for all frame types: information is
retransmitted, not packets or frames (#463, #765, #1095, #1053)</li>
          <li>Added an error code for server busy signals (#1137)</li>
          <li>Endpoints now set the connection ID that their peer uses.  Connection IDs are
variable length.  Removed the omit_connection_id transport parameter and the
corresponding short header flag. (#1089, #1052, #1146, #821, #745, #821,
#1166, #1151)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-08" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-08</name>
        <ul spacing="normal">
          <li>Clarified requirements for BLOCKED usage (#65,  #924)</li>
          <li>BLOCKED frame now includes reason for blocking (#452, #924, #927, #928)</li>
          <li>GAP limitation in ACK Frame (#613)</li>
          <li>Improved PMTUD description (#614, #1036)</li>
          <li>Clarified stream state machine (#634, #662, #743, #894)</li>
          <li>Reserved versions don't need to be generated deterministically (#831, #931)</li>
          <li>You don't always need the draining period (#871)</li>
          <li>Stateless reset clarified as version-specific (#930, #986)</li>
          <li>initial_max_stream_id_x transport parameters are optional (#970, #971)</li>
          <li>Ack Delay assumes a default value during the handshake (#1007, #1009)</li>
          <li>Removed transport parameters from NewSessionTicket (#1015)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-07" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-07</name>
        <ul spacing="normal">
          <li>The long header now has version before packet number (#926, #939)</li>
          <li>Rename and consolidate packet types (#846, #822, #847)</li>
          <li>Packet types are assigned new codepoints and the Connection ID Flag is
inverted (#426, #956)</li>
          <li>Removed type for Version Negotiation and use Version 0 (#963, #968)</li>
          <li>
            <t>Streams are split into unidirectional and bidirectional (#643, #656, #720,
#872, #175, #885)
            </t>
            <ul spacing="normal">
              <li>Stream limits now have separate uni- and bi-directional transport parameters
(#909, #958)</li>
              <li>Stream limit transport parameters are now optional and default to 0 (#970,
#971)</li>
            </ul>
          </li>
          <li>The stream state machine has been split into read and write (#634, #894)</li>
          <li>Employ variable-length integer encodings throughout (#595)</li>
          <li>
            <t>Improvements to connection close
            </t>
            <ul spacing="normal">
              <li>Added distinct closing and draining states (#899, #871)</li>
              <li>Draining period can terminate early (#869, #870)</li>
              <li>Clarifications about stateless reset (#889, #890)</li>
            </ul>
          </li>
          <li>Address validation for connection migration (#161, #732, #878)</li>
          <li>Clearly defined retransmission rules for BLOCKED (#452, #65, #924)</li>
          <li>negotiated_version is sent in server transport parameters (#710, #959)</li>
          <li>Increased the range over which packet numbers are randomized (#864, #850,
#964)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-06" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-06</name>
        <ul spacing="normal">
          <li>Replaced FNV-1a with AES-GCM for all "Cleartext" packets (#554)</li>
          <li>Split error code space between application and transport (#485)</li>
          <li>Stateless reset token moved to end (#820)</li>
          <li>1-RTT-protected long header types removed (#848)</li>
          <li>No acknowledgments during draining period (#852)</li>
          <li>Remove "application close" as a separate close type (#854)</li>
          <li>Remove timestamps from the ACK frame (#841)</li>
          <li>Require transport parameters to only appear once (#792)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-05" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-05</name>
        <ul spacing="normal">
          <li>Stateless token is server-only (#726)</li>
          <li>Refactor section on connection termination (#733, #748, #328, #177)</li>
          <li>Limit size of Version Negotiation packet (#585)</li>
          <li>Clarify when and what to ack (#736)</li>
          <li>Renamed STREAM_ID_NEEDED to STREAM_ID_BLOCKED</li>
          <li>Clarify Keep-alive requirements (#729)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-04" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-04</name>
        <ul spacing="normal">
          <li>Introduce STOP_SENDING frame, RESET_STREAM only resets in one direction (#165)</li>
          <li>Removed GOAWAY; application protocols are responsible for graceful shutdown
(#696)</li>
          <li>Reduced the number of error codes (#96, #177, #184, #211)</li>
          <li>Version validation fields can't move or change (#121)</li>
          <li>Removed versions from the transport parameters in a NewSessionTicket message
(#547)</li>
          <li>Clarify the meaning of "bytes in flight" (#550)</li>
          <li>Public reset is now stateless reset and not visible to the path (#215)</li>
          <li>Reordered bits and fields in STREAM frame (#620)</li>
          <li>Clarifications to the stream state machine (#572, #571)</li>
          <li>Increased the maximum length of the Largest Acknowledged field in ACK frames
to 64 bits (#629)</li>
          <li>truncate_connection_id is renamed to omit_connection_id (#659)</li>
          <li>CONNECTION_CLOSE terminates the connection like TCP RST (#330, #328)</li>
          <li>Update labels used in HKDF-Expand-Label to match TLS 1.3 (#642)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-03" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-03</name>
        <ul spacing="normal">
          <li>Change STREAM and RESET_STREAM layout</li>
          <li>Add MAX_STREAM_ID settings</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-02" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-02</name>
        <ul spacing="normal">
          <li>The size of the initial packet payload has a fixed minimum (#267, #472)</li>
          <li>Define when Version Negotiation packets are ignored (#284, #294, #241, #143,
#474)</li>
          <li>The 64-bit FNV-1a algorithm is used for integrity protection of unprotected
packets (#167, #480, #481, #517)</li>
          <li>Rework initial packet types to change how the connection ID is chosen (#482,
#442, #493)</li>
          <li>No timestamps are forbidden in unprotected packets (#542, #429)</li>
          <li>Cryptographic handshake is now on stream 0 (#456)</li>
          <li>Remove congestion control exemption for cryptographic handshake (#248, #476)</li>
          <li>Version 1 of QUIC uses TLS; a new version is needed to use a different
handshake protocol (#516)</li>
          <li>STREAM frames have a reduced number of offset lengths (#543, #430)</li>
          <li>
            <t>Split some frames into separate connection- and stream- level frames
(#443)
            </t>
            <ul spacing="normal">
              <li>WINDOW_UPDATE split into MAX_DATA and MAX_STREAM_DATA (#450)</li>
              <li>BLOCKED split to match WINDOW_UPDATE split (#454)</li>
              <li>Define STREAM_ID_NEEDED frame (#455)</li>
            </ul>
          </li>
          <li>A NEW_CONNECTION_ID frame supports connection migration without linkability
(#232, #491, #496)</li>
          <li>
            <t>Transport parameters for 0-RTT are retained from a previous connection (#405,
#513, #512)
            </t>
            <ul spacing="normal">
              <li>A client in 0-RTT no longer required to reset excess streams (#425, #479)</li>
            </ul>
          </li>
          <li>Expanded security considerations (#440, #444, #445, #448)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-01" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-01</name>
        <ul spacing="normal">
          <li>Defined short and long packet headers (#40, #148, #361)</li>
          <li>Defined a versioning scheme and stable fields (#51, #361)</li>
          <li>Define reserved version values for "greasing" negotiation (#112, #278)</li>
          <li>The initial packet number is randomized (#35, #283)</li>
          <li>Narrow the packet number encoding range requirement (#67, #286, #299, #323,
#356)</li>
          <li>Defined client address validation (#52, #118, #120, #275)</li>
          <li>Define transport parameters as a TLS extension (#49, #122)</li>
          <li>SCUP and COPT parameters are no longer valid (#116, #117)</li>
          <li>Transport parameters for 0-RTT are either remembered from before, or assume
default values (#126)</li>
          <li>The server chooses connection IDs in its final flight (#119, #349, #361)</li>
          <li>The server echoes the Connection ID and packet number fields when sending a
Version Negotiation packet (#133, #295, #244)</li>
          <li>Defined a minimum packet size for the initial handshake packet from the client
(#69, #136, #139, #164)</li>
          <li>Path MTU Discovery (#64, #106)</li>
          <li>The initial handshake packet from the client needs to fit in a single packet
(#338)</li>
          <li>Forbid acknowledgment of packets containing only ACK and PADDING (#291)</li>
          <li>Require that frames are processed when packets are acknowledged (#381, #341)</li>
          <li>Removed the STOP_WAITING frame (#66)</li>
          <li>Don't require retransmission of old timestamps for lost ACK frames (#308)</li>
          <li>Clarified that frames are not retransmitted, but the information in them can
be (#157, #298)</li>
          <li>Error handling definitions (#335)</li>
          <li>Split error codes into four sections (#74)</li>
          <li>Forbid the use of Public Reset where CONNECTION_CLOSE is possible (#289)</li>
          <li>Define packet protection rules (#336)</li>
          <li>Require that stream be entirely delivered or reset, including acknowledgment
of all STREAM frames or the RESET_STREAM, before it closes (#381)</li>
          <li>Remove stream reservation from state machine (#174, #280)</li>
          <li>Only stream 1 does not contribute to connection-level flow control (#204)</li>
          <li>Stream 1 counts towards the maximum concurrent stream limit (#201, #282)</li>
          <li>Remove connection-level flow control exclusion for some streams (except 1)
(#246)</li>
          <li>RESET_STREAM affects connection-level flow control (#162, #163)</li>
          <li>Flow control accounting uses the maximum data offset on each stream, rather
than bytes received (#378)</li>
          <li>Moved length-determining fields to the start of STREAM and ACK (#168, #277)</li>
          <li>Added the ability to pad between frames (#158, #276)</li>
          <li>Remove error code and reason phrase from GOAWAY (#352, #355)</li>
          <li>GOAWAY includes a final stream number for both directions (#347)</li>
          <li>Error codes for RESET_STREAM and CONNECTION_CLOSE are now at a consistent
offset (#249)</li>
          <li>Defined priority as the responsibility of the application protocol (#104,
#303)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-transport-00" numbered="true" toc="default">
        <name>Since draft-ietf-quic-transport-00</name>
        <ul spacing="normal">
          <li>Replaced DIVERSIFICATION_NONCE flag with KEY_PHASE flag</li>
          <li>Defined versioning</li>
          <li>Reworked description of packet and frame layout</li>
          <li>Error code space is divided into regions for each component</li>
          <li>Use big endian for all numeric values</li>
        </ul>
      </section>
      <section anchor="since-draft-hamilton-quic-transport-protocol-01" numbered="true" toc="default">
        <name>Since draft-hamilton-quic-transport-protocol-01</name>
        <ul spacing="normal">
          <li>Adopted as base for draft-ietf-quic-tls</li>
          <li>Updated authors/editors list</li>
          <li>Added IANA Considerations section</li>
          <li>Moved Contributors and Acknowledgments to appendices</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="contributors" toc="default">
      <name>Contributors</name>
      <t>The original design and rationale behind this protocol draw significantly from
work by Jim Roskind <xref target="EARLY-DESIGN" format="default"/>.</t>
      <t>The IETF QUIC Working Group received an enormous amount of support from many
people. The following people provided substantive contributions to this
document:</t>
      <ul spacing="normal">
        <li>Alessandro Ghedini</li>
        <li>Alyssa Wilk</li>
        <li>Antoine Delignat-Lavaud</li>
        <li>Brian Trammell</li>
        <li>Christian Huitema</li>
        <li>Colin Perkins</li>
        <li>David Schinazi</li>
        <li>Dmitri Tikhonov</li>
        <li>Eric Kinnear</li>
        <li>Eric Rescorla</li>
        <li>Gorry Fairhurst</li>
        <li>Ian Swett</li>
        <li>Igor Lubashev</li>
        <li>
          <t>        <contact asciiFullname="Kazuho Oku" fullname="奥 一穂"/>
          </t>
        </li>
        <li>Lucas Pardue</li>
        <li>Magnus Westerlund</li>
        <li>Marten Seemann</li>
        <li>Martin Duke</li>
        <li>Mike Bishop</li>
        <li>
          <t>        <contact fullname="Mikkel Fahnøe Jørgensen"/>
          </t>
        </li>
        <li>
          <t>        <contact fullname="Mirja Kühlewind"/>
          </t>
        </li>
        <li>Nick Banks</li>
        <li>Nick Harper</li>
        <li>Patrick McManus</li>
        <li>Roberto Peon</li>
        <li>Ryan Hamilton</li>
        <li>Subodh Iyengar</li>
        <li>Tatsuhiro Tsujikawa</li>
        <li>Ted Hardie</li>
        <li>Tom Jones</li>
        <li>Victor Vasiliev</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAIl6xF4AA9y9+3rkyHUn+H88Bbb6D5FyZtalZVmutuxhs1hqjuu2JLs1
WllTAjNBEq5MIAUgi5UqtZ9ln2WfbONc40QgkKyW7bW/7fnGKpJAIC4nzv38
znw+d0M9rKvnxaP/8/vz0+fFSfH9i3fzb8u+WhWvd+uh3q6rT/7fZbMqLqvl
rquKq65s+m3bDY9ceX3dVR+fF/Bu+H3xrmuHdtmu3apdNuXGj77qypthXlfD
zfxPu3o5H+TZ+bNfuVU5+EeePXn2ZP7kb+fPnril/8Vt2+2fF/2wcvW2e14M
3a4fnj158vdPnrmyq8rn4XPuvu0+3HbtbksTca4f/HTfl+u28ePuq95t6+fF
7/2UZkXvX+iqm97/a7+hf/hJbsrttm5u/+BcuRvu2u65K4q5//9FUTf98+J/
LorzfdXclh3+jpb0P8umjH7ddrfPi5dlP6z3+HO1Kev18+Jfu3oBC/8ft/Dz
Ytlu8K9dC7tereqh7eKvvV4UV3ftpm8b87XXZTfUTfQH/N7r9s/1el3aD26G
/7Fu76tm6NrtftFUw/h7rmm7TTnUH6vnzv8Vdm1+cXb69oezi989x8ctVRSv
2r4vXlRDtRzqtkFaOG2b26rHH/0//afWj/C90VnCL/uqq6u+bm5aGrwozpuh
6vzU5i+AMMb00VXL9mPV7YE84PlwLPDfnP83fzwHjih3TJnDyHzjfFFc3lfD
kHzhvGyS3+Pwv2nb23WVH172++rVZbzV3/sdujW36FW5rzq6dPWwL478C8fF
0Mo1hEH+Q/d8WPdftN0JfR6k0SydftmOX/rP7Px800O9rPyeJ3/BT/TN191q
Ys9hH0YUf/7mh5OL85M3V8lB/FB1vSfs+XmzqraV/z8NsrRt5ZdX9UV78x+/
93Xzsezqshn6+ZP/7CPwvz07uXj1u/mLs8vz37wZ3/fnEecPBPnW30gQD49y
E9SreNH2H+pmFe3O06/nT5/NPevGT5XdbeX34NHdMGz7548f37bt4nb9ePX6
h+Fl/Qjmd/nq7W9fvb04Tw7mt9Xas88KL4Fnceu2q/vFYnFgPhd+PpdN+aEq
vvOrqJpoVk/+fv7kl3ZK9K7O6766XpTd8s4TzcLvIPz82K/lb5987f//3/7i
V1//6jE86p+8KxfLD55q8LFepvbYr8XN5/OivO69wFsOzl3d1T0InN0GiGpV
3dSNp6jhriqWrb/TnrTg38h0VUQWWxani6I4WfoN2JbN3rMKJ+P4Eat+2dXX
9ObP+mINDHsVMexlYNhLYtj4a/jcrocvO89fCn9Lig/Vvmi8/B3qEh5f8CKa
dqjev4H/M7TvL6py5dfr3Iu6X+56uC40eVge0Lbf0g9+Zdt1ufSDN2FZIKyB
z6HALkBiwU/ruh/c0e/hLvwPuBWwkX84gr8O7fPot8fHs+L+rl7eFf5TfDpe
PRnc7/9wJAcH78nByXuP4ReP+wr/559QVL6Hr/4aRj927rc8r9/gvJRfwHZ5
fuO39qbdNfChwnzoth7udtcg0x/DMPe3x994DWPXLSu3bFcV7nDd9zu/E/At
3F6zR8nI7tDIj6+9TjbH9/rH6/K6WvePgxp1vKBD2tSrlRc87ivgOF272iEB
OIdbDxtWbBKlridpclt5flqu59tdt209PYypz0/cT9H/9LH25Oa56M+LS69K
lZswJBBl+DVTXUNEOF9XH6t1ceMvhxAgPPuqvZ+v/X1slnvzcOEptbz2W3YH
9A3PnYa/berbrlS67jyjXdf+fWQLb06u/G+uPf/huZx4ruCHqEGlpAX7R7v9
Fn66QyLGX27L/botV7xR/kL0wOiKEnas3+H1HfAD5ce2ho/6Q+mAXJZ3Jdwr
+NO6ui1hFTCbwYG48LP0j/T7fqg2PX6Hzue6/VT1C5JCyLdkhv6h9RouUu0v
NU0P33M86b7YtJ6MmE14Plb6J4vqE89i5ul2ud7B2nGEvr5tSrhfM526l4T+
vHHqZSHizc8a9zXMzd/5r74qXgij8ifqKcnTyZiDEeMxPAwXpURDN8Dr8TzA
Cvb0pl17MrA0BFe5wjE8mddLkKAfa3+kwjlrZCH+8snoSIQLUJyLz597GuPH
H818cC6eopYVbFtXrZEA/Dbww7Po3bmnN7/9fgQZ22+PNw+qDilr4y/zGm8v
PV7Q4zM8GxoHCHvOhO2HaXfDWnk70wLxSHsDFjFph12Av1efBn+ezOxw3f6w
tm0NDN/zhc2uQZqRTQi35ws3wrwgm/GRNR/D/qOx+O9WPMirngJX/Z1n+vjC
4Nkrrd3v57Lqe9w8vdV4c8afL1crf537+UdPtCv5er+tlvUNKF5+EnBN1n78
pi7xngidbPxfbvENlOGbCm5E3YdjVqYRrefOH0XYVHrGE53lRHBx/HrvyRar
BpBfnl0MdzKyV+w2dSNjA5uXQ6cjRZ4vz8C1a4AeGvMNS0ZV17XdHDYT7q2l
R+bQxe3O7w0QJe4oPF7I40hO70qvigzEbm46rxWmd8vTzQAsblVc71nVaHME
taWB5jRIQlNjctqOvjuLBqr/HPaf1B68VbxBdyxyNjUqEzM/cvxzySqlH6vx
+lW1uq2QA3kiAD5o95C+N+/rP1cR/XS7dUWf23jD8BYOA74Lz8EwvADcxJf+
tNbr/QykRYv8VGiatf/A4ap1RUoY7LJskWd6zfP4UsEOHrFp0R/L3njCq26r
bi7fgYfO6XfFGf/uON7IOakmOB4ddvEdiQp9MLhXtiUcxZB8wbhq5O/hZTw8
+5GXeJrHYzIFHQefOIMfe1BCrIJa/DsVVPf5c+SZ+PHHWaKzFhM6a8Fv+j//
+ONiSu3GcxSW9lTUSv9xWDuKdGZgdNDBRvNCVL4QbEj8EEjNq6pjaf8CPlQj
G4A5VDhNz0BWffHo9feXV49m9L/Fm7f474szP+bF2Qv49+V3J69e6T8cP3H5
3dvvX70I/wpvnr59/frszQt62f+2iH7lHr0++d0j2r5Hb99dnb99c/LqEYiX
Idoa5BQtKKVAmN3W30IU2c4SdvHt6bv/5/9++gu/B//HxcvTZ0+f/r0nAvrh
V0//7hf+h3uv0tDX2ma95x/9bu5dud16HRxGAVVnWW7roVyDJPVKgmfHjVd7
ugp28tRzJHwZWdWAm1qTIRFNN8zM68Tt/YJ0OK9bPC+u7rKKrHljH69/UQRF
GQzqGVg9fhkO+E7XNvsND8/MAr9yAszTq7+DCjsv5Cpis8ItUHdhdd9fxHLb
74hxwj6AqunQLC29ANp4xVDs78J8q59+HxxH/mHQWHUQuIof5tW6XtYodt7Z
CZtheWr+xpU1SCuSGK3fZuDK/osnp/88K96dvHhx/uY3wgJO3755c3YKVPT+
9NXbyzNwR1T+Ri5LuJegOS3rLajBqHBVYN00hnPDVntDqQIPmdfAKtTW5wln
7/FCvd0N8/Zm7u+Mn0+06Xb6q9bPGY7Ka7deP+tJ3K3Bqvfqsp9NhVYiv9Ls
Ntd+NOAbXkv2c4h/32/BZj1Sdku/9tM5BnqpPnl1dA0Kc7UIs4CjKb1a/RGW
5HU/OHiacw3KPFCUl3XlvlrN4Df+BngroQsy09PxGjX7LjwH07vxw6GMAj29
w0vZAD8B4VT0H+otUGo0fb9nZ6zR0EZ5Y8q/MuwDDW7BSeQPCHQdpB8kB6Pz
+GWStgGUA2KBdhANCbSWiMyBrCyBIhX4lcBq8OZ6ZakY9lvymYme5cCHVZCf
iWwltkO7jzj7U/yd3l95rUBOyipUOmP/2iW+P36tXIKmghaRF4AbnbNRP+Gu
kOaJr//WMytiOvfeCIfD/NPOK6Q3oByhKoLKyg6up1/W+TsRITP4N6uwM77T
wnNo3+CCIitiSsMT6SrPZXuUkp6mYOIwbBnpmrAt4XjOX8jJttvyTzt/iOCi
BB2Hh/TURkyzlT/tM6dcMmeTrfJ856z0AlC3rkfSLLw2vqvkthTbCr7SsqWJ
BCRUDIsAem3vSxBxgzkGOCC0nPjyeua4qjuaCGjyXXEd/QLU96Za6zVCXg32
MRyJ0qz/mKEB4WtmiUDtS38v9+qj8LwS/lk2VbvrxRYEAthu13zAuWuDHgHR
lZmhrYSxINNl4f+mHUpegz+xj3RbvfRnRU2V42JVI5/uxzKYWKhXs7ftB9x3
r4fh1SrEOdPeOHyF/gbHDbPabTZeP/kzCy1ScmZjPXUBvuy+ss5HpwKsr7xq
7JkD6S9G51UDvkdahMc/FZ7i1iviXiAtV6KdNWzhk4QtyfcFpi893++8urjz
DI3+7LZl3cGf/VqWaBpee5MfHCRIjviS7hIOBQ6FCjTbgYYA46WEiZ17SeKt
JX9d5VtCpuuquR3urF/Pb816Bw+s+Nz9Qq7htt/Un6qVQ6qfsRXnr/+wR47s
b6s3ZYhtFOPP7Vj00PrBB9UEglgGgpghIaMKRDNDOrj2F8xT36fi6OT4uSfC
c5obHpI/50+w8BN8yksL8G/5J+v8k0iwMBPUWb0+MucdUIMGddix+UGfXyy+
zY/LOohX8GVLb7p242flKfDbb0AXogc8px3YMOQdBslYehu78RdwA8f956pr
aTFANt8eeNMTNDCjYud1x86TgH/iGz8aHlG4QHwbyvV9ue+JjzZobS8H/+41
UFzZ7XF9/3Rc/Lo4zS7wDn1+SAPM+fxUT81bi8WLAy/SK6ynduCVow1CxvGC
HXQ96AnuX37vxzw7/pc/TB210F5xBBsE4/OW+xmdHeOUzo6LxWIxNQAQK94R
3Gqwe8EXNNSg4R3RXfWPVnDLvO43oFehBoWIvwMf+XZv6HaGRxKTfPCSlawI
M2OAm7nrxcoGBkGMq4of89f2JXgyPpXwS0/+//Zv/+bO6KfgeCw++2m9baq5
JxhvncPwR0/RZP078yu8VC/x7H7Agzj6OzizXz6FB086/2DnSWD+ipbHwywW
OM4PclHiv/5qsXj2C3yAfvFb+MRrpmJ+9OjpL3kQ+0z5KXpmsXj67Ff40O/f
ysHyN375i+M/wB8u5Lzk23i6M/cj7snn58VXN/XtvPrExjnFxX79SDbrJf72
0Y8gidSv+vkr8Y6KCO5F/xLfEnLo27vhvoL/O4sk7pwdnpEjtgXFoQwSc6Ff
4zv8gHiHQBbYfxATxZis+1hX92osJW/3Mmu4X482YF/dVo+iGYH3Bv+9BMXY
7RrkEX4JRMiLsHSeIFgJLDzY/CAhXrxFw4cVXHCd9X27rPFZJC6ajEMHEjmg
5gUNMIOxl9V6rWqyepmsy9c/D/ISOL+3Q+vbBlmdqzco2ZE9wo55nRL8/17I
wOWQ2zkLxt7l1cXZyWtWJo7Ea0PT86aKW7KfccYKEAYLPN3Q1JbrFrUMej4+
P2+OowcARMx8TeE1b/XBn9ZlP7BeN9Rge++CX7tM9PHJDa9q3GNRDWekpbUY
l/DjrulIcMIOvRDrqvwo+0+GqfjwaS38Bdr9asVGvNqESuXN3m2qsmFrxGsh
cDZI7Kh0eH27qhrWM/2aVvUNcrbBqIkUscHoBWrEaPYxWxGtnrQlXLy/KeT7
r+IFohrYdi56vdx4EaUOTXbD9OjjbFDg0qgzCEj9q99neCIKp/n/hSuBvmw0
qejq4l3o0d4exSlYa+WI3RXaavDquVoUgYPM69WPo3N9+KZ/n7/NSJWOQlgN
Wj761HMSmUBnbPS1ncS8eE2gHLAxsnDfZj+Ap4SHlG4naFqejsIHe0OvcDnV
nloFeyM2j0s4bE83y4L1RJSCHaktZe/MVM9fALsLPxEf++UzFFusfxVHT+DF
Z//b//rpcTDimvpPZHo54Beysjaejx/+Ugan+aM2R6G2RP1z/EElh7ECiLON
wk2F+Cj9KneGbfjvucz+LMjX6W+tZxbA4dB09sPAgo+efPILjA8T9kR2vM8e
uxM+VZB3YM4PVCvdlDvPI4rK6ynsr9E/4a4cIfPAGEg9ONAl/XY/IZc2ux6m
xmxXq8NDOlgXD/n0mFffV35DVtOb8CyzCStv2/gj2NX9nd8H5kfuOkvd0YIK
XRCuZ0J+4isueUUnPJ4peG9QPcfbaA4dPuvpvQ03ZR/+7IkfLjNYe+2uI/cP
eXfFPl2R6aFMZY7PIC/6S/EtfPAvliEV2f/+4v7yfA7/8f8c+s8/Wzz59MS/
JORzLkc9K2LmUdCzT+FZ8ig9+Oyz/LgJ26Nnv86PO3oWVL1kf0TZ06tO3Bq0
vd/SHUQ9Hp6dBR7YBcmLBMNcC92H7CvFFAUla7j9zp60cSdFfs2u6nfroRdH
vvKmG3oH5oGfdOAH6LI3iBUNlMJeU6lWTIo3ddcPRY7u+Tny21fiPiTLK0za
z+HJguQa63ZwKy7Eh1m8AM3CWQWqz2hQ1s9OIgSFBzB/v2Sr/J40Tlml2t3h
nODjb29u4MKpU6KIvw7hU8yUYnnocI+NK7cnHgyWN8QW/POrClQzTUgQGRfP
DRNYGlHonVHo/Tm/oBEkJp1R+inNRUzKsgkS4XoHupEDrYS+zHSirnZLKzNv
uEs0rVx9hDRKIKdIK0YlRRSsDeaOgdFPsdslCXNQ8Ejt4sXvg65F06Cv8u4V
33nK+wifr8E8AmWd/TyvT35XLO9azHPyGhoshSZ3Xa/R5Re2F7XQiPAxIUAd
4hElOHdi9mjZ7taxj5BURuWUpEr3oMALeROZiLPSoakOR6V7jLS+9g+v9p4a
vLqqO84KmRciXrVagRqMPkP8Lpyeu/WPNfIJFemUOhTCFEjk6i3FCXwTHT1s
Hsx2cPjpLWmsqivL93Rp/EFVFFROREqDo0wGYB/AOd5dvL16e/r21fsfzt++
OoFAU6KiTVCsNQqJ4bXBZGBPwse6r69hc1tUc0B9srYUO4pqzpsAC6L65OmQ
fVLXEOWrUGVYYVyTddhe8hcGZOmavoC+rPJm0GgPxr5nRaBiGhcUiejmDkpm
yAksZenhqaEUmwgauFArh+4nHjAdBOoB4xvYo17geZxq10Xx0j5V91GOA7uI
gWUdNi3edXUL6Tt/5vi8iLdt9Hu1L6KcQiRt1MXKSEGpPM0tyToyG+ftLXSP
oDPrxhMpJWSSQbBMssBIQrYdCBovEnU2KIsmzMiQXUQpOJR9B/OMF2OdzQt3
7m0zf2tncAqdP3iyMQMf4Xf3Ueqp2kF2gZiHqQEJIA2OWkdcruAEAZk2OkU1
nSwRE7DB6qZFzyXk9QDb0mkFq9aTBIbIVp43o3SlIY3N67kPDRU2f2gpbpaf
pLjN7dp54iLsXcxoPWVdkHTywlXS63BLU8fXXLPvwAUWIpRLL4fKugnJeX1+
b1LBy/RFdx/9E8BvYBuA3+BJhI1KEk+ElkiuoSZx8u585sXpgLI02R3JqJYc
FXGQ4ZQ8U2p524zc4tm5KO0wubM4Zs/GbKsBYFYMnHvbaMwZKbPsBnLwiAMi
um4cX/ILq5RD8l49d25e3HvyqThHC4I+HVZnEd14KmKOFbEir5euaggleq0M
XpzHnOUYpWC/W4KP7mYHuiyLQmbLEqODVcDnB0z8h5G+ceius4bX0XINFSUm
je94xtoth0nKSEDQtFJlUc2xl+dvxL76Bv1mc5zXEH2yvO52XnAe/ObF2eXZ
1fupL+OY4fuYVWC+cF8SoYmqgCPy59aUvRoO2jChf99Rw7dom3nl5TVEu+HX
qORHU6QA6p92kKEB7kgvmmeFJ2kQzvtkM6Ak5Ortu/eXZ28gDWXs9Wy3cyZX
vxlxOJftDDNl4jLVingaOuc4i7sVerSp1A7pFFPBIPYNtMdmCMYD4WzDfuGz
JT2Jq+/D8mEh0XNNdV+I9lB+hKIFv5nkk8C/49/QkdvB/8CBXitFg9fYbOdq
V6UOwUWIA/j/wdiQMkXOd+bUOGEGIcNTne4Np17R4dUd3SxcOSm2EMzxFj9E
lt3Vfcs7uikhlFslWZHP0dEnCZ/Gn6WcV7NERH3qaReOQqa2f0TTtdmDUzak
5IUM7WjUYJ7xpEeD+t9/DIP6jZvwWoqg4msBtB+tl32K673n/ZG3wNkR0PsY
7xPoWbwtmOIPN3FmMx0HTLDCl5xubt0HPdtTDCdtKU2QC/EB/+wVxv/93Qnp
ykDelGcjd9UfYo8xIn81N5RQziE8tGiuM0v1pErpYCyKGmYB7P5PyajHJGd8
ozdrcORCb/JO25FSjI9GvgjeHbQq6sY6PcicCxbk+Qs/IhQ4SRKR7DfnZ0E2
2droZx+rkYDHyUclAnBLi5D+GlKQiVFAXNdf2GA+aboUewbYquslTQo0IcjH
KrlggCxz8PmKjUKcY3JAeFZsRsj0vvKGwu2dJa/47mLK2Up5p1+hl7i4k6Kr
SErVjHLVol1rfjZEI2iIIrXJKSQY/xLSe8qGE1WgXMUEZOydKykdAv4X+MV1
5W2FGqJmmKje1/1AiUmUcpF+hW0j+V0frUGMGFaFppipYUkODKH6dp7jVpjh
KtSNQwgrTAUvTQpe7p26djjcgcFgKeyUf/ylOEU/n0zxiKd8HB54BzKJnuoT
Vya9JI9+hH/8DTtP/8bhyxeoRvwFdyJSTejP/I0JB+wiGjDv0C3+EmY6/Z95
CGfC6tHjgyPRQ+9fnFydvP/21dvTfz578dM/F+3ewc/ltjY89PGhz33RPvHy
cwdiH+I38qfyj1/+ObO6hx6yx/I3qA2PHjq0BR8fmlNCl+gZy24D0CzoZmG/
huxW/KP+7Sd9+idsyYVXLoqT9RpSqWPakb+d/vN/5t5kJhfvDUxiNfkg/u3L
P21TVcZMMIQxlP8Jc31XgrbsmSBb8I9+lFBabIdaDmlzTCVqCN58knpPHIjM
Z/gVihV4vf4pytGvSVfEUEx/TNlWNrQQOfhRR3qELPARyx6TtYvlYV4xkECL
nR8o9uw3oERk9gN3LZno8WcujSt7A9oWSFxytVvLfeDEbT8DTIJET1HbOd4o
TIamLRs0msKXArY7ww3JnmLlqxxb/qLS+WVU4PHAgR/BV3g/cuKblxAc7asK
Ywbkhov0S4g0teHHnVcq1kXNAnC8Cpou1cVC6ZLZF63iwUQWyQC4roYhxEpi
N90iT2VlPgAVgsSYBYB2HlJb8YR0YUc0NSON8ykryER9xzDHbtA6lpik1MyM
7XEHagyRFma4jvZ+Frnng900ZxM7/AacAhUWqHT7Yi6HKjkYUUiKowfGcAKf
FZc2TviNnfEbz6Smyx/0jiJcfAFMAUHx+uR/vTf0GL5tQ2r1eMlSnuAHniTn
XmMa7tpT3AeIOIE7VQ76Wr3lwB1CdkdmcS7rhgL740Yug/WT1HEqZgiP0laD
AwH9VarUi4PJ8T2kYhy5wOJR4uDMLOucM1af3gnPs1AEgHgL9/Ql+ZTDhYl4
KNZtWJoxM3eWflICUd+mOFqWd9XyQ5ZUWrL+3IGjiwJlEeOD6qgs1TjlmBoS
Iz6inhs1/omh2LAyxqgW0Yow4a0vb9Dmu23ajrKe8x8nrz4Pj2SmtRLMFXJL
AQ/csjpAINbFacqjVpM04EY0UBANoBh/FPNITEQaOQWRPmClTFXMpGZ8ATFy
NaIrTMVLQwqO8Ac0+HRPiS3ACq492YPpZUp8k1juwmtMmh8KlbjWjUNHLa6D
MuccjA5hAQg84nlYlj1RfRiP5EzO5xrkSeKYSGQh6lPO3rTEO3HyO64biT9S
WvFGM8ft2nChgN6Cb6jkw85jdPzlYCaHrhAtyKg3m2oFgmu9J9daLam8YfpF
PH2iTa1wC0wpWYKS62EKdVNcSr7+5SRK0R8RkhNGuXXpJUZ55O37iUa5i12I
nBvFRHYVD1IecK17GoaIt0OG27ebKnBxfF9+mubzrP6GT7sDX1P2DOHxD/qR
TKRHygT9ww7KMa4pqAJpp+BM7S1TUJas0c3D8QSHX6chbA6HuDgSSTrTjVGl
jn3gMivH6jrVR076RtDKUl9BTu48Hjk16E32qmRt+oyPBT+UiojHMX86igY7
Hn3rO8/cqm7+RjKmvsQ5478q//vfwjljN/yv8AL8JEcIwDfkFm8f+ucGSsv/
P3WEqNVPZnjuoZ9g7I9Xlzf2/S+KIykcOi7Iv5E39kcTzBv7/zAacf7XOkJO
tlt0JI63xfzt4vLqv9gZUq6mH8S//bucIUb4ZJwhQaxNuUMOMPlJ47SPvB5i
js6c/+FJEXwkJTtE0B+ieaNilloTfJZjojheRKM2I5CkqqooHPDKZje7zEJm
hUk3K0c8Fh0bYyWQJLk7JEUhOLxkv+5YerFQpwmxBuJEQRgfRQi8PYK79Gjx
4JnFepB/JfUGJHN3X+KYiEy6yD0hR8/uCRcfezwZI+FjZRZUy37KQ8IR8AcO
iE3diEAk2UnNpphcwtUYje7CcXszZNewL0+3JrLH6eQ27TAO6BsLioHLKAtp
VMRFGSrJpPIE6H76jJoWA1r+X8Fk4m1yku3HZiTvzRmZNvRRso4IjsIrS5io
rzksfkLTHsD6JgtJ0VWca+np4FsZL5A6c4rZOBHcBl8x+hYng4dE85DfLK4u
Dq1iBqPdJ/w7mosYvrUR/7p3Id4He4QBY8X3Mt4zc9ES/4dq92KfaTQj2i+n
nqpzQZWQRA7115raNAg599Xmeo1uXFZ0Oe2QFuKitOaxKgw+sV6/AcvcbbLe
anSL0hwYyeS6AtDUKMMkWjIZvxN+jaF15EbViynJVZgGwMgHv6U7H7lnKdpq
vVdy02fWAcPgW1HWggM7stGKNXiQ0byYHY/5qTXMYTLWCYYaImqA1mCZ9oGF
6we+rF5W7PJbhBmd7DZj2gHvSYxf1qfeDeP60cxwswa1qeM9S9Y98vRZE1pu
EHGDO8BdonoAzq2CGYXx9K5Gnki2BdXlEHsO7MYCfaIzVFckS3BhCbAvXxCI
6NPdoFvkQmo7SdXxmiH9sUcEPnL9Zb1qh9KuF1BkvqweeHE25cjAyhIQnF/k
xrCyY+x5MkECYFbgdRsRsvUH5WM0Y9dKTBchRcfY41FkYMyLLEIY5DFSYAKv
OOfvVXnPt5X2rCZMqYvuiONns6AXjM/7GIJm9QbQfsFFWMdzuEHRtSGvVbom
Fo+Umd8dPomj0VY6/fw47AVQFF2FES8qE2dOUw87LcqpJS7Wm2hd9GWqVB4V
3rAL5HZX+qs4VFWmFMZRBuYdVb/AznWoaDWtFPRgrpJ1F+KmsGslXI8aIn9T
B5RdOng5lSympjaTGpUiLh+SnFURblycKT7kyhoAQO92Zli0Gk2V39OgQL/b
QsS2p7RNEE53iCsTTY1kK2HhBIa+EmVQRTtdAEx3zcaLzwnnIt27MIcpR5nh
K0S5ECuMmLtIjvRORsENXrxg20gBiEmrg83G3NUvmEng+n3iMEZW577QY/sO
fonlMAgoSfWLIfhKuXiqV5JW8q87BByA68QSiWoh8VpQ+Yf6TKNINeCahERD
GFvjP91zEULjPO5ZVjlOnptjMJCDipqDGvndpvK0sVqDZxRX8YSIS1+pGCTn
crybxZElBzC5I850TNXmuU8cFr3ICdVSjvngN4VyY5ZK8ZwINCAILA0mOM0O
0N1P6uKidZuTpspSLGlC6qL8ZrxWxOCp5AGcxwSYF7GbAJnYdXvWbzaRMZ4l
t1TD02PclJ/s4UPGf4kRzNTi6w9lpcdfbxjpYvzZemymJFsIwTU6UjMBu2Eg
X4HtU8UgsNXAzDIiDqJLlK4ikYFBASBjHcLSm7/8fl7fJYLG+YMZ1lWAQgo0
lbGQZa2ZKGVfe0bnJqOjVhIJwce0xRwgkNd96zLElWrFBwiKWVk2HJAGoMA7
EgJQJxNuGxI4bc/lCKZgOebJ/tPnSRnrptyHPKQkbpT9WCkfq/2TbvJzUQKz
RLVQ0ntmTFDomvxkRIof/RG4OR6RbmfYL2Vbpwvi9GLIn2qbecLk4HY9QpSa
FY9HSfMHJqwDJrxpAdE/eybc7UlDf2Wc0s5/hp3M7aIT3y1cmDXocJD7BbZ8
vwXIB5aQcRa4n9V3V1fvHj/zU/kn+NezX1+8PP27v/3FE7Zp617jkKWpvw1x
utw+uq34iO0OwPyrMA/KKOFTV2YCee6iFNRYSACiFqEbLHtF9wrG/WRbvqEX
ZJPiEnHWoZyNBIsHamw/loWeMHCVu3J9M5dfiOLwlyg9MHHGW1e5+cOprhav
JP/aTSJF/NQ/AJbDm5av/WPKjNaP2z8sPxY/fyp/qFfrMZYFDIUDPIZlPta0
Clngx8fB5gvfwND+TxoqcNfH/E8IZPg/mE0vjsgHefzQrFQaPA6C4NBQ4eOj
cMrEAqOhIF1wfSwLFNXisZnHf+xQk3vFo+S2fXJWE3s1OdTkXv30WR3Y9p82
K4NGYvmnRK/eib39OjDOWCT6u07cD2JYyHmOfv70mKFgrSBsoAoIDKxHcFse
cQafaDB7KE0Hya8OZ4RIRmOwOGzC1H1OqdI6eRgZikY8Sy2s1beXjEQuA2kR
Thtj8vD6VTCMnDu/SVOgyOZmVyKaxV6AVqonS/sWNapHRYI1A0tHVZQ2dgX2
cSgltt8mOAWAgVrg1A7tRd61NAscGzGLqVQ75HSBPbw/rNtBPbI3YbZa4Jme
SsN1ysyuVdiKSPTWnoLVZCImGQwOF2267JlsdZyiF2aCFdh8Flg2GxwsrBhH
Xv772uuk4AHDtEDwfsVwLoGC0LskexTtEJbUDTDQEmDfUGADbrKzCM0BxM1G
n2aIc1UMtnIrLhdTT6nbbcU3sB3Q+MwcE1fhZrc2ihIkpgPp0uQICvnHhGkt
nvDc99AqnRwvqWQO1EqClgsGgiN/4ml0xV6GYrFSbOzdoAXo4vJZVct1CWwH
Al5xOjUDFNBsXd5Lu66rHRmTsdM/iZryUMt2ywFavaKBHPOXKPV2yac5dkPU
C743RGfzi5zgBJQlFh+VpD7mzgm8eZT5mswXzOoaORnCFuTnJkQQGFDO/LOY
QQYeRqsnQgH7kEtoTpLf0Y+oMdMltgKIDwXc2956+Vi3u369n6PpFN9eKQnk
mSC1Uu7D9B1wsSuAjxpNfKnejFKaFcuHnK4MXjAI1gXl9MXGPff+4gLMKO55
iJs7NYIsLUJk1YDasAeKjP7cKd1oIqiLEkFlJ0dzhZsUfANeUoPPkk3CYNFz
NLvLu91Hln4aF5oHt5QJgNSJdR+7MnICbx7EWMalQ2XUIfE93smE5ATSoUqr
ladrSjDRPLwXQWHGItbuETkdWUMA9MZdV95WjuWtQZYQ8hhL2YfkN2o9BP/D
PX6Lz19FNRAS9glVJdAHD7L8yT+dIJreRaBG7Kwhpzp0qMN7iTURxU3J1w2T
GjxzBEDc+7tqveG6IZiUDIR6IOoa/LrblKCoIcK/GYMCCzQAVnObCW68vQIY
rBHqkueXrWeXWMFl5q1r5JcAfr4eNtzuJIIKLckhAPzYcwJ/gRwGAFAVCuk9
sARrwVthDykDSEoBeZsBZBHbzZW3t111Kx5CBHIxG4xDkJdmw3jUo0NR97t6
FS0jxvjTHoHAEMYxQpLJ1sWg7+bz55vlnLJkAFPeBOl09xQRd7nPwazOBJfG
AKrRcpxdznK32TFWUQZ/lyoPuBKDUI4oTWo2amqEHfRwxz2FzM3ksNLnhQIA
+kdPL3737uqt+qmJi6eHxteOsBnKPUJgBqYn3R8DFBQlt+y3Q3vbldu7emk6
TyUF69LLsfqEbVg+SpEgG18U/6PkCdMGizPZcgBMLmAkk6FyU1I/TWl5MVRr
LMijDglYZa9flAKwVvXHrnK8KbkZWv8WOFo7bTcJe5ywmzF9MS5X5dfR7hFE
Dqlsfl0KqKA8WvTLu2qDvksgPtKkUJlPnXHQWYwc5uaaK1Qh3Z9AXYQQzcFm
rMEkDG9xO+P1IbQ9Y6iJ7GLo7Ai/F42dNeB94yTvW4fdUnu9pVHymbTPMb1W
Y/OAInHMDvuAGS62RMwMw6SC8cvHJTmDEfYxnre8mGPxnK5RZMCrk4aXh+dN
bImNNaCkikWVHNHPoFcBz3RZev1EXJaUXhU4STrroR28+GWk7ygxR2Y9guhs
I5xTNKWUUrBRjqSIEjlyAYhJiDPC1vQk0/Z7biVIfVWhvTQhmJTp5YcYNVFA
iJAifkr4ys8OHh8/xw9IoETcyCQigPXItYBeRzVrMpwPGe2KuT/051gFjpSP
bGqVU1CtSy0Tps4SiLm09Uxr21FNE+5GdpDgOYjERnndt+sdqGn7QTEqTUAw
F7KUTBnGcXfhLQJqkqQ8LHUmDYy7wdjby28xepbCoS7s1mm12FS1YRNYqIQ6
a0mJxLyTD14d3nXq4tcDNDlqxW67QkWV/POd13FRgBDYaYwsj+fHfgdvDDDC
MwZj5fOs838RCcQMJSaDsE5mCM76fsIJiisp/DN3pqR3m4sL+MY6P8iwoL53
pVUkeEziD5F5GgYK+Q5Oem1xxatfYXTg3kBaC8iN2RvKTGE8dfNBp3QUf3BM
VrITSH2sdY+oysVhY3t9SQnuhCLNSWSSt+VoQuYr1wfmDrsUnFn0YQI128/2
Xj1fV52TR8B7gf5EMogZ1zOeOlrh1LUiZu6aZ/rq7W/fn759c3Xx9tX7s4uL
txfksIBUjLSp7rH6mOhS0AkxfRmEYvMVNbdd2O1+lM1xoE7Y8lthrdS6MGpc
6DIF0+RAKfUK78CaHN/SQm4pltqSh3LXCPwEshMBnHOc0GQ87pzOYoPpke8r
mzPitzeTRW47N7H7XrLuCAwSna29fBIID9bhklWjb09XbZ4nHrL12mS7Ek8v
mvdwfBA4QNxk2CF/9vDznH/GXJ2EfDRBjIMfyOIC+h4EMyVvmlQL6+ADA7H4
UFXbdFRSsfyINTaDUfEJBaSQHzg6ZIgpMGArrovd3j9573HmGjOBklzTA9SI
ihtEc2PFm3RuYtDnQIgEhOWNfbXh3Cj7AOFfqxjHbAOhYub0kapQN6OSjZLF
W5RKraxA4UlBucOOXNW9kmsp+G9XbAkRabBrgA3qMuZ7vJMPcrYE+zpYptiy
zh9/vRUAA9hn6OS59+ozueLbgDkCQqbF7BGkBWx4zHJKnCti5YjvHn6sr0GA
Rd3ZtRkQ99cEaQ1ZseC113Y5ELpK15bZYW5itMHeuwx6ie4t6EXUAZEjY0d3
GvnNgGsiuihpC1wYgh3deQYzkSN1IB0x8vFxF7mHJg+MUgnQoqTxBD3YOFj8
eIMLEQqpfKYE1xIu56qae5rRbj6ZMagtMe8pgXuKXIWPAx2zd4iFKgx9QKKS
070od96q2OEQASAatOedaIG0X0v23ojh5IzAGWnUBVm1rRLgHAkQSLOAZtkb
CW3gnuAPgyPFZDJEJopqz6C8xjxeYs/l4ur0ncvg85Fc3/qvMnRO7HwnJRkv
hsbBpDt8LNa0JzTnjGHD2EELmLTiolCcRHLgBBkwczG0eTS81rpTcnv1yZOF
8r7QBwhPUmRKkDKUK8fQ0jKRPAMusiVB5pKWiQIDqZj3parBX87WWUefNphG
6sU3fhswN6p1khSH+W21dTty9w0rWIlseg2gWz/FGan/zgygCE0ag5zhCrFi
jobbkDYy/X0XCfaBW9GUjbhKAucNpUapOcPXhQKu0apQH1IpH6lDpUvdwIKF
RMlcfZWgMvd3YIcDrzDt6qmT9SUz618u/r4I7eFD63o+cojM7hTvBHiNrgW1
c2SOIAFd+ABL6e9YfxVr+JQaniWA+kvz2x9tAxHB5UHnCnuRbyHdln2PYRMy
SqUGrBwlYGiKvjJ06eqmbpoJ5J+VZ7rM+wmB2mT15wFYLI9BShqggfwKsnwo
wCNVvto/1pZwkkZ+s+twetSdAko/ONkiLjH9LeeDoPgjq4gbyKI/N46/oCPp
vg0FhswB/RHLxrqc45Abru8wXECtkifgp0jDAZm62kueXr9DvpKrUpnIOZcl
UJVQXHYX+tpIOEK24q1tTjBxMMGQRozWmqB6Csj960kfBEuIGzdXXWW+FOKr
IT0wE+OeBeEWMVLtsztVRAh1i0vaZHHE0TzGi0Uw2yE6BPS+RkbJGtFFoglq
yK5PYnY2r5yQ3tFB9XISKnk2BtRRMxg7EaoLeDKWB3jTXoS6QIy4T+LgiG9j
dG3MLsBPkIvC61q5sCaB0gKLVX/JpW9phQLG4+iF4CgyMyOZ4W31N2en0Nrl
/emrt5dncb+QlzgcBmm9GRIqQKVDlB47Q2B/AfdK6mbL0FTupFdXONSNoNaO
0HW3O4ghkjspIhkon2FKWjKY1HhO6cVHpaMoXgO5E4DdGgNinIALe3WH2C9O
rdngYsSk7j3nrOFPKLtQUOMzY8LGc4DWv86r756gkovIjXdHKRemLChek2R9
VJ+2aFKuqa9A5toC/wB+e18z1FbmxHja2IQblyO9jV1SSLwpuw/Sv4zqiW/W
5S0u7olQLWB6wS5JnpbL98BLYvcoTYBbpVOMHNUTuIwHENdsbkFanyNFPAHP
3qDOf0GTHxOXRWDLfcsMMkw/YHdNLckfAZZYS4ohKstoDorXJTpTxQzIJO2Y
GrNSm0k1uQ01hOkyKVaSPx/O+eTV+8vz/+vMevNI1xp79GJ3PY8I3xqsfiG9
qaKNsxcXC0HyX2bnNymYEfoB+o0W7jcESckxnJ7zpTQ87EXhCjpa7snJwalB
ZKEEy5frPUOOlgBdxmMiaImpEKUQnpSvS9G6MH+XHEZg/+zzSlzapMbA8EXc
cInQT4IlTX14TkPYHP6tMf3PX00F1GNCZ92QIiuZYL7mXmqKRAjnQyb8wlP7
eq9/ZfpRaAlyViBHPdqUn97zH35e/KL4GwaaWfMv39er935b3kOR4bH2o0fk
DomnY1NksiW1byWgCeAwLvg8CtIdiziHNkTwiiMi5Ex0by7KFHQsokIzaPnb
q7/HfCX4Dhy1Wg924eWoIC1EASmAeEnwwZUOiFkqXnNKmCdMIIvTI47psK19
brFinEbziovB8cwcVYzdYnY3u3Sf/e9fPmEReY9kSQ62UoMf4ZwNcB2En72U
4npfvNVJI1zpvHugDy6sja2aEXiF0RUVuITukgFalGWZh+Mud2zAvzp/fX5F
vEanI6NQ6QKmoJzFqh2IBrK2SHyiqyrkENadIAOm2WoBwbCMoTrCVgYrLgzN
TmVUM3ACyF4JlTJp5vfgMotcUCaIrWxISaZHsyFqh9mNKGumHjX2L1K4iV+M
Y0yR2EhCOG5MsxyxYfeSxGysYih9LE/E1RpM0Qkjj6lbe4hgt/M+8qu7Tcig
6GPHuvaFKD7WZbQXEIVJfHjjCsIEoVtXJBwhNALi2FsId7hxulWIlGAnMmBz
HTjGsUBOgHly+ZPogpYXCbgUY1WSmLGTNGgc9We9zE9qEmyU5DJxnSXF270p
3NbKOy6XZ/wgCoiZRNtVdb27hQ5/iyKroaFLL2A0kf+GBxX8JUuSqZeXS13V
Y0eKKQpgEe+YEqxhvS92mJH9vG1h42v0+UBoQkpSbnRLBY0CVoEN6oLTM9lP
StYyOTw9CXr5ifOzfhbZ095M8adb93dI4V6cX2N/Gelr11S3LWTlaTgXFhzn
wqEbQEWLJsgwNNZqt6wmv+fACe3Vjlz6og6EYhzZj76LCBS2RSnU2/obQ+pY
W9iGNOfvQMjh3ALygBLKONWQhgEXHXwXjV3EOI4ikyUmjwdzHDg7Da36YW5N
JvdXu3CalCvP3u2BzesVuAlL1Pv0IagBBeFJ3QBQeTZ/1W7tHTUyXdrR+5nD
TtQWtTX0CU9dyvHMpIR3VW3BJwrajr/ca8pTh9WLCPyGul2b6pS1otPHs4lz
QLFvJlfib7t6AzGpm11j/DbR22irtgxCxgqGRM0glWIFGgaYm1gKfA89XiVn
kzIbi6PvX7ybefI49pcbmiGRwi/BCDLK4L5YJYFCFClMUXHftaYgB0Dfclvg
kuWToBx1PZpra+Uj5BBVd1dugUwhqxKe0geOPSMa7toVnyayIFLCZBV8ZdGr
aTfPa5LXyIzw9AB2mFcSLgZ4aIWYxsiFSfFSQiqhhTFVJGDahe0gapIRqYE5
9e6uPiGu+NoxiDBgZEoZQdukQn7ZUhtN43hBJ2x3TAGzjoJcjgMd4MHAy58c
gxrADPAfLsAJBS7rj5A8WH0q4ZhmpFaJhTd6DXZXl3/NM2JINlSbsdyiDRnI
hir8Rr6zB4etsyAUCuTKruLikoKmMduA03oBIQliLvF5cG9zisdCMIhancN9
lvwo6YKZ2Rov7M0Ue1GDVTCQARlYVs8BFWo/3KdrwjiNLgp8LRi4oV9g9mOD
zitaLMxpel0YLZaKBnF9sbeKc6rVdfXAUJS8mNTe+ONDXwwxGsEq9Ldb1X2+
wl5sA95QuYYID4Nj4uXqQ5Q4JhEy5CkYEdyGfhSno6BL6ab+BMVvtIqbMUPH
Ch2JFXG5CVoHlGANqYs0BAhAijDDh/Gxiq5ctG3iaEA20hcmATllIGC2oZeR
J0cVkZLc1AeeEe0NRnZ/YOXijVEuPCWw7c6qB9ACA9xXXgWqchIkkkD4Z4ZQ
xbKMIB4EzxHOBI0TDO6YN7gaxAAq8u9xnet6VQ4mYZOnRdVMEo9EvaNRfwM9
g8sFP6/YtgkVGA7I0fSRkJPGHZzI3nISCm0GLSsIHi3qipt0G43Qch6suQcF
icUla6T+fnoiWFdM3ZPT70nioNx0N/6yIxwoe1YIhmSJrl9SY6PEro6zFN6c
XPkdvK4xeM6daXDn3ZYqq/3Y30ikiWL3EXtdgVjYNWuafVRFJ12k0bD2YhKE
u6gAN94+xtlKH/kak0U0iG1G4sZLAIQyuRPorFXnntFJnGrxd2iIA8zYep/o
bMhpIROJs0NaMfvgvosk74kanZXCytGXY00Nv5SV3GKeuzdnmJYpoZ7zkVnm
WX/M28kV4LXWr4pzL9fYrWg//fkrFHjzZdBdY0aL+wBAe327JFBk8p4t1a8I
96gHi5Sa2K92nB7jdbkN5CrdKvKN5vUndwYlLmsUhiCkegC2g6RoVgiwrEDh
yzedpBNsDDoZg7AKlQFO7RWB5UmWxcNOzbl4ohXTUIjmjRevX76Xi5lz3SVN
h3Jfc0oFo889BdZkrN0xBYEzeddgrujK2vhMQSPqcalTM0s+E5vTkNWA7drm
dIIuo1SpF8Sf7lMeK36sg/Y1G0y9i0SDY4bO589sWg5YStDjsWyfe8DrGLzA
41Jb4RtAqbfNmIp7ZUqM4A3ZWWwSM1eqNtwW1WVpIseLcGP6VEpQJjdsD/fx
0oQq0rK7bq95K5baWe/1NGx62kf7qcFiLdSrGxGHVLQRDwmOLghQXZ1fnOVY
iwXfA6UiRx4JQ9Euunyt4aSg/wkNsGJKVdcQNN/9iBJjz/8ekz6uAJcPBh9o
X7QUqh2JakRthSWbMUwx4D4VJ1WUxTHFjOiWIinANrGMnLrnTu95HqrA2r16
OCJjbrxtiMQemEHw/0EJ6K7Z9SlTiBVb48aMwuW5PUVK2ONJgEJAClbIbwj+
YHr5fXgZojpcHZFZeJF36UlBJCODpdQS+sH/rKeoTzqQVPDkvBFDtfGzKLsa
UofJhV9Gg4lrbkp4YvzPQG8hyIEAu8IGNnsuvZxhUz5pZR8dHESSMP1Ngfpg
oAscqHgHPRIhux3FFWqYU5OxQMIRGAP4qVfUwmd0og4FAPUnrCX90xgyMBWa
FzOM/LwYddpxQ0Fa4uSuNZRhq/hxAwVds5ObyRk8QJZ8gL2ZsUnopdQi9yU0
GYRunPIWV77Ymy/9rONoS7RyG3TJ33FWFsnfHrMVTXzg7nkDUlsZbxQnDJiB
VaDdVPdjR0h6eaa3RmuHHpqiBfYp2SaSmFaA+ihy/ChzaxW+wIWEbRZiVDYa
CCJZGrNh4PlV4k8Fq49TO/1drfsPiL4eV9zFo4kLhJL5hvZDRb5i2xkTC6uA
FQTIBZhDyRZRuvPqKY8Spty26ubbEmNVXLGjZXGh6Rc+wFIZBoRnd/1Meq6j
b5UYAdaP+1OlEwBsfIzk9ZQMCOP03EWMM7952+Lrl40SaX9fte34IjMjPGg+
9S4j1ZAQW6zKHGmnNpil0i+4LJx0Q6ASvjFtxjYoN04LYZzslZaQDEwJ/UR3
nq0SwDoaRKcBwgIgh4WDjewj0XzQQLIbCc4AztIZa1Y1G6JSYMV2EuPC6IYg
SqTRWoyBkrg2o+oALjpILw00CDDODdkzsIuqEJ/XnZx70f+hJHhKdgKCjE7o
xRZ2juMX8N2AKWMbRc4Yj5hrKBheBTW4uyqAcAoabFH8VnikSSoLLVs2LSAc
pyoxfHAHiXG17Tw5pc5a8lsoVvzBNzJgaQnbBALkBn/IFMtbcqCvMmBgzP23
a8CEqJWzjgieM1Am5S9FxTkBfhQIi891ZrKqA3Pb9QzyPXITRg4Mhs1m0APy
P6nu2+pfICYnjlr5e6SeamJaAthAXik++D17dySoSvIMxA3uBocCydaHiaDT
evRdpGOt20nWB8mmOy49sjSO7FbS+gFtmk0zpNAg90b8Ve6d+K6WdbfcbQAV
bYlej0vk+SnTQP1O+SDZmPG+oE4X1XNPaWKiuYilvUrVOyfq3ZW9WoqgRl2l
TVNpNnQml4xT03bAdGZi3LHZJH1ib+LrDGsPgIKsZzpysqzYb5G6y1lvyZUr
+zP83kS1SFmf3gdSc2fhHhJ2Hpw10pdTDy0mT8Z+2CLRsUOIKsc7xLOiCQua
/0Pt7VWtG10+MjqHoCInMcgFGbCIToB0QTI0sRWEw0CqfnYYReskCRlhwJdi
m2J6LhS+qvTO2BwyUC7NSXeaQT3wPv40/V2SVB/M7VsUL8mhHcDqgh2bKC/I
b5g5V9RYKlRU2dQidpGrxlGzDzXmGy4qDtcbNfX5ED4aGUF5syJs5rS6TMlY
cg2RPRK0lfPnWMWQrxZROs7C4Q9q4a3FCKd+s8SLwjymJSehRUhCzXBfk7Kc
PX9O9cq7D/w8bsHjN5K7SHhOTc8aPatYPCxMQ5OxKH2ZSXrEvYnxe03FWP5U
viA5gbWIzoPZee6QvTiShbA2ZK5aDnzIPFdoEQUsP7T1jByK42B9crpkYbcC
kijYg+m30Qqn3OTXUhL2LpR/xqlLHA/UPERoEsf5xrYV3nINTljMUjA5CYWO
iyh8JOuhylADD06N9E91P8QniXHVOdMs+Ox6/5PN1SKcY9K14gh+OJiBq6rl
iwrUWBz48kLEHDuayaeXmk8mkJ3EV2KJQzFJ+YyzC0SoLhaacsTiDV/6UeB9
KI4KcPQ2hyFVhDiSacI6rIuGx8ReSHy+AYN0elH+vsDqbagZGZ5m+djkEicR
SFoMlh4qgEjuhTQ+RiaC5kWVY8fOdEw0s686E7TVpdt6lJKTGmRs2GCLHauS
QqhWQrRQKQFlZVxED7/PaK9sMkomjzTvVoBi7BfwobKxAQhGlrcQ/x0nsI3P
LpC7gXJADG4Mf1B9DZbU8K+oBhKCZ9QTdB+FK1xoJF4OjLmwSsg42riTQkdm
oFbRYcjzAZ5ooNs/7erlB9A/5VjH8XbpxgjeKMRbCKkrGoUgajowI3xKQZ7V
a0DjOMqhW4ZWmCq8tU/SmDSgFEyyjyznc+lnAhZ3lAGpUW9J6mRHX6mFUgnj
40mjkVyuQ48VHEncIbBP/W4JZA7JuC13vnKaQPOh2nMlhCh82OaToi82QQ30
vdEHgn+LQ3UzCsDhBDmBxJkEkhmKaAuwnYsfaM1ORurWNw6hLzeYvyzJhGi/
GSwuGB7cZpy6h6+qC4hCjEQ0oSj881cUe5xvP0TS7IdoJzjAz+kPUEh0X+5D
2ld5gD3ixRE+V7Kr2ySxcP4hBNd4cM6XFH2GPS7uQKqH8KRgLo+SRqaYppHF
nMAH6ZY43y+6RIDxSSYlUwk3va2p5wrgt2B+Li2WbG/J947SOaNMTrnRVYPp
zEFifYB7FLc2gCYtO2x9exV21dObW3UtZtyHxNEZldT8TsAP0bJDB85QL+ut
RlrXWEgTsT7Skylfnb+I2+0nJOU8/GlTJiLhSEGtxpbG4Jb3J+LXxFc+hIh5
V52R90K+lxSdHJMvqUAp+TIEFL7zV0zoepckU7lM/AsLH8i1PPZrifwQthY+
wmooTQ7XHgNm5RLQgpC2Mg/6E/l35h/RxX/JuiCcL7KRJRczRyQQkBf6wesY
qIhnOJZxVZqKXFE36bCAvKJoPveUcJktleRpAkTn5Wjf7dHjeqODoOirDZIp
3mknqYR9utEhQVlcQecNajb1cuePbWZFDymxRm6gVFDMD/RwYraovqKrKXS7
DRqb43UgockXdUmY0tqs6w8VVstZVJFVhdecSW6PSYkt4aXwLQjfMxaVV0Iq
RO3GESBnEr2ENJYSO7k1G38qlC8aEXndeFFfrh6mvVlw5ITcMU01jG9Hixgd
UWZtWWRuWYsty2V/2GWVKjKWL064GYI9FKWW5wUGenPmB0RFcObx+iCnOysU
ItXEpFCIWwScYp5rBiMibFhIxtRj2q2p3glUf1hm0L6YolU9FuZBmjwEkfXZ
CALWVKkcszNNNAgzW87bM/rXMJbP1KvXMNUat4TTUsD9oi5kuIwxM+zHXM4f
Q7z8pW0PkGI8WPdvaCfhLs8ufji7eP/t95e/y+5x8WR+cXWlBGzWbGRgqUB6
UXZaXzkDe5cKyBJF5FwRYeLFLFSV0UwsCH8JfNB3ekbyhS26IFTXEXwzll4C
KdS3woAlJGlwI1EhDd0GL0ecuk7dEztEDwKPCVceRO78EDcMyHl4xS6xIKR4
BTzqW06c7gnQsiNIFykF4XRum2IN4WPI/+bZ0X2mjpZqKbrUqFRjUW6oZ7+n
QQMOtPqz3uYLc2HVCMZK1k9oT35J92SmROUyNMMFxzT4RzdaG0aWAqjtTQta
EkG5Qe1Ln2bFM2eoh70TE09mLtNm3R4Rr+UUw8fAv7Eb5u3N/Bp2I0KM46VY
Sa9u/uWACNV4QposEynq+MHzGz0bhaiDNFf2oPEA402e2W4Z8FFwwhQjXsK5
hGvNZYRJzsg6jLGSR9lnMFomz3RoxbnNZgNfPIygWreBgLjrYvyAGrwLbiR5
n2bDRgjcYA7YR3PTAQz5I+ajoZOk9FeKqYCmAHSYkzw0Hy1LKxIoN3/U+Kew
AkCPQhU95DgEaQl/9BzoPfujwyP5lL7L9CazlkMbgIWvyANAUqG5EG44Yglg
tqekrTj0RirfTB0ibVcu11WctUK/Qw+O50Gv6hsK35L3yhBtVI+49o8t9/Ae
nAY+ahMkevk2+AMk14QcK4T4WNpqC1HOyV9M9X7bXQf9VkOBIhX5ic6HfrpP
nCMhoCHXaYM1J/4O0Oi4/FkxXQi2oRMqo89SMdf1Xmpf8sPpp3vrPFyMKzT9
HnRBKQvqwtabQ9guGSmNKzDTDXFa5Aq7eYcNDHqvb1a2sD4uwDVf4Kk6212C
UmZZ2xx3Jze7dWW1G5doN6g31Z207sAKm5AJkCR/mtxxGEdyhufRgDCvUNLb
WwiOcacAdwBvH8NcuTURcB+kYUmlIPIO0UZuyv4OHs9l8dNp+U0hBUeciuYj
UoxgcCspUZwLWNIIC+oQ+lJoc8diMNTu0BfXXsSEIhZvNnmN1OuCwKu0A57n
q4npNQjiatNabx0mkfQDRXL3zls1OLofGD+WbUkiGCRU/Sx6t2woqFnObofg
SOsl5/XbFEAU4DVV1xsKNrseNhX9M5FHBMmPAqfoZhoIrhVqcZtKMXw50T/U
xpRbyl2BZi4MUTJBLYBwIE4bRFMlyYHQtZQsmzkCpFXK3lsVXM/OljgnxSSe
tKORG/1YyCuRprai3YG+33hG2nYfMFWPi9wwPEQAMCBLa8ovtAF8DKuDJuQn
uhSAtQAHBWldq9W6um4/+T2L6t/VEwIW+1DfGhWVKJc3AzRKz0s/lsu9ligk
gSAdlaHNopWKKy4kc3DBG2XkQAxaKJvwez4CQFuB/lEATcjIFeqMI427Im/v
UVKHzyVNxYUgy77dqjYeaXA9nipPQi5mGx7OSQ/FoAnYGx3KdDgRp0LS2qLU
2EdYndQYKAiJKjqmvejJu3P0NWDLv6SNEN6KOiA6+J/xCzix6tNWEmE4wcvM
kTuA6vqiWFAMBd6I6hCFQjEDT6ejwot9mC2EM8xWBRzUsF3PnZsL6oj1BNBW
X1e3NVdhq1owjSLxjR+KO4YRhyXzQIITWGXoH4GabRTvUpNJD2vHO7LCiTi7
6l8rqTESFjm5bjE2v3jda4wRUfxOLMvI4temPNDnKNzL7F64Yrwb9U1xhiDp
L7jbpjqQZkW1gffMNKV1EzTQEixe+JoXF9icqN9tmGPW6B2QeEY4ctnhQ5+F
jpB19bE6+GWRnf67atuNJ4DqBZ03nRPsn/mwKWgowXSLlbpzTRr48gNDEXUL
SUMAWA4QWBiKCScjhV7BDbIFTjQMAekNfgkp6mCM7bfU2C2qxDuIXDapI31D
00NntQKvg9RZKpcAGC7I2UDstJmpTIlgOzn27qf3BYvAsZDSTNRVsy6D1L+j
RfoLg4NoVHGN+f1AIVhY7mUDwPDAgAh1FLF1JIq+XpOvTBs8SObHXmJ/mHKi
jRTB6NWitC2hXWFofS9Gr2L/xbtOPrZQQKmjBdBc6isvDS88q8VM+HHjC70X
Bp+MEhSPMnBjx4liTKA/Oa/y56/EYW9QfCDumMH2ocx7CQyOpClBDKB2h2ye
B3YCEbXZMW61XmWMzNPLkkh9IOqSpJoj7dhAktQvTISCJK0vzRhKkShAKbOI
xFGoJFXgKRU79PUR0lVX1cPrWsQBV7FjtY+F3Uv1OG7L1Xhy6L9BmmOWGiBm
8UdhOLIWv0go4OmgtwX4H+UjPBBNhB3W0dlbSUV5RD3nA1DrwDJz1jK64ARz
ll9uXyRiAUFFCqupV1nDeFlMB+3/jeJXtKkw28hprzNnG3z6hMTySbEnWO1y
WtpZojhGPhm2Mt4vwt/B+U3ULrqH448JooT1VmfeCjAThJa29xrDJmTABF2Y
E5Li6E0uiGgTITlYIP28ryhpyOTNJwEGlnLT8yyEX0gpvi6VG85W3OfbnDvu
qrZIkkQaKUuOhYUJQ+vIIEAgOgB14c0IRITjewt3wi/5qxl9nuPlPff7sujc
dhjIvlLFHE1jMPZBEMiOc55ZnJ1rgyW5vNxpQum1RIUyhBzY9yVCXodzl07d
fFug781tA/xPs4h6Vm8juEGIs0ok5eAMYlq1oaAQL+OEIIP7JE2wTLsDSdcY
xezSBguHeQoy/oq4yqGJY3pJxZX7oTXQDjBBwk0QS2loXew+E05FoCHq3rQQ
QS8nxqIMb9bPAYc/AYKcEBSjcbyatUQ8kEPLJAOHKJwdc9a7mIn6eo4XePmJ
guCYOfUUS5o2KfmmEbFzO8bxhQOZEhWHHoyLKy2F6A+2d/iEAVFu3ydpOSbL
BV1u0wM7mgSlunPNGUH6Gp4iqZw0GMVgZF6mertx0G+qrrqD6sDELB9kmSB7
+uAdOCwq/dF9ByhGwdmQQ3PEtrY3mPDChI+uJayCoBHp1y6lvXG+B/X5MYPQ
9aZizq693vUDOOiceCFlOtAo5Bada+yQFGkseqs+IGiJeUX3W76AL7rSL+gH
0afcv/z+X35/8fK0ACDPtntebNdYyMHFf5EHg7X27e5arLzFH/6gLW1WOHDi
WPlC2uXiAcBI4tZrfANG+UwEURdCnbrx6AhQy48HdpJXAu4+unPqYckhWeBH
ZYMDo/yR1WJLl9QtU9Ubm3gI1yOLQEegcpSFiG9dhrzk6cxFhqJDN6Sl9+DH
ldYM5+zG4k6eoNDPbDKC+Nls1uBbzkk9qG/1QcUXmx7DFZEWMIC3TpAsy8Zq
oaPsWvXso8JoMWSMu9/u+WDYNPp9bXFBjkuXeoUoITGuQQhtWGgAQsQ5cAgh
90odK0CFyBlXtnaPW1OEUC5DIUqAXDUgjjxo2GF00dHitThemAjm1U5IhcDQ
XubGSTPy73EbILO8A44d7jv3zFClN+yBkdhoWiGvmmkoWvw5HMdf7x1dkKyG
vPCkvQlKgOD9HD359E8l/T9KIiQ+iimE8qoEHzuZO/v21juZHV8ISQJHF7MY
2/ylGG8cG7iuwojBOmlRYFG1D3VQl/Q0hPXRhQUGj9npmO9CZqaG/AXWX7aH
nzLIGotUBx11nwuJzOlc6fpPi8BpGy3eB9RXI/UzfEsW+cC6VNs3eYEEqjyC
PL5SV1BINiINlDysBLYMjfZq7lFeMLryqvgiAGWKADXQ0i+qtokRmyXiVJBm
sJOak9OL3727estZXeLgou/++KPDGjbsljocCij7UeVYnnx6Qv89VXUPv3X1
6jIDohwCid9EpQiR9sJmjpAHVy7QwbjwzkPBbsZhJPg+qb4BnotdDrGzwIwq
XMF/TNC9ewW7yg+OrYQXXMuTrX1g4FTOHkcQjd1SgUbDQDpLqP7Bylho5Hl1
IIiPbFFAjqKUJxhsC/g1Vf8cUonKHYiOgR3DkLcurv8Z3XjniqL4uc0olLKC
6NWZPhd8LRT+pLLP3LPaiknI0s8NYqAII+AFzZL8h7tGOk1C4q+87P+NGVyQ
A18jvHtBJTcmw9Ru+A0XO0kw3g/8FP4FoxUh8x6ECn0A/0q5xliwKnlbmEmx
3I83zzrqc5516BQVZTzQ1wry+a+oLhDCZ8msRRhN9hmBsMyEz348S6u/U5Q3
G8c+gkuJt/Pk1bs3+Il/8nrw33395Cm7RFFwc7bN8RiGBOpbbtTBh2+cCU7s
qTY/hJwuTZotjs5O3xxLVbb1XQZPRQ4SvVo28wBeo+poxL64uFCcRml6uTCS
3v9Y9S4gybLAnIQd7BWn1n7OYHi6HNuYurfUsA9yf0iPworFmoANXWam474h
pntXcDhMHLLEhTEJDFoaDDsNQ1cUf5DWu9L1kJLirrVOX9Me2E2kTBSUrDMq
ODPCDVpReyXrBXnTpUcmkBq+O1SYrMDxfuScoE+o/pvIBYpXY1IF17b18fMw
f3ajfvIiThwNSLka4QzJYWIuSNakAUQCM+8O9B6cguYiQahxjwRHvU0AMXD8
ckj6YkxMDFLNOO0uTwlGPig2c/wscCaiyUODSFe3OnjFAnFzLFESqfScDP1H
2VYhcdkznHU/f9oN0RNBapbU1/pj7RVnlmdPOQYe9AJMelt7bcbB3vYSGLIF
zsY6Q/izUtUzvQd4LMgsZizmvKrGlpKtPceMvf2WW6+zYiwmcRtKb0A3n7FW
TaqoG4VS6l4B2bS0EOcbz+3JTFrDCFoRMQknPKnr9mJwU5Tnu8ovILKP4kCP
sMP5nBqWgZmTsjIMvsITxPO83lf6m7HEpRqAnOL7F++Q4Xi62ST6sbyCbM+6
tQm53uRaldr8BaVJj53c/f/8IhqeQcah5IB2hkCdXppNton/P+t5u6mPfdjA
2LHrdYFRkj7t+KMni79FcoMJPIIjfjp2LJcRkLzf9H/z/zkuwPzJ/1E2rpOC
id8/+cNzPu3fn373h2L+j849OEbm3Uv/7snpP/tfTb2uW2BfOzubFadnF1f+
//4wg553k6+H//5hTruE41B3mN8/nRWPFovFoz+EhT31f+UZZT8NH5vJE6MB
n8iA8siX7UxmtWYeDy/paZjB1+kM6Nw/Py++GvO0YvCitPr1IxFlREY6iUc/
Cit8krJCZmmNiKZR/xGmwScxW3QIYylXVIJiN/wYmRSBOYwrDVO1JaqnMTAr
vRlxdD9IMTW+KwpTx3dIWn0DJ8urJv+J98k9mSSs/8SrZv6zpG8v3QNX7eAd
k6//e67a09yO/Pe4aU+Tm/bk4E17Mr5poFOqayeHi3igoQiGolJAkGCBc4sH
xVSQLg+KWzA2PNwYyoL7hYSWK0FyQawpTuJ9njrGEyR5dFR7vaQRt6+3Outt
zRjARjHCNjthMayDufFqvrFO9dHH0j4u0zOznTkIt9C9CBiReqKzWNwOydaM
kfBNNxlTwpCEyRkfCdN7TH/suFuSurAOYPTDUjn9dfQJtWd2fQiaPNT5JdAK
F62Z9MXNogjAcJyLIdEdNO5MoyeO0h2AshGGjBDZEiyxeMoue8gSOZeok4GH
T7IwJL3CpjJpNT5559Wjb8KeWi3q9ToLdZ9WKkRxkW27ha6w1WjV2U0W2KNd
s4XmeksKoLD/mMzZyY1zmkgtGGC/4q7Z2oLGj/E9poWUZitiMFGzDCsio8b1
KBSnD5CPqsGEkCBPSbm2oBeH12Nvbcgxm6iXB4MmUZ/jsF18DtMBOlFclN4I
6qRtqVUaJvwxCV+e+pdeceMhuXTGSyu9lSLUAdb5VefRQtgv21vQXLKTZ/cc
4+Zp0i99dJQxgreV/marb4q/hsKBG7nJTU27rIiu9gAXcOga1MbBQUzZhIJ9
vIdyQ0xvaS01ouwd9HRi95hpEGEDnXhoenTeCLI3LoyMAhDPCfknbYQkYD1w
otkHxsX5aUEUd5zlc/DMywVuxT0cDg8xAj3hKm7ZdnHK2TwUvh/BLs8du82N
4YC57vhBzq8QzglasUt2h1NsqoiIq9UUAWOvXMkk8/NxGTXgyycTI/3jDNxo
BprQAiHGXYdZMQYy6TB5ga6ASwyJ4ww5Jfcc3D1eC2kEWSNIqqmuRf03MIa5
Uwm/NPFHPdwsr+Fa6XE+QeRwjWWY8zoaYYeZbGVMFQJQFymMpwx1Lc41jRE8
vxRXkUvnjRR5mB5FGBxGiIpisqSDGMjxlhIGKwdFvggdnti8XtdBlQs9cAm9
Zqumj6JasmPtn639odLsbDARTkK8I2sl+PfmEBP5kcUfVbzFHUcR0I4d3Yny
ucqougA9FIdZ4r4ckD1NZFk32UDOAVBZRJIdJ1lnMDQVCWeIqlARPw3qLUcz
PBS25Zrk0DfINKiJe3ccUBU0GSQnZVmP1X5K7I1+T5UlCRxrpgReqOELgHhN
3b9ps/NATlGQBVOzjxRDqwzyitquvoVS1fcGK2NqXYVZV02gQqH2YSji3lEU
wkCAA+WV2Ukqy+PkNOHT8ELM/s9vIsB68zeTDQxk5CJK+ILDj2fO0T2MnDxw
1IVFO7gKrD3uqYXpF0z1/URRE3JiNZUcjzPiaBPW3oMZa/4ipCxXbC1KPTtX
VrDM6aR1FuKBkFQojspntkkLLWgBlBFFpdXUifBmjUFKokkt6Y0/Tn0gDP6i
xbEE9iUFb6JhaLxCvjdnB8UXcMgxkrIjBGTqyBAnKRzGNC7eXby9env69tX7
H87fvjoBEU6pDNfaLfLL2YkBKUF65Q7chc51lhn6r7vXxCWKyIAcj/3TLkaq
rwJcCrRMihwN0WWGT9rGmn/FNzEnvGlpXCfJE9jIQPgNxHtwcV6Y93TxJMWd
aT42qktpDXfgFsPaGLWX5I8VHjFmsb28AIaUubt+NE6UG99eAdGa7rqKDhJK
nJ5lvp+5zUVo8qYmtB1fYK0/f76pb1E/YQWHAgkZL5hGNYVtlRpbtp0kgXFa
xJORUsuh7VmxXe/oQwQsaV5yseuf+/UYMRDvTkDkWOWZAcYG/qNCA8+LF6fn
L359+XSGDodfnz4FT/fDw/zDvIhHOJURLr8+/PpisaAdkU9//WVfjD9uRzh9
6sQ1bo9fnOLfEwpEosrikSexKPu2pCdILAoAgWrAOjRO9+gkY1bx3+OUcKtw
WqNTepaO/ez/fxRAZ/hT6IB7gMBrQBIv26RSuqccloTLAGedoJ6g1zr17EUG
wE+WtF5j/ePp0z8uoEI+/9EobIlffVjmQkbqHy+f/nF2UJ7BM8/+SGkChyZO
o339R4THSbdrND33JSqBTO/wfrUOPjuL6wHF8zC9sjQEEvdYzWrF4OIhK7Du
uD9WsFmNNcOwOdSQhro4TG0vVgqSXL5RFcEqCFoKxcZ6SIF+Fyb2+ausHaxh
pilH4iyFlNqg/RuZvatquS4ZjoRg9GH1uf2Jm5liyj2juzC48nofqsq88B+6
mtFooOYgeHQxtSgY+rCxFEfcShIm16rzM8HA6nZrAd8fKOsGChjBGModJ1Uk
htUFBWEDZRO7pka5js4XP7Mo7CTZWEknOSzlfCivtW5W1da/CAyijXxwIX4Z
WpyhISe4wMJB8uP27NiRcGvO0JeRMAkPU6QivQT/XGW5kPqwJz0gWvsT5KUo
WFw4lB2WziAOkSLWfgCxT3dbL6thrtbKNdv3Ing2Qi9K3kYpGMlOi/sGkAI6
uZ+x4yRO60Urmqw22+AqbyNoDzBys3Pv1N4dsOuuLk7eXL57e3H1/t3Jxcnr
s6uzi2xvUy364VL48FXbXmTJ0FS3gO2Vt681KzSptWcUhdFSpY98NWGuH7Ra
D60u8JndlAtjiP13eN5xLnfaUCuneWsDFfGBhqJIurJ+tlmWDKRGsaTPX4HZ
ArkbEWv+Nua8AFtejVWFQ7nsaB5HG4i5UNgdFn0fXI70ZGyLEKQXWoPO+O9z
yKIk56jsd5qnEZg+QPuHfGr/Dl6ehZdqG8A26iavGs255UOKKuu0TV2Oq6iB
K3lXBAPJXrvYCuPo1kH+ZAKQMb+KboGx1pglWkvtShhLLeIKquGmsIP83+YT
tQgcV+KcC4PiQ5ES7L5BrQ9MUR/S0SqQn6l/hoo7h2AJSGt5PkQ9PrmgcCko
sDbwBh/aUUmvHGoCuRT8UmE9z50/Ba/srcv9e0BAa1D92JSf3uvvDyt6sy9Q
GWdjgN3ZAc8p6YwaHXqPMK3vsblw3HXCpCo4zbjFGsfgj4zDG1QnTB9gBc88
r25+G/z2NFNCyEocGzEUgK1VRTZu0hFxfnIcBvo6S702GUnCvleB01AnPR4q
8S2ZYZDumI4arkSoh/2csyig3q7dqqMy3ibCCsPMB0DH4CBY1B2KUBQUe90m
c2poQi6pm9JVJMWDkF/59miPTDMmeq9semcfEOeinYrB1uUycBtpz2qpXT3C
R5druE3YwcE4z7UJw8e6XZdjwB1uEt07u+K09D/GGqGZ9iN6IHk/uC+4mxMY
ZrFuc+yC5Nh4GrOw2CkrCAl3ahugc3M51TfS/1HuPrAEWEXyK0I5w7+8v65X
9XvscvDQQwA7MFQHnvJKfvavPb4/8Sd4yb2FKDq3w/H7TD0CqACJ9gAx0hmx
MkuiUdNKc+KcDUc4eitqaAEMmTtkUdIk1ydBMhcKcEpyzF14luIQ9ddwFqih
KY4sK3HX1L10aLUBniUhlikUX1XLIT07wgGkyMDU3kYOhQOHh57xiVM4OIb/
ewT3g9VeDC+I2IT2ysCNvaYeJ4aLs7uGrFP3kF0X2qgFRDbOGJR95/oawQA2
ubKRrMFEjVjGZrncNzA3/6sS8PdC6o1IaGpKuYo4UI2pfJ235ZNIiJdo8ny+
GpNjJ7wEDUdILrwLOVPfx9+1hJnqr4ncJEUQlg/upER9K+LylwgikRkvDtll
tE2X0zZBUsbKMdYI4bEbQ54NQW5JzH2OwpwJuZC3RUIs6dQj1CmykxipmDd9
Uopx+e1PDPCJlfLGKx0TLqNJzdO5N1MKK1eFShJlqJhEnDApbryuoE1r26GV
6GIzlHt7TBoRQKAB1Usw84oTDfq5vN4K91q7xQFb7ClSyiXVYXI3fu93nXjy
+wAztTJg7yGQXkA5V1I/m5OVt0geP/44o/pKaf4ojgTFXwD4YihwxTT6T1W3
rKX7AHvLNgz48cARdNUtJKtjuwZpHSoWFLnB0GVRl005YV+wQzFGWXhNWODF
t9hFBmwod56gZQlwhzZ3KKXnDHjaqagXeaqyCEgK8n/DdS/ctxU1Tx8MbHp0
l8MwdKkyyBbO9oVFjO2oF7v0wAHr8bqFjjAraNGyo1IA0fmSdVEvcS6/vpb1
h9znXzz5+19y+rP0QTBM0MXlzNGSE8yM0AOQW1sg1TKU+3Xl6NtToUDPShCH
smPwumx6FeE74PCY98pvYGIzqCV+dNo+QdKX2GXcTdrLBN5KRPCEe4kGpJCA
p1bu7gFMOZrLmttbxMFOv+3fonITmm3zB+Ltyy+qhKzzctw/i5t8Y05OmZs9
lS8TvnluaBCdDnsWf9qiSjHoq2B1tV3Z1SQyxF+QHkr8ZaccbDRgkNIEN5sE
g8kNyMT0/tvvX74Er9f/Oj07e3H2wjSJskhLWW9GHQPSY+vQZMtB/Ek5WxnR
ryJoSRIvMssIHwANWz9AfG72QqC1waA/BAiJxD+96uLQqh2uOjSYDn21QkfW
eC5avGB6pUO/WWA+ts+booxHeHQBgo4ttMCMUUnQbr5VtHMYs7F4WO6r4oQr
3H/QCnevlmZL5sU2ZwhE7jZD5oAmK6L8g750Dgq/AhgEJRmRuUh9XOV3s6g6
Q6ps1IyE3Xd+ae0NAEEzhBjPL27ZDBJTBBt2PYUAzoaQwhSiV/q99sTYAveZ
gLA0XTHJvrbZWU6rGBRhCr0flmfeE4VWPB0ySwHwUvBNhe4RJBR2Gkz0+4Z9
ddKRxlu7FUxJALRyu1sQAqMmmMX5cC7G/YyaoY7ArGWHRelZrst6g6oid4aK
SYNhBYE+wHH8QIUA4ZwcagJzoPeSvMytMAQqpAptG8YUXXCk0UTaz6IJff4q
MxdnS5biBaDRRX7kAJIwvjSCUqNaZj/2l0SxlxjoRlKLQjIAiEi3jNruGP+M
sgj43UPFFOpvFohk4DRTOJej9nlhPPr2jF2zVKe4YqdZgsDhCQ8rUq45cQw3
HNjQO2nFJ3sXR6zFWapt0uKQUQgTDXedpw3IVcfwzQZ0bNKJuP4m4OjSr9Fd
jXOSvRPvAZtssD+b8tbv5W7FfVT2+btHAG2k/qIypyp7zLycttZjmxGZPQHv
oO6GbBV1u+gz2q6wHN3AZGOWqEqio1UcXdTdlNZsbWNFdAjus11T/2kHgPNJ
t3UpYh8VtKmfJRlMwOrGoZ0pMNVVGKKwQ7jREKgcGDkmoOrkRqH6X3w4gq2w
cjnNm0Mi8E873iw6CtGunz578oS2b4YQ/+igXIlVk9TQy/cgPuq3CmyWbr9Q
EHR4sbJLnUJbZ3xzcEGv93ixPH8WKFYURRGBmJwFvyOvWup/FBe5TV9j42An
Awga6pWrdQti5cZmw0eo1rbhwYHvIByvjMfNIdvlcsfZp2YCAGMMrb9qhNUc
6nm8SLIq4riai+F6g0JFXfRQK1mv9WgE4FdgRLlzzRJbsWETHrNYqpCFWfUE
FZguWn1kZg0IdguOiCZqQRq0AtbzbFNxZYdmYaFBpb9qLVbpwnJxurKZAbKS
LESJoRPSBKKodu21Np1wR14ZnGHY+JIl298uvgZCYSimi7PTtz+cXfwOsWIu
pQnuGhx4Zlv0Wy5TbQwftfdu4iYx4LOSE9xAF4s6ilCFsileXUpd1pFKMYx7
LDVXeVLlpJHUUEBQVpq9TaIeBnhD0OmgDo0ve7J4U7Gf0QeUh7MplLGfkaXy
F3pBGaMiensHH1Cw2GSJ8rVSpYtz87C5CcHtchV4DmC2KqDK7urtP5+9YVMi
HY6MKdLC/J2SKyJ3BoZhmQpeYWD4qUQrchINM22g3MnyvxpicCX3wACWhYTB
XJG/EtLh4FUGqHNLaRwEGpBtGIxO7QyPDe8W5l32X17hOZ3iW7sl2058euJr
LdOdowBcfDZiDS5lKE4Bd/flvgiN75IW0qGJzh01xeOUPO4YHjrvSes7h1Nj
4LIAJYaDwplyN3AI6bC/z9QZSsIaZXbw+chOZHTuHYPywjIDIH9CflyaHeob
Iu4XX65ZKqikCe1YI4LTE6pLr4Gi6ugFWNo22Bpgr3vaLj2crtpWmahoTYX/
o0R8Kb+i2GYZY97fcDZD1AgxqeA9jy1RUx1qsBnGc096M3JQieJHiWcDoDUx
9MZA5NzaHPhpT+geJS6ENRFBKyWRagqV/KtiV2slNu0dNONjg1av+REX+sED
cw3Oi+lnd9YarJ67cHchXmVNUNqhvDjqcZFYQ3SqRk5o20rSdeJyvBbNbe5p
OBDm4soewLIF9P04SSviwAtuHpi0egviIao6jlK9/Pnh1ivMyk+pTzIVKgFv
+kuqKmfkqE6b1K+qDfFEwaiqBwZ/KypquAl2X8vNVKk2eRZvvUw/bT6fWJCL
4h3uDFGyAfuN8SDgyG6h0SbkHkrKNsQ01D+Ptqznh2M0BYp1tDtsRnVFSp9G
jEBNk66ZcaKZnY0WnlKcT0qLVHnVBgBMwrJmax1CobjY99c7g4dXQv9Huj1E
j4HSQae1UBekY4b2R/5dyqoxLxKkvKF38ZeS/80CDpGr3wwPVwpLvncDkQGi
twdfLju1SVawrYagzSjb0Vr0RjOojgGR2vMaTwYDRFCdPXe/SZyPZGiP4/1f
2AHNZV22nmLe/HDy6vwFi1901frvGcS1wjg/oMmNzZ5DbIjJ/j5ctRs6qnrC
DI71hqN+jtvOAZ+tW+SsFE6CIh5hDhxrTbhQDFIKFQsBn/S/HNtwXP2Cc/8b
1Ih0aPoRQcT+A8ETn/5Xgyf+my3tiSp6xhi5cfnOlK4EBMYNgk4N8zHqEqvX
SYcoESZiAwrdZ2wPksdsOLRNBCAfcSeG+iiLbOptcAHH0QFnsSAk7YPmQzkC
YvPqlbNBUilUN1zDxSHRqJF0ts0UB04Nz9NE2dR2EfR7TDKAfYG6qCCajWvh
wQ0dbZ21OrlfjpEnnB+l69DihmD1pQZ1/4BRiTYG99qJzinNEZWqI9WHIA52
SHWdeVGFwCTCmbBZuCgJNARbmn4nPUvxZJX5riT8hJcsBLSMDVcgt1+X4to0
AT/gzKnhDeeg/Bdr25H/Uq+xaqUa4PfNuv5gJyPgcNRjRaJYMWQC9dVVBLkg
lAg0LLb4chSnqZU4AKn/qLaQXABVEuUtyKFtiRVVsJE7TL6i4VkioqOSgsE1
R0TgTZkjJSBAzJz1/kaT3tNXWI9D+JUV/sZLu83WkrRTQLJ9U24EbLlcLxFb
DFeaDGqzidAyl8oBl/m6UGRNVlQjzRPoFDaakqvKuzhGcMZIemGjldZ01DQ6
eG/yDiTrDPMLvFn7gQEovFF0bRqGJ/ZSI5SAtrajieg1McnEWGwgi2FHP0PH
zkwWu7mSLud+8RovHBJdemDctiVxgvFk/d6OmjGkVKg2KQbcwc9fmI6gLERC
c7XQTo0qwdq+0vgstJiuO2jOyGGLpCvQyOuBep5O3k07NahbxO0OXHiCMsB+
CzQZ6GaCxqWfcMAcMJiOBhrbjGigYKsVSq6WfGDtyn3OmQfAENb7UTgNA6Ec
Mar74CUBcrpvs+Zb/00awsJB6G3OAAvfaykbU6IhhsJtjGbkQEK7OCTYch2N
tX5R8QxURDCEGJYD5rPzJ+kt7hLSnZHbHVWL24W43IqGk0C1toyGgy4j6Iav
oHcC5o3KJygKooIdhqRrEsUm1cYxc6eGIMxkxNYR1V/vhtj8wg/I7SYwnehf
SFHIDEaL8E9iwcHSCRRnvcRp1wBufso6gHj9O0jb8lZ3vcVbmEo7RRZzsYhB
ey06uYzfwoBG4sZa9uJMWAJe1VDHKHjEnyTWriJKHCycDBH7WpLj9KT6r2Dc
eErdlE15KxRNdzFaN3Wz0+UqRFuOpUlOhd5CoflMj1qE4UBJg8n54G5QjpAY
fNLigqcAnlBePdq3zX78dK2YsMYXTIKiRCbnrr1K8AHt87rZwdcBH3PFjg9B
nQ/auOYjEbdSLUed6C65yeTkg2BA2dV92wRh316HfgYTvmJ0Wlj72OSORYYq
NxeE1gWaAy4gIwb7cPxOVF3Ft5JKSkiRD6tRZ1/ecRPGu6hoM8r40BOPSySS
AxunU288BUBLyW053H3jyJeo2SFzeK+8rtfoUTSRYbr9kveibRj4qMjeGQe4
ixNsP4cebw6/USBDPzJD2qLFWDMA9Zl9ZhMWTjRaDVwYxsLzAelF+hvVWUwk
lzhdR2azCwqusM5etGvK66XxbbkP4BSK44lVFbG0ZmSZlJvr+hYvgMEateBj
m5ZBKaE8sWF3Gsew8G+RyKs8iWCxTWgh3ZcMySq3JZouQH02mNBNQgukGTfu
6UMAlEICt3ADo7dLQXBGLkozcXROgJMVc+GboG+ZzVZs5bGnbxT/fMhkxHRO
aozLVzMNVPJjzPY5SFyuPTNa7TWLcpUJe0hXTLXveq3YHpI4u7SWJ48/+vnj
KL9/R6Ky4tMvzVctuERqySNyMDGthUzI7AJqPNWqz/n7cJoqo00dQxSdAAfe
c+eeo6lJF7/ksARWL6T5Q6DkhRX4F1QfZJYNMyYor+B8S9VBA6k7Di3EEVTq
AvZgDJVhS6Jaajhq6HhOnkeklcJYj5olOyaYghTqGWYhsxAfpyHDMacrtYim
J8mBEOTCSKRhVmYxDm3Cgqy06oNAWBP4bzzzNdwBqvT3w1ECy3rPIWQDjUq9
uZPQFkihYDGinI/AQZSZOjCpY3uwVbaRak6YyF0y6hpGE4grwSY4nXyZpBMA
KwvBVbLttAEWdupBUrL5BRbUk/zHGM+W96O1jOqLypgsvakeQmUknTmQCZkj
lKkrnVZxweAUaGtxYlMXwX3YX8w3p2SbmnEMwARU6aR4xHZTG8pht9TJbrSQ
82ZytVhrFBEsGg/a2ZFEu+FuQ2Mh58LdQtNMm+AWXNi2ZoVW9A3qARtkxqot
TMlAyF7krt7aXXFcLKBKPckWnhB4A5QxJniNGj7NdW/D7MaeGpLWnFLU8jys
ahamBMoZB2B7jr6grN+bY9r1QtaEZ0G5VFy79eJFeylEAQlGAjKvOcYUJ6IH
QkaGMoaQZccfFAcYIQnaoBuSi1YtM1Qltmsin9GVUUuSHnGpzoz1wCP37bFW
fUi3ZvwKBFKhqgE6yxkFll0FOJmgCtZc/ChT45CNeiDZp9PuuvKW4oUsqHS7
g/sc6wThntbh3A/kSpBFey6xcIBMSqLjiJky6YUO2NSQeg81uxCS3xFfsqYw
Jru7qkGli/tAU0Gw9bWF5PR+BwOSKkihPsxK2qIXiRRypyoRFTbKheRhTXcL
vnTB5psTsHi/vKs2Vd4b1N7cYO5qCMZ5Vt4ua20s6KLNiALKnF5bi/iAv4Pp
MDMrDZk3lGd1vXe66bZ1p9yJTbsK2Yjgsi7XffjF9V4X6VkQuQ6y4wG4BDhl
0TgW/RU3XRMp/OB4gga/wln1PRQQZNEAMMN7HTUh4Jyenv1kklOWXS/0jkV9
iqx9jKtoQRzeNb7FZDTdV+v1XDIOSCJo1JQ2+joU1jnrowgFGUaTkYSvHV7J
IQjXiMUolG3iMRo5frOUxS1Ng/in2pLzdxpkwaQP9N816hNkpka1Zb0Wl8EG
xTMcsa0oBvPwFF1mipJU8E45gaSPcn0cuV40p1Z9IeypDrxM1CfrWA0zRniK
JeViwOia9xqx9pkpSB5lV8LEtGjv/GZ6+o6fGqNXlCty6tClnkoGhouxa6St
eqaiJAr4M5ezkLlvTq7YzDU1rk5Vbn/KygPZCkEhSRrCHSYCkT18VzJGkh+R
4Y9yJVBOHQCjbHWW30HTQt0M3Q4gVbioUrRB01xdZDPNmvQ2JAAMtGBOMjpk
NXk1YIjo3XI2KjeiXhpZhCwJPpKuJI2QfaDA9MyCrwJoeOoKDT4OS/uMyS+q
eKutI5qy69p79RWjrwV2ALVbLvR55w05K0U/fzUqCnIOH8oUsj1UYlREzQqw
bcnnzwrgM2cKBs2D2S4/jdgYXNcYrjCmtesyborSEdA5oSVDfToihhhrAsuE
oqnPDCAXdqy3gzpxjJbcB6texkMW3IpQ/kg4dmLMk0c0eC0cBzyG+3Y+7Ljh
obm4whoX4w2GqQmuB3PLo3cnV9+9P/3u5NWrsze/OTsWTxkWi2nFn99hNazp
jYuzy3dv31z6FyysNPsBYXdgnxKMCYuUyWwzMO2081PmzNgioAhyKcU7Lq48
zCzbOv8YCB1vH3gwxZWn6IyJLWdgCOieeYVISooESxtA2CDnCypqMOgm/Y+x
UkKOBQPLQFwcVS48R4PWr5SrlrkLsFbSjsgLVCL3GroS+Imnnk0F/LnuNwtx
1YEA198a8AGkIGWb6uMLyVPomaE5wzeua/QU8TlJaXv09ZlEmP1QOmN8HCzE
Vs003iC2gF1a3SgxHOqpcEeuRu7DEColmGKBqM508n46LmwGsL/esrJ+3yzv
urap/0zT030xtgyjlSFrddjDOsE/hNill2B+7vE1wUsW3YNRB2Qpu3UJqyAn
JO2OCb/GQE1mDtD4d1uGyhHTHCCdFBznu9dX36PXCETLPiSEmtF4RaWLFyAQ
UpgQHI8sPlaoV6EvI2xHCQml0ehU4UEhmkh8KsgC+ksbx5HFJINUYDtxJZJG
1DOyugVMxfqWcXMhPRWzJwqco54ICUTaVi9OSnKzE5OqoTBB1nxwSfcWqKd0
Mm+WhOSCRkaWCEXQSxmEaKjGEmXcAWh84NTdWvPMXSmGo9QVGoZsLXAu7kxp
nWqhxOrO7yRar5jpw2YXkyWkGyyK79r7CvHOyjHKZ6gKPfwFrK6I+vLmUUMN
MGkyEJZz3XQUPQNIoKiwexQXmBEVaGV2VvEg8wq9obKz4RqQx1ozVMMdiRAs
IjJWbMC4waLgKlCWSPa8ewrTOspVCUa3UuTP+pCDpwkjcd+E0f3OKW0XcgMB
MyJqdJGbV3zmDC2IH4xShb0VX4HjjV0RuN5l3CM+Txjk/8kw3YOgtRaotsq9
nWYsQv5l7vMC6ApJpWXTb2qU8vP2Zm6UZm1Ny3LP5riZ+eTpHuxFqUlF/vmx
/WC1c5cTOHx0l6G5zIjLnCAlKjBDlHFC/jhCTczvTm9DKlQqw4125fQ4Lh/s
a1OvltCZJ6lQUt+4UBCKpXHktmCxH1XP5OmBszZW/p572oqrrmsBOUm+wbqg
FH5jY6Pg72Ho52CUKgRAE9UaxOq75jYqKB8yBev+0qR8qtpRXayUdzDJ3G/A
PSGSxIWB7c3NHEac8wNcGuhpkBsOezseHd7qx2b9lI43OtdgPttMJtgpSvFk
gnpJcOAjYkr1VPSnwur64NvQq8ied454RdEl3KDyGqRVwyXFEyFX1PsscjOz
f345FZyhI2KJWn63kIDDwMFHqB6DP8wQK8IiOVHx3Q5+YHLntAbm8uQG5Lgr
mdgO843mkG9ERoXmsklxDUbuDLplV4lDm6JsCHHC3YSXuw7p6x0WBl9RYXAB
hcF44OQS5LIV+SMHO2bFs59/YLl2MQzHUOIe1RklNcRALvDT69dnb16cvUC+
hQM9p24kRWE29b187deAvHv09c+xVPmX0QfxLXN1IkqIczxE+zd33CrEIZ3k
3pGSCf7tPH+ikP4WYi8dCkEBYtUeAsBV0usI3JhC3aY1cyBbIcuRTgZF0dL/
14Qn8TlPVqA8KtRmbRiD8PWaUvAh4qJR33H4ah5ASajqn7KcQlM52T90H7Gh
5adAgaSwF5Rz0LSO/9gZDTbBRivBF1kLCw5qTctJKEb1BUilDBYThg7Suxj4
HG0pHwdNmSr3IUoH0qh3isb1DoF1aipsr8EVud2iyy1ucmmUM8xx1FnXvRO1
GmRbDcbOaGpMY+16JS8h3+7aW/YiuK8sKM1r/Za4skDck06nRUJpQVwugcor
mh8xUSY0YFUYII3FFkcZh87xjMN+QHlwAOi159zoyE3BjhPdFc7LErLseY7i
IOjZ8Yo1lKCgsUcytuw4EiBjBncLbAFHcfwuYDl+V605LSxQMqWZkjzvhyh1
Slpprnad+iFgSqb4ftTVjrM52XrKUYW0YoxGYv0HUHrAsQ2gW4FJysb8YvF0
8cwgL1y9uhz1aMBASKxryrVkj9iEujBjOOP1XqgU9kRnPROvPaqQ5IG7U3DK
9wyFbEg/V1/6YF9AOmHB2qBrlhmJOC+VGGofa7XjG3+h/TcwC4QJhGvbQwK2
pARaFN2VZ1AsyzxviRia8fWob4jDUGRdh7wTBF3HOmlOlEJRkF7zuIRScB55
tgv3GzN2kRlbagTTnNZQrgB7163IfVNhc2ibCQmhVYytJVyAOCiUwoMiymjQ
iqbhNmVTY5N4/Ms1Q4AyfBspqFQXwEwEUhiM05iRZzH1CywHcgMh5cwCpbFj
BV5k3BewVroaoy/g7OsqdgQ+B96mfe1U7d1x+/BNvVqtq+v208yzwh3kmrmS
YjewQ0vZXuAa/jxvW0pM63CDMU6V/M3wPpRHDsoycyyAsc1Gh36UxSAjVBMn
1IxpK9wLvGWyDrAuaY6fqaGweDClMu2cIsEQNeEFnKiWqohNGDrKR+CJNrcE
STPZgmW5JYF8kxeKMFQQ6u6gUL9WCFzOuStGHwdGjzrNcoeWFIf4wveieSCV
owckCj5CUii3BEH9NILHzYRwFhESCNvpCnRg+KenNGcpW8OpHDTAjQZgcvFh
agCEzHr+NZAJAwOWab2BNhTZoyugzAwn4YvSJp9BGbrTWgtOTo1lBfgdwUxt
JMqqVGiCs0jyQhsDt7uSNprov1H3LIAAo6X2+StZ2NjbR+hDqB5XAu8kcbCp
6BdnTKb6dO6+BRAZo5EkeVqhcUsaY3sZtOP0dvekQZt858hII7eAI02cVYva
qmFmdGtrsopoChUlJyKecYWFMVL20VUcSWBbG9s3NJQLzWq3NqOKj4Ahi2Iv
obQLxrNh4Tx1Fg9k2HPZJsVsgWx2PSXg2Ung9sFMXO6wKaiSuPIVLwocauPZ
Q4N2ZStiH1XULCTU43pSq6uPVdq+vRj59J066VhHvYZ9vHjAF5n0ul1hpqY1
2DgsxZfDUbzBxoEbpod4uyI/vFqi1oNYIuLm/0veuzbHcSRZot/jV+RIHxoc
q0LjQVGUZG1rbJJq0ZoiaSTUc8dmZ2mJqgSQo0IVtrKKIJrS/PYNP/4Ij8hI
kD13rl27dmfNtkVUZmQ8Pfxx/HiVBJOifFlfZ3k7s/HoZxLSePbsxau/mJ9w
24WvVO7w376aGa9uZkjT1vzKiyl5HD4JjSc5I3zNtH/uUQTvmq9yMaefG/vq
ArjTUxfk9bGk/GocHpmwtpKQn3vD60lhvsp851aYWSv5vnYURFZyO83CeL4q
Yj2EqcJyGupKusTnOMEOGcFFN/AM6tQo8m35KMQspaE0ujAsZuF2daBwldh/
6nFxT8R+qZspUdhd7YeRQ0BmNExMYh66LXMrswlQ3chGNstFtiBYEnF/5jxy
HdYUBijvjZu1zNkE7Z0XosoRJmZf0j2CF6KLBY7qWb2DcP5ZKPH501eshkFq
TPYoAGpCFnH+QtmPKMy7xRqfdxIuc2CzSgwnFy6H5CrjnkJ/gCMobmEikmfH
ooWFyjteX043b/LgsRO9/P51ixSdRNLP6VTsqGMyqJEsrVzQvhoawZLSv7+k
kSLYRPzgm7XskmRYj6KqdUWl7KAjHQfjPp0AU6S9GclHEq9+3I3lhp7W3F1C
Uu+tq2C++aybaa63y+/5zed1TnF/eSMwi6CMOhemrkUyWrw1X4i9gvosIyyq
hADB4WjSdkz8FJIOWJiwcWoFlzmxlnUrLwNnmiCKqnU0Bq76G3Ut+ayjNLhq
QNw4TtbZWzlKi/wkStAvOMRgEXJNwrI8j/G5l4bm6g8wXButG4V+0g+lJUz9
/DWOzDs3L1T5sbDfRWatJvL6QRns6eCMoShFOQA+muwGDMkmnhcmLoOd2NLG
upO1CVM99my4idchRduSzyvQAG6wU8c4eq73RmwVyBTcIOfIwN/rpRfyMFUD
pxuiuBrvAbgJWlQqvY4bb6e7wHCffkKZb1Lds1fJTalp4KwFOgqYETF9F67i
jRH7NGeSgq5me+YIlKYkhc/ZfIP7HAWzV8tifSXvuh0McZOMzW2HeiIWV8RW
xxJhmHppOzJw49LgsVYM5+ysi/9IQ3J6H5SE66wY+oyjf0CcWSyBuuqjpgQE
M1dVZnLoKBPzflvxSdSSHdldkOR2HjwChPYgHdr0I/sPnNWumSVvaCiaXvJO
nX6fvh6de+W+KEO5BjXUd8GkmhddMG+jXxq9p8jtEpskZRD0Takajco21RsJ
OZ3yVXPjJzgeKDLCUzkF4/DQDnIB2KpryjLjlMSG4dgssj9sVvvrLvVOzoWv
7pBSMcxZIyUlwI9ZyNbKRfp7flX5eGHmE1DFySMoOHmTIgj+hsmRn2O16hd4
j6xBB8dYdt21QjEqN2iCjLN9s7PDGfhw6hpyPnjKeRyhjSqgGLI21v31/jo4
IRqtiuXmNnbyNqriV7YQNwSUjU9cc6puEfc++PVnbulf8PYs5KGVGoc1E3x3
XOd0IZFQJfjP5cu2H37VfD5X0GTZrUFrfoHjS8l8QvlvtThoXw97glbjItJd
Uiq52UY3AkchdLobDfa6a0loXws0PvipF9VfJspVR0QYR2q1ahQfuABAi8Jo
hoTB0rsf4i053H/P32fZ+N3v6b01dSAllaq+xkESlmCv13O4FCtCbKSj4EKV
v7qDi0vCuOZUDahKCErX2tzcCfNAEOBLdlEoy4dAeXQGoJHqFUhMynQDplCg
VQNO2MKzlHJtcLmyVYWADsx51MB/LoW0k8GehjIzQpfie3lLgHWnauc0VIqO
3aCeFiPGa/pSsQd2KUcq6y9F1IPL7lJi2DytagRjMhvX4GgF+zrKgcG70C4b
g+ou9eareuQ0J3fo+E7qd5aj1DNmGJsQ2VqWyVP4i7mOZBwUzbWEn8QAqU1S
W9YQpHyd7Y6zb1XpWbWDp/jPDhMQTdlUh4piAvTT+LBK8EcyI5FM85nvFSW+
SubUoV9BSaez4QI1iAOOIkVnnDVFWhKUQ8bSuChr1jQLVtCId5LnyIxyh6N8
iCSTzUAaR04LhZhEqHqiy5hvHW53kWUINNCmtRCUEH+5OqCr7rIXcYtoZnYI
otS+vARVAKufNXGjyAi8kBz/41OmLeuhG+06QVkb3sWk58UFi0/mW6dpVYEW
5WeJ72P5KX91ZN7qQZeQsE0S61PyNglOyYuPK7mPN7A3HrJ6Rwo9uukT5nAs
MrUZtfL5usNcETKn3absFNPDYaTeFW+a7Eul1+jNYAIw9cnG7JjGDQflbgMf
Ox3xLfBKFjAhNkz6NvuMbgBHomk92KwFhXbJlopoY+qZIsywLMdGsA10JMeu
jpzhUhSVQlUdW/vj0mZiMYZq6Cur4OOx/oz82d1xwFi+nnA62UeUCEqh7Tvh
tdtuPuKUUYCf5N6w0+pNQs+NFzTdze+0szTiXuq70bexUP1FAJUYMDHNBQaT
+AnYy7lFtj5vIngAFrHlBYp72ZVtPA8hmfW1GK33XBYXtA1Xqvby4K7bj1CR
7cVMDhVCI0sxvN5QTS3UoLJ6dYRmfQ7WzxHypRfIYf550CL1V5uNg6TaXAZS
b42msPEe6KjM9ZdOevVDZdlZOMplGLSapxPAY5cfmQ03N+22S2CzPAMSV1iO
4TVPUWAYCo9T91lNYUi1wsmPo+nXVoV8dJ9ZhphKkORrtmzYnpGPMDKdf0kI
S/i2UGp1Ut/oZv/B8FjSnrbC1dW1bQLAbSVV2t8baFSwpvwO3EvuZi4BCXwX
O+d+EAT0KG7rOO2LGYQPpvFT7f0abaicCndlpzmsPFdcD/FqD6Sox0Oy7ISm
VeWI5W7bWKtqhzmb5aCE0aGUy8SJ1FymrxMGFp7Cdrtj4uZACu/WsI2GYZGK
jT0q3nRbSil0JBoSoPDEnGRfcoZAnI1Vd62J86Fym7A3AcLtDkLSM5zmwibu
mpt+l0jvgjHECUMMZ1T6d2a1qh91btagxjBoFmmoVJTjWmm6JXWgCKUKsk3K
b1x1UcGJDS/Yz8ktOPerCha9WFT0lnm0mW4g8x5nUuR/Uva6bWfO6DAS1ILV
pfSO637VbnGQXKNbJrRpXrz58IjRF7EjljgQrLDIarP5leNoqngkz2hD4RhC
DnVgxVKIWL8e4xxwjSX6PA2oYK4T+M7tVU9v1jrWAQoJoSrcs8yv/TS5ZJ5K
CQ0fFVosBH9MAcUF7LoE0i5CWimAee7Cl3J567weBi0G5EOLhpA2HxIiqag/
KFpZEWKl6/rt2VkQH4h6f32HUIZY3WiibFQiNUX0bOwdy1g22fYQGTMO+3Ig
ofDkSB83WyZx8XO22+RuGsGKvVOA25PDUzT55/i/VQ9XyCGEBSOsy5KCVFZm
mYkekrQKiT4pm8xx1nqZedGvL9R+cFs6GFeY1XUqmJVlT9M1or72dORmwGB5
CELwqmg6GXAoyJltyDK67ZdgYhyth8sghfzWbAt3mZ53SWinmyp/kGtfUsbj
gmtThekdQW9TkYK0E8Am5RL32mXLeUkKVpNJZ/AwCvDVMona5Yd+MOYrziva
i1NBYHRKSij7K8spNWIf5Gx3SeeSaI4LdoiglFTkceIw3LfkWxJYGRnOfyT1
VBNxU+KBg44nucWcBT6rbndLufx0ryscEMAAXukEfC9Wl6mJrbfOyo82lnWG
W2PFCbwKOB5Pnv5V0TjIbVfXR6GUM9aEUj6K9nKa/3soRmZGnVTZNPhfCvYL
ZQdnKcMiEUrCO3vkYOyLLSWEra3kMH7BSV5GU+kuDNHqWVxlSR73dJaRq0Zg
zckPFliJAj6MlWVhDDxIKScSXWQ7dZyRKCW81kuxUq8p28Jo6ocEa7RFl0Rm
alr46p1mgSQepjNDrI4C8eqgjJtqj2oH+5SGVDnd8FAiChzvkZD5tPMQOs8s
XR6k6FH2w45z9LZZamzSr3s056tPLGi9VuQ9U9Klcb51AgympFpSJLlQBT53
ARIw53qZfLHAPOkQWL0n+G8BNdQoertN/EPCqatLnqhJIIpZV+bnUhQDs1SE
2D5XrxSyx9QHVGEm+XiJVCsiG1b8cv+hXdwRb4ySMMKL9Vl8jMe9hvDLkCUZ
FTUb1kkweLrqIZGcEyMpLrzzRPd1L935ZuhM2xwZadcbtpZYI5dPDk4h04Ko
6nXvt+kb9lnJ8rpTDz6TT6pV0W8l2DpspsqzDYmUJOOrQAhjIlMJJZUHxQ6r
iyo1O++XQKMYlx9uupD4ZZJLQENMHkhc9G9HwHqrmqR06MEXAFFoKU8CWDaN
zSdzQAC6xakdcas/S8X5/F568Yy/qcDKlq9h7pyytwEjY4WXnKE5xTqgHK8F
g0g55wUxAeY9mJp7kWqS8Ksu06EaLhtfNVXY7O/NRkRaTuXiT0KlLUuOIIY0
Nb0qoeovHP9uk0ZPhYkaVz3RBbCfcYBH+2a5TvvdYKWg1OCAqRD4EIzvzDLv
2EFMRmEzjf8RRM73KxvPjOvcoqpPy9WiBYPIDmqz3juFroZiPvQ71Idtd00R
kBR1IvUlqT62ZaxfebIE9MSh8xx5g7CtF/slfliW5+YGNKisnueutWAudZBz
e0tWl0AIDlIFjkkrmbDqRrJa1NoRRix37ehSxzkXCVh4DoS8gC9+F9Q478xk
dXnARkhgyTfMWiljPcwOsFzWQ4opgoRlPb7t6iH1Q714JgUwJ6I7Azu2BZo1
dp7zbRc/SrhysjKyQ9lRcH5tZJzK+nxV3m+g1o0i03sUIePN6PdUzVxhKPU4
uxHjev3UtUsmW1a1LONLKuJxRQ2L6rU5So3X0uk1WmfbiaaE9teCCIiq99/j
HsK5cLAQEEWPvpmLakcfZNjSJEkFVcAQX70JpJwxeQLD37vtZr7q1pcghMiE
goXaOVGT8/MrfhjywURdB7T8gZUX4ZQqXyTnC5due5Fx0fv6u1Q11eC00v3J
Tup53/JBcngFCqBlKVUhfUsKP0gAN+NqX3aqT310PrT8oCtvKo8+ldnVQlcJ
WMW0R1rh4sLZQtKHn87O3gSfZCXAnyEey//x5OXZu789/dPbH59++/j0MXST
FyWbq681JB6CIK5Qb5DK0ZjQFTn2Sa5EbsgUNpTPMn1QRFOtYEpyBHq0Ys4c
r5qhGDFOy0VbcXI3HtSYC961ESP+8uwNu3XyS1i22lgKJ+lLzlAHEA3WknDZ
ZhhRm7ldcjAyWMrJ7F2C2sSj6qPH9bD8GCELz0TB5SdZI8HpQ3DhdNsFPDAA
mlwgndsVFlhu1n/YTeY8U5GWoOHrLLPUpsT7ysDTIcgmTQ8QLARnF2UI5RGN
KbJOHsyk0gC3LHIKt/S5EkYso1WcmM1qUaHu41Xsx84lHpYXkchpNsZVNGG8
Y3k4i0KaR9fbHSlcu+RJIvNRQxaUyqe5SXFxNcceZQ683p9xqiXmfUegoHd5
ohHgHqYLJhlGXu9PlVMgYEanQi1rKIqW5aDMXiBini/EqHlh0DpXXUTmlu4B
ndxcsRumEri4BLMy7o4z/YyMDGU/y4kYa+nK+wXB+och2s6SO234PEr9LfOp
QwA9h5i6Sk1Mtg+Xqvb52xu2TAoiksTSFMAXIbXYxwwHLev41oeEzyMGf2LA
udBCzJ7m40wCcCkHIT4q5YAgv/QIi2t+ZbUnOBIY0mdaJo1PMlzHS4E+ZnDg
3qm6jgtpAVSD3UhBdm6OsEr5XvfRqaB6BORO2hFtkU3cuhnKc7/jCv+cXqtm
NeYvEA/D3D1GLvjuYufLtzILDLb2/Qnptea5cspS4mXnd0Ei+9z79zZnSiPS
OBoRp4XLIbWKbLR5QnLeEljq6eb6GkshYx9tbldreUHRurshm0iX55mSi6u9
DZXeWi3Dl+8cfYrjBoelpz3sql+O1yj0+IQRvCbup4MXbz48xN1MIcoHia/b
0Wzf9OAX7nD6UKFr2PeWi0W+HpUDiB9KBml4ra75Kaqb8RJwDRYm7L0wt/6g
ImU0KikiNJ2QxTDmGvXG5qLxeWSK/HCFCOmYM/cqwxZCoVvvWqtfKDQyX7z9
6GabFLkM3BxxDGSFsPJpy9gsu8vekb+uVkHKPTvjVA2A4jglCGpdewOJr/gT
nLlHFkEhKHBZjfJtCJXqu88O2BGXGF039T7bRjD8QboLFNb4+URGd1RzZ4zh
uHV3pexm23j+8oGrj0sx89VB8G5cW7n6qLZSrzJNEyHHOJkgxKXOsKpn+PPl
zLn91RxSRl4FXyMBbkXW86cyysG2rJOb04z0u+DgPdNMI6m6w66YO39ro83g
hklGreex6YqwY1btgRXFTUYlfCuyWz9v4xl1QOIIV93qpsIeXEHQJu62HE7k
hZwbRqq6h89X+J/YgpcwYTaZIU8lQJI7ETIOhW+DBl8dnN87AcIgJU/U2Gay
3DCKjq32g+AeRxMY3HFriOBTb06CmNp1PeY3GQMcV0tXO4WBTqW7UtnfEF7M
oqlnVz4+LBACmX/RtA3bdY84dvRkVnYqhzN41WWdyhTfZWWnDpsnwfPhuAr2
Q+eSDJ026ushZkqqULUH9gu62gNKN5CxG0LeUR2obWvYp6fSk2R3El1HTVvJ
DHuNhih/1QSroYQBBT7icrJDJp7HJ04yqxCWHLraHeaZswpiTLgkM6gaTLMJ
LbWUQ38Ygs+V81n59Zt2c9HcP5r6XQzwj+abjpsbSVUag1KEZPkf+uFQncb/
Sn9x8wY6ZPe8NupgfZTxlDoajgIOpcnP+YU+eXu7HP5xxbzN50YlkMMsEFHU
EBzXCSrL1n02Ez5MZcJXsfG80ZUhmwFbFq0IQ0+WX7vuirQgHAx1Aw6bZrOI
W9QXwUpoKK7GZZ54Vk+dv9wVyzAxds+5TDaElcWaUKWze6LIP91HjSt4NnaP
qhiTT6bdnBU3ypJBQ54M6vEU42TQe+41CluY8cXSqxxZn25s7/F0nqEKy6jO
l/jXxkdOdmVgWGNudOULIzdarm/7+kpfblYI05jV7ZFJKC/L7PY6K+5qIEnT
95PDoawsdlV6SUcFM9wWZyiz1aS3ep7jj29Str64lH4ZpKLQh0fNj9E2nb9s
zzu+BDJappsPj+ZEzDhf0e+/e4ZuK0LNyDMWtmhQubsRf2wFqXuBilXUSui5
5vqqh8sfatmnT//09senjx6efkvJMIl5TbAKT968SMEkGNNBqb6LxlWZKf7s
sC1xaw3dfrmZSxWNi/16kUlvCRaTdTYOWRNcIj2RBbXVcT6ktFD3c3j64pnk
yLhuKe3pxtWQ1GpAINWLR7X/uwisK5ovcjsEHyXQWJYzsZE7bR+ZMbKLsrmY
AHQt/mL2rpKG7EIbBaRO/abTFd6fJPduDpBsekmjv77ZS4qIGznv9CzjNO7+
qzC9HDUEwfRyBLcc/sWnSrjWyt4ausW2I+dKRgV95oCmn752sFNhJUu8RkyG
7A6csN/pOyxwzP9CzPC37R0xsP9z0y+l8ClI3j99on/P5d+ELf7n5IcQNll6
SP80x5/4uTI5Mz5nf5rjT/TciPtGHXRlbqlk7ObZwr4MuZCcBosPGXuZ3Bb5
xiko8kgEPRXWXVqLZ1vhMHIr8G6HW+LT10v5UYHw7j39adT/IZpd/TCqUOQs
A+E3X6y6FsVx14KVVNsIGc8Fo4qK+ahYr+5c2W7BZsiXk/Y9UBeAvlM6xbIy
QLUWQOBaAKTmbD+0q+YzJAtFfIiKFW5xuGSiJOgn/hTHproud9cPobK7UMyZ
wCrS3gQkKCPHZgEeYNiJYyZ2yDnmnr58/a6ouTL6MCdvEKH4ikF3weE42NcD
A1Oq6RYhayMPqRYbCfW+8DaIGibBUYmqxBaeVB1CUDrl2xuOZ1cZlR07XUcl
pvRagMSQWtmc/2glLkMxjFFPGMypa5va/6Gk9gt6thNh5DiDvJQHPLE6YwkS
EsAGwKH6gs7b3Nv9zugC2JhkZ8N43YP6ZGnW7AiL3Bl4A8OxschIbnwqHF2R
VB/Dlx2jmok6L0jS5YZt/xrztkwqCX9Twfk19CHnFBBlsehmvu1ZuVJYxFvj
wBfyzbysL6ys/TpVAeJxZp6Rof7ZCnkZVFa2jJyRnh18GaM1JX9momw3pxNH
Ik5lcbnM2H0QrzOR/hIvchUftSIgCglX1+Ss0iUrbc741VAZzG2qzkKg8SVb
h7y9o/GipnXGcWllj2k4wIECSkr684IycJu83JNhrvTLTCESwrM+GgeDYEhG
N6YxIcv3y2bc8GUwwXOl3HvvZPJsne0eW5uAtTlsCg2d03JABO4ANQICym9H
CrXPkfqZvKY1Iglh2+ak3aa1lNKydIVZRgih75QQn1oj5WzYMJ2gGi5knJ6f
kxoLDaPcHIrEXIsBgIgnJ17GDrAOqOkZzg6WJFq+guLa3hA8ZsNWNAjzkbsQ
x5sHaAaPIIu6xO4za9l0FMT23ut7niUzD7u3WkLPye0aO3yF9KOZXquM9CNk
pB/3ZKF8GetH+DzrR3bK4cnKjrMxt7OtKHkYxSdDVZdVmplCJirvqMvs4sGj
ovr+hul7GW7NqTK2TMFJpyfu8UYRbYwUzcSLoLw/ZPBdaZLLWAA+Jw0bg2S6
ioRAhhkLLa1Js6izySqq+UB2fBb0nNx2muVXAg3MsvshL7mcKwfco5BdlEr+
GXcUYT0Sh5nGUxLSzgBkSmHmnUjGue/9kGZq3GNINBZ17PPLQrqH+tdRQkSN
hEleJYcax6telRhzN642DBZr2kVaruvT15mtxsRARCLxnv5upbTA5QfPkWAD
OaotlOVQXSpOp4G2vP19bn+fwwzAbT8ASVZGVIbEHwRZuwyI5RPISLWrxMqi
h2DbXUOZhjEKaDFnChlwUR2Gm4uAi1+AVeVYJb+RldwvNnNGJNvtkvibeibO
Lz9iXi9X4BjfDQWvpngg9zumn8mHoTCI9K2l9P6w+fNdIADafr3gkzLuQX4K
r1Egw9KIR5ZVuMduFyvbSpEVy5lrFDpeTmApxJ4RIlBnzKtgmW3ebWzwPV/1
UfJGFxyi9/wyuRiAQnfvxwxygMqP864gQaEhR3knJKGVBwbWWIS2dq3cfcSo
5f3hycDoHV0c1Z5E3zjwY5ltec9UL88gp/7q17LRfIbEcoanWv1k/ZAi2MVS
5NE/vkWr46Tb88OmZ9oG5wgKvCvIEvqolIZGzUK+VinYlPlmNgzhXitgHHSy
dKtKjh1erCFJc1yvaGjFljMXFTM0cgVvErjXBc9T0v59HrEDWMK2w77JLRtX
xsslfTANyWFREGetqskbqpewMdKvYr8ZO/euG8Ykc8igiPe50SZLN3GtBiOI
GTYoNCpqLblauUDt2Wu+ljQp8tHho2pSpOAiaC1xDwDLKEhHsC57PodyuRwU
dmgvOpBlxMuWjJ68AmP2YipdeAt/lpRKpBbYPt9t7/RGM/fPU6x7vNQKGZVv
GMXNTFiKUcbhPxw+MYk6CmirR3R0byWwFXSvifZhKCGHM6pW2669Fr4Sj9QC
ZSOf2x9E2ZdHtSjJwDgATmPskYXa75RYwtiEk7Cod6aglnV9EP/bSFsiAzLl
3d+n2rlzOfX5ILaCA2vTXio08Ma45BBXgLdda6ilNMeyQMjUN8mo2hclA6Ub
peoXctVPbdeCrn7yM6VhEgqt11Wx1FqOjK8RTi0Ac0wHLckDgBQEO7JmQWsY
c5sB3dryzbGpAUuUN5PVuxv5ztjpgysIe0MTLQrPRjw95umO5wXpT129AEtt
7vq1FaXX3UBGNh3/qDdLYZMsJ71ex13T/XZXCtgdDUXEkrkm4YkXrbpn8nzn
DjuTay7Q0qh6RDzUHL9jUmiVXowYEIlbkI0lsvcgyRELiX5NJKl82WY7oywG
F2YTq60kaicdmZ3OUx7YmavoagY07tGPxEYP75NtJBLg34fwffOEthBf8aUT
qi1cUJwJ21IZ+cFo1kGI3DMSKDSpcpuSh0UFlQ0vEjpYAW48uQ0S1SaX6tve
WTfJjSI4t/HjCGlLEVcuGfihjVPEpfZytgxSL5sKgYNyK6jC5c12lB9ZddSm
m/JOGko40Lc6b1r6ORoxnopXMmYJJz8MJopfOa8J1OL9Wuq3eCQ0ixuf60gz
yK4qv2+FEUtN1RplvDsJWKsRl56YhhClodwK9d07eB5z32/lqPQJg9DfVEKI
ymP/vtWBpox1b8NJAWu1CEuSRLs1PWBl6t5Mw2ZlsObmvo8Fb0I58C6rHoQt
X36zqfz34rno00zR7PdFjtrm1ev3z9++ff027pwlZjmv1FwjEwBnifnQLBtW
3J3i5dGS8/Dc0MUIXKnSOE70yXtWisuGknydK4Jd6bjeyoCzaA/7ZAgxNaQp
nJYDA/DKdosENuTo4v0CtX2WcFnnXUoPqrZIXqLLDYwsIpCN19gCivNwtd8t
N7drpRytdUZnh7XgDsh08phfir0XIHKY/sZIZOHdSPuTrtFLHALvus7ov9F/
LFUoRyHpxC6jMXPLijQbjyHYGDR2MbltRZHLSqN32y3l8tH2i2sgcTL6FlXd
VoBrofc7vfQnSywZGQPzK8ot+xdvSpf9Yo/U5SZ+sh+FF8zGQmKtWO+YNr2K
HdcW4/cQpTDMoz7JB6Ekc5diLCFeGd0q+R699rJLAtj0NHaQp1h+I5TsO5+z
lnMqeYa4ehnpBxUSO4sUTh1WjOp4TjRlxlpvKpr6goKj09v5RCCljMxLijAH
D13Mi0RpW4Z19fZNlqg4AIxvRo2Fe2TveReU76DNzA8pgUmK8rayJliuONKf
qaeKsqM9AICMQQclGZuQM+DYI316pwlCLlEg7V8MDdlKTVwbWeC5ZBRiicQZ
X6nDIg2ai8V/MTZXIPbyb6IMyDJlTPbbqJGxLTOkNHmxnGJjcmlNTK3SR6Rv
0EXzQigLM8pv8EU3zbh+Jzs8rwWDiMAhygF7VsDDbLadBVoxNGJvj9w2dW4K
Mq4Rur+QWXIrw5G2+CO/C/tm81k7G59bh6YYMojHYFtm/JwqZjRtsLU8CbsE
aYpYKs6sNkEpup0MzTg1zXaiyXqj3tnpE5nlFtMlau45BUfguMceJRKMTc2+
xh6prcR4b8TGvAxhNr687hGcuJNNEmCT59r6BUzz5DrR9rq76Zqjj8fLvAHS
Q1PnzIghD1vU9DdDPutseG22Xt9GzHr8FCWI3N8PRVNuO7C9c5rRZN9DfGdR
UCf42+ae8cQJfq3RvFmG3knlIMajtC1BQcV2RffO89wcIGAac5UyYZVELd7G
Ux1beXO1JeBCNFdWjLZx2Gl67MmbNy9fPH2CkSaFNHByNahvd+bluG8iqQ79
1H2l4t4BRlnqx3fN3baIukA3LABdA/2WKOfeN6FmE78/11dGyDZPf3evuCiF
BdxJmXsknsR9nCeggBihmdbNjJuJhQ/pZKk/rFSaxdnNe9wVrijT58OotlFs
FOgwu3qUToDprAW7wXELJEJl9XeG4Kg9TRDp/Nof5ssNyq47D5BqqMOOXWbL
PcW/wkXUkMHYzZsZgpE/XJTjgOiS+n9cdGxUtYkwaWRhEoc4lxTrCfVGlg3s
e1f9K8rkpIaba2kVv5kuveCJlg2gW0a3oR6We8XT2W1xoErfzShI7L7lnb28
3NRdnhnKNGN6S94/dkEzvoYmMu07Tjkb2brKSucxxmKDaiDCtAiBrNIHBzhK
cXPVDsEsbalkd+cO6jGxYcjq21Ry+Io22/tQL1Hd/Nxtr4QXBgB5C8zJp69L
/AcSjktkikuxaAcG+6i3CwV5CCa0tc2WD7RAOiP+aQlTfDFdlLZsVJeiFEYp
2Xg4yPGFcx+Suc6RcsneEoFblhvNF98H8YJBjVMSZ447rRQJnULtZOIvSyxy
unpvylzU5DYLSDQzMsuM/cOJRRA8j1mkNN+scdEHVbdacz5XiexFN4gTqdPk
AUfBcBFnLauDxI3hvoShPOWc4YgqbeaEtG0SPCcuitSkSqWpk7JMehzKQSrk
iEme8ron9sCCgpac5kaLVW7lMzzH9zaTbU8wFiQEmzLaSw7SnV/e95j19/z1
WvpS7T4QBwgpJV3KVi44M7UKqgCZ6/eKMFoE2TSWflTricu967dV1AuTNQWc
QCjVS84jpIB7shh5wgeZcsPki8zF0iDQBQdNnDWu9Cr582tLbYVJx31hQEXD
a8MN9q4GsDIM9ttgp6JEduMi2aG0JNWJaJu3z89evH1eW9lgYVJ+w0dLe+VY
nvR/ZhdKOq5qT2jUMNX7QLhko0GGVXsXRVU0rf/zP/8zjMRsVPh/7D/GMfyZ
IvQHJw+aPzXHs0AG7U0cWr9gsl3+9fTx4eED+rG+xQ+OTx7Hn3/Hlz5933x9
0V/OCzHe7PrdqvvTV2ULXKHgq9+tkgeJj6KG7kjy6JCHZm4Aho87lGZS636O
ethWQoOT6hj1te0uiYco8yq1TGPUXIEgsSru2LmBwB6VIPFa7awxJIr5qKKd
SFiE201zToxhGy06g2/KZ1ieMChryRHM9Or53a7TUh/tNjayJQxwCrrS76Sf
6Xr3sn+4yBJXxcvWUmFP+ChuyeNH3Ir2ziKIKZGjuuIsQGvkd4AJUc4u3cxx
J/c3zPw3XkNfbizef+ddMyoE6VdE1bhu1BBdrY53DoeZabFUGwIKebytWTKT
Y1hAXULmpf6U08dYOvJw4A4/iB34hids1ljWIq3wBU4SPcys6Qo/I05LWtST
Y1ktUz2ININKJHZTW5xqJZjOXJSDwT72If0hBXlkxlMojP7MdDOhSDflMJVi
XVsJPZiO6DrjWDkTz+XE6fIx4VkzIj9jCpDS6XFOltZSHPS2ACcnMm1TKMXK
RUYysLAi90NN3zX5eX+tw5DpTEPz8FT6BLuIC3ULL2dWkmm8TbkB8CPjaGN7
Z6SRItUy7lpjA1bIJTAtyf1Vl8i91NdyRWG0LnC0VCmNJOU+jP20T54/oc3x
RPLwox6WCxKeALJ/Um5CXxSXXqTkDYvsOICD+9qwuOokwBF3qIQfdYWtt1P0
3PfPdhbZpJRqeBDxiVCdd7l6LXpQVij2keDD8OkTvjZfbTY3wHI4zrg2zR7i
vEDsl90kAXHoM60xrtIiNbG+20S19ZrOFAfN+aw5WTcchn8xxusO9j0tpiU+
17ILEcWYjT+GD+k8mQTjWBppVfj4uPNYkPqFDW/CNTEOstVWk/fB5L05LIrg
OWG8di4PqxFDE9cVz0iRKCMae1s57UiYZlHqM/USn8SKVcckQkkWOTXhH86k
EJLAbOTUZhp48r9OWFwJrJnBhstcCh417+As3sO+ascq44eedsK4c4npZ6Lo
ivkxQGLXNM2fHQtHfVXUirQOciB7qlHPN0Enek2uU/kDeh/Vx83WoEek+q8r
sy0r6MLTg4Ndt4MLVhTTWtZXY6XcoJgslDmnIK9NIPfj9J6HorI1jiBpWUtg
TRc9kAyScnotsHh279tcJdE+zDwjiYCDPdJ7qRZhFa58xEHIFaY/wQGc3VXB
AZi0Py1iJt6UKLUkz8YXwylv+tuWOH7ECaSVJ6d4WM0Qi43VrDCtMcJjiVK5
tPpcFhZpfFI2kFP7z9IlkmJIW/BFamg1EX7fs44E6oq3B6erXnDpMPHdGz0b
x2l3bKd6SjwB9ViZrKihNcwlvsyxGAgJlUWUSzXCCSyuZk+B1eKyw+KXL+rF
ywUXpSfSDx4hqum5miLw6yyzQnkGJjNi6CSsaI5AgpWuBWxhReFvO1RCEKF+
3e2uKPds7innyf9AhiNh6DqpSz7GbVy1TP0kMUBYatgdqztDuZa7xCNopunB
KdgmlNIGrORyrrgUjVOplDwVp21DbEftAD2DxfIwXbBAS8ftthvAK+HFj5pB
tyVjb0cbRgNZvdXWLO8gsdBTthN4crI09+NaT8Xd5ijY7a6N5x3vmynmEvqr
ih0tOCxGjTPHuWb/q6cPh46gfbIVLkNMQjV+sMmIoeXPBKTQK9b7zx9QORMm
b9kOCrF04wk2HpFu7S2uTi3bG/e4YLK4fscu+T5mdKsJL1LsASvqwempBdV8
ZsgzKXq73YJHXvJAgAOSSpQQcsWZzS80izBMb0THtrbbxhNC/7AeSGe9e6TY
DlTShGGlpMlWDZghOaWXwVwqxXZmSeFLrcgE6HetUqNWIJUsUqlDDHN/mOoA
bsCJ60Qz37pErlt1chLqBJyQ93ynHGgxSFPHZb8Ipy5Sx+GElAs+QdVZokSp
Exyq3Tw7NSWYjg+pUK35ffNNxYZisDZYd/mStUvusKImjtHJZG6nW0fsqfJH
OjYkth3hOhSTjFHM/fqcShP6Lfc8i/INv/Y3XOc+mptU0/fCmxBKsqYdKQuv
W76cs0s4CzX1TmEIqXtWr4YdeslRiytQ0jf0m0EWOEPYZNPo3TeQEulRS/iY
MpN50BwOu/vCdSuY8PUwifcfe/Bis61u2JTXp7tU0IRpm7nZjiKy7sZgn0dp
AQYluywWQJHPq679lQ3CGkAjg1js2JuZVTeR1i2t0H2ByyExJhfJJOLGGLKW
4XmOaum+nTwhnJ3p+kd9Bpz+aguGGymMQ4WxAqlA606IcSQXgGJupF8amJui
jTsu4L2ULncqodeDbEieT/L2TvRLU6hlerbtrVhpuhK3qGBK0sDaNQIwdS2M
6b5IN5kP3QKk1FVGtqAKPFN0ISX/oDu8PJw156tN3LqL/uaKNN+ffn7ylErD
vP3x6cnx0UPS3vPkdebw89kFSlo53g8KLExWWZsf/GAHCwdulyW8s6+hPpOJ
lLMmSp043nqKml4mmu2e8ppGywXnCacTjMH1SgQVNwMbkQJIFex5zviRkQiq
wvC0XVG5hrrKIOfz09dsEmCPCGfX2D1PTxrjnfdpX+6N3BYsKD7rYhSxktFX
eBFKpVwYBh8ePX5EXKOypUK6LDxPqsbW8NnBu50kLtwNIPIn4buhAmwG3Cb7
z0Q8Hbytq1GrKW0C9SVaaCaux+272dJZ1zaoUPUIHMC6KCAnith4V8ysR9Ay
BxoKXAgHBoQjAcf4yBopQGxyJ3VpSBNVQYIb75xQFNftiuNfjN6iF6OOTwcy
yw/gekqkBRRIJ3M824DO74KSH661bsMmngR35jfgLlB+RETL49THvlxS7JTI
1ZAbpNKCtXm4FVrfQ2XdKqwyoqhZKwjWuiXlDUpvAMmvfn2zL+0t3m2kmY9k
UHNAa2g3CP1+wL16H3s1c9153y8fPADE7K/PfpQ2vnn86Dtpw26h4AiN3fCk
Z/QP+pkgWdue4K11HZleGNrV7gGzlkWRRy+rFWL0i4jix3+0IjBNWrHw1FS8
tAFDBnDYCDYph4uUG5q2snJTOKYm3ipsphemH0fy6gFIVnqLZd4YEb8zl8ZR
IfXyH+Yx520HjMQmVfBSEHryBS5KxxtT1Et8axPGVqYf6uIef6CVl8rdZLXA
1Z6paFPPfU6Zn9bC3SZhKiiBxbGlnbfmRBK6svjBUT3CEBuBG8UhEgQrTe4a
URuRSy8iy7E5z3IIA7ntwj117eLivAVeVo9B/QbSIr+pki5YAFzyefBKM0Gu
5YpdoFIrl+KSerAL41yS/Qj1lthkNI+33om8zB7tw3P18OXsYcILmE50VkQ5
RZnWJYcfXG1jmCWDKH1WQ5A4XFkZknEr6pdKtxP7S67A3OX6BW0HJlIwoGZW
Ec02LS0/O/cY4mbl/Ry+UU59tIZT1cr0LYWssioRr8bFqhPnYvXAuP2YEp3F
it1+wZbxUw7vC086cQFlxCDkxl1OT5HW1aDBfP5D9hnTEHKz6dCF0TRHR0L4
S2XW5dDbrUWChYMdIXb1y4ueDrb6aGHtGYyutgkn73AEzRT1EmKnOPk3b1+f
vX76+uX7v714/RLwcsll5hkpx6xSUFi+GFsZj2XO++uwXaJnvmR3sumS6l4W
QjGWcFAIRj7qwUkjlTwU8PE35zggxmlAk+ggj18Y8RPQkdDqIIofGHnAUw6V
MlaVdYtHXvcw8rrnWaErMsr0gIEXqrO0x5rJ73PxWOet++kVBUFTyeFeOBa9
u1HcNBwvQFEWI+3ufao8n3GHudwZtiTImqoTv5NCvFhV+k2UbRdj0d2EB/fQ
cAV/stkEC4FbFMOmbRydM3djYb1N7V+dmCsOAu4CS+zNTeN0WDqGUw0Ixyfz
ZDDqfHEFz9EvTBXXkYdw1yksAB5Lc9mPHJoIbvj1LM1Co0Bw2rllsXqJBltF
YENwlmfOGyZjCqkiIncP9zBnCPCZEkjTeN8Tae5t81CBAsWlaBnanORMYlo2
9ObcA9x5zkatE7H3jahhVC8Bt3Gup9CY/jCUcrWhIBt55jtKNd12F6JYK13T
fWeQzXDebVl8L6G+y0lgfxwtszL/rDW2RZHydmAfwPkWoqhYHSujQwfWf3YI
DOpb735gkUdxKQAkuT+qx1g6QrwKNf7VrvN6y3EqIHqb55D2lOqyYvkL8T+/
kj/8XtHhU/aB3BUKeVKK3o7tUFRf1RJx/GQ0TJWNLK7Jn1GTxljvOI8XWMeU
PiV/lWwLIKMRNGSSGGAwPSUyKxHOmOMXoUm8Bu132XRwTVPkdNis1AJqk/VL
jELaOv8rtcx3FGr6TeRlH3z6xNNK/yIiP1edQCIQWqQiCIsV1A1MKLsV8T6Y
jdn15iJv4nozjz8/GxLiHko3Ar7uIWtUUsc1FwE8SnSLXsKUHODSoBKTkmXh
69HPnMgqSgHESYqTcNnb7pTLK6Q3ZOJZom87jrTx7ZDqhI5pSpk59k65zujS
duNQjsPRJrXp+CGuq9CiuhfDgZ6OscZDIvLFq7Pnb189ecnJdQ8Eow/D8Nwh
Iyj1kJy/FhVNXxiqeOJJqlM47Pb9zgqBwLrhUyQkTxT85D2SggPj3L5t8/b5
u+dn79+dvX3+5GdLNhh1ZWyFFChN0+VNq2oS8i+JUiGRFn7OwqPowQ4QPUMI
/L+NwN5VphamskDw1nukMrvEKLo6oPWG+P+vzN4yToWhu27JsSoX3Xa7txwh
T/wDoeKQ3ZnBqH5Lm2z1WU1wdd3HizamYK8xTRjBzzV5/bdZ4rIo6JBm2u1c
UtFOq9JrgEuPxbQXhLZbE5sGr4n5n0L18Q9tFHXCqhU7Nsm45FeYpElZW8fu
AF/UDdodaKV9KSlxeQjp0QzNpQwctAY84z/YRzqaUyR0Glypsx2IMzV30YQk
36P2e9NuFZWizEVfSvKl2UzB41K5BHPy3be+9Ih3F7wk5U11NlN6Q048ZWFs
DmaRD8fK9JF/0FMraT6UKK1wqF1cULybQi2A+2/W9d4MNXcgk/SysMvn54so
veSyZJJKy70fzGnKEVeIigwHh7NjqCJX9buWoKepeEPKo+PQjZBUVUfLbChh
BHpUJKxk71Slv+VE0lE2KUl0w+spzWhKEDDlRSKfjpfwhzEID3ta3He4biT5
dOTCFAk/vk98ihOZ7/x1usk+y1jj/HT/sWfezsCjQRasiDPo1TuFYmJiHG8d
ZW9tVh+gfuhBr5IEMRVBAqNWHwK3hvAe7dejeSEGMjcBfG2q7k1Ogv6yFe17
+hPmwSVhZcVZ7aa6l6HCibtsJTgVmaOv93xcNeHJzpHlJfmo6umTKReMpm14
qBFcVMk8fvdMfxBmmGVPgEDU+KKwlTBpic1rDYmDu2venb1+8/7d81fPiP1V
OMWEgYktf1zb7X63uYZbzk/K5E2o1PuYr2a7XwlqSA0fYxG1S+uGMrSoovIK
MbBFt1plFN96UtiueqOMtnFsPzJa6NPXItTmDB+KthUAYgnX4JNfqWH27SQ+
wGjIaru1nEnm/o5b93KbZ1AWfAuWPElmkXV0m+2sX569MajPcB9fAzzliq9T
DJ+tHVDWWbrbGC8eMmi3fovenPMrsN60nxbj8gBu6rxymBxYPz31D3PQpN+O
trsdfkj0HulHS3ilJzCrxDl4554AqS60ueZvMnZNcKH/lo0u0zKnvD5cj+td
UZvYDaKYZHkXczwau0+Kw+CthhyXDFxT/BZX+ZVW56Gn9iCIv5DE/eyy8twD
9DhTyhhblF2RjAOO1xb1IK0PX1lvLCtXe6x73u25eCLjmffpKrTRu5udzeQr
N5P6COSQZ/AIKetXJjOl2nCiHuW8PBAYwDfHxwQD4FAmRZ2++OwI4eRd1hOk
07jG7MWQvfiMa1nVucloWi8AVyuycH5gzX+w21mgg2TqfKCYT3dr3i7WIwhn
UhBE5UnSrMdjNVNmD4IYcKrGNWSGWDrMFRLYUcbJvcnaehBdA1y2S8EJI5I4
0itS4mvSNSUKK4VaA8pZRjU7RfmyTGl6tOCB0WARJ4MLO9Tmg7C9YT4yE5bu
oA+1ZDgG/1pYOnMTwzdLbGgeK5jt1UPe83myZr5C2MLokCyGqy7iYyeJou6Q
aQiItyefOHvRS8g4AMIO3FyBRcgKq5ZyRP3GhkhnS8CdNRMJewAh5aCHYiSJ
8qsQJHmdlspWQhlOOr9c4bigT/lhPCOO5iBLGN+IkhPSrQo6CrttM6IwSlIw
LmiwurFSllHgSrKw2CQud41/1mgNyM9MGoXpw2IWJFMzKN9m9QDKIz8EviWS
uCiq5lGn93ScVneOSFj6L3TZnVwlFJPQ456s20uiyS9eHOI/u+KGElrgogfq
5oGKQD0YXQWmPiSp9Q/e2bSvEjtT/d4uLcg4sJcCfaBF1LVy7Pli7uRJ+poo
z6+aLLZy6jy65hVPEwrFt3erTbsM+MxQlk5rt5PSU25emQGmWJbcNQlyHPq+
SDflc7I1yRvRtdu1VtOTo51tpcBSbmkJT9RMPjetimSE+2W9UtQ6u7xB80X5
zF5lVAgFi1zDDqXAm88MGDwvq2b14eROnHOBT2x3BspBkoP7JrzdKQ4WANjd
7qPV8ebns1+4tnZSa693+zn/aT5sF/NFD8043vsQEFpb+7xrHE8P7PdEdmaZ
t8Ft/TRFAm2MA3eM9U6qwpYfmgM5ELL3Z8F2+YwFaV6EgqhIH46oSKeoEo3F
eatXVlOyE7LPrfMdd+zKBNN8ojG8Cj3DmMOslc0KzI1AhdRUVlisCiAfCGmL
zJEnY7IA4NnLnWlhUFUsGIGYT7OQG2Y1062lbGvnQVkfp2NuO5makHc2bRut
B0/JqIyDGPbnA5jsk4dLJtK+E6ZzAy3dp0wl8GhiSsZG7NANxS6akp2vqbDz
sZdPwtN0HVtld2UqkV0EWJO2l00c5jUB4FPuBF85vmfM0MNfI71pQQIvWtaA
wXfXSM1mx3dURrpt4uQUSoO45CwAiYLO1ioTLwLgMGRmf6GpEjSvF1DRD4St
CFGLCZJcCcKwGsc0clKSy6aE/PniD5D8/UD8lnuk03odjYgj2h2LZitqtBYa
S0qOv77Z+ZPJx/c6qzPKYXlvm4wN1Nl9VpW7Os3clOu12J3ZMT8ozb8HgvcJ
9btWqV9Tpgrz1fgQtZM4BlwssseAOuK8VTEcth2bJnEX7/Y8Mg6gt2KzxVmW
4Yfx8PPzUKmRolatv+KdHqP6T01RRHofm4Vc+G3HiaNxVx/Rsp78r0cn82O9
sdJLsND7VNRHr+f8Jlzjbqc9NFIVKdriq6uFhM1p06kutNqNK3+z1hqDBNVR
14OVgGi3gljppMwsQVswLMf2dedzHredoOfhYO9phTap4OFLYuGIouxJOvZL
R5a2bp48/WuZvB17BC85Uomkcb40YPDQYPxuvTJG7fFQWDXhamgMfcX1c0x9
f8gQlkLpxVOc+BxC7WjVjlRznwvJDqNVWdW7M+twfS0gYVWan7KajkNEIvb7
EOZmEeMnVB8ZkUnXtG8hRVOkQXz3MDaWnGWuuRFB7oQnzTcZrMknZQ0s13Jp
RcpNntSt0LhvObdmtfvhyZCHEnPqE2Tq63VJVnWRRl0UxYGmtya/1Z4J7Iv1
4q8qBw8Jxu4jtqnYAY5LG8RHVouv5fpxdhwOSyrsIVOjhk5q+CS/y8h85Pus
aNcD7JJtAvmatwTe23jmV1TwdlZZboUlqdb1kzPI9ZoNCd3je192aEy2LB7m
jtK2aG/nklAkGiMEdrddl3Qhs2jxB9OuzNxFPaEuW63B/Myp5s2aNwavJhsd
rapeQV4+AjPwSLPzHXDFgPINIqoS2+UecilPEQjDcbvH+ShPBQYL59pnPxaF
BBkHebGe0K4uN9u4g65JPRt64SRQPE82sWC9SGeEMS1ZFCPp1JzUXh4LKalX
72aQQ7OGQZkh319kPq7KzcUIywFXazNvjmfs4WI7Vhi2K0ALS1b4HC89a3+h
qNvywwifVCIKBRM4AfTJaVqLxg0M6ZJVnjhl09NEgSGFyB/WyZ0gk5WAuqTx
MM+DNh00mdcLIK8EuaDDeFeZqxH6WmXHHTbPDH1ObAoEZ+01TfqKqF/W4vSC
UyLptt57rDTErHIXQlxt4e8OT0tL+BBEswZFtm3Odl21X4ICNL+8tn56+BDt
B07Wenh6dOoiMzpkVQ4aqSmBrYdiaZ3/wRZQIjc2mFBXM0gJ/TExDuA/mzOQ
rn/62mKJrISaLeTtsVl9jt0Vgey0Af550ruCiUfYeOKS4U/BIosa1u2a71Dp
sfTj9xQR8yr3bAzlTTqR7nZRgNSI4BYPmbpUJlq9XWAuZbXw8PBBc3h46JlH
sy4p5ygmRN7/ajxfOarHXLzSBssPtW58rQ0OSCN8BDCXPGO+MkcVkf9NBGhj
S8towouefSve9VLay0oKddOOyPgHLa+sda4uaRRixaWdk1UHB5QHf3R2WXDx
NPpxbiFM1s8H4ZTlNtN6UOvNQQ+iWPrv+TN770e8hxXLeGKh1TNRrS7WXwSg
yW2+xG+6aG72PJFdBRPL1sqwU3WPv4Q3uVJr5zvdw9qIOxXIgVlczv9LUATv
9I/v3v/55eunf33+DNt3slCCJlmhztR2qzYuf96QaRer9jKu/4+ciRfcMwN7
FVzf2CQa6FK+K1G8VteQ0LpB9xvHWlatTg8T8MNJ7yeDk+EZxvwbf+tvyBJq
fvPff0X/hf/7rXlmNcmb2v/9Zh7/38Jv38/d/+X/+tyf3QPpv2Ifjz4eHblv
PXkGXEjRBR0e8YkyJ2PxwIufjo7xX9zisWtx1FzeYqW5Woukg8T/OY2/kA17
T4uwZ2sPvPjpvW/xYfolw/2MW8xBWO6B9++zPn6TfslANuMWKfVlLirSfS0+
Sr88ffuvb85eT46a9fjRwEej/jb9Qjw8Z6//+vxVvUUidWMOgt/zB96/z1p8
zCtzgVFnMzgedTGD9VEfu/1IQuPZk7MnEy1etx/npK8XbY5aPM5b5H66hvMW
JSPBNzxqkffj8WnW4rupPgr6yXdz1KLbj9QxFY2VFqljczB4kHE+3WK2H23E
qeFyZUYNj1p8xKP+1lp8l3ezbHEouzlq8XHq45gXqin3Y0ErUG3xu9RilUTe
n+saf/y4xTa1+ObJ2U/vn/705OXL56/+8ny0MgSpmC+uKOlvfdnZ2oxaPC9a
jALozetX75439RbVpkmLPWpxwSuzJElRXqN5i2MQvTzQX2UtdulbPz159ezd
T0/++vz9s9evxqP2dXHW+ahVUiTFhBUN0Uuc7q3qyFdy3X0Vdb/V/npdUTVS
YAyMRZTdouHbF09ekUV3GbWU7Z0G9/t23XqFWiiw0PqKQTRXqgG5wtucaGXK
X4AXi+HrQrLZr03xSyDRRB4fN8K2XRBpWVTuXqBa8X0R+hB+wjOfg9CFcITn
JuL5IRzj52P9uQguhNBfceXkSdPcFwLTeiY64npJp8bpyxZOLQ1IxXcNmfZk
LFIDuEp3UU9lgDuHKDgfnSKpoootGP4svclrtVWydpnZ2KJKN5IhayNVOluM
uEjeDlnydvPj2yc/P3///NXT13Stc+rSocPfOV0xjvKaqf5Mly5AndiHiCLO
jJaDO2W7myMAhD4ZekFMEzquE3A6xeA4EwRZWhbIo8llgmmwL4RSMWflVzGV
lM9BTRskg2MsZnsLoYv83VnSAkYno40Bh+xYOjM8GtRrRheY1yDkeW04bzzq
eIrJPJvZ2mDKrTSNwTQpvGHEDNobCUneZ8qkHBdXGlVNwjnFJqw1KWwoWXtl
hcuNY/XwFPKUu3C7mZPVt9/OKU7ZUaYemp6a5lEuvHzz6OPDoyiMe6IbdIXC
qH00Z6vDORPa+rxYRLFT0UXC4RzPWB13G1XMZI3WtC7nAV8ydxWTHZBuL1yP
BPJuXBEc0J/st1utE3OxJ3S3OxlmofvMHjLy7z2i2AZ5IdR1tkGRW59gh/fy
L1SyEQ8TvLz/u9i5cKWs4pT2ABRpiFJ+5+JZ7I063xMv1MBlQoUK35ejda4G
jXzZReSaIZkGmDElgt/EYybeifPYldt+iVAqM9Dt+eCgjBPdXPHSQR8oOzoO
/Rp8ZLK8bteaC8R1SCpbskM3LsNt22uleGbQ1rpjF5zKRAFIDHfkjZHy38nn
W8AkKJYd1WBCUa/EP7WcpXoA+h54BimCaeECyir0Kdtc7KrIjdUs1oR04Csl
qxopnzjvrtoPxD272Yarbr8luooFtm8iGzcCuzXjv682txwKjU/RHKkGQf+d
aOGCxKjzvi27Rc8E8FJ0pszrvdJ0uEW7RW47urJq74Cx6rYfWkIIU6AonsoF
o17wO7BpgkXaWMQjy2j60LOUJGTEekHkKpIEpev3Ee4qKi171XcflMYmzgMl
NtFvPilJWKAMG6QZHQZY0/2flU7AHhu73RatIbGD7abK13y78sE4jNdWlDfO
3DoK+l3iO6bh0K7S7BnSe+abi/mKlhbWCLYomNbSp7VtZIS7nEREdjaLKNfi
NY0omw4bghGxIvH+q7+epKpYPbZF+FTliYIW0OdrGwhKQsXQ3rPJZcCgFK+7
ZgrOqEVdbpnkLzHHQAXgNDq/Stpd2p18eEuoUlbUh4crHAMqg2gsQ8oftb7x
h0Z9elHc8C1X0O7FgycihHjAu1trq/XIcYpX7XeXG4/5Mx5S4Y3yE6naxeIu
oD5TFGgXPdKJkl7okCdvEkQoSnb7B8S6jNnnbmcxVa6jMA4JU9gH1KwZ0aUg
Q/nsOw2WndopxVbaSwSvnhqXFATJjUvezD5xgUh41nrQrf/3vttbaQEL6Obb
jVzSU4llVtnbNFFhKeB9wZueNKxVzwxljGpbUxGdJY6n4FNtXNK1gvd3lgVv
0jQPpgfETtrl4CSBoViyhNZxPFMZV2XMIcMh/SUxzzi4DIgY4r5IvDTkUKSA
kOOScqA6X4sJWJ1ER7S0fJLEf0kiJMTH53HuFnJ9GAqBqRgcRoeXzCAJsltw
k+6vqRsBV4FL57J0FNhs2XeszEi2oSE3+KNifmhSMqrjOmzeoHTDo2te6RSk
FGytFpWD4KkAWIc00P4C66vBUz5JndAKEsn4YfMM4mDYRIG+utHcraiWxAGR
1Aqu2IGQ43RA+bxYS55J3NYXW4EUWFleq14nuzBez9FGRXWsYRCla02QKrIG
E43UufD5M38DVum8XdGVszQKMTKKBhQcRkwsVTcgCELCDvuyWX7tC8ocJpyq
7RwOVYTLvd15FziUTB0Udc5fByYy3va/CtWJ9PWQycK0NA5923IrZZHnbXE0
flc4rKx9yszPtpWL6ZFZI2CZ8a4PBgWffHti6zey9b0x4RI+B4Th9HnWmBL9
Z/z7+9jGe/57hWZeXUeJTsd+mi8tYMPupLyxqPFFHVaqGn68wYAB5CRX0PfZ
2YhbLV5hbD1x+SdU+WP9fqV6XpoZLEBgIF9tNmlnQT4asDk5p6RG54sLlesU
Y72TTUo1H7b7VMsU4LBBjE4+BMwwpWwiw01UnYkaL6rR6CUKE+Y0CIkzFPRE
dI2p6yhLOLGoerR186mMIz3S4B/naoi1Yvmweor+MOSvSoWdEvkZxUXUIRiI
Dtam+Xk7jLqOiDw7pxhGoA6tbw5PDo+dU+vt86ev//b87b9qofV0eNOpSMce
UlI3Nh9n4eitnmoxsjva03HURgjeE/6sA7sfZCB5DpYobEYbrBcg69nTN0qE
++jxMXXQAV14Nck0YcoAIbJ2/QewQKXl6i7V/w1jvm8yj9yjKQGRecNEeOKi
3m5Q/IxLkqgMVlrMDPgdB/r0zS/0SzKBOekEihPLdeO3bgfCWrDMHt0D3Jnq
reQGrpefq02+UZ8aA3nrR05N3A1zAKNL2Kuh/BjnRYgqPziZq/4C92mBGMGT
V9cWWg/dzz9Oh1z2l4Hoqq00lJ9Ol51/X+ogtfXtPLAPL/U0EYCnRILqdg4O
86iDuG63v/p6Fs+fvqIUDd0yzz+Sad3hVj14+vwB+BqEkZ75kF68UVjyxD3k
ujrjjFRLnhJqO71kg/o43J4FUeLAUFcph34tTqBMdyUPhGYWlACSkXNkfRf8
qqdr3tWOA8d4diDIEKy5KNJioGS8yOLi1nZuhiSPJDnS7J9g1TOS1aRqpdOy
FSHgfIjAOi27rYHUCW20Ak2Z1LJQDUqEQBOvjxsw1Ywlqakj0FWLrzH3mSHj
FY6IrxJTtYHpJRZTlT+839ab0c1KzDtXMgd2e+kK4FBzPTeX0CfbzmdgswHv
pscA9YIAou4W4yIFDyem7BP6EbJ+VHh/kNvNlXhKqcJlvDaOJrUcNKpmCIug
Ch4miip1P0GBp7wyb5wXEkbQZk0t10wsgKyXFElwiJ1Q1AAgbtC6INz5dezU
gQM7a71Zz+sv+SJSTlyM2fHgE2Wjn2iba0LUrFsTgN7IcVKUBymOjWBwPNJr
HGQ4AenToRBpP/QrJYHV3SAWn+QLceixGZkC8aL+0Dkr1PshOb+DpAO20LL7
AGGi+w5BuURRKFJDnZV68o0njgUrar2gB/QZcS9Ac12KFVeXLeiB2xZqyNaO
8VLqLcgOCake7FghsSoLA1fQnC56a+ozSgrHrnDceI6eaZ5Tbpl9Vkdgp/Vk
ld2pXToiTZ3czzPPZycHRtq4bG80HeGGOsphq2BbVXto1GZ+9smNOmT0yGY3
E8EwSrcWIiJnWNYy2AVGHCIH9g6kNpzQ8bQcBlcmxFFlZZ4hmgNalvGZVqpK
taXTLVuITJFCHHXyEad1IRzFbavLEY9Zj8ovgVfuHww0zUSLTnxQoqsqsyPf
DmKU/9yu20tdkLeUEjaI+yX3ErCzZpa5x5BBxshjrws51TGoFIfOoRSBm9XS
geVZVZJ8myt1p5vll8jlBua1wqUr7lmlTpfqcG5XzVQtp/AVNSi1qdMTtFpp
E6r/iMOUbZ7OyiyxVoiu2NXDzCrKYVqi6KVAgFgNV1nCzUya20JkRT2AOA55
sZyBtL9ZgisnzX+UjItfRbf0ux2XKfY5+wMyf1nLHIdwm+p8ovs6o0YyqEpi
QlCz9Mo2gHKAkPP7ot8198Cd2Thwnl3R9nnled+EA779U6ICSMxTgrQE5zgp
bEPdhUH26RPJJnJz/MqoRpp8/uNKpIur5c3ukS5eDwjaasWcCzgUksl+mwIR
5VVvuUTpnJMnTJl2m8sN6jrIJeZv2KIcZvXYd97JpWXmneea90a8k8j/q1FW
yItCgWMtQzktXcA3VdTyTIhf2huvElq/BuX/15z55kyWA0XLvX8vWyuVLBad
cyyRVWnDZAOca9oWOWeIhfHz1y3n1LVgQ2q++CO5TpZRLYA3kYjj0zP+EhDt
tQXFUFQBmBDddTeMu9sVMoqdCwvjdSHr2LlG4mJLBCZlwEjFFL4vEMjfX9OU
H5MrjfSebQexA6hK1njRsiQM68P6IT0edGwDaUSX+zae1l2XlSMorT4sV6rR
pJAFK4aNyHwQPEVBnO1PVdLUxIisOh4gzigc4kgZJgM116kxPhre8uUlz5Lq
3Fzzi2wD1m4j9c7bgFHYtgyixjm4Za+ZBC6lcIbXg/jalcNiMizLGUvMrS7m
5N49YAHIkhUZalmpVroAuFbEOrsjmQ9nI/UOMBYpEeD1s/UyYSjiGFAfXWsN
AIz1RNKUTEEtjUsEblKbOfuCsu7iuKmsGJuGSzdeOjoFXIo5xXTpgU9x8+MX
cxz6IpM+3mobPrzElpL7QyRXb7+e6E6aQms40ESOlBCFT9zjxebNxJxudBe4
cHWRWe/KR0rPG7mZHdvxTBPpQzLlyOBEwnDRZ158TWZkTQPlHSQN1SJ1yags
0xp5BbSfmB2Xx7iA2ZtcGP3O/AYhnWaEDsEs6O1+n9rLi436KVGB7R3VsMjE
IqeRP2YkWu2gqivn4mN1uyW7N+K8tnesAgCsAnHBtDlK0Mh8skTioTPqdwmJ
prQ1TErcZRPkL7Y8Kdno2kdhfp/rqTmmKWNJGfKy1mRfjelr7qNHcGuqTDjK
beCXtYiI62gK5ViH1a/l8nDy/ux+JgkdXHz1+dNXAdDVVj3uWZ6mYx9vKBFu
q5U46YKGanfbDtnN0warupS2vxcS5CJmlWq/1iPYk9+iB5P9Ugk1u8V6nnpW
zp8LusKyn/QUJWZ8L57hhgyZV209un1ZGWDG1gxIlxDoaViZjoO0cj49Qqov
bTlsXHEX1D4GjzbbQN7hrAO3CzifSBG1dCHz0OVKdiFreVNcXAwpNbAA4/Uq
zkCCUbWDxDZnQecVId4buqaQJLzb9jcz7w9VyeqDiWP5BqyO+dxqX7f62hm8
H7I6JEbv8268FxxS8R/yhagy/nOUbkzSy8BSVKCP//qJLp9niHR++jreqrs5
3PdFjZhrvC12OB4YijBxTx4xJl7JuAUQz7jqMorcsXxzbDkpguMZ7EcWSRAz
oCySzhhiq6IIjKLoknGWeKAFFw1fWBkylvP39IyIYp2FQsTNSNuCFmYJnnPB
oAQ3NTJb6pKia9tMe3r80ijQ47SRomQhb6Ms3F0FioUzSKZQnjjbHPEWWHYy
nRyiOCeuwJUp06/fNb9223W3Aix8NXRamAi/0tqrWs6FOTz+q+qsVOykbAi9
tVPqgARa0PObzY0WHa6tRp8DgEQTdtYi0zAqdk7Cq5mXJiNtd7TXORLYip20
E0QV8ruiGTpRxEWqTzBu5wj6kB3vCimsI1CtYk9cWAOWrLG4TLbjfNn8USXI
ZTnrCFzHuMFqFwSap4XuUodSF6JJ5zrgmBoJFZg8BNKRqChFHVmcjnLdDKNQ
kAbh5bsTbJHhmq4KU9Ik4Ej8a+ziSJBUW2qos6IhpHwB1lgTtYxZqfh6NlT6
ezbfAT6ODAQaz+yLhE0IISPQs81gIdSlc8y44pDmgQM0brNibShgGK7vzjdn
TSdUpzjg0LThoF9wFXi2bT2KwlWmzg9Pyn5nNiDCldHfKRZmEP/AXJ9URdL9
eZ15e4vs+dHH+6GYFxStg54ri+pBdP71vG+3U/4dHKTivYmVWKd0gIVQ6/pW
Q9Fq2Rt/juKc/HPzzFMXSQ51mth8waN1g2rkl7rEXMegX4dmHJObaVhwtSoA
uFkfGu6BfTw25VS2ewFRmCUzgjANEFvC3xJbymmWK3wxuSGFCRkThMnk5Oj7
0eTIxsueil2wgLFTBLTK46i2iRbbkjokVDlj0fmYa2xQK4COq6LMKGavVnDe
Ww4RdzZG53bCli9iBQ0xCOXhEbnTRfGxKxLLpfzfNYenWvNtzqODHTOJoYy3
FlrXG7kUZAqObPwhcoNyNE2b1TIf7jpZFByF2G1iO97bHY8M1+QjgTqAxJNa
rNpTZG9hSp9yiQ4L9GoJkxI3l13+tTXsB15kC6v72UQ39FTJJxRuXlyRNkAi
rdtpJqWQhdJvXzFR1Ntu8WH5FbX8FU6i/JvtqlRJVHQx2YB8nFJaMXflwaEW
SN9ZpdXxEE1Jo+VDMVkLTWbiEtPqQFEtAu20wSCpabonZ9mRK7bxM7WSLvot
ns+kQNeHxiV6aGlkBtt8umj6svnE/LGxja2+gbXULef4YY4eG0YWGyhFSpk4
TMox+hpl2XWt1D+jKlWN2eF6b5d3kE/e6RUSSKEEVHCunFStwaOugn/mhZZs
RhfkNUCxbEoVnsZTobiXJyla2IjXwz3eFi+o6lW7Oosop56esoFBkcdL3KRA
VSqIJolmBn1Ch+HuxeYg20hFo7qurZDA+jIOeZYelzETJ21U4y52dOcNcnrY
dSnpXZyS5rAYzLYkzt6K38FVVWvKOXXZEKMV0mXxImNzcaEFrd0ieeoP9ZY2
zUuCxuv3Zi7UWyydTej0QsXW5JKpfk4TLLmjUu0uWyutcUyXK3dixjYEgW6a
XUs1botos7RMFxUbTQPDhGR1QNzWjNGv5NfXVa3PTerVSHjIxsnEB0mNd+Sr
/iul1H9lDlleLB4YFzNF0hcEKJdHAGaiulTvEpSMVsnti8+tU10TzY6TtGZf
8muDLtUP1//T60Uz9mdJIdSqtUVBKc/kMqvRuzClVjPiadHZzKhgZLW1gohK
u2Gxuelm1sj7yXdkyvh5nPL6Z4E9afg5rQms/F1u2g8bb8wYhDJRc6QVlW3o
lbvsnNGX9JhJ+T5yU3CuZSYasYKauLnRiqlewRYheQbjWXvHwBT1xKcNAZun
AUVky4knKfl05x10rYQhsFuSws2KbEMpdmvSsMFOHXeVc7dHvSXqqdx4QUyT
245EzwGvsBQoEh0ris3d4sreNhIa2/QpzrtNegRWkHnCE4M6AJVgYf9cfxEC
z3ubbKJE1uyIgoVUEFgPdWre2bbAPL0VnBwuifKzboLyIbq9BR8i02WwVxOq
swPXGAwIGKH6bLfFvdl92EBgOeq/Wi8wAtrweZX1DDs85kZypn5hqKlorko/
u3OkEJePdUIjtMvdLCc6sIhCFhy/klIEsUzOc6oET4RKy3sGEpo6KdM9o7l/
LKRy0Ggwh0Zo5pb3H2suebFo1CSaKK64v0F2GCXdtstO6/NI/XlBa4jb3HhQ
l6k7aX9vxDohn7rWbSRWh6gCDQlAq1EvmBm8PRBjgR82B46rkrzeeE8IoLG4
qDQ2k78WOyTkoJrYS3nC/dau6oLwydk15+WMslwQXGPufUkZs6Jx3EQZtI1H
4e+uETN6WWkj35/qJORvoL/OxMsQ9P3OmCm7am1OTXtLpVqtzh4TnVlHksr/
3FG+WBCzZ1Nrv20v5b4ahu76PDFfuB20v5nvNnPo1N4pxdFVyK0ETjW3gaJw
EJE475dLVhbSFId4gfVd4smRyHHuW0y4MoVbKBimKV+X5Cs4+RAuo9Id7Ggj
u8SKc6jUBfRguefMGLZmzSGtMWQtSpMde/srOyOjSP757Bd0NY/cMaQgjG92
ZNzsd6zeiVFrZcpL8wfCCi8Fhituc1NN6JAcFXG7zvCuVL3pZrN255qsRxiZ
xpECOikUTHLVd8fY9KaVCu1nV0pyhQUo09Oy5OL08pjEeJxsSP7v55Jc6jOm
Xm12ia7109fdYl2pitqioObn3z94/vSVFnw8PX70GAUfJc9aJDVUI05fRU1B
NyCqnPH0lQbwWntiLXWK9YwGNwd9VqCQTnYqU+xzv/BUyv1ydMOhZzc7BEpc
I+RJwrJ97grVtYy5dF8+v2O8s1wFvQmhAK+Zg+KPXH3VbNAzjrPEGZg1xfxz
saFKLhefErlsBsweJchRJ9QvqVqJxnLahVazwePTc4SD5ws/plCh3m7UQLwe
9bMOMH4Zr0pMJmuCrmOs0G+72y1dBmtVm7WyZFKuRR2TMDZNzYY/5d5g2FsY
FbRtsoK22Hkwvq77S+FvgCFBtwUitgefPslPqBaiYXhOLtxTzlN4naV2Zsw0
WmE76iY02KfP06zO+O+v5h2CacvktmaHFSLl9QVxQLJ4oQhKPq6OpXqoEN6h
wqK3OmJHDo4ezPC/xw9m1qn9Wli/rYoeR/XwC6IWVSCmhlJLggvFa+dBeIvm
Ba5Nw+rCIGarbsMtnbgvHXPQu8/C8uDLV8AgSUZCaazaHV2iDGaTaVJHHigU
HHUIqmAbAb3tbK57noEH/jAELrCdHxeeM54aYkzsFnsqPzsnAfr7Ayh8227V
fWgRO+AfSXAtui14MbiavO12q6E63logpqrurnRmFbHBR3fGmFHshwFImdri
6bbN083i14KrkEfgSx44DZeTAXy/U8E5q1ZBCC+VEBtXkg5mv+72TbIU8x0w
y0AJVpbD9cEK/Dl5czBRHvuBi24PpFcVNVyGq3bLNT9gr3jhd2abc49a9FoD
Id8GNgpeihC1vc2ihwKSbhtJguSEuE4KQwKkTwZqRqeEjd1tQ+3IxxeyglzC
M18L4qWaU6mOXJngu1OqBn0kZAtdFmwDayN9j6E4RZ3ExtVJtMIoeZk5BLxl
4WYVX4lIIZ1nF+gMZaAzH6zWUvRTTGXN1p1F5/K2g6cAvaetVlKU4h3or4S/
JUcBFCaPGhyhmemTF+1+tbszJYUSJhfseKAZ2N/slJhz3XFeD12dFtLDOfU3
KFNmauXr7eacPBF6+X0g+kEliUJpLsnCinpwkC9LqaXkx0rV0ePH08Wb9gMb
qhzgG+TeD0IlqiCJxa4w4bQhPJ9qpYnDdSO5ODorUDGynhRZkLur/VB0bsMR
5qmLf8a3/hBnkJ1WnBPZ3SbISHcRR0GG+HJJmH7evHShWJlti+OogpDrDoeC
HG1XPleJ4ce2CfLCJzuUl7zE67wnaSwiMtWu7CfkrCJaTZ1yJdrJh5hyGnae
UQKWiG4ZwyEyHUfWnAm0DD+pBSAZ2wQZTgMjMRFtFZnabWdaoewanKZRcNlH
ioN8WM5XohaiVn6WTkE55spP9Od03KoUHUsB2xip8q2joDKrkdbYFpGXlLr3
PUKs3U5EPelRn7EjOorFjtnndI9TsNV/xuaBraTHp8fHEj+km3UENu3UEeYY
L4pOodAEBQr2QgEUZeBSnFw1EIrzcyJKQY9bMfALUNiwOeKYLzibEzbpdT+A
8PGGXHesdcMk+qDpSIMNQS0A0FcVQrBjbSFfQYYJD5+ZfphDAcZDOeubtRhF
UHolGTdBqa+2HaiKFOGJjGLmagxolRSzgowQBUVBK3Jt60BCAhYJ45d3dHte
9oLQSabKYXiNB66jubZZMlN4FNeTZ5/BhyI0YDUyGEcrp8lZcR+skCda8WU9
dWwFZDYJVf9TZxjM0f/htyIfxLdm7WRZgJB1UdWvcEoMHWxQLBoGln93UlRB
OAXtbjq30Sy/GUacOlnCj79i9BDB7EhPcVEup/24qvEGOrSB2FlLuIb7RmR1
lKJ8XG/4olPhSlqA1cYUB7vLm3LH8MIqxyNBtLtRLONg1HBI7zKXCHVOtG0M
4e/ddiOkPNSF815u7FZEriaYrAsvAAngxmS/EsaaiDIOL/hs1BbJB7lWG7Id
JC5BiqMbHEVBKPVFlb7dZteuUqgfKSG5uUo9V3uVHM/qRaYys+KpM7oybi0l
OGQYzsEdWGod6CgVJon3sNwgiQE8zxPWxWFlh3pG1pEKNIps8fHEzTllg9vW
ifMSTeV5/J3jduu7bFKmN98eVtLNaj/g+/4lmpGnzzFM2Pr3zVyas/F01bCC
ZH/+V2cvVKYPnTel9/5ppMmS8R9sCL5Faizo8Vty1jh6Vqd8ZJmmJBUTGV1x
9vbbrtA1HQGXcJPwkPzdOZI0yYuw/EDXZfAQwNzYqM6Xq7aYS1c+hxT4GOMP
M8IJaDoFGwrHutgq2SkfUW6f/FeOJUNrLokR4/5dVQ7Vi3DJ8A5CjEnFCAeT
p26uRYBIVS52x0B1h3Uj6y2bPSTTDVlRu8WVNwFHucp63zmr7vV+R3mkA7w0
pZwW/oP81thtbgYLQmX6NCVkJU41M+aHpNBxvNiBqx0iMTOOZKUgmi2t2/li
NSCRMg0nVeWMJBpx6l1+wEtv4Od7rT5Z2mfk8Vy0Ny2bCK/k0trGE6k5TXhS
7jDBoHKo6LpfunozmvJaFPkkfcEZEcVu4XryJJ+ihMk0x+yEqZk1XuCS0mnb
ZabsJiueSrcLPhW4nDzH7Srfs6IBDQBPVsWc4mVSycb7SxBG845a/lVdSswV
bGVGEXpjtArtChLg5CsiwLj5tMgtKukdOCtxCS1K4MowRhvEu5mGFCkrqiCT
DDB6yuOToyOu1z2Dvo+qbxXSMu/aSX6tc/KNwjekkKv8mSKbJzn4qO6vkQv7
bgeFJmAeOVV5SDs1O1hm6i6MLWtneSXBwiut0BVj2/0sscIzH5P+JXa6Ofj5
7JcHIFjmOUgTSWp5YDJiZ1uRi63fEYaFZp/+kcon7nbkrG0SW444LjS0RGsA
UgKAI+MvrNPLOMSpoZMn/yyTXJ9zYedrASgDG9V+fL9f3ryXbfEec1jhvKXA
yWf5bh9IqgqF0FqQQzl0iyL8gtv1h83zjyTuDTqaEKKU90TQUnWiUmcNx4eq
PI4SCiF7JPRHG92wfPy4DLQyppkLvG374deQ1o9DGLCrxR/CAB+jEmFiIlyG
6TzEKX6WzlIKVpc1xdnQpIG7lxV+wisazrsVZbJPbWRIBboeYC7o1YC9jBWU
nL/F1WbD2np+0D2HfTyxl+JLlS9FQUKZW1tO7nnx5sPD8OnTP9H//ilaj0ff
fndM3gV68tmPZIKY9gl7PsEZtWVJDHDxPy5vsh1XVl6XIkMtmix3wA9GCAZN
sOkLie3FLVCTPqt8Cp6w1KpWB3cxnSfuxMmC1Wp6MM8XKgBtLsKY50sPqH2U
y6zNrxgJf5Zy3Bj/kAgfcpVLdoxiRiQ/VI877/8gUkBPAG+sz4gILoVAgIxp
qfeGxB539oseFX00AbGFroQVK0KFubhWAvxn/rcZ1lz/m3Y//VvWXGI47i9h
fJ0WcbPKlcpVWOKNtie9byeiOXAJXvkGDUj4Vsl7zY4OwvNqOTcuGjMTNPva
KeKs9gSgmCzVP5kNrveZWiKoINZxBBANxWMI5tMG+ChTVP+Q+M29vBXAB3de
nGgYEl1I6YJ/bOdFGE1kMT48MgIjak4qdD+O50tCxD1ffSqQ+CYD/vY6nokt
CxOVZAAnSX0089YecL0wWCvoGfnRLO3tgacbjj1YKntK4oEPlXGnRAUH8GMZ
76QfhTDZj6kDO3r8jfJ3lwYjObFU2Bclol6S7OTOP4tyDRxFdH/+07M3L+mv
z/70Yv7ssO92F/Pd8OH2cq6ibH6zurmO+gHdpJutC7S+EYiUbw8tKQTn+Jhk
snqaT46OgcepAElMd4cffIn4BG9zePDNPdmgrlycFMno5WlUx1Am2JkSC/rN
uQWh2FV03dGm74frYYR0cXY3btZkL4X8ck178ckw7K8NqC/7MHnombxHoAhk
/zNqjXd8bVMQB9fJ6YkIU6Rc0g5HUPPkm+LvD+nuwE6tVJg6F3pAX5aJPs5F
ubTLlY4E250gZ4VTWWsOUgrMCqBHGuCQafigm44f+2P3cRc13p4rcEiQuN8y
omwhyaNUaYYCwCzxjViJo/QOTP2GQXiVQSqJgG1IkkXR6oUZgY2+1I3pBB4v
cTC6kra6ChYdj5N1Lpux2v94R9gQBFaRb6q03Z3WhN4p9QXMxIn5IYs9TRGl
qV6gVKvUyjDVilNJ2dnptC7lQWy5qntNCgHwgHs90znghVENw3s1Z02ShWEs
C2eqUTGUpVsKtConhaASepLANtJsOPLYruIDa96zfJdxVc9zAUSKVvDi6c9v
1Kw922yaP/eXzc+a7v/p635xfTNn6RVCsSWmZdS2Q9a8eP5vdO3xLeUSCAfd
4eXhjA9n0QF95oFsUMX25jk+vQWoolrNQUrG1npJ4/xNUcSRBkanQUV2Crbw
yeNUiaELKui4H+o9lshQNg4GC4CBBG9/2K8IqCN++s3FBer5BrUEOdDiqaQu
9wofS/sU1qLTrGVDq8nJKwFZb7US5vGAaMlNwelXSqP2l2s6w6SQu0Fwrxar
tr8e0vG6AurRYBR0XoIT3KwqZkzRTLFiNZbwiQO+dI8fH5+QecH/evjw4Sld
h4xh0VMd/vd+szNQkHJUK96dSh3uGb5CXdxs+8t+nSyKsvQh4aA6Z4amu4XG
ZiCVN1qkVfQ2r8Xm3VmADVyCtOcqG7Yzdet5BPh+TSHW1Sp2USOBGX5UyouE
Yy0uYkoEFJP6pWo+rHz/7YynhP0guuXid/5DPtN68Dzihe6wInUrlTuR/iQ9
ibd+MiiCU5XGs0TSc9UnTknvmCo33SahrXiB5AepYZqHL5Kl70RdOXFZ+84v
yHtfMo0sBSq7Gsz4IFdR8DNAP82UVkdju0W+C51FA51g+YYOFpMck1LP1HMY
lbNiNekskBvTdb92kIURiJ39fBu2IjSyBtkw1PU9ndEpJwH3aLzvGsSwIGU8
NHtS0XIIafIk5uMQ/QmIFWYAk7QRau4PwwgZrwCbULvt8y1GcskdRKUs4fvs
H1HercrPo8PT0XSkytUZ4z0LOVOZaBvpJ8PUJ581B9quVFBGNWih4M3awjVg
YKMkKZpvRh2cidSBXyWYV+zPT949f4+BJpsKIxh2GQxFpeHIZX1A2nP4Mu0Z
wbupPCV29ykRjdFRjFWePL8ysLdRdJVRLlebvXtPPpe6EeUul14tkQNAZQt9
LsBtVDE2tzmTvRQKUydjSlvyYZW2oFaBCywVXNZJyPgO/QzsrHS28Ejh1MuP
VAs6T686u+pq2zFVdCl1E8MRMsHiYMdtiMI39v1O/JNO2Un0QdHI1+2m8El0
/Q31bqAkEp36dyCi9YQPL55RgCQqjnOMZZgP28V80S+zqoqSusSFl3ZInTHL
tUgtAh5b4k9WtSZzMSBWatVxs/KVeSiHmivWJK1IIhPbsMbYcJlDsjzH8xuV
G6chR4UGmAoOPzCmf7Ezwe32JGckg7tRLD9zlHz6RH+e85+pSdnhgcl+i4uH
PVK1hpQogzS4uxtxhPjtFByhSnLGG+kXvLMbkk3I53+d2Fi5KNeeogGyUVWb
0pwv4VvXKI8WlK+gu9sRBxLNgDxofbHK81qmOhtr45nvM4B1w3Ci/K9C/8J5
F7o2LExHfTE0Ma7rpeOZpm7kU86k0wWx20QXYK0MFY1I6S4Y/cl5Q566xbnH
uWdyNSoTr7SUPisU0fnu7wdfYVFvV+KoTBmpvr8zMRCEPjRAOrgTycHRv7Ei
TWaj6NSDpqLpvxlJT+hg1kU5T7ttTk/m56i6Q9QH8e/sEheBJy9TIXr5P05U
h0tdCHcVqKXPrrvLTbwXd6rYR1GqPykJjpAQpCp7qVtyMsQxb989pnMAf5uN
RxFLfGfB9+LS2KN12m13RiBHarQ3NoJ7QBsyXI7RvStZmrvEuZQ1tEfXk8Ci
ngv6jpIKFUn64tXfnrx98eTV2TtozH8rJ/fYuoItevbynZQ9qXMDugrCLVVk
HX8wtuC/5CAI8CDTimMd4riOHzH0TZbIFpPXYUFhQApnIf9MVl8Bm0Set9/R
Rfri+dmP7LKLFytd+Iu9crNaF1jL5tJJIrjIWxJn4X+0/P+0/tL4K5stxbhD
ZafJQnUfu/gIM3meKUsV3SLFeJgQlB0Ut+EiHlQbPa2sBIOG5vjo+Kg5iJ8m
P9r27gES+yRCDFqwFPlafqDtRAW7xYmldXrNd2tD0o0D8uz8b8bvzYzgHQes
9Yghir6ydf8hkV9SF8i22Kyds3jc5n0AFBkMPsyq7a6rTfUPyNEdD7zxA6/1
YwgawtFCHOz66JkOk80yCzPHyfmf//Y//y2agk237Heb7ffNzQomF9f5xpNM
ibFUmto+qVkcwAs3+3NVEg///d9zoSZ7QW/QC7g0MlHVD4WsOkhn9cGMA0Zu
m/qDo6S2KhM0iIoODVfMXh6nIo7PiQJdKdXcRTDe8clabtsLUS8WAI8tHVwE
VxQ9YBTqm3imLi64u2VSEp6cI2JCRXXmCYlwfGqU+sHJ5dhba+2Zh3prGkue
ub/tLklgbkd7MBO2O6EWCXwZsT7dfyBTJcHGs1j3X/rdT/vzuEl/7Zt2F/7t
3w+udrub4fs//vEybu79+WHUm/5II7q9/CNZ5XOesz/SC3+ETFRBhExVujrb
bU8uw/lLZNA3L6LgJxfmcyGDJ08s/ynxwxd8p7StjaHg+hoKJli34k6Wxjk9
v9EWMFSivo7nCn7iIN/gvW9eT3s+A+EoHjV/R1hhuttuKyYkLBwKnR86iFTZ
JW3EPiVbmr2Ru9vN+K4gURmUPQN6En0vfQ4/0Ow3J1G+XrZsUcsLo+9xPwIJ
WY5KwRmYjU2ZIZbJNZvIcM6RsQPCTE1kj4KLq7MGrutLiYwaceF2056VNo9n
zcmseQiX4mO5AExc8agezcJxfOD0CA89OgFQQ+aevDFIIeuQexVtE9kz0dy9
jjfH7783/F/RzFf1V8afNJHY3d+akz/HVn9rZDf+1vzCUL0/0/X0mxQdKP/v
t/Db93P6P/kf9x+Vf7m/x+9FlS420BxLS80j325zNH90Ovpcg/eO8cCJPnn8
MH/v+NHp4/JVeu+Yv/dQnzw9Kt47+vb024fHj09Oi/f4e4+tnyf5ew8fHR8/
evzo6Pjxw5NvTx9/+93RaXzv0/fN18VSNLt+t+r+9NU7+SeojPMzP3wVj3gm
L3FrMmswbXUj51mcNMffNd8umm/iUbigSegeN48X0Bmu4tvEABhP64Oongld
+0asbfxdtvfxN8cnjx8/Pvruu4fH331z8uibkx/4cEExyT743bL59qI57cK3
qCmtbT787uHjbx+fnp7+YMc2f+/b8+Y8e+P4m5PvTn+wmm1iw+Glk2/8g6ff
NgfkRN84kZC3/fAovkLy9LmBdWBNA7szxz9hcK6T6kM/m6Xy+4NCZd5LhVw+
qmz6CYUOu76daBQxLmGsHxEHGBJClAMDZA0RMCLeQvFWWeip9TKgECCCfU9c
p+f95ZxCiu36gdVeYkb3AWeaE5UhjcjbkNaeum2WjplvMlhFFpkPUbAxihvC
oF7xhW43Ek3ks86uJxmpu53eeMC8dk3knlieKP3SHNECn/yvRyfzY2f8y3vE
5iAg85SMww4PLmO6NWg+W+OM774rp/UYG9RL9+BwV/3OiA4Kg9IhS3zVBKm9
cJeATZwsAKRNeU2l4gKuHQsMcBdH30hIpongUfPN4UOy+gozi8Fmib2GdYAi
VZr8vInJQcdqlVDj8erBzc+gDVL5sVIWUVUbd9Fl9SfuoUvGds17kXgQuZhC
lxWuchMGa4DAW4241FZ3IsrG0zrz9NQuUCyk9bTxmKeWiYUEURm0LDrXukXJ
qqsoaaPA5mYdVQGM/Kz6bx6c9/ExLeDSrUEylY/fLl8Diow3224TuPgaRSyI
fiRVfU15+b7rWfapsbDhN8IZa2Vz8WjOEgCitkdTF/shAcnIrCKtA6XqbUtA
0a2oWumUIV/hck9+6KJ8V8YtldEDowVk3wpjU8lq4DF1FBhyBU1qVRVleEcf
2/Pu8fliFhIGNCODcd2Ozy6+WRydJCaU8jjpLHGmvzkxuDTrD2znC5Dv5CEc
XdOzbDgUqTh7b7e6xxeI8u8cNYphIL0BOBZgZL0uE8JadpjKMUImFOIKCvH4
74IixGFQvzBJRglGhnwLjCSjiJ5ZMrm5zwTYZZ1aMxy0mGP+9URXCR+wx1U4
vGeXqh6/tYGyh7U6oIzSMWtUzH55I800POSLzjzCaQnSbM/qa8GSDJfJRa98
y10xTiuixahpQhcPluew7j7uEmuljhQLRj+F4icFfkLAjcuE6SeRoBjP+phK
JPi3Pzvn8VguR0eGN/Djk4vTo65FiG6iTGg8TnMzcfi1785PT8z/rbMH1wA1
SL8ehufc2+Zm6PbLDdQ/f/6lF0vVXyRMp0xxxBqI9+eZMjLX5w1T/ZL0kJ94
zd+I5P30tQ/ghPCf9H9h/GTzKTT6F9IYG8qO/FO0AeOff+w/xjGREeb+iCYU
KUVMxQcnD+jv9N/zd8qpCxvt4CF+UY/OwSk/+ezpi2dq1B085j+5iFsevjs4
Ojw8fnSEp96NX6yG/NI7v8u4yfa5iFqrmxO1fSpTwpozGT4vU0jLRSQ9CUl+
w5kkg5HkSUTISeAL5+CcupJAYMRQEsRZMO4/Zh3prBq0pylgV1EZCCI0MP6d
oneKBt+wuyUrG6tco9ro3LgO6fzr2r1y/mXZvXNxNJvm5nJQ91G+0ncuaAeJ
e0VlCZshqbgrZlBhPD6GqJArNv80nZ+tgu9DcJs2/ut7jLDmnyFP5WNKfubM
hqjoH+TemgfMVgxBdgw8ZOP7QcqKnQT7EqSdtP4wa901hvQtHmUmTSjRnmUJ
MbTCXRrfotY0XioBeHlZp1U9iHQbaVqML7JSns28t7BWcS5dnW3CzQ6/skg7
zcZhiDfLliGC7KBDwj813j3sNNiCEybyCk+wOTASDtY1Ls+Y4g5TnTu68J0D
ZzU1qk7p5Dm2luHj0w1MqqMG+NhWddGXofDfqc8RDxLptEA/B4FmOM82PtJj
ibi6wNIjha9End52gwZPiRJbPeG8l80oBRkKFtKJSBsORp7Ogfewa412PkLq
zBTXnWhfTsTGLuQCszIh/U4nQdtLfkd21z+muUQhHgmXil3NiV0+4EoeRc17
36cyJZqmdnJEu2qEx5D6lqmRTDjI/uAWHdQ2tnRyJHlfRH+VlJ3DaLJuUZw1
QZIyHkGpR51DG7QOD3O05GHkfi2uEQY/3nRE4cPytRYCppVXA2LywrPlnr4S
ebX8zvU3Kv/K+TLEKy+G8RH+dGL5gGtZ18N4Zq2P8eim0c/75eC5qIR7RNDH
Ozsf1BZsdmacjYN792W7d3qE9+3n2A3Z0dW7/x/eysS/wXv5v2Mn04yzc+f/
X/u5tha29vcslN/F7yZ2cdrD4Er5v7eL3R7Ghp7exS+KS1eE/azQR278bZhK
nbqlpageUpm75fcU1oDW/FvzipB5k//3mznYqr+G3xC1+H4qnPG5cEcKetDV
Gr+mmbFTvTGPqEA945xmMYnYzDGCD6TRTg/Kmjna7na+jdTMSXwsQaA+04wD
ZxXNnFKIqNtF6/kLekP4zru8OxwwGakz95gNtK4Il9Cel7XH6Ymypc5RPmAf
zzJJCCA8w6UqB0ZcEarViAIBHuox/A47T7bv3HEisheFJYC04DnRWFaTUqLv
JiXrHfJ7RxAerUzAjOPg2zDlFeImwZE8VAjiZ6z9aNATf2m9C0kVpoJvAvaX
apdISHGacvDqKznxUYDF645RX79uyV8wJGXcGihZ0fPTLxgLIr0SXlhvYk7p
7yJKgrNwhs7zGZiRY6CYpDN/Tos/WpSKsiEzBLF1TSjSm1VnApylF1uJ4vIq
KtiyqTnyK2W4/tgcBwNyzBU2m8SuFexqdnKlIq0YT1AKRwkHVEVBLtObnedf
b6zQbws0QTKxFI8y0HjFmwcnNRxiCJsTzUEKEIyHORPwmSMIpXieqCIkzsfZ
+IeA+Ldc1lMKmus38HlgI7QPsamx007wQUIb4GjyNkrpkedVfIcEglQzVIMx
eezMKWYv1sX1JcBzNfzyF7EphTtpFGGKxqVM7/TGPK2Zl07Fy/zERHgpsZTc
7lAtbUbfhN6mAAl1TFJoIDE0sM1V+4TBnlQBSHE5iXR+tnP67lC6jlWvmHkP
5tTxIivqCw5Y9XhFqz/XtPP+FrCwhG/e+THmC831u96IcGVZ9MDmJ1+PKRAN
FcdM0A8LyIIVP/ua9bu6JkMWMoVwPaw8fdVKzdILxmm1K+IvdkfJ+KtxG40c
57UyqvdNemWiJ7ovcwUnQmWqRd3V+CyfDV709nzzQWui19xw6r/VoLdcLhTe
rz6f3O79+gp3cZQ/8DWVt3wD/i8Vsud3QbGVSDI2NHqGiGvv+6YlhXmXIk/R
VSulEJJrXTSA+8fQWtYXX/gC/vSXgVmRrWE3VUI4yrMEtGYk50ytDshnLRDO
v2m66aq9E1rAe4fd041N7uf7lm/a/f7LGt7mg29HXvT4xNF/yZN+cvTwH3el
p5dsxrLOHB4eiqcdKrNuJ2cpCvREdefp6VDtWdUFrIvMgx2poVuxUrKNK7W5
pvQ7v4BUTFSAtGB4K9G0uXwG81dmRitvcNWXDHy72Yzi+4XfeNjw7preDwPl
aXXt1liS6TSkGAt3J9/7/JnP7bNSc7IMhQrrj68XKOqR0pbdY6aL61L3tSs0
IWv0GW+VBCCSPla1cHQcKB3lqMOnG7dLjmOH4wofYq2SpqWbxbYPanmw3KAy
PYurjSqDeaLKAGacweDZw+aaUCnDfttyvlKOGrdAplMX2GCR5+5ZyduWZZOm
KXIn12UCP7PwDZprMM4Dae8Mgv40H0rJSmDeqAAqqNm9+5dTb7g+X9GuxcHY
68SIjJMyS7/QRT4n4imwQM+K397A87y8bs6VXO/wM5dfYp/opAhVhXXWU4uG
fJO8dRTSbD8XjGKURjtu1l2PYdyrz993vpCJnd6RzibyXDilHGu0mPpZyLIW
cCMpfYjYwKCFkykSed98chLrwAAYsG0VtUVyKjZj5EkgL1LW79sH6/yiD7UM
uyB+icrVI76JVrQ7YwHxe9/7NCWJVfQuXd1S11InGFLiiy2AhCUfP1RLCIai
QxBQJsKLnZDPcbiV/S9P3/7rm7PXiqNXFYR6rIyMKLeCaSUbWqiFf+3uyBEN
JjAuwqtNx+08ODZorv/IeBG6tctR/jcgAlRDyfwXChWoqsDy2/+LYAGqh0I1
k/Wl3v3t4PAQ/8p/ywdy8Pjw8DQboZpQ/HZSkWT7FGpRvgyqChW7Kym1uY85
7rIu6uUC8JJuIh+ebyBvw2tigfP2ZREXW7T0fr5YQaC9f3aoS8x3kkLmrtwh
vwzx2tuN83GpmPJ+u91ovCghkRYFxuKTycQNbutOA0y5gcbtiFFuxr5yilty
BRxHzMO/wxuJgB/xoJxt0x9OIXoVpnlVI7M9JdGpDb7yg2kUeYTIJEryzynu
Th1blUaZi1cPODNeOrsU3ipjPxj7su7zZMkamKWec5+iK1xmpB0syX91p9QV
QjfAvnjfm6JqbnIMyLFxngFjb3HhL0RoXLxKqpy31zcMrDu3VMf5ft3e0g68
7pfLVXe++UhejJKGOHd4ciH1FEbykP3kOAZ050Bbon89uD8BVXab80zY3a5l
dUovRpwr7G8q/WaFHGInhDOa9UHJDDC2EOioqzglKykXslMSHm1A+XmsBSV2
GF0xqiqU5KkoUy+ZnTW7O2q9qn9P5u1apjhzQSqxZouCPwNckhAfBL8NuQjU
U17/hCazW9XZc8sUtGquIe2mwSGUswqN2bY9KANGD7yGw2SavVXaLFXDdd1l
IY8RfDtIS9DfoSaJp77crCLA8yH7+59V9aD8E9bOFtjCXVSEAA3eThTiFhKR
4vCNCXTTgmVKC5VXEPXlgVuuMJ2/Lcs1c2UHkFpG1hihqF68+stMqV1Yt6mT
5QqQjrjUbgiEg4L2eRzBC1tSXEP9hqXllxBZYpKZlq8gt9pvSfQFijcgTtHv
6oEDmVolVkADepPYvmhXt+3dMDnF+VHD/YPSVnQgV6sUMKNPfPb0JXUgZB8Z
XEfOu0voHTsxSOmCIz1WSX9dKDaOz+p3ap5AdkjaqGCuVhscrrdkawwCvpax
M18ooOdsZ9HJEIKC6lEYRkdEqoZZdQKiQpmYBhR21acpJlEo4DSvkAZu6MH4
uzA4l7tQ0d6z6OrFCslzaSRK9mI1JJ4Qnd4mY/dOsF7Ze94E0Vnj+hFM2q0J
BUzwb7w85RyB+mmXRJdYICUFiVT65hXMqlTc/4GgH0j+IhOPlW+cXbkElUHo
LKKyr8UUg85d3OO3bc+LkqVXUOnL5mK/rdjmkhWMqyConKTc7juUksa1LAQ5
hURwt7VhdQ12ybQyGix4eHh8pGx66dqPSgGUdWHyvmPeMcl2uCsKcgctyA1a
wjwA9OjwG9d2VviZWNNQcXy0f0meW29ZkYmTJOignNlqjh0RvEKTj1bsYoZ5
mDkMMAdtxCNfEfOLDeHjmUTUzRcfRgZMUxgw/6D9EsbxFra++8QwwH6tr1CJ
7yuey3pJB72mUaMuseL44+3KBiQ5I0RGZHg3T+xdyG4iOLEHZ15ganFnLu+5
7f6D6SIotISSgXJVv3O75MSI5GKzx6fEq//44cNHyRUSV3OvPGKyZhguIh9E
kkyuQGb2EhcBP/Tf6yA4/v+eg+C/x/yn41LY/n5+vxqnrdK6ydly1PKaBcDq
OQrJcPnZuDGP86fdHfMEOq6pGa5ktNd1Z9lZLnnNLPswoIzFZuskTBmMsetJ
4itEcnN9s2OYIu54EVuh+CL6aZcTl9kceQfyWjTkX6RGqxmzIpHcXPKXXMG6
AImnAkEJTfN+MR3NZqelhtqUyEjHyZOFbkI+qa7MTGpNEINSByjrsdjVC5TS
omOp80+SJIqmfshyT909dSFqYN51JSiGDKPvkcnA94FUwALZyWgCEnqL5Cx5
QtzEC45Fd1F2HQtPZfzfvCNjorfgid4KH3Ri2WGNQDhz8iZ3WtuVL5kicw1x
ZWiKzB8OD5AC9ev+oqyBkNGVFNunzfYgRYZUP/eVWPc3Rsm3325dsFqLuXHW
vN4fpnXiDqplrmE8+2FWnBteRdV1JP+XL/u8DUcbMD5FOJiVRet33LPBa32+
EHZUIfXSNBFQMo8UHeagjMGOmOlQDeUgWgxazT4kKYHkzqBAnFsHaVEMCFdb
D5z9/uszdyZaLg6E/eyCN5T9597gEn/tOKk3fywFM31tmawh5zoQ0chWY9t8
6Dcrwz0SrbUkf+NeHuo2JWkSpCrcEHJ7y2zGuGsvijn68eXrf3kfreezt69f
vn/+9u3rt0yTbyzVA3XjGgWL5IsPlHgz6exlRCRZfzSsEYXhF+uCJ/8FXfCL
lcEqEu4+ZbCUZgiq3G9MD83/Ye/dmxs5jnzR//tT9JUijoY2QAPgc6TVnktx
OBbDMyQPSXvts9fLbQINsi0ATaOBmaFl7We/lc/Kqq4GyZG1dzfO9UasJKK7
uh5Z+c5fRvRP6j1FEEmZau/iP0ahGv2fqlDpIURaldloVZu8joUlmMozwrL9
NgUzG5YkIdEm9DkL2YqMx+DzPkky2B0opLUsaB/HHqOnioKQybSmbmJGnmtk
7iWt5IaEzYVobm4XqofK9HGjYb7pTBIJGyKFie4mOyKRhfgR8N8allNo6mab
CzncPsTLI93UDQqtNz4uIiGHCrHU769NoV9rHOOBE9PL71tC+rbco+RCiLY8
NMXJ0rf9BNCzmaln0zFi7wHdbh0lIZqrmyrtAt022MbppOn2sMiNA3cnCJks
4bh855TQlmflFbkAY9/UT1u9Dp8EVNm2Z/FiT4W9fpucNOy2IF08Fl3kywex
FTj7CRuXhBb/KazVikXXzrYJ52fUoBB7pAVtrCFaZiALrZ5kJJAlQ7hCmb8p
Eu4vcEcexf0qfRn6oR8WWGS47H+MrNmxGYr/n9f553x0YbCe/naqwbPr4g5w
5Q8D2YGbGMkNu2FftCnjVXMPjAZje/Z1cPRpOM+qs94Mt+6rn5fkeLrIJJgu
oXOOqKv+YfQtFFhWLwrqTTJTb6LbSLF2p4I+FH9dB3HeyDu1poCWNgbx/rKv
GrkD2zJ0cBr4CfBckaJmqNQ/Jiim7bx3cpb7vq12gCDx8aF+WM+wfHtzNqHa
4m0RlhknoIVs78ybZDnXzmbw0zKRnXH8LuhukJA4Ljd9JfPJlWFNqiS5/XXt
vs3U8ZTuINDNoTD067aunLCvZng7cLuM6HyqTFdBr8fJuaaq4GSHot3loKiZ
ovjGfKZr9qxM13BFG3NcM/tqotW1dEtFL1aQEOckOSqK9ltNHCaWJRaxOW7j
xYnQJMRO1+C1id0kPB1x2JjITgbDhGHncGpFE4RyZGqxQ8TObFPWX7zHYXTc
5/llJs+P7jxI/Vnq0ocEym5zE6KCEB7mdbe+bzrF6cmypxLWM6X29GXaWvAf
KIM2s25M+5HYM+J7tvkWtY+WhsLtbx1dltlEdx0k8Ra340sJRPF7OJYBIG/C
xSFL4vMYM+HcTypwrKHOYvKXNdsEJMNthfktgO2MPaJiRmKakzeat+LOFLkF
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
GtkXPadjasJ/ptXnvnlh9UD98qb2IkaYtbSoy5Ori/OzK16T7xSLR8KF6iVA
yEUeL6yUf0P7o3dAB0tcAR3LUF34cU/xt1ua/VotpFweDeEiOopM6tJOV9Kb
vJekXL8URHmyAEVwh5IHHG6Gof0tS/zxolu0f/s07fslGtKPBvaUf6oydcWn
nDxMHw1z77FEsO+kFx1LSHbWCgNOWN5CUtnnYAAYNnz87lwW62OvRrnB5J8O
nb41TERRYw69TpCXuj0BZ4rESn2qtJm/Yv8xIiIJztZ3BDmDbCKfIjq22F5Y
cchgjVj6rmjv1PWoeGSHCLpFodAToWAzfuGVwsienXNcCAJLW11zCoxIM6dJ
1p6TtmzXb1hMQ9wYRFOEiW4L6TGUskl1M5la0BMHk7UEugYQG3APucNe1GyM
c7rULRyegeJRdq80GVNt0Y2icyUJLnFtxxhVnSCWcwvA9F/pLXnjzxT5QUS5
i/slOAlCfJnwtySqVzRhxfdKz9cgfXVsyhOSsBNNL48iK0QeGAqNYUQpkx5X
NiUYUm6iiVInSMM96iJTkwwwJlLDoCkgCEjJLkEjYzso6VMd4vBtHB6isfyB
ifmAH74bWJVWjZ/34aIWDGCWeWJ4Lposxqz5Zhon7GpZ3d2RuQxcFv3JWdA7
YpC/Cnu/Y6AcpJlPQwg6M/uiNQ0m5BGgw3oB/QEWzE4ScIljWhDJjXijEbhD
NnjLCx2B11ppxThade078nMq15n6Hmg8D4Hke3Z1ygbfabFxC15pbwjfocvZ
i1Q54Yar5QcqhkFHEHpZJFFaW0N+KKpZIdA+RTjDeAd46ffrebHog0sMXwTG
WbDFB4MIWq9NbSsaK5iqxpc0YXcR2cOpibQ6E6KuG0pVhZVDeQWg0rj5gqx7
rNlP7TkD7CMOzmlO0JUy//312/6h1nE59g8n8+OP/9fl2+Od/dFrDcm/lI4C
KoLVoJC8RQjxFTuNEM8SBOUQ/0WCWk5RA/nUv353Ba3rr3iTdrcEUKEIe1z7
lN3i1hlOWGBkNjfleQsqujKYHjtMN2keyNS2WBIvLE9xbOno4uLd6THqQoJC
srAwaUg9ceM41pq+Pzp7c/X90e9Obt6cn8knRWXSOffBvfqTeCUwvV3bSCRH
UHWp3DIqgtuZaSU9cLmK3aMeSoSf2n8SC0kOrvbVojYux8z0XVdLxZx+oITS
IrZDfCqN+xZZ8ru35bTGUm9oIbxKuVQVBM+7DLLAZZAc9zOiS3B0J4Dhg9FO
0nS5QTALbQ41EONqytm0z9n12LaWpUfLJeIkBq4RG+dmWJMEbaVXmsL26Lb+
U859ZvhTvC8VZec06zH0l56uZ9iUA5tNg8NWcIXwdEyfRekDtQoQ0mlozrZb
YR2iGMWLLOkoKrwaUPhaHyOV0A8vviBS/nUH3U+4eZx6IJeadg+y+kIRi8dL
wBpkgGcWkxsxVijzK9o+sTEjZxd/R4N4mW996S9PhTH3GTSuXKDZ7g1827Db
r8mL5iZTnRweTQQLoTuEvMj7PHdn4UwbrApyUmSMlRyl12s8Ti94kF55tAFv
wTRbmsYRZCW4G+TIkA2LGqjOT1vaDOrnM/m8OgvCL2sVI1xQaMtcG18xfIdb
bjeZMSNYBYQoyBogUf3XWUDRAzBKtUQFAnstCbq3N237okyaIWjqgX9Ddw2Y
BzY6beyWy00Sx/HYN//2CMU+kYf1Edu/dlVnAvtCnJPQkdn2KeMPSaAeN7bm
DAJsKI5zhv5pQqutSQqAMqtlbQwDPhF1V2dsO+gs6PadHp1BGPWuaqBttTEo
fR90Tv+as6PBULRUuDgdoOjTxLj2NL9W8vb6B7gBrKrNvNLLUVrW/iiZpKVC
RZq1zyrC4fe2BHEP/bIdmG5T8ajZTCCdO4wtOrymVAvfHYu4Z9tQI1B9JXY8
4KxtSa5Z2L8A9Wa8a62PevaS9lxAqrvxXfjeLHyk3sWASi7bGdnp2fXJ5dnR
Oz+34ZYGdnRywO/XcLWQtumWqXeDsRiRv2PXvcW6VNdCkOYFuWUnl384ubz5
7vdXf4KPjbZMFAnlMai1mrt1u24eCadIe92PEUoclrAIIpBw8ok6bfeNnfZm
++SgsGK7WpnCvmqBnNwUkiMQch6VVkeVW1puYVN63Sx2N8xCBKIkzy1DOPTc
ICXBvNA4MdMKstWlhjwM6gs0g7uQfoYWDc/NcO+lM9SwN/EYyfvLuXLXlEhi
H1AYwGf3EUqJAJRkgGPsqPDq9H+bGe1vnFGAuWVc1b62XrdsJT0xxc1pc3g8
aqG70+fLVCZV63Po+Uj29glikwYQUTcrbjtKOAsevNJP/6PJmjBVt8+bItiv
y2dM0adb2cnWqoLwBNxwZs/gvFK4W+7MDp5BRbq622JCjazmBdaotkt0dS2Y
4ab6oaNjdJ6GklUwavBW+w6IKJS4STLsO8PSEbSc6VDOxv4Ys4YRXBakyeXR
2dXF+eX1zcURLPkawMZlsYcbFpuqn+WVgzM1WnpPhTQhJEtKMCdEISkQWGiJ
AAnYhZXjQ04KO6Kpl489DrkSQB89AwAr+JT71G01cUyF0vAaUuecBo0+FJEH
QYg05mGvPbcO+tjaJBAN+LL9hnq2R3mzWFWw0jHUD9z4MW6qyY1U/LTtKZjE
UXvPAWYX8TJCz3agys0qIKmQZ41rylO5BfKm+mlxWhi1AKXkH47euf0gAGQ3
ie+2qHEcCy1D4Zcl6EjXAs9dCOy2mPhi6vABg4LVcgq4Dxz7rbZeDCD5lOsS
9cxJrBVQJqy609OI+fC1N+09hXuUEJNuSSEavchN9EWtgZf4L3md4o9/9Ovp
6qUwLaoZ5TT7DqejvX3TbhsIe/mB8kQRGoLbzFgdTk9QnBQdX1OTE/cmZ90T
zVxS6KhekIoL3Flev7sK0lT92GZQCHPk2skYVQh1TG0fwoKs1wokMUpDVI0D
/zJlwrKfzr1GyjfhPYDeE5HngrRbNmREKaXfe45IHY0Ctrt7fQz5zaRCE54J
bPgJP70gD01DNrIgqmP6vN9Xtq5qgeGUHn8+BA2DE47LelH9FaPVE8y8PqGd
FZOG+RQ05CLziT9vBtCv8lKPmAdWaIoS325K826vZSmIraL51AVHL2eZmKe+
ls9JgF6O7SMCOwnOu83O8eDByt+mzmkzx4BxaOEfNAHliNNgk4GswBczZ3Ou
0LVnXAHqHl8v2JEgPo6QSwkBgJPpif5J2G82CmOETZcScZDNthb5fFYI/Qd2
oBh/lkPZsQDypJyiXyHFxOB4nzOd4Aq21RufzxA2OtxizNlEgzh5IWzjtYUV
rej6fH641Q/WjkZukdXrOMJ6Cf6QY2gIMCkpM6chJ6+ykjflAj3CU/R8VmPw
9VovL55eQ5og8iF2OxRrN2FMdFgFSgh1+vVJVL6JtNtnNqGy4g68tSBQ5eMN
fRzUzgV7dro4Kob/0OHqFBb4nHr/Gml34MhXG0BHbauDefcoi2/GwRjpnC1J
UKQMOr0JBlpS1q67j6DHMgDAp6pZhTlQjc9DD6PN1hQgV4POmjggm5xNPceb
Gezv6fH7Cx+SINumGs8f+g/z1XqCNMR3BG+vMix+JSOPj9NES1mrph0Q3Dry
OSEwnxq0CkwAnGfG86QGRlES7KtEQZW0iFyWCGtVC/obdMIgV8IPuO5yvCzh
9q+qGauSJDOzNz5mYqui7QYTIUjbZyY+T3E5E1xGZ8l1LVNBTF59rJc/YHob
aAWzWdiuWoLdbjjcV/KKZF4ONcVHyornFuvShAY+Yt3LVJlB+CqoFhKgWjok
1NSGQEDpEdKWI1WqtqB51s4K1sV14/V6CaTp7u8TqZ/EAlHyLqs5JKyRw91Z
kO1tha3EZCO+K1355eTIojmjtAeBmUkGESQmMNJAIemZJ9TRbUommOi2MP+Y
8iS0mlmCRXogem1CduAbND2xEayjwBzLJveAs8ZrZez9MaxCQhpVw9YtESVv
GjXIY9HyByfe4Gtn5V0NQKiVxoIF5e2pFN0wsCeZuuCYnJGtgttJxkFGivp6
8QDgPGPgR6V0gZGM/oXN2X9YLx9kQWW4gagUZ5v4NOskbDKxDPuhfFSVGHDF
UMumbAnKJTYLxGMuZquWro3X8wNtXRQ/8nfGUZYt49PAE9KSZ662gNE3DpQ4
CqJAldjIKCumq3K5UTKJWAId9CLcLM4HyEK2Dluk/V/hJaYSMydpATAtmntW
V1i0AmBYDb6VplkvvdFpgvKhvwHYFPxnRCuge3BQqq7B60eE15RWYhsXP7QJ
0RZEVP2EO8WsIBCYdNCZxL5kVwP2+oAVRu1ibhIN1hnEoRkIuMsXgDE+1JB2
WGF3SIz7Bccp4SbiAnQfQvG7TZ58pifYNPxduh4hQAoa/nQQTc2WyIq0eI5H
lp8ckfJHjUKCnweLE1EfZDGhcuAUs3tx1bktAmcBRWLfcjcI1maWnCHZRX6q
yVrjj+1Z2xQqo+Ughy7mD2TtJVl2FnWXCtDoUNHAmTsr5b6e2J1CDZE2kA8e
VpWRSBQdCkhWw5BWTpyyU0oOkkMlBkQXiNY3TqYEjmAuAonneQf94P1YUhzr
6HNSj9dz6o+AFg54caZiHxzhOWN8SslOW2bFlE3sEwswTaI86TpON+Lf+v43
UI9wVxQlkCPDQAozLQk8vdBxq5VC5xRjspnp3sNHQH9ZISgI8qpqXhLJ+Jlj
gRiBbrvnMOklAc/Oc3F3xVFOPdW8O+SkPJOwf9jCmbH8Q2a1kFdOrXfz2NL7
Jqlg9gqv7tdNcI+1BDsT7EQpKFso8qwJiX6sFpP641fuurnLee+xjhE7mfPZ
cRroCqEEDw7rCugIqP93bBuT0QdChdSZ29A+cPsP0UigQQsP2nXwG/umAb2d
P7ghwJAYo5PZEFxYmuI9zaXXZioPl+7daKaMHatoW6Fj3FC6zVrGD84STL3k
fK2PIk1YkcwgJOz2t4mBjY/+lDc/VA8iUMhl25A7K8YIUBaRUYcmjs8nMiDw
DlTzudNUQNPjZN5WshphDrwgOVxOQ4c2SbwI2OX0iFm9dJOjg2g45Yz+g71I
bjoUIXBb71/48cerd+f/8u788hQYL/hn3XJ/KMsHYDmPFnlG5N0KSn1XRmFF
pC63+fdQde+emPOfGqwLhX8KjNA2S2mdGFVFlp+c2Y+6hQjkUNwBMXNWvWIh
uRsFmNEezRzd5WABu/lC81paSfGhriZh9HeKYRR5XHQxshOrxYd69qFUEsAS
Y4ZMb+SOggVeTNZ46QXMNnCJ0dUGPSijFniEdEmtEbyqA5SLAQe30+upmxCJ
Mw3asDbQVIgRDNfi3k0SWig2+O42x/8n5cOsfpxjL8MnOURpzp6PoQfZTvfY
y4ZKursBp8bcMtFnn0nqpxu0F3okUmEQtL+pBawVD4pgRYkTYEtW8wfMnXY2
K+RU8ttsiPPpkwtnSkmx5aTlvjCDQiY++ax0vHYCLTBFa4qFQzhF6FE+4KHy
KDD5dlncqaMSLwPktTbl/NbRiN5JEMcQ4Wkg63MmZECcD5VUMmFEJ5zyoI2H
+pJAg6Er5JhOr3BHDpwORlipgc1hB6dIzOvlIzKCajXnvnq/cWpV6JzAKn6c
frXwGW0EPb9aroFCuYbfrkNBBFIrocQEFQLqCjCB1nBpuS7NEawkTNFO4SHU
ZOODu8kPOwkGmWK6l4VJ2bYMEahI5ozEx7cEtKtp+ib7jAGw0XxOM+2r4yHf
Oyr5AFUr4Aozo+PtAD2yT3svJwGUqNG+yKHOrXAkOeXublneadU9o7UBtwCv
gswk05mgf8x/cM7Yz26Au0dkuE5DY1NoBQqXk6gYaUXNFhqTlYH6jMDCKPLA
9QgK6hIPw5qtH9YzYM6sV1K0APFIp+G1wN1/IdcSkSDN5uyIbFOBcH9vXuEg
NVgPDYkGEAKobvt9wftPm9bLAk1JezQuC0LHDOnfsctJOSseqWRbLjmAOEZd
tTV6AU/el465g7oEgf3Gt64QpcyZMnoP/aggUmEoyG2r50EqYMh/jv1ZW93f
XNJAT0H5PKstZ4Ho0Kd7x0xWdCWB4JCVZbESnBwUt5wwc9gDR54L9O8RW2HU
jlAe9CgQ7MhvAWzcnYN7GKjo6k9ncC1qVvNIX3DPXh9fIFz3ck5BJZFIdNFs
BRbDoVT0XNFQHYGvmQl6Iur9ZQ2QooKKr7gsc9/2B2TyPVjUaBU6DdmtYtbu
PAJmC3HnsEsWXuOwVixEZarX2L1CCucxvsC/Ul4KqAGOkGlDPe8DXBHf34qM
aO+yJJ3MbRLNujSs13ePlczEKBfJjfnBJCRdO9OnR0cbJpr1VB/iKe0O8H8M
wz50N3s2Ewk5zOjsTEOlZCcK5t1enaDECN/uqZHogORVsLV14/SXG37qBobG
m5b6cb2okjkpLbLJEO4D7RG3SohjUULe+BHLrk6n5E1d5H9ZT5z0RAdrj+Ma
lBqnwgaFGPmiIpReK6WJZVr5os1iS6m1qQGABXCw4A5Sf5QWV7dRxYYdPwrP
b+8nUp5uPJYyQ5ZKKuS2btCZLWmocKaQCXBbE/YABiDmoIrfCdUjANGsvHNb
MIctwMRO9xQzN0eYn8AdTmEhj5NZ3EqgWmqYBLAFFgLeM+I2xJIbDBhQrqi7
ShlYa3BtFk5bvwWlFQWV487FeOU7CCG/a/XLyLL3sgCYC1Y4GeBOjoYQLBsI
cx4IloSWA5oaIImUF2Ufi0evcaO3IrA1UAUnqQgqkFUMiICo6tSseFw3LKtj
LRDiZni01QL9vI5pN5z64qb8sZoQ0ESznj9IBo0Q5IJW0iOTlusXkb5AIUaO
PSMCl7PIWHwEUyvcJoORBW2iqhnSPBfLxlSALm63fiGYXiv6z0oCiuUMFs0R
Wn/y3EmFYFnv0LRAzxSCXoDi5B50v/91XbijWFXUNRus3EW96LtXJmviLGL4
Yx8BwtH8UAaRVQjzqPoDzgSjHUqxJ0UkxDsVW/so1N3pT9yBPRhvg5bFUJY/
xE/EE3IGZdqhiw8yFxqOmffL8YLKwWE1PrKF8JxwdI4bVA9kSqJ3SWooT47P
MIWAl8N65+lFdu80RYkhT2eE4uLV8a/YCpVit+H+4U8/YWhgjRFD/RzpcZQu
UAmJ4XcodwpTebZl5u6hPoT+Q2/bZE3siy5b4DLHDcZqBfCyusVkZjHgAiCS
Tkwc+LUfWE/dBjgwFCWNyZY9bjUbbS/BYJXEE5ZS5RGPrAFdDLAtqzvMKSXZ
78uNNHiihHYt9Uy9OAZPeG04XnCGgoRDYTYJwktFg7sL4KRdYQqrCWvQl4tV
5t9AoI52IZQHKQKSUydUBHt47nZiBnKCck1q/M+fLIQq/tBwp0Tg6oI23cqx
EMstaLFQgDKYUSi1WvxFaquvjRe08r4nRFc0/nBT3yRexzQ8Fp2QoDoIjGvK
/0zRyzAiuJ0fxdEl35QIDzr9lTEGVtwsIDjMGk/8TVXZYrCuU4S845RdkqHL
es0xEO/nlmRicTTdY+obcv5qDGHPHoZeyk8FsGK4CmNBdyXCEgcOAO3UHOpZ
BLts1youo0wd43FEHKgdnK1T/JUtP3Lirx5n1HOPSIPpomes1Y41cGvQKOdD
MLaAMvEAIKiBTWRB31hiBtAEEhoIYCnEwqX8uyjwOwPBDq9iTAUr/GR/RfkJ
4DJZvmrhV4i5hv23BFePjp+SGVFBKRquEBzP1s1K6Arl6ORxUczdyme1s/Jv
i5n7vjsvJ01XX5m7wEj/vj2eeZzgnKfVnZikJD3unQZZIprWjGJGRJOyRncP
qZw1XuI3lJVNt093pOtpJCEzLyBborcJN/ZT89RiKAMD5r5/VQybwQk72hZl
QoyfVBHaZ/jeWNsE8sVhVDa9NzgxwhYyafiU9cO+lE7CzrnpFBWhtLzqGI1Z
r6yer/0MMQZMOY/gwucSdtkXitID0aqIJpnl7yCzZ0nbeFN/XID/Gjgzx4/7
E/nbT1wiJtFFrgwjvJNNmR9kG8l4C/8AFKAzAnkIei/PlK30CIoVCv7A6qPJ
KtqONsjPU4qgGB4hv68/UqDUzEUD62wdwVbJV2w4HVUMj6dKoa+Mf20w2Iuh
bSgFLdxUNu0LVzCLPQTa5rwEequaOWmq2EFDv61HkXvn1lvCnJQJaLgfpTXw
1k0TwFpLLgR1arv/Nme0LOtb0NpFOemeB5HRNUZ/3M6JAuqI7ZKIMcveGJ8e
I8x7PIjuDEWOKMXeBAwXm43WMji+fBq68WXV7FEw5aaUGUYGV0apMRqN7c5T
WrOLzmZvDSzGQsbWCENgr30v1bnTAz5Q4TVEMvSmThxdKv1MSvJK8Y+Z/oja
5xy2HcpvwLilaj+NvfQ1SYpy/7+B2iZKkfNLALw/7Y7Nj4NqCryM4+wmuKlq
BOMJcIT3A4hYdyBo83Na7oWzVsBnXQaGx4P+FXsBSUpRLg+g2vbYVJ5y4V/X
K1Tz8evj+qFUeDaf2hCUq/osogW3rnEHQ/UEDzZT3f0JfV76dT89IACgvYqy
3sXAxGz0BcWJytlDfreGiWlqisxePNeQvDRn3IjVPRqXzvwoZ2Fxw48//s+r
k+P+8fnZ1bdgHu3tjZx5VJC3AheSBclKrO3M0U8xNRkQmgyMkQLKO5NPQrGZ
BP458a2nr5EhQ/n1jnk6XlOQAYyZLpwCpUzmgn7UPCWGiyZ948FgLELNm5KP
ogZxwL0nCgIObwZD10nHiB/dMZVGkjBN8pBGKmaFXwMp+JQbQkFby1U8fJf/
jDiP5NKxlgGRd0rDQRuS7WvVBWCcAjR0d73DbEJH5ngmNpQPZqxf87I0mYmY
IrIqoe/g3whOVUo1InMd9WmxMv0Wks0lNTM723tUM6NURsBPKesfTYli0suo
pr9HcAjzGvfsUY29FfvHyobcUwLH6BVRhNvEBg0NtLkU5tnzWmHbONYxvWrF
mU6cYcgSMDSLbT6yNsKqiDoomc98n9cd75h32XEocGWwLL27xfA0vncmpdkn
gxocpADNW/FDsTxlzHULyH/AkQxeOOKotoLB1isE3PNadCFTO7BwWqczrxRi
DJysw+0dm7aKEVtHSxXF5rMw3c5/IWRRR6DRT6pP+cn2kInJjT3cAX51uLu7
DxT1HjQW8U+3OapydBJW4k+FKQZJfh8qwflqysy/DtbxownLtt8NvNqMuvfU
O/561vNKEH4wV3/8SJVDUHoF+CMZuhio24azFRv+EBeA+gXfrd1ROsorwyJO
j7ZCy3fjLdjbD6NtRyW7nlRemQZOYHny67IcjL0X40cOlk0pi5CQQozQ6JGv
XRI7rKbrXsT1eHBxt0VZSDHwnvX/+JF7PnXGdqUqxksIc0luFVy2ZttkGcr0
sQhqybpe+3i4dIQcyYEmmAW+ulmpFWjJwk6ZvmRVo30s/FahrD2p2pNzM+p5
wyMmVeCAUNKCnojGJwq/qa9UuvJabeIpXPIvHUWvqn6Qj6l1FDbPrjO10mCI
QFbtlJPPMTFl5TaV8dlnRQWRSXZG2FSaKL9T/ZqSkkePuqvHqY9mUhyjKoJs
Uj5c0tLJ86ZlIYTHVkUpzlVLthmJhiyX86f9p3t5mHcgIT0E8JYUdxSovDww
tLdtnY3FJhNTwUIrzSlzBNP0lqU0skGNETNPVuLmdZLW5zlh3QXnnkaoGpi6
hbeYsXjhd3s57EKUPCiXs38FKqajJ2hHNX9Y++wD/PmrhoGZpjO8LORzBCds
WFRm8k8zjIWBbtTjuC8MiQyiIHgUNCKpESX4xcpPrACNcQIsSU85AScztql5
AKwmfwnoClFZt2ciUkbnVIXigROJ9WPeAGWyoRqIhjNcPU2UWgLiNsP4GjH3
HmY3qSWspyu3M22kF6KEijTzzOl/GBWqHtwdwAKJIjMOeFvQxLMCRQL7VxCK
FmbI0pFzBTutxafCZSGp+Cx6dFZwZBIkO5dRc8yoWSmZnC/6F0BCXme4ZgcW
MZRF6mqFOh/lTxUhOB3m9d8+MmwSJsUssyX9W1hl4TgEFgVSXnv0m2lCLkfr
9EvjNImR+ppUbU1wbVkAY8J0llJi4SbTmsLCeCDr2pcjJIJqmWr/ttZG0Q7Z
1oLM/+2OAJpokhbGy3NBrT9EscCsj4JYFPZiQDrvCWe6qdWpwTmKZNyKm1Hs
7xVBctQAKi0f3ZbKEhPrgGglJvCsHakR6KbYZ1LP3VjnF8S2zo6ulegutHzb
eJJIKWXYprCk1WqZxcyXjEGqmB5wRDnsjvWVuYRH4ViiuJ6UDuDt7wOVJfRd
4EhZNBK+HZVpkQZimR561ZZwMj2f7xH4ChEWZKa2swyCpgS6HHiK68bzPPGk
ZF4DMppjARLDqcFgfsBQ5mtkwQTkxnZT5qnlq2SHrCZ/ZTKtnY0DSZFcP8Du
WKknyWBvtqztxR8JJU/yIwbISj3NBuHPriXqsMiV6Qt/TtR8WHbI84SKEpRs
MWGiyMki6ophBEWO/Jg9QxU232RxNoEbDd6fu3uOERF1riITb+Dxx1QRVGjr
o1l3oQuQArofv9RF9Wk1oZV3ESvcoA36B+lN0AW9NDXVf+yh5v2ssDzTbhyj
5m3yCoPgRpQc6+BEOZ4FDF60MP+tuJAe/qQZjUmCk1ixqe+aCs4jw3hw0FY8
fWJEN9ZjlYUeK9XJWxa6O5bvQOtRJg5maSwgSaZT8UDLqWSbxjxmDWwEXxTj
+KLyXjfwDD3rHJ+WSbUOGONt3DwKNM9vNMKzWq4ZPEwzlDjPzftm6gXDupFH
DLysjh6pYA3X08No/sf7miPhvthGlA1iu6I9y8VH4Z4Fiwry+RB4FEA/CMAv
SFXogUI1LtuLzQhOlNXnsC4OgfIhkOVD3U4MmeJD3HgIVDIeJtAQ1DKXlHHa
bjAYKBFCbPoH8rlm5i/2Kv7kpCjlnGKOKPgVLJVJZFV9WCLDTK1gQ/kxDWR/
gdaHxkS9FOhPhVuQ9HYqGpftoChJxsjbcjralUSjSGU5J5d/pVmOPiNUM3SB
LrT4TYo9lZp90FZXtyzR99pgfbW/R0vKDBa8W/UEOvqg6jR0ayCd+VQ2lCEU
iUCAHnXPZVp8B25/OHtfgltZT7fXWz8a1ABFXGPfoE1IbjPSgPRMNPeheIQY
dxNAaWs+S9zWw7h4Z6W0tw/AryeCUpVZyqaMHB6utvrmdliNqQolkwmMfwt2
SbGssJwtAF/H7/3+zQUSkdO35k0vA10S04ylMavZLgRfLWZlMxb1RY0fGYGS
ygHpnTuMy+OBG14H1w87kwkVW9Ss9K8GNy+L9L2eQmlQ4ecDeGggIyFwtztq
g4it2ctMszAcAfsPUeGgQc81KYsh6ypmigSXcXUhmaCYbWoTZN3fARi35Ax9
ketGi3mvnrsfv/Sd1wOZnnw69vOpPLfV1q1IRYYaWMUl5UQJ3gIuiRywrBFW
bQhgde+2myuLFxy8QMGDGQZTgWqS/sKUVKHA3pwFeavwxxQWChpoZbqiUtxW
2A7J82UJVymKNLogBKoJGSfUqyQcVAhfhcdoYr6McIL6AQTnIKFismYLTFIJ
66nwGM/+4gJYnz8efI/uBrxUTtQ1FgHlitNcosccgehwh6diAxnmYCNkAWL+
YwYbIADDC8ah0jL/j4hNBiVkHclkmvFlAznY2yAI3wRRFBvFIZAiDV8UbTN4
W7oHBFl0jFWmCRvqFKFMzSVma4TOPVOXEMMfLPHKgty3GQJeAZfdxVJPJBZy
gLJnscN4/zrL+k7XbTDtXYR4P39PzBfuFjNY3kLKfG3wJRBzKNn9e2+gAMj8
9yVVfdgnHEmY/7zClhrwkXkJCdmenxVouUnKkUqAzpU4TQEXw1OHswjgOTj7
m7veFgKXYVwPHgQIy/HBVEDUT81zS3/7nkV8jQXV6wUHVY38CsFqPBH2snuK
36KCZdk+eWGeswS0ymgNlWDCoJen3KAPUQI3sims5IhVASBF4E4xwok3rtBv
y1l3ROcCE93aIM7ORa88ZaB/kPQGbTdkIl/uEIfbneFa8byuJdEPH2mr56wE
uPPLsRKELFZqMcnWOrEGn/RJEW3q41w2QXLSCqGAzXU3nVRyiMGWH2i71b9m
rM5eiBg/hz7Gea56mDemJyVubc8E3gn/wm316Okt8UE09bnr5qjVZpdBZbxO
1ZJhbx9l3/K4PaTsIDsFZXA3s53OmZkYtud9qB7xVAmh0J8hTM43JbXTRJfM
QqIku92bYWQgs8yH9SoGGMOT4lJF+Ka6KJf+AOGk3Kf2Nq5Okfo9tkOtaOMa
qtf9r4CfMNjwRLBPuu+44Txe/Dl7vUv+tZ3dvHNUOzZ79PibcNgbpBIWGlGA
2Rhf9S1ehnH9wAId9UUuTwl0B588WGZmdO9M285PV0p+NnBlRg/tQaijIfex
NepSi+6WakmRJSKKzDav53eP3pI0j7lHNGVJ0RaFkeCTz0aJHRs+KxIlliZA
T+qFIfvrLxwrnme35LYJE4d6ATwL6tmi6DUeVC5hqCJuKAMZSVpV49PTqMKF
3CN0vJgQNtE4bWtdmQhPk43EaxG22WNtvM/L8tpctKrMQ0SRPsc5b6rGGYw3
g1KFielUUxEY0+Jgkp1lYeplAAQEkSDdxyeY/tLWCYzpwmXXlLX4hRN6XyCg
poVNMqVf3pOvN8mrir0shtcRXT5OEyJ9IDC+jZ4DItxcw+iwWovxFYQhkgiZ
mWdH1xlnqtvZUdEjTzHilIgBA1q3eze/rRZk/nKgy2q5zHk0HxN98MBXgf3i
9mF+z7KA9JBuxSSmvs/WTJLXE8/S+iUMZtZtOQZeWeRfsOP4C5AELTNC5Xzy
AyRtEpIZPY9cgMM+IgRKD8szjBtKbEJodEIZd0g8ra/6+AkrUqRv0DZVkEYE
NyOwPCzBplm/qgwdvFWtthCUnBCDaim1U5+TiFR1SXkFYfMHuvSlQFmE0RMh
IaP/7G04MT12CRe0FAl21Xp7GDTDDvWtMnc18UU3l/2fNReIepL/kdQiLBma
4OWk6t0g+ZE66sbZ0uSj9x054baeXqDWyTQnLhrviNSQL/Gu2aNgxZLK847n
22n5d6+oatKpl1p2JPCdQsuZJKUbbwgoi1yxKI4avmSUJBDK70D3CVHgeKE9
w7FDDUeKpLjjWiCOWC/yR5Bg95zZHFp/KQm4vXHXyCTiFOaEQSf1kEyQpJvH
WapGw/RyS3Zi2V5gpEA+BtCv2Ld3pZKdpV21jHJd46KHQipUJBlCU/1xN1uO
dLtV00Lqxxb8LaMZsN8utxZOcjFhmm70jc2n8EI1lpVRG01uuWxib8wTnxc9
N9BktfSP886QYBmhEPYq9lm2yKKtCr/3npIN/oanHThZyoMT+W82LpjCH5Ng
uesHTZj04H3wscTdiy9vq4S6h9RJpED3h8vUkA9pRQyKa6dVNrSzi/Gj0mG4
l1Sw12LpXncCXtD4rwcDuDvwyEF9vFq+QjOi08ywjZRm1bmn3fpV5htNt/Sr
p2jyWfoBaQWSIRPrB6MXfGaRV5NZ3CGFPkYxOlQRSIRVkp2ITnxQpxV9j9We
zfS36ZPg16Ng5wzy9qopOZFsDzRUXLu/f1YLVtYKM7FtBs7SgCuncrolDO+U
gZ7kVWf4NPUtJgc9Nf0LWxTkP34JrUpaBZQ2MCKwQtwusCo9KF/YJSJAY8Ci
I0UiN+8CQQlMk3QKgVpTEOo1oEdQzpFvFC6dBvHXRy3cv6QhuT2GvKnZ4Zf+
i7RGed/xGcGdN7OivG54G20i3NqGInWoE5UQdMOuU/az9dSgNoiM0/gLb2bj
16VI8rxuYl4NlCHLTEx6js7ALtUvxz/wE5aD6OPRFO25ECSUB5b2y34AQ5tg
TTD1ALJTl5WHQeMuDL5PKXVtJSjt5Kc5as5Rk4yCUFD6barePPgD4Xpwlcqq
wGpl6qVF6oMWUz10fk59Yk7SQJ45CykEJqM+J3RRyDEgiOvde6dIVIBrAokS
lyWkNvZC8jT9gKC2KSNckcPhCAtRoFoTs5ghHQlHedVscYnVh6oRi553yn6b
5pp5ABgPkkNwa3MGIvR7SL3L+W66zXpkhrNeyA5ktM3S1wLoaAnZpNBNRTEX
yr8IVmT3zqBo8tD+mPlM+B2cfI4ANGXj+9UHVIlt8wDNY/0w4eL2I9ztkvgj
/ZlknWK6PdprGY7HU8cSVEkdWuJpeXNnkjiJ7TQ38F3vjbNB2jWgTf9AmYYd
83HC8g+w0V9Lwy8hQD2rbUIUWTfwyBcXwl6+gNP7wmz7F/Ag56Xx0F/jVgms
N/no145Zj6EDg2I8NvYlZdh4/NDow22DTG7CIFLmPESrsmuiBEm4mfAi/6t2
tJIPyBu4QpBpuMArbXELbqkF/DkvbmvuoxJ9pZvoALKolsLsYFfwouPntHT6
wXEaLFw3XRbkBH0zrFsT1qVAVZrVM4wg7FvG7SAECprfxkgdOZqZkAn2LqBT
ynVFIbESdAal9ODJShBmJlj7xdeEhcMVVRm58Y89b2e5wPfZ7b4j/nUj0X19
DO9DTPBcF86VpjgC4rkqNoywGEHzhOvBSRKaKwbCRCKkYlUrA6LfgrHEaSi1
3si+3EZf0vYRUWmeiFkC0IEibq+quzUkJiw5QZpxkRdOlfsb5z4sq+YHDh6i
9YxgHI5/LhDZErN2Vm4fbg1mhiDUyFzBz+ARaMKsXPfR32srIFpxuErpzVSZ
QlBxkCLwu6FkoyRMnMCbOXUJcvE1wSDHjuaYziZolVBNe/0Gyh9HA5A6FGdY
NeZApLu15opL3jnqhGwVrVEavuXWXDajDGaDHeJJ4kEuCDCZPqMQS/swSLPh
f+9LQ3nsmCTJdqaJdK/1EfoAQeiuwaLPSrqij3CtXzHyQ0+6B47+bbjLiTn1
h3JLSFhgDUxrcgKRhybkuNMCVQypSoS7Jlh7knEic98O2qlx23dq2xdBj8X3
CSjUS0d9NjNMosX5cjoMPCm5LuEF8URFq+OaOk9qvrusShxtHmweeubFlP7g
wnUuSa2CrbI82rMgMOFFiCt7RZmMO8el2+6jeEJdipxKbBGpXL+PH2cdhy4V
/9wTJCejWOqrr0yiZ7a/2x/u7xzu8H2cJkgd7mRM30IPTl9g/kLEBgA2E0hZ
Q/VtGm+1ce2XxRJacmHngBoR2iaCCufYyFJsg8zXJzHHzwVnCRb8WBZLjo+F
QB6q8G7bIzCbbs5f+tyTehS4IhPqEQg9r7cSbfrICTQYgPIuROtcUS1TRGvk
vqgWxF1IkW5CBbhWlR/jbBT24D+1NQtKISHp3mQfsVxJDUgpslUOjUUgFk7N
IHW3Zp+Bjum7uoULwS4ErAZ0aPJiTwlWXYaM7GNZ/tAwujd2hykZDbPra5hf
b1qw4AGhzlAsx/fUBLqlK2cpDQLuXi9aCp5hi24AHcjtezHpeZ2kXrQ2HjPr
jcoOqpzp0TIRyRa/lxHdM+Bl+aFYBPZd7ntpuzUuKH8JUjvTpwEPhi1q4FHZ
EvhVmI63I7KQfqI9cez6tuTbYuqvDAfEay8Sl8I82G2VpQJrLAZdtZu/QWw8
61I0e1IHo3GEu9oNwNpm151zKgxhgqX2izsW2ld18PhwIbYLbXIJjZ+TJD3W
/uKREdBBwoJYVXeFLibtrJCfwVWRXHdSjEryX6jrX4rKTR6dwOJWaDrfC5vV
K23DmGJ0tmY9KyLjCRVcUmkRnbqYVNzsjvuD5OwgEIYA8sJt4R3yBBASt1VB
DILqEBzlAG3gZbA74HUWKRpfU2X0dFl9qGc14lcvuaQIcNaL5Rxqf18Bacwd
EcC0HB06uuDKRsDWnVFvDOqu7hhIBUUHbnpQfT1Z30JW7xZvTdhXQWUo9p1h
hDJjTUHShJs7cix3xdP0LEDYyaFVVfKdfLWLqRWjSODhXmFHYUDGX3BJqNHP
A6ImIokb0Vt2KX5D7oobg8pavyjKZ+rEAS4k43XM4tdKUTKAmQzg+u3vMAqI
DsDGI3kJ0QvXcTcYj03CWV1+B/YaYZzY6otNvPwN7Cnjqn1V1cVRRMn1zrxw
h7M/tN42ZH6kfMximx05sTufKzVbrgEKmV0WYtizTqLLTw7VOg28I6LoWoba
oGuFam+hm0LBnTvGKzJZ4XROT65+m7+qytX0/4b/t10v77bUbEVGBHlLcEnv
nPH1kL36V3dWY332z6/mRTVb1V8Hf93aYu80DnCtJam+RPlSLhVzRi1b7fuy
Vcck0RT4f/716vujd+/gzv0GoiQoX/9sbyac1Rdd32q+4Nz9IsNnvsBoI9k1
cCU3vahfoDsGwAh8PcRKR4Eoj3HIqGnLFLp+dAtiR36ed8iCTI5apxEctU+p
er5gSOOssEMIgc9aXnUnTLruY7XIwvkhBW9yG34N9bNap+7+6f4AnjzqyTBf
ONVjUY1VeVJi4LMyrdhW0lynvUNusI8Ls5rVQx9BOHH5f8/RJ/n3PJxHHvzv
79GWpv/39+zvX/fhf/yPjv9t/lWfcjMbfBoM3Lcl/HljApw3PtJ2U03cQz/+
mLgzfXTIUx92x6J4zKF7HDomQMTuBqqJwOUYrPYFg43c4wqQeoMAqTeEgvwZ
g+3wzNaThxvO7L/BFi6fM9iue9w2iMCizc9d5l40GLVVwDGxHcUN+AtmLxtz
/6kxCSbiZYMebBgUWmO8aLDD5GDcgOOlW/i6YzCY1YsHK9zjTmDeYObDjdNY
a+RHn3e4t0x2OmB8sV8y2Ng97hRMYDA3pJPe+LS9lw4GN/sBwxqOgd9IPtpn
zqzEPcMZBdzjhnBdXzbY1JwmpWj+DJY0BDYHXb4e02M9e7Afv86/DHh8vqpW
s/LbL6SQtVO45yfkcfriJ0T4UpxHZ3lCYrY2WCApBhZ6/u87w/xX+Vn+63x0
8O/cihDdvOKMdY+fZd5FOzro5XuHvfzwdS/f3t7e4vI5kwZvvRAq152aCHqP
VaHeohp6DWporDmxPvoZupIf9HkqUvD8CzUjVgSatn/mszQj7aT7szSjPDCZ
s9L3fufzlOxAlMsII/xpZ+q05YXbn08F4P7Oi9k3Es//UG5JvTQGU8LZeM3/
iJHxlqR8H6EZDBkWHfH015iJsLvtLg3iPP6X0uaIKJ7W5LwhlZ40eA/Jox0R
QS8ODMGImFcoy4hsP/YJS90vZehgwqW7WAqmoHmb5LZTn1Bmst6o2gczNryb
DW1Bdw64IIb+GSMWzYLK54TXGICd2L1ELZzYSYjNtoMlIA6G5PskLSO4Glft
bek6WXDUZdDjhPvhmp1h1oYRJCFYHxRkZ5enKD3KFynkjjNj6xrGVsYB+hj/
0jymiE+fYFNdiKk0LY6HLXj6YNX/TBPRfOSFNmLw5jNZIYdsmgyBG6Q0CMAM
8RcTY7QOHVP7yW4WyxWztGvg87hiluKK+edyxSzJFePZPIcrZt1cMf8vyhWB
Mp5v2b7xOOj80q3TTKYpfHRqNo0RYr2lsr3svi/yZj2fQ4YJtO3I8siN63Nm
Kp87+bPMa7qPLQvb6XB0TZKmc24Wnfw9NsDV2N5oTz9la7d/Z/UWv3l2fnNy
eXl+mZrPWc2b37GeH3+0fEkVXfzt9Oz65PLs6F17dPdbkEURf6Nr3BHt0cnl
H04ub777/dWf2vvHIKrY4hDq+W7XzeOT4+7gb2/fnf/LzfH52fXleTRn95vt
atfaka5xd2lO2Evz5t3p+9PreNzruib8fG1r+VDCpd887p4d9+r66PqkNd9l
4Zv6Ig9hVAHp2Eh1Q10f2KdBTuH0rk7/90l8hH/PjynSBQkbmLNu/RfdEz+g
cS+P3rshz47P35ye/daOLROXoPtzCeOQNvPy6Ozq4vzy+ubiCD7hyI8Hl0sJ
oiIFFdg17mta6/nZ2ckxdLW/OX0TnKM5wHEIIKhb3zX0EQ59cXl+fX7s6O0P
p+fvjuATfqm/BUgtwkKnwPaHqp4FBnZq3O/47v3h6J2b7PX5707Ocvs/9xtT
wjX6ry5lok9s8TH+dnRx8e70GCca0cTfc5Muk2AaXeO+oS2+/NPF9bm702/f
wqH98fjk5M3Jm9z8Rmhk3BwcVIUptTlPjav2sWHST5jIVvUyNnLmeGUOpdqQ
Q39FTcUYweuM0HnelEyqRzPok7C6n0OfEXxSgBQJx8dZ8ZwVRWLnoSnXkxpn
TWKlmN3RM+7FhVsHSJwGMaag7iBkmNhgEJ+Vcmj6CMDBg+7NfRANyhgoiJhc
woFuJ7L+4z/+I8Ppl7QkWtErbMDZrG4eIFS+XC8wQwj/62Fxs3AaXrP1NZQ4
iD7vfsrzb3P/Wv7rfIhFrosbpyDw+X+bD/N/+icdgn+/1we+lcd/k4/4x3nR
/BD92KeRf/ObnCS3M0E8aK4AJnEfH2hOh1mUVADF79lZ93UKGC3SbBvoKvrX
NbY6TLz1a3mLftP5aInbR4DNXXy1yv+ypjbg1QOqMRAvRUgp2AC0/ROjo00y
mfALfvehTJTrqSSBld9+xJTUQpw3pkkN9YLfjuZpdTekvnExG6OlghDYbgIE
Zq1Z+fwm9AaCOkcoIwBkV0hwCvuP8f4Hn825uAUSZ9wGAMQ2NojxWN1ymXHp
aJDAf21zgS9NBjbg2/yV3aj/kf8H08iWYwJ2q7Akehq+/E/fdp98RkQWPp+/
QnrdH23Rw+7Zr/nBZblaLxfh87/mZ1Lf/uc0+XR9+p+/fcb3+uZ7id/xbgMb
DJiK8MBnMjJkgMr2oF/nH3x1u2V35XjRdx9yj58gvANAt1lvA1S8lNi1UToH
19KJmyEisGgOwSnUJ9FkNq8MS7I49b6BuYT9PKU/Xvu5nubRZNi5EvNK3N+D
frjS36GpwSKq6gmnUFBfe0j6MSBEH9E441lSYzgA7OeyABi6E4wN8gUJOohM
Ik4Ul5JyLSMqdHOrJrM1OyATSCTQhDT9aoVReBwVDopnEyxyDP0dRYwYE9tj
GV3LBhJCCMfWFzTiqpAitYoW4sykL3gFX/TyL9YLzJKDf4Wq3nLyRS8D9wM2
TpqVX1BTeFymdKXU13P7oH7KA2tQTbviVtLrMK9rx5UwUN8j6KBpAQ0V3d9f
Dba+8XlAvdRo6wW8G6DwXtfwcSiB1xR+Ikx43e+Cz+H3K8B0TsmGp5a+aw8e
Ny+58T24aRB9GDB4ecvlY0R6ueNkgmvbRgCsl9QMoE9SBRpC9PKQICNgUE7v
iTLJfJO7iTTNJGM7C2ej+WOEUirZ2piRHm4fWcmIJIXpjqRWZtTmd8349VJp
CthGkNAqzao9nqZeYuyB3eTxGeGN77v/Ag1pfXeHqXcGNpEu+XBgd2yntWeQ
YzJdMW+J9h+IIz5x78DA8nkAbGg8yW9nbyVrUP8mzUFNmwaDDcKODbM5jpyP
jn9HbsbslfI2WukWFaA2m2blwUz0JklCXLaow3302qD7Tzddd1vvJPEynKWZ
4RSLfdBt+oi72LVJkoOUhbvFXIG8x142KKysm2BiQGZ0jsRlAJCvCdIDrKsJ
5LQupRIXDL6pyahzDxyf8KtY7CBa0CrkuQEgL8wGfEEFZthxyJMYLfEyTBuk
WmmoLTBiIMdWUV5waJeEmWAKlo3wr8bgBeKd4cJi/h7ncBEuxRKrSIum5Oy4
1G7YduCZ0AgdGPnmomsfXwJuqwO/eCY0Q4zrjJqAUEWS0w/YFfCuvsuyf85/
9avLt8f5yaRa1YDMD9rf17/6VX4BmYiSZSspzdIlkUGfTFoYYTn/MzsXDJ5+
1G4xO8UeJ1imu8akMcoDVmtoqUnlLHNm5OLO6/HKiYd6+bBNrcARF3yydOZT
HxK6+pDaZcIQowMAXDiakdFpPALH786vTvJqYbHPxQ4BD3dPPmzy/ciuoIIr
bM+in5lB2Q9bz0j93qZWiHr6GZ26bMy6wWAH2g1MXn25s7sz6OXwjz38x+5g
y63jGJhvKgexSHR9+nI0HOHLO6MDePkq1SMz7NNl2oa5t3d33NujncMD+Mfr
0R4Mgpn01KCDU2AoOVRgRrWnFNaQIgciiNwVp1zmObD8O4Z+SXR/wtW7/+Gy
D2jZoY/GtvcN2Br5ubF/X9QyC8fcPey5z3+5s7fPW3vYw//ChZ0vEM6vRG7u
LVEVjARoK02lsWAQixLgazD43gFu9f5wC3FB6Lo404nKC0gn8Q1YMCndE/dt
wT0RqOMPDvh6n2a78/oQhjxFyLFNGRI81t/KZS1FMGHjcKCq0QGNujvap4lS
sfSGYW8DPQi2gtrT4mh0SkQafizJU2Gs+c7X6ZD3dvl1iZxAsgvdBEqvwv62
lHYlZEY/wBgHQyKUHRjjt2tH/Xg+C69bgGUNgRtGqlckfWd+VcsydgDCmIev
mVAGr3GCdLZ7uwc0z2aF4G94umAmCMLlbX23bjZ2SHaD7+2McLCdHbrQxZIj
tSBp2BcTSPdcQ6FAjsWHknU72FyBjatmjxA6gRT5WandTUjUwDd3cZP2DpE4
uRlbGXbcw3pLrX3ikoR2cg+Mtke7su9W8CwWvA8smKUNR3BBIqQcumznQTHX
gvZr9HoXvjbcf/3Mr+0Rws6USiZ0KS3Wr+JLcTPIsRJ2iXfbCpPYxyWPXh/Q
P0ZbIlQUN7fNgLl5Fzn2BLmNH6OCE2J1A76SOwO86GbqwNWWG/j76yEyMsci
nrk3uxmdvzv774/O3lx9f/S7k5s352cnaKMi+QQNMRfTSqp93OcO9/G+DndH
9I89pibTYQe9RDCY7dSGyxwM8RxHB3ScI2TsV9JC3X1zxihhzFcBJ+0E4zre
h89Y8TDckMhiNBhZ1oOf53GoPdi4VJ3C3YrLk+vTy5NoUJjcDh7sYAeZ4gZm
COkQC+wMNqFZ0I4wXQwG9I8hCS3qrKVusmoR6Rnk3zEKLIyI0tb947BFYh2+
diAPdrVT2gqrGUC2e4c02L4hLFZNpNEmYNRKT2zYcIo8wEz2cDXDPTrtvT36
Bw51TaSNaVB00ljLr6/PwYGKajA7K6h6GUYd0fpGZn0prUzK7qjlCQU+VDYO
92ldA2TI19gXu/ChstZ4RWN/pl1y9Lx7gGsakaY12hmSgrOsV6tZSQqM+L3a
Q+KtZm0da9PR8gFaes07hZMzwZU+lqgS7E5rPNMrhHQOtwckKN3xDuFfstxe
pyEf7f4uXcIPWDXFs6UeybezevwDlzhig1XEQJKMarf+g126Q/uWPHzMvuGk
QbNrdJPpCAe7ePVO7aBgHTzOHS+H+Jf7wv4AiWfw+jU8erGs7yvINDm9gOHu
fFgEaBW1zZ3R4WAryb+7K48ZL9kUBsH+kOgejAbEXIc0kyEplNI9C2wT6V6B
NAtCtZig/5/zR8iWjUDNgfcOWEkYPpv77mSe5FEcfF+6/0DW+1As2u1V4Cuj
Q9rrPdIWUIhIKAx1IFvQBVcbC69tAxfV0+Ho9nCTB3tI6leSGI9pnisjlEZ0
60evXzsZn+d9kWWgimjXl/kDmuwVddFaAWUDHeDz4NYiKYruj7ChDJVFMVqd
GZ1hwlBjROUeaPRwDyeyfxjYP+sZHw1AajLDx6YK6D7GgERTRi0yQLvDS03t
PBE0HqQa3oLRIe3JUdR6FfTmyuLz4gjEnSaMtx5YTQcHhzTh17TFS2mIEVls
4SdIF0UbE45pd5+uDV5Mz1b9BoES+4gEwp87QG5zcXr2WzGPkIuweWSaqpGl
ijJvl2QekVaLB5PL0Z1Sv4RUrhUbOgOSdQOySpJh/zFsDVdHckV8i22c1egi
M2ML1ftFCh+0smARvxexRRLBw8EuWbzUVBUrAH2Zb0QToBegDANiIEVgCKr+
8y71CC71pdIjB8dIlXQKAAf+b6NEA3dT7u5XmDLivjo43CUT+3VoE3Sprm7G
KZ+Bu7Wg549I3R/tkw7xxskoqmwFFrmkFuQNgQclrI2K/JlutNEAr97BHvF5
ASde1reOPS6wXjfwOkqhtcQy2P3oRtpDUpORRFkLGqQSorZjhGtqWWN63YvJ
5gbaQdVzdPh6hwR/y4LAj5PzLUABhibWYmhJxT/A8C5LRskmXrADye86/hup
WXSmwmIMrJkWR2n9HP+x8hJHwPt4SGLssmSE45StA0NBoLuhmzXaQ4VrdEim
7BHYvNV8PcfjIHva7fdAHSzw+n1EBYEHC+ezv0tuhNH+zmF4jEqynlMCNeBm
ccIU6TT1wge6cEhmycND7+rA7k4YLfQg2uOaepACzrGzj2NkIN/cGk1fxEYG
h5hK2AM0N9xWGmurmbuzgwWGoquRBlM0BXC18IMIKuQ20Rvh0oGGQnBOYbgD
/lzEQxIvpxNB689dT2JgTuvcJm0GQyJ34nMouNvzPcH1LacFQX0RZCefGlQ9
JzrMNyyL6Modku74llQu03CYUscMsmUiRw2GGdEw5OO5RlYjQpMgvPiuqsnF
nRpI4zQc5XBEF2KXNmIXZeTJp4dZsQi80NIZbcqstF4kxuLLS1zg2Hb0NYSs
3g4JOYnTLHHZTV/SnLSlAR0UTvM90iXcHm5yCPPV02Ig4XGNmHvI4DH5Vj9D
f3r1pbOeSId0FL8vpcJPioVhFvstc/LJkW/b8VuKxbptZ6wH04Ze/OZDmNFo
QE8BiQDTJs8eUOfOPnLV3dfPlVUDmNSJYVgWI6poOjGi8NYfjEioDEQnCa1o
zjFuQpwT9rHVs0nbz+Z40x5t7AEpSyGhInvkg2OU8PLTA4p96OuoeoNG30jU
CL87eL1L7El4AgNG1eLnlRZNAR2xeoRQRapAA1sfHPKw5AR8X+MhonME4ZoX
d2uQsHS7mKMmOAq5K0d7B7uep6Gym3qe1WI8atz8A3Ia4mveCciqZY89EyiY
nJbksZLTrZzhLF+zbHgtjkHKG9jgAEldQ3dHXqM7xv0DZUJYrZh6hSP+eNEH
OBd0xoO4ggH+xdreyEh6ArepruR072i0gGCj0T4e7cjd3d3Hy7JL/nk2L62r
C7GMK0YltJ6vb7jOiSLfSp5oB2A7A0M92BHcBw98MA/UKXSAjdxFwoWSlFeT
WLJCpM5MnJPd3rgdtHBHO2zRHl1/f3N5cnVxfuYURN+IzzqPNbeVQYKkq+JE
Re7e4Yi2a+9wQHSK39jfOWh/g+8ccTNIl6uXCt7KvR9XKzbiRqT/kX77xgNz
jH+g2MqC9TXTLOD0+P2FNdcu3l//PpeekY7iwF9AJwsuwGfxv+Fr1NXpNH1v
HVSrUFh1XZRdOrNdcra8LT+m5VFgH3cEPUb7tBduSHKAOlYD54/BBNNmHPdt
jz54jNjYBA+kPBS3RlRETg5HNpy/P/rjDekFV1gPAwQw+rf9ESdhwnpe47Hu
HuIczloGb4CuiWlMVG8aWrq7RNC7w51WjM4pqc2aGp4yPi108RQJB++S7Nol
N6AvWnJb8QUiaXGDHbecVDwFRhgQhdKFjjrBknQnn3twKg8EdwWZJqPBQMB7
Cm9OqTlJyULU2e9jOZvheYyQDe+NaMXG6apBSX/lIYUBkswByo46MjecBo1b
MDwko2hvtJvyxaDbpOCYv2QF08RgInSA+4PBc0n/MDO6eqKB/TepP9qIatSI
vZ5mOQOHNI6R9ygN4lY74dDZYRoCULbJBMBzdus/OKDwMpEPyZ7wUhrv3+nF
h/0cveiz4racsTFILJ6ci0cRDVMmL17EVcWkpF0OBDVQmy+bN+mKDAdDItBB
y8mZkmeIEuqux2xWNSX4P9wMkQb5v7ZIJgnL2sMzP+nsVAqrbvmhPC7zoz4g
nbpyb565+0jXcpcuBoA4EWZ1qZB7kHLG4HpMvupuxo1FytzZ23ueY3OIORZX
yIP66PIAmC6KQiw4fpEoekEZthduBF8fre1CgVpAjwwC4vXikH6BcLPCJ4Me
sjekLWaPqTNVCszBND4pZGrAX4CsUcxoby/HI6q7fA6uPnGEDpDIhkFcH5HW
xEjGY0bReAxVnSdnvz35TSgpMRMDL+yIDajg4PE0VgxjKxvgzFcIlZZ+K6yf
h4bxjiJMdgorDcgHSl4f43pELxHyXg5TvaFMJe+xIVg1C0Id9MfjphY1NYEk
XEYY9DUryG54GBbAdZ1y4+7ftQQcHLPcwgyKkpJGLh3zRDcTTYf8E+9qJ+sW
EUyZ1yiUN4DWv/Tu6te8vfht7G9k4lIpCQI90ICqQf23iv5oj7SqwQ45EKHn
jUhZSqxHN8aTCi4MdTiioYbGf0HGrMbVNbCrXQwcpyOIXGR5SDo4zIicwRxV
RIdL5FGO2m+1v4GUg5u9s0s8020id+PGFFiKb4j0c8ysvCtQ8I1eE6tFVes5
HGHfcwRJSSN0ZMrwwO4ha2xghDB4tMENikX0gg1fD8L8lESiEIxWgltYIuw1
e9Lcy3s4xjC4tOiL81lqraonDMYOcCuvrs8v0JcOExqQaTNi5yW52EoTERu+
lgwW/a1Dk3RPkkvfKcAQIkvbMEsEK2UpymY53d3hPrIjN8wB/mOPv8vwqI7D
d8TMiTeO8KX9HXoJ8/c9rDCkaKEzGnYeojJvq0/48+DT7gAUM/yj1A8CroCJ
kGFTO1JT8DHICmhUt61DPebVl/s7Q5wKeKjh8RMyoVihgCYJE8pcbE1vuAPn
AO+Aeydye7LbAosb5R3/7Pmb49N34Y/k/DKZCvj0VYXUFqcFmqIsN4+9gz1/
rYFebq5OzqAuElnLQ0lgx4iQBHhES3oTonZ0K0ADwlCK48NGA5LkOGa92mkt
8IdzltxwhMGf4cEu8qzBDnutQfGZlbSbaDaBXIEOUU5zcpMdjg7R5B6Qf3VA
zhe5aQ8l5+Esy4cZeDBFf2r7bwaHezbKEisx7NLfnA/lBjk0GQU0xkMp8AsQ
2I11e3wpipRABjpeWGOVkvaOvAESYPG917vWWlAdwmvtKBR8cCWpYHj1ArWH
i+vvbBiEIw2CdPEKlQfUIchgH0Kaz/O46F6WXa1vMbQK0y0xObfCAHi9vCsW
1d9Yd3f2viPN+wWUv0gY93n5sUNMCXqPreJBHIDkcf+8AXUAlXSksMOBOn7Z
/wZetfWC/EuhNHz15etDvN0HlG7GtUdBnyyrqNMJxflCwwPMbRruHu7jWBSR
iZMN6ge+VAU6+BBNV6FjVW7DaJTk+XuCFg4nIMlH32D9XjJFCNmdG2Z3H2XB
7j4pO252OzTJXTPXXUwAGR6gyucu54gW8P+2di3LbVxHdK+vQNEbJyXKGGDw
GL+qYIKkaNEUS6Sl0ko1IobEhCCGhQFEyd6k8i9e5A+8yM6/klR+I7fP6fsa
DGQuUpXYFoQZzNzbtx+nT3fjT+Oehqu2zTyLeXdKejJMeRcK7rmW3nk3eGZU
qvA8+JIpfyN9pJXueyvNCnZGGPPyZl6s9p0xczXu1Me1azKKS0Qn8x0H9Cou
tGOIkhSo7q7DQnzlUklPkf5OU9lNiOSa29oEUHyXncbTSYWsX9INs1Q/n128
PD05OLk8nL6LnfTABxDNOsQeDvokrsBD38JnG6npgEiONcHJGQz6EQwtQa51
W25y8Ya3bovJ0erJ9ClSg0G0/eUSfcWKrUuLj57DkaRg1CRDsr+PqpWxQ43E
j9vO2NKtH6S7kdyCjtSwlwb4cBuLDcn/jyw4lOt4XIGS38sMwRpFGETeGjSk
JOVBGQJOSoaaHnJ+rmeMhjqCpQNcD9SNVPe6ZGkGYUyhqM0i2KNKaFq3krEu
VQ9hUbm6zVRVVjeJze/C7RqYJ8U9hzzNek9+rSEUNqg2Usxr+XoIc1ZxqBVW
7agNll5NGyWgi3ZWO2buMqDCSfSIDAeBpxu0AebYG4SoYQsA0gjwRpTS3qNt
Us+TeZm4B/czSgZenl5EzHsmEc2Bxm91mSpIeMKMr85X6IEMnvSoSnoD3UQa
gYH6iWxK3Z44BJwTYXJPFZiGAuriBgCfbObH+3M2py4UTTg95k3kLdgBP/gm
/cNCFM66iO4WZ97zVeGz9FElQuBFe84/Zoob5XAvGmLpRo3seFXrYRch5ZKb
LqeCJsUPvoqtCi4+dVWEiq+BiYaneeWTdzZulJVgHuHLRUnohen6mmAGZ1e5
2gYIS2mJBD7LvysoZTmG2XIV5v4o8IflRFyb35ZeDp27QtRbWd/VavCt4RYo
zHotNt5h3CYZdb0r9YquvCbDl03iQkSJaIHgxDYgtWRMhGqB3gg6ujemrCYZ
RVYFmA7CcBAq0DbAgNhPznkXHnEPfj4caQ3nXxXcKGQ04qh7tuIOTPSqys3r
k8RsHhyaKSWqbaI+MfkIuIVB46ueY0H3Wa9vIEgae+mcrSUiQvOgOivXp4e3
2w64S5pNsOw5JX+Rb81qJPOvLEbNX9EiE3D0HFTQmzfvMd4XFPcGY/LLL5gY
NOZ66HcoUKBueqIXPhFZSACKTh6nNUEH+D+eFL/lUcmcn+1rlioB1T7p0g3o
0h8h648gS5bJP0d9leN+MqJc41/dUdbyI6x92zVrB74/xL/fZ1aDfJUgRSLb
E/AXk/6g+0hnFeSFi4f83hFa9dfhCeSgOocSVVsp9LBD0svSOG4EpNnGfcy1
YrCFasfDl0bpO9cnFedJE2I4YzhElvUUGIyaCYmIqQvHk/aPofWkc1etXHa6
aNUGTIZqDA8Hq0Ipq4nO6rU5AqSP0eVElhE8YMoCxCmxv9U8TRqb1KI07qTz
nYk+ZdPGNORJloSuNUCTq9IZXAkOKBPjbMjvU68vdfdD4Yhq+jyAorey0yEt
IwDpNCNrXbUYCbdVs/p6kdIPd7WOMovnaFX5diKV2qbb49mh+o5QHlU195rA
F2oXJ7LZaMm5AHKfQTcmo/i8mmyPY6C6SmDhsAFZOp9MpwpEdnEwlQ7nUwg8
USggtxAo/Vo79ThwtROG88koC9xFblww06fNDbbZUASILgRQP+VhRWVvs3xl
0EdLfjUbPe6MdzNfnxRnVLAirfyDAKkCAIQStqkICNu0mC8f2/an1vg7ypA6
yZj2IR2oxWH/2J09w3JnYl9HPR4VltBMrPK2qgykFDRe7bvNs9JqMSFtYxlX
gLGuTB1iLXlYlOCiEcwFHwjCaJPHntRRg1W++BRgHchOU293A3jXdaDwJVay
ki25XrwyczCK23etjBcfMTsMyxRF4FLcu2gU2lpdxRh+RNvCVRzbtWwQiuPk
jmd/CSQSTB/8Opo+VcoSRkyTqK5A4jYH0KdAOkeMOFifY45k4GXmUQ4AdQXc
Z7QhZGEcXigRJszW8asVbG1QvHVeU7kCqIoA5VmnWcxM1qu1qGrTMFCTalXu
K/NTGz3H21xIHYRibgfquStRiMD360V+Q/mmpe5SbJgYGvcg8+lA/5valR5S
Il7Ho04xuAbexm4lqn44fXnw4nCq6ckvv5B9Md4IQQb7l9z4Jerm1HXkYHSm
ygTzonWhp52BVkOKbkZWyfHknEiTneCFc3+k4cGQqLuTQgHKp1ETU/kOPSiW
Bfo3inox3uVXczE7ktWQrw9hwUfwusaWhKjegZ476YQgRjUgpijTEfAQO8LA
eqObkbGgyJdkrFB7W230+nzxkH+y/JY59oTEdG0GYS4ctVf6uFeR9BIfyvcp
MJYVnkFGpdcyr6Gcvfv4KPwtA4M641NMTAg3BUac1/UGML1r/cPc6myzsuoy
BBCSLoGXbjcLPY52Vr1oqbPi4YKFDpelddm6ySPpDF3QGQRqCL1HkcS5Xy1r
7eNQxrxwb4id0gdd2qBcgo5KgXBLNxClJnukR0/EZhxGc/qNqBExQ1I/G14J
5zH76siccSrIcmmel/FAyicbDKMlhP0zB6rN5tsyKvt3kjXKoEq1HOsicHWC
PtHG8wwTXnKbOAVmjgqOxxBMhJHW6I1HRMqhfMQn7XT+2sghcxNknJeFYMxv
7esv7Ic/0SYbaMsmbmOGhRhv/8JumYaxD7MNVnCVwCqCjvtbYRf5adUTroVP
sGIynw53fViVa69KVH0c3sn0vl3sbD/ptKMjh+nsDbJBoOCofTm200qKuIsF
1sCxr4y3crX2fqS8p9UpeAvIK1IZ0Cxy7bShdMQ1ogaTt5YhqtBgQ17U5UUH
cZKMtOltvvQYNmpMB2myXQPfKKSLYiIk3UicHo989aDDoT/jeFgbZI0LHAe1
T34Y87vA3bWlaruLFWTlmNPKBtk2M0tH6MnF7I/dbA+6KnTGd/kLjvN4aAN5
OTvZ8JE5n+6QREB4zLPO0dnr/SSn0zw5vNg/PvjJuV57WC8JGfeCjJSmIpjk
CRt8o2G87bYesiugo9yCmDXVtHEb272jakn6luEtyb9DAfS+wrCA+71ippK0
Y0BFnWKzz6qgro3Sr9alxUrawjTEQ3vhw+OM7LH9m1M6VyTkMik4HqTBxehS
ts7v7ms/kdSHG/J0SZht39UEA3GFeQ7ptYaUtBGe7JHkm+7gSbS8aw3jVTj3
cW9zP9sB5jq/WsPj1Z72IRjlTjIP1Qgg/QhQUr9H8sHIU64Ar5mQY3fKH9jZ
wHtTWk8L1Qd3GbuGXxp6Czqz9MGT6bszdj0wX/Sf6XkN7vqiKO73cwmomvQ3
kNAftYzIjJ9IpDPbXBVx9I/tfNoxwejhpZKtbYFCrdhOBZL5yjNGwhzNrHP8
cvJm8vab9mowO3tH0khkaaJW0Jww6UdXzzfrWfVAHHiY6ULJQ84ajb/i4kTC
MCO4Uqw4JUHKbleoWImgETCGYMt9yP0RvClCfpxX6yS+VayBd215Zkq2xLto
hx27iXYWiiYr99hESioJF1IptAdtxOoHdCCzaVkNyhr6hROHjadZckkdyMzS
hySkUgmaU6p75cHECLAyK9/rBmFBMG9+vcv0m+eFjzMYJdsWwEJQat0VWjnV
Gt1JWKPrEHNf+yRs7KozTPnc8nAwMra9biN6BEDDkyXKZju8lKCMFJsmNupM
e90MeZEbujw477y6QHsnbasxDogXSt62ubbnL6ZH+6To7p/KX7HV09qYP8k5
Jc/6cBUfq/f6QZ8h3SvZwOiQmujDuBr0JoJKCSF5GCERsKZ+3I/1bJBgld46
GEkRZy7g8uVm1z6C4LVUUgqB9pR5KcUuoQ0/x5gSxWCLI1BTKcc400IMJCXI
MU8JUMsDDlOMd1FTH7ao9SlK38EnyIqal9osndGNCu0TPjtSXinoPoNkFOBO
jYWgjfYV+LZh6Fafhas56L/iJLASKUU+WPkExqYH9lWW4hqshhkpNMHDhg4L
76C19TuSx6oz0PVJwS9x/oJYqa0+msCYc0R33Fs4+WPs9DDUtokrhkDm2gj8
N9pWMPArJbT3JQFBHxJJrfm8hJ00YN42GW4nXhAyCR2RNsLbh+r6WlSjrUyV
xRIDn/a73serBVl2VQKSRHNukNs9hmBcun2toXR6ySxkqm1E3pycTV++effz
+XRyeRgGQHISzWcTzpnzxxKfyU50eQPrmfNSpy3a7itXpbxKD9eWE2E1eTrQ
DMgu9qxrTN0abFjAN2inpu0EKLsJ/sla7F2NAJSQArO/zhGewJoiEfgBLRGC
3zaPrHntAao9BomSYicWZnb1HB41DrmZji4k9tFmLAQjGEBQM2X7sXaito0j
BcQoZ8XKURtT1IWnqBdJgRqm6WOZJN3EN2qbKUaJdv6VHwxgs8fyviS8iEkJ
azjRQJ/nBUHq1bxQxKXm+Ag133Iymtf6rN0H7wFZRvOebc2w10TJE9biusq1
hq7T04Xes0G81mdJPvVYbvyyh5ZUuEukMhwMW48aQwi2MAhhvYz96Pq2oeVf
wrVs9JqLesYp2ksGAyroyGO2DZda8Q+xXmKQfTLcbAjQY5LiLw5+PseaH7w8
v9xGTqwAspGUrCAB5dEjT0RRIlUXVlTK0SAC91Q8U+KJZi0iOJFsjaFDYzR1
MxfuVd0kdsioHcGnwVClg8nclSw0XlZlJ7hVYe6lflAMwLmU9LqRko6aism4
q8+GSgnCrR4SFr00jTY5d56Efh1+iKUbWZncahDiXHQKiYYQSNmTB0EuHumG
4hoLfxwtZJCbEneMGdGm9P/ZL/lK5GsofYmnzSK4dldMiEkCypMV4wA+bKeO
yfCM4hF2WeqyT5f2sjjQlugyIIcrD7LQRrVRQ+rQ1ZYkHTuMRiEP5tJJQPhm
cnLpAkJZnqHn4Ovxbalekn4IIVKACgrx8sNeBtoPskFWaJRdNzJgaPqOXQky
ZagZvMMcgY7kGlC9AMHiarMjhEsQBlNrsSWDNrxHfYHrauOQA0TXacA1Dfhl
GqCRV8Dm122si/tKqxLFtc0CeW/h7BGukwek9ot2Wr2497ZZMVA/5FeF47+i
/YvKWyNRY6sNAcFiR0pPVxhRPLWZgJK4KZ9pHFYe6cOEBUisDW0EhyTsaAc8
9CPWK5POTPSM7Ddcz9JscxGDudqBOkrPSsFDGiR0E9/Q/wFTDMOw01yk09fs
rxIRl5ugfGHci53hz/yw8StkmKL6xXAgnY+hExoBHqO0HncNQzS2oa//9OUS
UmVYzhQNelParOyr675v3xPZdPV7pfRL2jrz4Z4qJ4QNgpbaszogMvRHPC9s
LEOned+l69xERQ8ByEQKI0dBLMrWWuxf2SN0Ruwd/fe1J6c0v8lnDkv1dWbs
aTEKo5IAgSWZESnS+/lKurZDygg0wQNh52GcZ/006Nqi8+C499Zq2apEB2Sx
QTIe/LDRKTLexGVbH05NpEgZKZ1J1BzitF3bDilZZObQCAONSmtbbk5QjEul
cXcbiIacH+kHqOZ8nFPajeDx6cnrw1cXJ0eWN3328uzgECl0QuYvDt++O38+
ueBnwWN7l9TFxEjtRiMyAyY7zYcDJw6buLo0zy8x/NImjG4cWRUiLLQLDJl/
wtpbqWMWNyP3DTKXWnRI32h7Peb5XblYm9PWWBO7oOqxT2YVGIaSxoKQSUe0
5oIuagf6zNA6oFrVX7F+qUZjfyf4mIh7EAcWalDcUTuwSk+uxjFqIPsCG98L
ebq84ptFlzz59Wtby/Ld3nW+qIs9neXmSpLMzpQ3xKH5ELk0UC2MYp5xdIGT
KvOqD2CEAPPDrEpMBAPs8f5T58fyrvOqqm/lyl9/PZy8On27Pz28ODk+w7hR
+dWTw8sjRv5vKgyR6Byvqs29VzWYwWTst0R9+R0qAIQOpCMqcKplduGT+6K6
XxTPGrPB+Kmblir8V5aQfSi8+fBYZVk/sXMZvmaDUkFkl7NV1Tmemy1blvjw
k/mw86Zc3ILCt67EZAll6WaZr/dP8w/5ZibsDelwKz793V2xWACOW0lW0Xz4
fFOui7tcPquMnyFVE+bdRU6muXnQzoWYwfwX+bWpMTyrsnNZ3s6rZfUBB8II
7ovSGIR8Zf9onImrarWQOx5XK+OcHuXlar5ZQbhOpFvaQ7HGf98YET3dGGmd
F3Kzb9ffy//gQ15Jg4+rsjzaLBYCiH639yL/ZTOvOi9vN3uda/fpf377rfPv
3//+33/+Y++r77/9ao3/S+Jjc2UOwrkxp5tC5DW/WZpNeyNTnVaLzXKGz1ZG
y3UuChmBu9QPzAJMN7e4RGDTH0oTAN9vP5t/APO1W2MDj/L58o/fi86Pf/y+
uhFO5zJ+ns9cv/pb3nnxx7/mi0IGvcWXnZVXt50f8uVtbf/wPF/dFytGASv5
4Kern3LzbqLPKnOWjOycFzijrz7J7qryEG9j876azTsnn4yBxG5d5ut6My+N
QF3Wm7+Vt/mD7NllIZMvVrNSFuHSiPSPlQwP2++8LpGPem2ibxM5fHjyPx7R
iLImQAUA

-->

</rfc>
