<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-multipath-12" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="Multipath QUIC">Multipath Extension for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-12"/>
    <author fullname="刘彦梅" asciiFullname="Yanmei Liu" role="editor">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="马云飞" asciiFullname="Yunfei Ma">
      <organization>Uber Technologies Inc.</organization>
      <address>
        <email>yunfei.ma@uber.com</email>
      </address>
    </author>
    <author initials="Q." surname="De Coninck" fullname="Quentin De Coninck" role="editor">
      <organization>University of Mons (UMONS)</organization>
      <address>
        <email>quentin.deconinck@umons.ac.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain and Tessares</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" role="editor">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 80?>

<t>This document specifies a multipath extension for the QUIC protocol to
enable the simultaneous usage of multiple paths for a single connection.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/quicwg/multipath"/>.</t>
    </note>
  </front>
  <middle>
    <?line 85?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an extension to QUIC version 1 <xref target="QUIC-TRANSPORT"/>
to enable the simultaneous usage of multiple paths for a single
connection. This contrasts with
the base QUIC protocol <xref target="QUIC-TRANSPORT"/> that includes a connection migration mechanism that
selects only one path at a time to exchange such packets.</t>
      <t>The path management specified in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>
fulfills multiple goals: it directs a peer to switch sending through
a new preferred path, and it allows the peer to release resources
associated with the old path. The multipath extension specified in this document requires
several changes to that mechanism:</t>
      <ul spacing="normal">
        <li>
          <t>Simultaneous transmission on multiple paths.</t>
        </li>
        <li>
          <t>Introduction of a path identifier to manage connection IDs and
packet number spaces per path.</t>
        </li>
        <li>
          <t>Removal of paths that have been abandoned.</t>
        </li>
      </ul>
      <t>As such, this extension specifies a departure from the specification of
path management in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> and therefore
requires negotiation between the two endpoints using a new transport
parameter, as specified in <xref target="nego"/>. Further, as different packet number
spaces are used for each path, this specification requires the use of
non-zero connection IDs in order to identify the path and respective
packet number space.</t>
      <t>To add a new path to an existing QUIC connection with multipath support,
a client sends a packet with a connection ID belonging to a so-far unused Path ID on
the chosen path, as further described in <xref target="path-initiation"/>.
A new path can only be used once the associated 4-tuple has been validated
by ensuring that the peer is able to receive packets at that address
(see <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>).
In this version of the document, a QUIC server does not initiate the creation
of a path, but it can validate a new path created by a client.</t>
      <t>Each endpoint may use several IP addresses for the connection. In
particular, the multipath extension supports the following scenarios.</t>
      <ul spacing="normal">
        <li>
          <t>The client uses multiple IP addresses and the server listens on only
one.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses multiple IP addresses and the server listens on
several ones.</t>
        </li>
        <li>
          <t>The client uses only one IP address and the server
listens on only one.</t>
        </li>
      </ul>
      <t>Note that in the last scenario, it still remains possible to have
multiple paths over the connection, given that a path is not only
defined by the IP addresses being used, but also the port numbers.
In particular, the client can use one or several ports per IP
address and the server can listen on one or several ports per IP
address.</t>
      <t>In addition to these core features, an application using the multipath extension will typically
need additional algorithms to handle multiple, simultaneously open paths and how they are used to
send packets. As these differ depending on the application's requirements,
this proposal only specifies a simple basic packet
scheduling algorithm (see <xref target="packet-scheduling"/>),
in order to provide some basic implementation
guidance. However, more advanced algorithms as well as potential
extensions to enhance signaling of the current path status are expected
as future work.</t>
      <t>Further, this proposal does also not cover address discovery and management. Addresses
and the actual decision process to setup or tear down paths are assumed
to be handled by the application that is using the QUIC multipath
extension. This is sufficient to address the first aforementioned
scenario. However, this document does not prevent future extensions from
defining mechanisms to address the remaining scenarios.</t>
      <section anchor="basic-design-points">
        <name>Basic Design Points</name>
        <t>This proposal is based on several basic design points:</t>
        <ul spacing="normal">
          <li>
            <t>Re-use as much as possible mechanisms of QUIC version 1. In
particular, this proposal uses path validation as specified for QUIC
version 1 and aims to re-use as much as possible of QUIC's connection
migration.</t>
          </li>
          <li>
            <t>Use the same packet header formats as QUIC version 1 to minimize
the difference between multipath and non-multipath traffic being
exposed on wire.</t>
          </li>
          <li>
            <t>Congestion Control must be per-path (following <xref target="QUIC-TRANSPORT"/>)
which usually also requires per-path RTT measurements</t>
          </li>
          <li>
            <t>PMTU discovery should be performed per-path</t>
          </li>
          <li>
            <t>The use of this multipath extension requires the use of non-zero
length connection IDs in both directions.</t>
          </li>
          <li>
            <t>Connection IDs are associated with a path ID. The path initiation
associates that path ID with a 4-tuple of source and destination IP
address as well as source and destination port.</t>
          </li>
          <li>
            <t>Migration is detected without ambiguity
when a packet arrives with a connection ID
pointing to an existing path ID, but the connection ID and/or the
4-tuple are different from the value currently used for that path.</t>
          </li>
          <li>
            <t>Paths can be closed at any time, as specified in <xref target="path-close"/>.</t>
          </li>
          <li>
            <t>It is possible to create multiple paths sharing the same 4-tuple.
Each of these paths can be closed at any time, like any other path.</t>
          </li>
        </ul>
        <t>Further the design of this extension introduces an explicit path identifier
and use of multiple packet number spaces as further explained in the next sections.</t>
      </section>
      <section anchor="explicit-path-id">
        <name>Introduction of an Explicit Path Identifier</name>
        <t>This extension specifies a new path identifier (Path ID), which is an
integer between 0 and 2^32-1 (inclusive). Path identifies are generated
monotonically increasing and cannot be reused.
The connection ID of a packet binds the packet to a path identifier, and therefore
to a packet number space.</t>
        <t>The same Path ID is used in both directions to
address a path in the new multipath control frames,
such as PATH_ABANDON <xref target="path-abandon-frame"/>, PATH_STANDBY <xref target="path-backup-available-frame"/>},
PATH_AVAILABLE <xref target="path-backup-available-frame"/> as well as PATH_ACK <xref target="mp-ack-frame"/>.
Further, connection IDs are issued per Path ID using the
PATH_NEW_CONNECTION_ID frame (see <xref target="mp-new-conn-id-frame"/>).
That means each connection ID is associated with exactly one path identifier
but multiple connection IDs are usually issued for each path identifier.</t>
        <t>The Path ID of the initial path is 0. Connection IDs
which are issued by a NEW_CONNECTION_ID frame <xref section="19.15." sectionFormat="of" target="QUIC-TRANSPORT"/>
respectively are associated with Path ID 0. Also, the Path ID for
the connection ID specified in the "preferred address" transport parameter is 0.
Use of the "preferred address" is considered as a migration event
that does not change the Path ID.</t>
      </section>
      <section anchor="use-of-multiple-packet-number-spaces">
        <name>Use of Multiple Packet Number Spaces</name>
        <t>This extension uses multiple packet number spaces, one for each path.
As such, each path maintains distinct packet number states for sending and receiving packets, as in <xref target="QUIC-TRANSPORT"/>.
Using multiple packet number spaces enables direct use of the
loss recovery and congestion control mechanisms defined in
<xref target="QUIC-RECOVERY"/> on a per-path basis.</t>
        <t>Each Path ID-specific packet number space starts at packet number 0. When following
the packet number encoding algorithm described in <xref section="A.2" sectionFormat="of" target="QUIC-TRANSPORT"/>,
the largest packet number (largest_acked) that has been acknowledged by the
peer in the Path ID-specific packet number space is initially set to "None".</t>
        <t>Using multiple packet number spaces requires changes in the way AEAD is
applied for packet protection, as explained in <xref target="multipath-aead"/>.
More concretely, the Path ID is used to construct the
packet protection nonce in addition to the packet number
in order to enable use of the same packet number on different paths.
Respectively, the Path ID is limited to 32 bits to ensure a unique nonce.
Additional consideration on key updates are explained in <xref target="multipath-key-update"/>.</t>
      </section>
      <section anchor="definition">
        <name>Conventions 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 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
        <t>We assume that the reader is familiar with the terminology used in
<xref target="QUIC-TRANSPORT"/>. When this document uses the term "path", it refers
to the notion of "network path" used in <xref target="QUIC-TRANSPORT"/>.</t>
      </section>
    </section>
    <section anchor="nego">
      <name>Handshake Negotiation and Transport Parameter</name>
      <t>This extension defines a new transport parameter, used to negotiate
the use of the multipath extension during the connection handshake,
as specified in <xref target="QUIC-TRANSPORT"/>. The new transport parameter is
defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>initial_max_path_id (current version uses 0x0f739bbc1b666d0c): a
variable-length integer specifying the maximum path identifier
an endpoint is willing to maintain at connection initiation.
This value MUST NOT exceed 2^32-1, the maximum allowed value for the Path ID due to
restrictions on the nonce calculation (see <xref target="multipath-aead"/>).</t>
        </li>
      </ul>
      <t>For example, if initial_max_path_id is set to 1, only connection IDs
associated with Path IDs 0 and 1 should be issued by the peer.
If an endpoint receives an initial_max_path_id transport parameter with value 0,
the peer aims to  enable the multipath extension without allowing extra paths immediately.</t>
      <t>If an initial_max_path_id transport parameter value that is higher than 2^32-1
is received, the receiver MUST close the connection with an error of type
TRANSPORT_PARAMETER_ERROR.</t>
      <t>Setting initial_max_path_id parameter is equivalent to sending a
MAX_PATH_ID frame (<xref target="max-paths-frame"/>) with the same value.
As such to allow for the use of more paths later,
endpoints can send the MAX_PATH_ID frame to increase the maximum allowed path identifier.</t>
      <t>If either of the endpoints does not advertise the initial_max_path_id transport
parameter, then the endpoints MUST NOT use any frame or
mechanism defined in this document.</t>
      <t>When advertising the initial_max_path_id transport parameter, the endpoint
MUST use non-zero length Source and Destination Connection IDs.
If an initial_max_path_id transport
parameter is received and the carrying packet contains a zero-length
connection ID, the receiver MUST treat this as a connection error of type
PROTOCOL_VIOLATION and close the connection.</t>
      <t>The initial_max_path_id parameter MUST NOT be remembered
for use in a subsequent connection (<xref section="7.4.1" sectionFormat="of" target="QUIC-TRANSPORT"/>).
New paths can only be used after handshake completion.</t>
      <t>This extension does not change the definition of any transport parameter
defined in <xref section="18.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>The initial_max_path_id transport parameter limits the initial maximum number of open paths
that can be used during a connection.</t>
      <t>The active_connection_id_limit transport parameter
<xref target="QUIC-TRANSPORT"/> limits the maximum number of active connection IDs per path when the
initial_max_path_id parameter is negotiated successfully.
As defined in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/> connection IDs that are issued and not retired are considered active.
Endpoints might prefer to retain spare connection IDs so that they can
respond to unintentional migration events (<xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
      <t>Cipher suites with a nonce shorter than 12 bytes cannot be used together with
the multipath extension. If such a cipher suite is selected and the use of the
multipath extension is negotiated, endpoints MUST abort the handshake with a
an error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>The PATH_ACK frame, as specified in <xref target="mp-ack-frame"/>, is used to
acknowledge 1-RTT packets.
Compared to the ACK frame as specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the PATH_ACK frame additionally
contains the receiver's Path ID to identify the path-specific packet number space.</t>
      <t>As multipath support is unknown during the handshake, acknowledgments of
Initial and Handshake packets are sent using ACK frames.
If the multipath extension has been successfully
negotiated, ACK frames in 1-RTT packets acknowledge packets for the path with
Path ID 0.</t>
      <t>After the handshake concluded if negotiation of multipath support succeeded,
endpoints SHOULD use PATH_ACK frames instead of ACK frames,
including for acknowledging so far unacknowledged 0-RTT packets using Path ID 0.
Endpoints MUST process ACK frames that acknowledge 0-RTT packets or 1-RTT packets
for Path ID 0, even after successful negotiation of this extension. For example,
ACK frames might be preferred by the sender as long as only the initial path
with Path ID 0 is in use.
Similarly after a successful handshake, endpoints SHOULD also use
the PATH_NEW_CONNECTION_ID frame to provide new connection IDs for Path ID 0 and,
respectively, the PATH_RETIRE_CONNECTION_ID frame to retire connection IDs for
Path ID 0.</t>
    </section>
    <section anchor="path-management">
      <name>Path Management</name>
      <t>After completing the handshake, endpoints have agreed to enable
multipath support. They can also start using multiple paths when both endpoints
have issued available connection IDs for at least one unused Path ID.
If an endpoint receives a disable_active_migration transport parameter
provided by the peer, it is forbidden to use a new local address
to establish new paths to the peer's handshake address. However,
establishment of additional paths from any local address to other peer addresses
(e.g carried by peer’s preferred_address) is valid immediately.</t>
      <t>This document
does not specify how an endpoint that is reachable via several addresses
announces these addresses to the other endpoint. In particular, if the
server uses the preferred_address transport parameter, clients
cannot assume that the initial server address and the addresses
contained in this parameter can be simultaneously used for multipath
(<xref section="9.6.2" sectionFormat="of" target="QUIC-TRANSPORT"/>).
Furthermore, this document
does not discuss when a client decides to initiate a new path. We
delegate such discussion to separate documents.</t>
      <t>To open a new path, an endpoint MUST use a connection ID associated with
a new, unused Path ID. To let the peer open a new path, an endpoint needs
to provide its peer with connection IDs for at least one unused path identifier.
Still, the receiver may observe a connection ID associated with a used Path ID
on different 4-tuples due to, e.g., NAT rebinding. In such a case, the receiver reacts
as specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/> by initiating path validation
but MUST use a new connection ID for the same Path ID.</t>
      <t>This proposal adds six multipath control frames for path management:</t>
      <ul spacing="normal">
        <li>
          <t>PATH_ABANDON frame for the receiver side to abandon the path
(see <xref target="path-abandon-frame"/>),</t>
        </li>
        <li>
          <t>PATH_BACKUP and PATH_AVAILABLE frames to express a preference
in path usage (see <xref target="path-backup-available-frame"/>), and</t>
        </li>
        <li>
          <t>MAX_PATH_ID frame (see <xref target="max-paths-frame"/>) for increasing the limit of
path identifiers,</t>
        </li>
        <li>
          <t>PATHS_BLOCKED and PATH_CID_BLOCKED frames (see <xref target="paths-and-cids-blocked-frame"/>)
to notify the peer of being blocked to open new paths as
the limit of active paths set by the peer has been reached
or there are no unused connection IDs available
for the corresponding Path ID.</t>
        </li>
      </ul>
      <t>All new frames are sent in 1-RTT packets <xref target="QUIC-TRANSPORT"/>.</t>
      <section anchor="path-initiation">
        <name>Path Initiation</name>
        <t>Opening a new path requires the use of a new connection ID (see <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>)
mapped to an unused Path ID (see <xref target="explicit-path-id"/>).
Instead of NEW_CONNECTION_ID frame as specified in <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
each endpoint uses the PATH_NEW_CONNECTION_ID frame as specified in this extension
to issue Path ID-specific connections IDs.
The same Path ID is used in both directions. As such to open
a new path, both sides need at least
one connection ID (see <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>), which is associated
with the same, unused Path ID. When the peer receives the PATH_CHALLENGE,
it MUST pick a Connection ID with the same Path ID for sending the PATH_RESPONSE.</t>
        <t>When the multipath extension is negotiated, a client that wants to use an
additional path MUST validate the peer's address before sending any data packets
as described in (<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>),
unless it has previously validated the 4-tuple used for that path.</t>
        <t>After receiving packets from the
client on a new path, if the server decides to use the new path,
the server MUST validate the peer's address before sending any data packets
as described in (<xref section="8.2" sectionFormat="of" target="QUIC-TRANSPORT"/>),
unless it has previously validated the 4-tuple used for that path.
Until the client's address is
validated, the anti-amplification limit from <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>
applies.</t>
        <t>The server may receive packets for a yet unused Path ID that do not
contain a path challenge. Such packets are valid if they can be properly decrypted
and if they contain a valid connection ID.</t>
        <t>Each endpoint MUST also validate that a minimum MTU of 1200 bytes is supported
on the path. This can be done during initial path validation or separately later if
the amplification limit prevents it initially, as specified in Section 8.2.1 of RFC9000.</t>
        <t>An endpoint that receives packets on a new path and does not want to establish
this path is expected to close the path by sending a PATH_ABANDON
on another path, as specified in section <xref target="path-close"/>.</t>
        <t>An endpoint that has no active connection ID for this path or
lacks other resource to immediately configure a new path could
delay sending the PATH_RESPONSE until sufficient resource are available.
Long delays may cause the peer to repeat the PATH_CHALLENGE and eventually
send a PATH_ABANDON, in which case the procedures specified in
Section <xref target="path-close"/> apply.</t>
        <t>PATH_ACK frames (defined in <xref target="mp-ack-frame"/>) can be returned on any path.
If the PATH_ACK is preferred to be sent on the same path as the acknowledged
packet (see <xref target="compute-rtt"/> for further guidance), it can be beneficial
to bundle a PATH_ACK frame with the PATH_RESPONSE frame during
path validation.</t>
        <t>If validation succeeds, the client can continue to use the path.
If validation fails, the client MUST NOT use the path and can
remove any status associated to the path initiation attempt.
However, as the used Path ID is anyway consumed,
the endpoint MUST explicitly close the path as specified in
<xref target="path-close"/>.</t>
        <t><xref section="9.1" sectionFormat="of" target="QUIC-TRANSPORT"/> introduces the concept of
"probing" and "non-probing" frames. A packet that contains at least
one "non-probing" frame is a "non-probing" packet. When the multipath extension
is negotiated, the reception of a "non-probing"
packet on a new path with a new so far unused Path ID
does not impact the path status of any existing
path. Therefore, any frame can be sent on a new path at any time
as long as the anti-amplification limits
(<xref section="21.1.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>) and the congestion control
limits for this path are respected.</t>
        <t>Connection ID changes as specified in <xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> and
in <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/> for connection migration apply for
connection IDs associated to the same Path ID.
With the successful negotiation of the extension specified
in this draft, endpoints have to consider the reception of
a packet with a connection ID associated to an
so far unused Path ID as an attempt to establish a new path.</t>
        <t>As specified in <xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/>, the server is expected to send a new
address validation token to a client following the successful validation of a
new client address. The client will receive several tokens. When considering using a token
for subsequent connections, it might be difficult for the client
to pick the "right" token among multiple tokens obtained in a previous connection.
The client is likely to fall back to the strategy specified in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>,
i.e., pick the last received token. To avoid issues when clients make the "wrong" choice,
a server should issue a token that is capable of validating
any of the previously validated addresses. Further guidance on token usage can be
found in <xref section="8.1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
      <section anchor="path-status-management">
        <name>Path Status Management</name>
        <t>An endpoint uses the PATH_BACKUP and PATH_AVAILABLE frames to inform the peer that it should
send packets with the preference expressed by these frames.
Note that an endpoint might not follow the peer’s advertisements,
but these frames are still a clear signal of the peer's preference of path usage.
Each peer indicates its preference of path usage independently of the other peer.
That means that peers may have different usage preferences for the same path.
Depending on the data sender's decisions, this may lead to usage of paths that have been
indicated as "standby" by the peer or non-usage of some locally available paths.</t>
        <t>PATH_AVAILABLE indicates that a path is "available", i.e., it suggests to
the peer to use its own logic to split traffic among available paths.</t>
        <t>PATH_BACKUP marks a path as "standby", i.e., it suggests that no traffic
should be sent on that path if another path is available.
If all established paths are marked as "standby", no guidance is provided about
which path should be used.</t>
        <t>If an endpoint starts using a path that was marked as "standby" by its peer
because it has detected issues on the paths marked as "available", it is RECOMMENDED
to update its own path state signaling such that the peer avoids using the broken path.
An endpoint that detects a path breakage can also explicitly close the path
by sending a PATH_ABANDON frame (see <xref target="path-close"/>) in order to avoid
that its peer keeps using it and enable faster switch over to a standby path.
If the endpoints do not want to close the path immediately, as connectivity
could be re-established, PING frames can potentially be used to quickly detect
connectivity changes and switch back in a timely way.</t>
        <t>If no frame indicating a path usage preference was received for a certain path,
the preference of the peer is unknown and the sender needs to decide based on it
own local logic if the path should be used.</t>
        <t>Endpoints use the Path ID
in these frames to identify which path state is going to be
changed. Note that both frames can be sent via a different path
and therefore might arrive in different orders.
The PATH_AVAILABLE and PATH_BACKUP frames share a common sequence number space
to detect and ignore outdated information.</t>
      </section>
      <section anchor="path-close">
        <name>Path Close</name>
        <t>Each endpoint manages the set of paths that are available for
transmission. At any time in the connection, each endpoint can decide to
abandon one of these paths, for example following changes in local
connectivity or local preferences. After an endpoint abandons
a path, the peer can expect to not receive any more packets on
that path.</t>
        <t>Note that other explicit closing mechanisms of <xref target="QUIC-TRANSPORT"/> still
apply on the whole connection. In particular, the reception of either a
CONNECTION_CLOSE (<xref section="10.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) or a Stateless
Reset (<xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>) closes the connection.</t>
        <t>An endpoint that wants to close a path MUST explicitly
terminate the path by sending a PATH_ABANDON frame.
Note that while abandoning a path will cause
connection ID retirement, the inverse is not true: retiring the associated connection IDs
does not indicate path abandonment (see further <xref target="consume-retire-cid"/>).
This is true whether the decision to close the path results
from implicit signals such as idle time or packet losses
(see <xref target="idle-time-close"/>) or for any other reason, such as management
of local resources. It is also possible to abandon a path for which no
packet has been sent (see <xref target="abandon-early"/>).</t>
        <t>When an endpoint receives a PATH_ABANDON frame, it MUST send a corresponding
PATH_ABANDON frame if it has not already done so. It MUST stop sending
any new packet on the abandoned path, and it MUST treat all
connection identifiers received from the peer for that path as immediately
retired. However, knowledge of the
connection identifiers received from the peer and of the state
of the number space associated to the path SHOULD be retained while
packets from the peer might still be in transit, i.e., for a delay of
3 PTO after the PATH_ABANDON frame has been received from the peer,
both to avoid generating spurious stateless packets as specified in
<xref target="spurious-stateless-reset"/> and to be able to acknowledge the
last packets received from the peer as specified in <xref target="ack-after-abandon"/>.</t>
        <t>If a peer sends a PATH_ABANDON frame but never receives
a corresponding PATH_ABANDON frame, it might not be able to remove path state.
It is left to the implementation to handle this unexpected
behavior as it does not impact interoperability. If the endpoint is no longer
willing to process the issued connection IDs for the abandoned path,
it MAY close the connection, but SHOULD wait at least 3 PTOs after
sending the PATH_ABANDON frame.</t>
        <t>After receiving or sending a PATH_ABANDON frame, the endpoints SHOULD
promptly send PATH_ACK frames to acknowledge all packets received on
the path and not yet acknowledged, as specified in <xref target="ack-after-abandon"/>.
When an endpoint finally deletes all resource associated with the path,
the packets sent over the path and not yet acknowledged MUST be considered lost.</t>
        <t>After a path is abandoned, the Path ID MUST NOT be reused
for new paths, as the Path ID is part of the nonce calculation <xref target="multipath-aead"/>.</t>
        <t>PATH_ABANDON frames can be sent on any path,
not only the path that is intended to be closed.
It is RECOMMENDED to send the PATH_ABANDON frames on another path,
especially if connectivity on the to-be-abandoned path
is expected to be broken.</t>
        <t>If a PATH_ABANDON frame is received for the only open path of a QUIC
connection, the receiving peer SHOULD send a CONNECTION_CLOSE frame
and enter the closing state. If the client received a PATH_ABANDON
frame for the last open path, it MAY instead try to open a new path, if
available, and only initiate connection closure if path validation fails
or a CONNECTION_CLOSE frame is received from the server. Similarly
the server MAY wait for a short, limited time such as one PTO if a path
probing packet is received on a new path before sending the
CONNECTION_CLOSE frame.</t>
        <section anchor="spurious-stateless-reset">
          <name>Avoiding Spurious Stateless Resets</name>
          <t>The peers that send a PATH_ABANDON frame MUST treat all connection
identifiers received from the peer for the Path ID as immediately
retired. The Stateless Reset Tokens associated with these connection
identifiers MUST NOT be used to identify Stateless Reset packets
per <xref section="10.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
          <t>Due to packet losses and network delays, packets sent on the path may
well arrive after the PATH_ABANDON frames have been sent or received.
If these packets arrive after the connection identifiers sent to the peer
have been retired, they will not be recognized as bound for the local
connection and could trigger the peer to send a Stateless Reset
packet. The rule to "retain knowledge of connection ID for 3 PTO
after receiving a PATH_ABANDON"
is intended to reduce the risk of sending such spurious stateless
packets, but it cannot completely avoid that risk.</t>
          <t>The immediate retirement of connection identifiers received for the
path guarantees that spurious stateless reset packets
sent by the peer will not cause the closure of the QUIC connection.</t>
        </section>
        <section anchor="ack-after-abandon">
          <name>Handling PATH_ACK for abandoned paths</name>
          <t>When an endpoint decides to send a PATH_ABANDON frame, there may
still be some unacknowledged packets. Some other packets may well
be in transit, and could be received shortly after sending the
PATH_ABANDON frame. As specified above, the endpoints SHOULD
send PATH_ACK frames promptly, to avoid unnecessary data
retransmission after the peer deletes path resources.</t>
          <t>These PATH_ACK frames MUST be sent on a different path than the
path being abandoned.</t>
          <t>PATH_ACK frames received after the endpoint has entirely deleted
a path MUST be silently discarded.</t>
        </section>
        <section anchor="idle-time-close">
          <name>Idle Timeout</name>
          <t><xref target="QUIC-TRANSPORT"/> allows for closing of connections if they stay idle
for too long. The connection idle timeout when using the multipath extension is defined
as "no packet received on any path for the duration of the idle timeout".
When only one path is available, servers MUST follow the specifications
in <xref target="QUIC-TRANSPORT"/>.</t>
          <t>This document does not specify per-path idle timeouts. An endpoint
can decide to close a path at any time, whether the path is in active
use or not, by sending a PATH_ABANDON frame. It is not required
to send a PATH_ABANDON frame at any specific point in time.
For example, an endpoint may wait until it will anyway send another frame.</t>
          <t>If a path is not actively used for a while, it might not be usable anymore,
e.g. due to middlebox timeouts. To avoid such path breakage, endpoints
can send ack-eliciting packets such as packets containing PING frames
(<xref section="19.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) on that path to keep it alive.
As discussed in
<xref section="10.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, the keep-alive interval depends
on the timeout in the middlebox.</t>
          <t>If a path was not actively used for a while, an endpoint can
probe it before switching to active use if there are still other paths
that are currently usable.</t>
        </section>
        <section anchor="abandon-early">
          <name>Early Abandon</name>
          <t>There are scenarios in which an endpoint will receive a PATH_ABANDON frame
before receiving or sending any traffic on a path. For example, if the client
tries to initiate a path and the path cannot be established, it will send a
PATH_ABANDON frame (see <xref target="path-initiation"/>). An endpoint may also decide
to abandon a path for any reason, for example, removing a hole from
the sequence of path IDs in use. This is not an error. An endpoint that
receives such a PATH_ABANDON frame must treat it as specified in <xref target="path-close"/>.</t>
        </section>
      </section>
      <section anchor="consume-retire-cid">
        <name>Allocating, Consuming, and Retiring Connection IDs</name>
        <t>With the multipath extension, each connection ID is associated with one path
that is identified by the Path ID that is specified in the Path Identifier field of
the PATH_NEW_CONNECTION_ID frame <xref target="mp-new-conn-id-frame"/>.
The Path ID 0 indicates the initial path of the connection.
Respectively, the connection IDs used during the handshake belong to the initial path
with Path ID 0.
The PATH_NEW_CONNECTION_ID frame is used to issue new connection IDs for all paths.
In order to let the peer open new paths, it is RECOMMENDED to proactively
issue a Connection ID for at least one unused Path ID, as long as it remains
compatible with the peer's Maximum Path ID limit.</t>
        <t>When issuing path-specific connection IDs, an endpoint associates a sequence number
as specified in <xref section="5.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. Each Path ID has its own
connection ID sequence number space whose initial value is 0. On non-initial paths
(i.e., Path ID different from 0), the initial path connection ID is provided by a
PATH_NEW_CONNECTION_ID frame with a sequence number value of 0.</t>
        <t>Each endpoint maintains the set of connection IDs received from its peer for each path,
any of which it can use when sending packets on that path; see also <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.
Usually, it is desired to provide at least one additional connection ID for
all used paths, to allow for migration.
As further specified in <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/> connection IDs
cannot be issued more than once on the same connection
and therefore are unique for the scope of the connection,
regardless of the associated Path ID.</t>
        <t><xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> indicates that an endpoint
can change the connection ID it uses to another available one
at any time during the connection. For the extension specified in
this draft, endpoints MUST only rotate to another connection IDs associated
to the same Path ID. Use of a connection ID associated with
another Path ID will be considered as an attempt to open a new path instead.</t>
        <t>Over a given path, both endpoints use connection IDs associated to a given Path
ID. To initiate a path, each endpoint needs to advertise at least one connection ID
for a given Path ID to its peer. Endpoints SHOULD NOT introduce discontinuity
in the issuing of Path IDs through their connection ID advertisements as path initiation
requires available connection IDs for the same Path ID on both sides. For instance,
if the maximum Path ID limit is 2 and the endpoint wants to provide connection IDs
for only one Path ID inside range [1, 2], it should select Path ID 1 (and not Path
ID 2). Similarly, endpoints SHOULD consume Path IDs in a continuous way, i.e., when
creating paths. However, endpoints cannot expect to receive new connection IDs
or path initiation attempts with in order use of Path IDs
due to out-of-order delivery or path validation failure.</t>
        <t><xref section="5.1.2." sectionFormat="of" target="QUIC-TRANSPORT"/> specifies the retirement of connection IDs.
In order to identify a connection ID correctly when the multipath extension is used,
endpoints have to use the PATH_RETIRE_CONNECTION_ID frame instead
of the RETIRE_CONNECTION_ID frame to indicate the respective Path ID together with the
connection ID sequence number, at least for all paths with a Path ID other than 0.
Endpoints can also use PATH_NEW_CONNECTION_ID and
PATH_RETIRE_CONNECTION_ID for the initial path with Path ID 0,
however, the use of NEW_CONNECTION_ID and RETIRE_CONNECTION_ID
is still valid as well and endpoints need to process these frames accordingly
as corresponding to Path ID 0.</t>
        <t>Endpoints MUST NOT issue new connection IDs with Path IDs greater than
the Maximum Path Identifier field in MAX_PATH_ID frames (see <xref target="max-paths-frame"/>)
or the value of initial_max_path_id transport parameter if no MAX_PATH_ID frame was received yet.
Receipt of a frame with a greater Path ID is a connection error as specified
in <xref target="frames"/>.
When an endpoint finds it has not enough available unused path identifiers,
it SHOULD either send a MAX_PATH_ID frame to increase the active path limit
(when limited by the sender) or a PATHS_BLOCKED frame
(see Section <xref target="paths-and-cids-blocked-frame"/>) to inform the peer that a new path
identifier was needed but the current limit set by the peer prevented the
creation of the new path.</t>
        <t>If the client has consumed all the allocated connection IDs for a path, it is supposed to retire
those that are not used anymore, and the server is supposed to provide
replacements for that path, see <xref section="5.1.2." sectionFormat="of" target="QUIC-TRANSPORT"/>.
Sending a PATH_RETIRE_CONNECTION_ID frame indicates that the connection ID
will not be used anymore. In response, if the path is still open, the peer
SHOULD provide new connection IDs using PATH_NEW_CONNECTION_ID frames.</t>
        <t>Retirement of connection IDs will not retire the Path ID
that corresponds to the connection ID or any other path resources
as the packet number space is associated with a path.</t>
        <t>The peer that sends the PATH_RETIRE_CONNECTION_ID frame can keep sending data
on the path that the retired connection ID was used on but has
to use a different connection ID for the same Path ID when doing so.</t>
      </section>
    </section>
    <section anchor="multipath-aead">
      <name>Packet Protection</name>
      <t>Packet protection for QUIC version 1 is specified in <xref section="5" sectionFormat="of" target="QUIC-TLS"/>.
The general principles of packet protection are not changed for
the multipath extension specified in this document.
No changes are needed for setting packet protection keys,
initial secrets, header protection, use of 0-RTT keys, receiving
out-of-order protected packets, receiving protected packets,
or retry packet integrity. However, the use of multiple number spaces
for 1-RTT packets requires changes in AEAD usage.</t>
      <section anchor="nonce-calculation">
        <name>Nonce Calculation</name>
        <t><xref section="5.3" sectionFormat="of" target="QUIC-TLS"/> specifies AEAD usage, and in particular
the use of a nonce, N, formed by combining the packet protection IV
with the packet number. When multiple packet number spaces are used,
the packet number alone would not guarantee the uniqueness of the nonce.
Therefore, the nonce N is calculated by combining the packet protection
IV with the packet number and with the least significant 32 bits of the
Path ID. In order to guarantee the uniqueness of the nonce, the Path ID
is limited to a max value of 2^32-1.</t>
        <t>To calculate the nonce, a 96-bit path-and-packet-number is composed of the least
significant 32 bits of the Path ID in network byte order,
two zero bits, and the 62 bits of the reconstructed QUIC packet number in
network byte order. If the IV is larger than 96 bits, the path-and-packet-number
is left-padded with zeros to the size of the IV. The exclusive OR of the padded
packet number and the IV forms the AEAD nonce.</t>
        <t>For example, assuming the IV value is <tt>6b26114b9cba2b63a9e8dd4f</tt>,
the Path ID is <tt>3</tt>, and the packet number is <tt>aead</tt>,
the nonce will be set to <tt>6b2611489cba2b63a9e873e2</tt>.</t>
      </section>
      <section anchor="multipath-key-update">
        <name>Key Update</name>
        <t>The Key Phase bit update process is specified in
<xref section="6" sectionFormat="of" target="QUIC-TLS"/>. The general principles of key update
are not changed in this specification. Following <xref target="QUIC-TLS"/>, the Key Phase bit is used to
indicate which packet protection keys are used to protect the packet.
The Key Phase bit is toggled to signal each subsequent key update.</t>
        <t>Because of network delays, packets protected with the older key might
arrive later than the packets protected with the new key, however receivers
can solely rely on the Key Phase bit to determine the corresponding packet
protection key, assuming that there is sufficient interval between two
consecutive key updates (<xref section="6.5" sectionFormat="of" target="QUIC-TLS"/>).</t>
        <t>When this specification is used, endpoints SHOULD wait for at least three times
the largest PTO among all the paths before initiating a new key update
after receiving an acknowledgment that confirms the receipt of the previous key
update. This interval is different from that in <xref target="QUIC-TLS"/>
which used three times the PTO of the sole single path.</t>
        <t>The choice of three times the largest PTO is a trade-off:
Packets that arrive after their decryption key has been discarded will be dropped.
Longer delays reduce the probability of losing packets but keeping old keys
longer can negatively impact the security of the protocol.
The use of three times the largest PTO aims to minimize packet lost for all paths
and therefore limits the impact on performance.</t>
        <t>Following <xref section="5.4" sectionFormat="of" target="QUIC-TLS"/>, the Key Phase bit is protected,
so sending multiple packets with Key Phase bit flipping at the same time
should not cause linkability issue.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="path-establishment">
        <name>Path Establishment</name>
        <t><xref target="fig-example-new-path"/> illustrates an example of new path establishment
using multiple packet number spaces.</t>
        <t>In this example it is assumed that both endpoints have
indicated an initial_max_path_id value of at least 2, which means
both endpoints can use Path IDs 0, 1, and 2. Note that
Path ID 0 is already used for the initial path.</t>
        <figure anchor="fig-example-new-path">
          <name>Example of new path establishment</name>
          <artwork><![CDATA[
   Client                                                  Server

   (Exchanges start on default path)
   1-RTT[]: PATH_NEW_CONNECTION_ID[C1, Seq=0, PathID=1] -->
             <-- 1-RTT[]: PATH_NEW_CONNECTION_ID[S1, Seq=0, PathID=1]
             <-- 1-RTT[]: PATH_NEW_CONNECTION_ID[S2, Seq=0, PathID=2]
   ...
   (starts new path)
   1-RTT[0]: DCID=S1, PATH_CHALLENGE[X] -->
                           Checks AEAD using nonce(Path ID 1, PN 0)
        <-- 1-RTT[0]: DCID=C1, PATH_RESPONSE[X], PATH_CHALLENGE[Y],
                                             PATH_ACK[PathID=1, PN=0]
   Checks AEAD using nonce(Path ID 1, PN 0)
   1-RTT[1]: DCID=S1, PATH_RESPONSE[Y],
            PATH_ACK[PathID=1, PN=0], ... -->

]]></artwork>
        </figure>
        <t>In <xref target="fig-example-new-path"/>, the endpoints first exchange
new available connection IDs with the NEW_CONNECTION_ID frame.
In this example, the client provides one connection ID (C1 with
Path ID 1), and server provides two connection IDs
(S1 with Path ID 1, and S2 with Path ID 2).</t>
        <t>Before the client opens a new path by sending a packet on that path
with a PATH_CHALLENGE frame, it has to check whether there is
an unused connection IDs for the same unused Path ID available for each side.
In this example the Path ID 1 is used which is the smallest unused Path ID available
as recommended in <xref target="consume-retire-cid"/>.
Respectively, the client chooses the connection ID S1
as the Destination Connection ID of the new path.</t>
      </section>
      <section anchor="path-closure">
        <name>Path Closure</name>
        <t><xref target="fig-example-path-close1"/> illustrates an example of path closure.</t>
        <t>In this example, the client wants to close the path with Path ID 1.
It sends the PATH_ABANDON frame to terminate the path. After receiving
the PATH_ABANDON frame with Path ID 1, the server also send a
PATH_ABANDON frame with Path ID 1.</t>
        <figure anchor="fig-example-path-close1">
          <name>Example of closing a path.</name>
          <artwork><![CDATA[
Client                                                      Server

(client tells server to abandon a path with Path ID 1)
1-RTT[X]: DCID=S1 PATH_ABANDON[Path ID=1]->
                           (server tells client to abandon a path)
                    <-1-RTT[Y]: DCID=C1 PATH_ABANDON[Path ID=1],
                                           PATH_ACK[PATH ID=1, PN=X]
1-RTT[U]: DCID=S2 PATH_ACK[Path ID=1, PN=Y] ->
]]></artwork>
        </figure>
        <t>Note that the last acknowledgment needs to be send on a different path. This examples assumes another path which uses connection ID S2 exists.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="number-spaces">
        <name>Number Spaces</name>
        <t>As stated in <xref target="introduction"/>, when the multipath extension is negotiated, each
path uses a separate packet number space.
This is a major difference from
<xref target="QUIC-TRANSPORT"/>, which only defines three number spaces (Initial,
Handshake and Application packets).</t>
        <t>The relation between packet number spaces and paths is fixed.
Connection IDs are separately allocated for each Path ID.
Rotating the connection ID on a path does not change the Path ID.
NAT rebinding, though it changes the 4-tuple of the path,
also does not change the path identifier.
The packet number space does not change when connection ID
rotation happens within a given Path ID.</t>
        <t>Data associated with the transmission and reception such RTT measurements,
congestion control state, or loss recovery are maintained per packet number
space and as such per Path ID.</t>
      </section>
      <section anchor="congestion-control">
        <name>Congestion Control</name>
        <t>When the QUIC multipath extension is used, senders manage per-path
congestion status as required in <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.
However, in <xref target="QUIC-TRANSPORT"/> only one path is assumed and as such
the requirement is to reset the congestion control status on path migration.
With the multipath extension, multiple paths can be used simultaneously,
therefore separate congestion control state is maintained for each path.
This means a sender is not allowed to send more data on a given path
than congestion control for that path indicates.</t>
        <t>When a Multipath QUIC connection uses two or more paths, there is no
guarantee that these paths are fully disjoint. When two (or more paths)
share the same bottleneck, using a standard congestion control scheme
could result in an unfair distribution of the bandwidth with
the multipath connection getting more bandwidth than competing single
paths connections. Multipath TCP uses the linked increased algorithm (LIA)
congestion control scheme
specified in <xref target="RFC6356"/> to solve this problem.  This scheme can
immediately be adapted to Multipath QUIC. Other coupled congestion
control schemes have been proposed for Multipath TCP such as <xref target="OLIA"/>.</t>
      </section>
      <section anchor="compute-rtt">
        <name>Computing Path RTT</name>
        <t>Acknowledgment delays are the sum of two one-way delays, the delay
on the packet sending path and the delay on the return path chosen
for the acknowledgments.  When different paths have different
characteristics, this can cause acknowledgment delays to vary
widely.  Consider for example a multipath transmission using both a
terrestrial path, with a latency of 50ms in each direction, and a
geostationary satellite path, with a latency of 300ms in both
directions.  The acknowledgment delay will depend on the combination
of paths used for the packet transmission and the ACK transmission,
as shown in <xref target="fig-example-ack-delay"/>.</t>
        <table anchor="fig-example-ack-delay">
          <name>Example of ACK delays using multiple paths</name>
          <thead>
            <tr>
              <th align="left">ACK Path \ Data path</th>
              <th align="left">Terrestrial</th>
              <th align="left">Satellite</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Terrestrial</td>
              <td align="left">100ms</td>
              <td align="left">350ms</td>
            </tr>
            <tr>
              <td align="left">Satellite</td>
              <td align="left">350ms</td>
              <td align="left">600ms</td>
            </tr>
          </tbody>
        </table>
        <t>The PATH_ACK frames describe packets that were sent on the specified path,
but they may be received through any available path. There is an
understandable concern that if successive acknowledgments are received
on different paths, the measured RTT samples will fluctuate widely,
and that might result in poor performance. While this may be a concern,
the actual behavior is complex.</t>
        <t>The computed values reflect both the state of the network path and the
scheduling decisions by the sender of the PATH_ACK frames. In the example
above, we may assume that the PATH_ACK will be sent over the terrestrial
link, because that provides the best response time. In that case, the
computed RTT value for the satellite path will be about 350ms. This
lower than the 600ms that would be measured if the PATH_ACK came over
the satellite channel, but it is still the right value for computing
for example the PTO timeout: if a PATH_ACK is not received after more
than 350ms, either the data packet or its PATH_ACK were probably lost.</t>
        <t>The simplest implementation is to compute smoothed_rtt and rttvar per
<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/> regardless of the path through which PATH_ACK frames are
received. This algorithm will provide good results,
except if the set of paths changes and the PATH_ACK sender
revisits its sending preferences. This is not very
different from what happens on a single path if the routing changes.
The RTT, RTT variance and PTO estimates will rapidly converge to
reflect the new conditions.
There is however an exception: some congestion
control functions rely on estimates of the minimum RTT. It might be prudent
for nodes to remember the path over which the PATH_ACK that produced
the minimum RTT was received, and to restart the minimum RTT computation
if that path is abandoned.</t>
      </section>
      <section anchor="packet-scheduling">
        <name>Packet Scheduling</name>
        <t>The transmission of QUIC packets on a regular QUIC connection is regulated
by the arrival of data from the application and the congestion control
scheme. QUIC packets that increase the number of bytes in flight can only be sent
when the congestion window allows it.
Multipath QUIC implementations also need to include a packet scheduler
that decides, among the paths whose congestion window is open, the path
over which the next QUIC packet will be sent. Most frames, including
control frames (PATH_CHALLENGE and PATH_RESPONSE being the notable
exceptions), can be sent and received on any open path. The scheduling
is a local decision, based on the preferences of the application and the
implementation.</t>
        <t>Note that this implies that an endpoint may send and receive PATH_ACK
frames on a path different from the one that carried the acknowledged
packets. As noted in <xref target="compute-rtt"/> the values computed using
the standard algorithm reflect both the characteristics of the
path and the scheduling algorithm of PATH_ACK frames. The estimates will converge
faster if the scheduling strategy is stable, but besides that
implementations can choose between multiple strategies such as sending
PATH_ACK frames on the path they acknowledge packets, or sending
PATH_ACK frames on the shortest path, which results in shorter control loops
and thus better performance. However, since packets that only carry PATH_ACK frames
are not congestion controlled (see <xref section="7" sectionFormat="of" target="QUIC-RECOVERY"/>),
senders should carefully consider the load induced
by these packets, especially if the capacity is unknown on that path.</t>
      </section>
      <section anchor="retransmissions">
        <name>Retransmissions</name>
        <t>Simultaneous use of multiple paths enables different
retransmission strategies to cope with losses such as:
a) retransmitting lost frames over the
same path, b) retransmitting lost frames on a different or
dedicated path, and c) duplicate lost frames on several paths (not
recommended for general purpose use due to the network
overhead). While this document does not preclude a specific
strategy, more detailed specification is out of scope.</t>
        <t>As noted in <xref section="2.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, STREAM frame boundaries are not
expected to be preserved when data is retransmitted. Especially when STREAM
frames have to be retransmitted over a different path with a smaller MTU limit,
new smaller STREAM frames might need to be sent instead.</t>
      </section>
      <section anchor="handling-pto">
        <name>Handling PTO</name>
        <t>An implementation should follow the mechanism specified in <xref target="QUIC-RECOVERY"/>
for detecting packet loss on each individual path. A special case happens when
the PTO timer expires. According to <xref target="QUIC-RECOVERY"/>, no packet will be declared
lost until either the packet sender receives a new acknowledgement for this path,
or the path itself is finally declared broken. This cautious process minimizes
the risk of spurious retransmissions, but it may cause significant delivery delay
for the frames contained in these "lost packets".</t>
        <t>Endpoints could take advantage of the multipath extension, and retransmit the content
of the delayed packets on other available paths if the congestion control window on these
paths allows.</t>
      </section>
      <section anchor="handling-different-pmtu-sizes">
        <name>Handling different PMTU sizes</name>
        <t>An implementation should take care to handle different PMTU sizes across
multiple paths. As specified in <xref section="14.3" sectionFormat="of" target="QUIC-TRANSPORT"/> the
DPLPMTUD Maximum Packet Size (MPS) is maintained for each combination of local and remote IP addresses.
One simple option, if the PMTUs are relatively similar, is to apply the minimum PMTU of all paths to
each path. The benefit of such an approach is to simplify retransmission
processing as the content of lost packets initially sent on one path can be sent
on another path without further frame scheduling adaptations.</t>
      </section>
      <section anchor="keep-alive">
        <name>Keep Alive</name>
        <t>The QUIC specification defines an optional keep alive process, see <xref section="5.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.
Implementations of the multipath extension should map this keep alive process to a number of paths.
Some applications may keep only one path alive, while others could prefer to maintain
liveliness on two or more paths during the connection lifetime.
Different applications will likely require different strategies.
Once the implementation has decided which paths to keep alive, it can do so by sending Ping frames
on each of these paths before the idle timeout expires.</t>
      </section>
      <section anchor="connection-id-changes">
        <name>Connection ID Changes</name>
        <t><xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> indicates that an endpoint
can change the connection ID it uses to another available one
at any time during the connection. As such a sole change of the Connection
ID without any change in the address does not indicate a path change and
the endpoint can keep the same congestion control and RTT measurement state.</t>
      </section>
      <section anchor="migration">
        <name>Migration and NAT Rebindings</name>
        <t>While endpoints assign a connection ID to a specific sending 4-tuple,
networks events such as NAT rebinding may make the packet's receiver
observe a different 4-tuple. Servers observing a 4-tuple change will
perform path validation (see <xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>).
If path validation process succeeds, the endpoints set
the path's congestion controller and round-trip time
estimator according to <xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t><xref section="9.3" sectionFormat="of" target="QUIC-TRANSPORT"/> allows an endpoint to skip validation of
a peer address if that address has been seen recently. However, when the
multipath extension is used and an endpoint has multiple addresses that
could lead to switching between different paths, it should rather maintain
multiple open paths instead.</t>
        <t>More generally, while migration cannot be avoided in case of network-based
NAT rebindings, opening a new path instead of active client migration
should be strongly preferred when the multipath extension is supported.
This enables a smoother handover and allows a simplified migration
handling at the server as NAT rebindings imply immediate loss of the old
address.</t>
      </section>
      <section anchor="using-multiple-paths-on-the-same-4-tuple">
        <name>Using multiple paths on the same 4-tuple</name>
        <t>As noted in <xref target="basic-design-points"/>, it is possible to create paths that
refer to the same 4-tuple. For example, the endpoints may want
to create paths that use different Differentiated Service <xref target="RFC2475"/> markings.
This could be done in conjunction with scheduling algorithms
that match streams to paths, so that for example data frames for
low priority streams are sent over low priority paths.
Since these paths use different path IDs, they can be managed
independently to suit the needs of the application.</t>
        <t>There may be cases in which paths are created with different 4-tuples,
but end up using the same 4-tuples as a consequence of path
migrations. For example:</t>
        <ul spacing="normal">
          <li>
            <t>Client starts path 1 from address 192.0.2.1 to server address 198.51.100.1</t>
          </li>
          <li>
            <t>Client starts path 2 from address 192.0.2.2 to server address 198.51.100.1</t>
          </li>
          <li>
            <t>both paths are used for a while.</t>
          </li>
          <li>
            <t>Server sends packet from address 198.51.100.1 to client address 192.0.2.1, with CID indicating path=2.</t>
          </li>
          <li>
            <t>Client receives packet, recognizes a path migration, update source address of path 2 to 192.0.2.1.</t>
          </li>
        </ul>
        <t>Such unintentional use of the same 4-tuple on different paths ought to
be rare. When they happen, the two paths would be redundant, and the
endpoint will want to close one of them.
Uncoordinated Abandon from both ends of the connection may result in deleting
two paths instead of just one. To avoid this pitfall, endpoints could
adopt a simple coordination rule, such as only letting the client
initiate closure of duplicate paths, or perhaps relying on
the application protocol to decide which paths should be closed.</t>
      </section>
    </section>
    <section anchor="frames">
      <name>New Frames</name>
      <t>All frames defined in this document MUST only be sent in 1-RTT packets.</t>
      <t>If an endpoint receives a multipath-specific frame in a different packet type,
it MUST close the connection with an error of type FRAME_ENCODING_ERROR.</t>
      <t>Receipt of multipath-specific frames
that use a Path ID that is greater than the announced Maximum Paths value
in the MAX_PATH_ID frame or in the initial_max_path_id transport parameter,
if no MAX_PATH_ID frame was received yet,
MUST be treated as a connection error of type PROTOCOL_VIOLATION.</t>
      <t>If an endpoint receives a multipath-specific frame
with a path identifier that it cannot process
anymore (e.g., because the path might have been abandoned), it
MUST silently ignore the frame.</t>
      <section anchor="mp-ack-frame">
        <name>PATH_ACK Frame</name>
        <t>The PATH_ACK frame (types TBD-00 and TBD-01)
is an extension of the ACK frame specified in <xref section="19.3" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is
used to acknowledge packets that were sent on different paths, as
each path as its own packet number space. If the frame type is TBD-01, PATH_ACK frames
also contain the sum of QUIC packets with associated ECN marks received
on the acknowledged packet number space up to this point.</t>
        <t>PATH_ACK frame is formatted as shown in <xref target="fig-mp-ack-format"/>.</t>
        <figure anchor="fig-mp-ack-format">
          <name>PATH_ACK Frame Format</name>
          <artwork><![CDATA[
  PATH_ACK Frame {
    Type (i) = TBD-00..TBD-01
         (experiments use  0x15228c00-0x15228c01),
    Path Identifier (i),
    Largest Acknowledged (i),
    ACK Delay (i),
    ACK Range Count (i),
    First ACK Range (i),
    ACK Range (..) ...,
    [ECN Counts (..)],
  }
]]></artwork>
        </figure>
        <t>Compared to the ACK frame specified in <xref target="QUIC-TRANSPORT"/>, the following
field is added.</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the packet number space of the 0-RTT and 1-RTT packets
which are acknowledged by the PATH_ACK frame.</t>
          </dd>
        </dl>
      </section>
      <section anchor="path-abandon-frame">
        <name>PATH_ABANDON Frame</name>
        <t>The PATH_ABANDON frame informs the peer to abandon a path.</t>
        <t>PATH_ABANDON frames are formatted as shown in <xref target="fig-path-abandon-format"/>.</t>
        <figure anchor="fig-path-abandon-format">
          <name>PATH_ABANDON Frame Format</name>
          <artwork><![CDATA[
  PATH_ABANDON Frame {
    Type (i) = TBD-02 (experiments use 0x15228c05),
    Path Identifier (i),
    Error Code (i),
  }
]]></artwork>
        </figure>
        <t>PATH_ABANDON frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID to abandon.</t>
          </dd>
          <dt>Error Code:</dt>
          <dd>
            <t>A variable-length integer that indicates the reason for abandoning
this path. NO_ERROR(0x0) indicates that the path is being abandoned
without any error being encountered. Other error codes can be found in <xref target="error-codes"/>.</t>
          </dd>
        </dl>
        <t>PATH_ABANDON frames are ack-eliciting. If a packet containing
a PATH_ABANDON frame is considered lost, the peer SHOULD repeat it.</t>
        <t>Use of the PATH_ABANDON frame is specified in section <xref target="path-close"/>.</t>
      </section>
      <section anchor="path-backup-available-frame">
        <name>PATH_BACKUP and PATH_AVAILABLE frames</name>
        <t>PATH_AVAILABLE frames are used by endpoints to inform the peer
that the indicated path is available for sending.
PATH_AVAILABLE frames are formatted as shown in <xref target="fig-path-available-format"/>.</t>
        <figure anchor="fig-path-available-format">
          <name>PATH_AVAILABLE Frame Format</name>
          <artwork><![CDATA[
  PATH_AVAILABLE Frame {
    Type (i) = TBD-04 (experiments use 0x15228c08),
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>PATH_BACKUP frames are used by endpoints to inform the peer
about its preference to not use the indicated path for sending.
PATH_BACKUP frames are formatted as shown in <xref target="fig-path-backup-format"/>.</t>
        <figure anchor="fig-path-backup-format">
          <name>PATH_BACKUP Frame Format</name>
          <artwork><![CDATA[
  PATH_BACKUP Frame {
    Type (i) = TBD-03 (experiments use 0x15228c07)
    Path Identifier (i),
    Path Status Sequence Number (i),
  }
]]></artwork>
        </figure>
        <t>Both PATH_AVAILABLE and PATH_BACKUP Frames contain the following fields:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID the status update corresponds to.
All Path IDs that have been issued
MAY be specified, even if they are not yet in use over a path.</t>
          </dd>
          <dt>Path Status Sequence Number:</dt>
          <dd>
            <t>A variable-length integer specifying the per-path sequence number assigned for
this frame.</t>
          </dd>
        </dl>
        <t>The sequence number space is common to the two frame types,
and monotonically increasing values MUST be used when sending PATH_AVAILABLE or
PATH_BACKUP frames for a given Path ID.</t>
        <t>Frames may be received out of order. A peer MUST ignore an incoming
PATH_AVAILABLE or
PATH_BACKUP frame if it previously received another PATH_BACKUP frame
or PATH_AVAILABLE frame for the same Path ID with a Path Status sequence number
equal to or higher than the Path Status sequence number of the incoming frame.</t>
        <t>The requirement of monotonically increasing sequence numbers
is per path. Receivers could very well receive the
same sequence number for PATH_AVAILABLE or PATH_STANDBY Frames
on different paths. The receiver of
the PATH_AVAILABLE or PATH_BACKUP frame needs to use and compare the sequence numbers
separately for each Path ID.</t>
        <t>PATH_BACKUP frames are ack-eliciting. If a packet containing a
PATH_BACKUP frame is considered lost, the peer SHOULD resend the frame
only if it contains the last status sent for that path -- as indicated
by the sequence number.</t>
        <t>A PATH_BACKUP or a PATH_AVAILABLE frame MAY be bundled with a PATH_NEW_CONNECTION_ID frame or
a PATH_RESPONSE frame in order to indicate the preferred path usage
before or during path initiation.</t>
      </section>
      <section anchor="mp-new-conn-id-frame">
        <name>PATH_NEW_CONNECTION_ID frames</name>
        <t>The PATH_NEW_CONNECTION_ID frame (type=0x15228c09)
is an extension of the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>.
It is used to provide its peer with alternative connection IDs for 1-RTT packets
for a specific path. The peer can then use a different connection ID on the same path
to break linkability when migrating on that path; see also <xref section="9.5" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>PATH_NEW_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-connection-id-frame-format">
          <name>PATH_NEW_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
PATH_NEW_CONNECTION_ID Frame {
  Type (i) = TBD-05 (experiments use 0x15228c09),
  Path Identifier (i),
  Sequence Number (i),
  Retire Prior To (i),
  Length (8),
  Connection ID (8..160),
  Stateless Reset Token (128),
}
]]></artwork>
        </figure>
        <t>Compared to the NEW_CONNECTION_ID frame specified in
<xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the connection ID. This
means the provided connection ID can only be used on the corresponding path.</t>
          </dd>
        </dl>
        <t>Note that, other than for the NEW_CONNECTION_ID frame of <xref section="19.15" sectionFormat="of" target="QUIC-TRANSPORT"/>,
the sequence number applies on a per-path context.
This means different connection IDs on different paths may have the same
sequence number value.</t>
        <t>The Retire Prior To field indicates which connection IDs
should be retired among those that share the Path ID in the Path Identifier field.
Connection IDs associated with different path IDs are not affected.</t>
        <t>Note that the NEW_CONNECTION_ID frame can only be used to issue or retire
connection IDs for the initial path with Path ID 0.</t>
        <t>The last paragraph of <xref section="5.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/> specifies how to
verify the Retire Prior To field of an incoming NEW_CONNECTION_ID frame.
The same rule
applies for PATH_RETIRE_CONNECTION_ID frames, but it applies per path. After the
multipath extension is negotiated successfully, the rule
for RETIRE_CONNECTION_ID frame is only applied for Path ID 0.</t>
      </section>
      <section anchor="mp-retire-conn-id-frame">
        <name>PATH_RETIRE_CONNECTION_ID frames</name>
        <t>The PATH_RETIRE_CONNECTION_ID frame (type=0x15228c0a)
is an extension of the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>. It is used
to indicate that it will no longer use a connection ID for a specific path
that was issued by its peer. To retire the connection ID used
during the handshake on the initial path, Path ID 0 is used.
Sending a PATH_RETIRE_CONNECTION_ID frame also serves as a request to the peer
to send additional connection IDs for this path (see also <xref section="5.1" sectionFormat="of" target="QUIC-TRANSPORT"/>),
unless the path specified by the Path ID has been abandoned. New path-specific connection IDs can be
delivered to a peer using the PATH_NEW_CONNECTION_ID frame (see <xref target="mp-new-conn-id-frame"/>).</t>
        <t>PATH_RETIRE_CONNECTION_ID frames are formatted as shown in <xref target="fig-mp-retire-connection-id-frame-format"/>.</t>
        <figure anchor="fig-mp-retire-connection-id-frame-format">
          <name>PATH_RETIRE_CONNECTION_ID Frame Format</name>
          <artwork><![CDATA[
PATH_RETIRE_CONNECTION_ID Frame {
  Type (i) = TBD-06 (experiments use 0x15228c0a),
  Path Identifier (i),
  Sequence Number (i),
}
]]></artwork>
        </figure>
        <t>Compared to the RETIRE_CONNECTION_ID frame specified in
<xref section="19.16" sectionFormat="of" target="QUIC-TRANSPORT"/>, the following
field is added:</t>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>The Path ID associated with the connection ID to retire.</t>
          </dd>
        </dl>
        <t>Note that the RETIRE_CONNECTION_ID frame can only be used to retire
connection IDs for the initial path with Path ID 0.</t>
        <t>As the PATH_NEW_CONNECTION_ID frames applies the sequence number per path,
the sequence number in the PATH_RETIRE_CONNECTION_ID frame is also per
path. The PATH_RETIRE_CONNECTION_ID frame retires the Connection ID with
the specified Path ID and sequence number.</t>
        <t>The processing of an incoming RETIRE_CONNECTION_ID frame
is described in <xref section="19.17" sectionFormat="of" target="QUIC-TRANSPORT"/>. The same processing
applies for PATH_RETIRE_CONNECTION_ID frames per path, while the
processing of a RETIRE_CONNECTION_ID frame is only applied for Path ID 0.</t>
      </section>
      <section anchor="max-paths-frame">
        <name>MAX_PATH_ID frames</name>
        <t>A MAX_PATH_ID frame (type=0x15228c0c) informs the peer of the maximum path identifier
it is permitted to use.</t>
        <t>MAX_PATH_ID frames are formatted as shown in <xref target="fig-max-paths-frame-format"/>.</t>
        <figure anchor="fig-max-paths-frame-format">
          <name>MAX_PATH_ID Frame Format</name>
          <artwork><![CDATA[
MAX_PATH_ID Frame {
  Type (i) = TBD-07 (experiments use 0x15228c0c),
  Maximum Path Identifier (i),
}
]]></artwork>
        </figure>
        <t>MAX_PATH_ID frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>The maximum path identifier that the sending endpoint is willing to accept.
This value MUST NOT exceed 2^32-1, the maximum allowed value for the Path ID due to
restrictions on the nonce calculation (see <xref target="multipath-aead"/>).
The Maximum Path Identifier value MUST NOT be lower than the value
advertised in the initial_max_path_id transport parameter.</t>
          </dd>
        </dl>
        <t>Receipt of an invalid Maximum Path Identifier value MUST be treated as a
connection error of type PROTOCOL_VIOLATION.</t>
        <t>Loss or reordering can cause an endpoint to receive a MAX_PATH_ID frame with
a smaller Maximum Path Identifier value than was previously received.
MAX_PATH_ID frames that do not increase the path limit MUST be ignored.</t>
      </section>
      <section anchor="paths-and-cids-blocked-frame">
        <name>PATHS_BLOCKED and PATH_CIDS_BLOCKED frames</name>
        <t>A sender can send a PATHS_BLOCKED frame (type=0x15228c0d) when
it wishes to open a path but is unable to do so due to the maximum path identifier
limit set by its peer.</t>
        <t>A sender can send a PATH_CIDS_BLOCKED frame (type=0x15228c0e) when
it wishes to open a path with a valid Path ID or change the CID on an established path
but is unable to do so because there are no unused connection IDs available
for the corresponding Path ID.</t>
        <t>Note that PATHS_BLOCKED and PATH_CIDS_BLOCKED frames are informational.
Sending a PATHS_BLOCKED or a PATH_CIDS_BLOCKED frame does not imply a particular action from the peer
like updating the new Max Path ID value, but informs the peer that the maximum path identifier limit
or the absence of unused connection IDs prevented the creation or the usage of paths.</t>
        <t>PATHS_BLOCKED frames are formatted as shown in <xref target="fig-paths-blocked-frame-format"/>.</t>
        <figure anchor="fig-paths-blocked-frame-format">
          <name>MAX_PATH_ID_BLOCKED Frame Format</name>
          <artwork><![CDATA[
PATHS_BLOCKED Frame {
  Type (i) = TBD-08 (experiments use 0x15228c0d),
  Maximum Path Identifier (i),
}
]]></artwork>
        </figure>
        <t>PATHS_BLOCKED frames contain the following field:</t>
        <dl>
          <dt>Maximum Path Identifier:</dt>
          <dd>
            <t>A variable-length integer indicating the maximum path identifier that was
allowed at the time the frame was sent. If the received value is lower than
the currently allowed maximum value, this frame can be ignored.</t>
          </dd>
        </dl>
        <t>PATH_CIDS_BLOCKED frames are formatted as shown in <xref target="fig-path-cid-blocked-frame-format"/>.</t>
        <figure anchor="fig-path-cid-blocked-frame-format">
          <name>PATH_CIDS_BLOCKED Frame Format</name>
          <artwork><![CDATA[
PATH_CIDS_BLOCKED Frame {
  Type (i) = TBD-09 (experiments use 0x15228c0e),
  Path Identifier (i),
}
]]></artwork>
        </figure>
        <dl>
          <dt>Path Identifier:</dt>
          <dd>
            <t>Identifier of the path for which unused connection IDs are not available.</t>
          </dd>
        </dl>
        <t>Receipt of a value of Maximum Path Identifier or Path Identifier that is higher than
the local maximum value MUST be treated as a connection error of type PROTOCOL_VIOLATION.</t>
      </section>
    </section>
    <section anchor="error-codes">
      <name>Error Codes</name>
      <t>QUIC transport error codes are 62-bit unsigned integers
(see <xref section="20.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. In addition to
NO_ERROR(0x0), the following QUIC error codes are defined
for use in the PATH_ABANDON frame:</t>
      <t>APPLICATION_ABANDON (TBD-10): The endpoint is abandoning the path at the
request of the application. The application has determined that it no
longer needs this path. This error is used when the application layer
decides to stop using a specific path.</t>
      <t>RESOURCE_LIMIT_REACHED (TBD-11): The endpoint is abandoning the path because
it cannot allocate sufficient resources to maintain it. This is due to
limitations in the transport layer's capacity. This error indicates that
resource constraints prevent the continuation of the path.</t>
      <t>UNSTABLE_INTERFACE (TBD-12): The endpoint is abandoning the path because
the used interface is considered to be unstable. This condition can occur, e.g.,
due to a weak wireless signal or frequent handover events during high-speed mobility.</t>
      <t>NO_CID_AVAILABLE (TBD-13): The endpoint is abandoning the path due to
the lack of a connection ID for this path.
This may occur when the peer initiates a new path
but has not provided a corresponding connection ID for the path ID
(or the packet containing the connection IDs has not arrived yet).</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document defines a new transport parameter for the negotiation of
enable multiple paths for QUIC, and three new frame types. The draft defines
provisional values for experiments, but we expect IANA to allocate
short values if the draft is approved.</t>
      <t>The following entry in <xref target="transport-parameters"/> should be added to
the "QUIC Transport Parameters" registry under the "QUIC Protocol" heading.</t>
      <table anchor="transport-parameters">
        <name>Addition to 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">TBD (current version uses 0x0f739bbc1b666d0c)</td>
            <td align="left">initial_max_path_id</td>
            <td align="left">
              <xref target="nego"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following frame types defined in <xref target="frame-types"/> should be added to
the "QUIC Frame Types" registry under the "QUIC Protocol" heading.</t>
      <table anchor="frame-types">
        <name>Addition to QUIC Frame Types Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Frame Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD-00 - TBD-01 (experiments use 0x15228c00-0x15228c01)</td>
            <td align="left">PATH_ACK</td>
            <td align="left">
              <xref target="mp-ack-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-02 (experiments use 0x15228c05)</td>
            <td align="left">PATH_ABANDON</td>
            <td align="left">
              <xref target="path-abandon-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-03 (experiments use 0x15228c07)</td>
            <td align="left">PATH_BACKUP</td>
            <td align="left">
              <xref target="path-backup-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-04 (experiments use 0x15228c08)</td>
            <td align="left">PATH_AVAILABLE</td>
            <td align="left">
              <xref target="path-backup-available-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-05 (experiments use 0x15228c09)</td>
            <td align="left">PATH_NEW_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-new-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-06 (experiments use 0x15228c0a)</td>
            <td align="left">PATH_RETIRE_CONNECTION_ID</td>
            <td align="left">
              <xref target="mp-retire-conn-id-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-07 (experiments use 0x15228c0c)</td>
            <td align="left">MAX_PATH_ID</td>
            <td align="left">
              <xref target="max-paths-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-08 (experiments use 0x15228c0d)</td>
            <td align="left">PATHS_BLOCKED</td>
            <td align="left">
              <xref target="paths-and-cids-blocked-frame"/></td>
          </tr>
          <tr>
            <td align="left">TBD-09 (experiments use 0x15228c0e)</td>
            <td align="left">PATH_CIDS_BLOCKED</td>
            <td align="left">
              <xref target="paths-and-cids-blocked-frame"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following transport error code defined in <xref target="tab-error-code"/> are to
be added to the "QUIC Transport Error Codes" registry under
the "QUIC Protocol" heading.</t>
      <table anchor="tab-error-code">
        <name>Error Codes for Multipath QUIC</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Code</th>
            <th align="left">Description</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD-10 (experiments use 0x004150504142414e)</td>
            <td align="left">APPLICATION_ABANDON</td>
            <td align="left">Path abandoned at the application's request</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">TBD-11 (experiments use 0x0052534c494d4954)</td>
            <td align="left">RESOURCE_LIMIT_REACHED</td>
            <td align="left">Path abandoned due to resource limitations in the transport</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">TBD-12 (experiments use 0x00554e5f494e5446)</td>
            <td align="left">UNSTABLE_INTERFACE</td>
            <td align="left">Path abandoned due to unstable interfaces</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
          <tr>
            <td align="left">TBD-13 (experiments use 0x004e4f5f4349445f)</td>
            <td align="left">NO_CID_AVAILABLE</td>
            <td align="left">Path abandoned due to no available connection IDs for the path</td>
            <td align="left">
              <xref target="error-codes"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The multipath extension retains all the security features of <xref target="QUIC-TRANSPORT"/> and <xref target="QUIC-TLS"/>
but requires some additional consideration regarding the following amendments:</t>
      <ul spacing="normal">
        <li>
          <t>the need of potential additional resources as connection IDs are now maintained per-path;</t>
        </li>
        <li>
          <t>the provisioning of multiple concurrent path contexts and the associated resources;</t>
        </li>
        <li>
          <t>the possibility to create and use multiple simultaneous paths and the corresponding increased amplification risk for request forgery attacks;</t>
        </li>
        <li>
          <t>the changes on encryption requirements due to the use of multiple packet number spaces.</t>
        </li>
      </ul>
      <section anchor="memory-allocation-for-per-path-resources">
        <name>Memory Allocation for Per-Path Resources</name>
        <t>The initial_max_path_id transport parameter and the Max Path ID field
in the MAX_PATH_ID frame limit the number of paths an endpoint is willing
to maintain and accordingly limit the associated path resources.</t>
        <t>Furthermore, as connection IDs have to be issued by both endpoints for the
same path ID before an endpoint can open a path, each endpoint can further
control the per-path resource usage (beyond the connection IDs) by limiting
the number of Path ID that it issues connection IDs for.</t>
        <t>Therefore, to avoid unnecessarily resource usage, that potentially could be exploited
in a resource exhaustion attack, endpoints should allocate those additional path resource,
such as e.g. for packet number handling, only after path validation has successfully completed.</t>
      </section>
      <section anchor="request-forgery-with-spoofed-address">
        <name>Request Forgery with Spoofed Address</name>
        <t>The path validation mechanism as specified in <xref section="8.2." sectionFormat="of" target="QUIC-TRANSPORT"/> for migration is used
unchanged for initiation of new paths in this extension. Therefore, the security considerations
on source address spoofing as outlined in <xref section="21.5.4" sectionFormat="of" target="QUIC-TRANSPORT"/> equally apply.
Similarly, the anti-amplification limits as specified in <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/> need to be
followed to limit the amplification risk.</t>
        <t>However, while <xref target="QUIC-TRANSPORT"/> only allows the use of one path simultaneously
and therefore only one path migration at the time should be validated,
this extension allows for multiple open paths, that could in theory be migrated
all at the same time, and it allows for multiple paths that could be initialized
simultaneously. Therefore, each path could be used to further amplify an attack.
Endpoints needs limit the number of maximum paths and might consider
additional measures to limit the number of concurrent path validation processes
e.g. by pacing them out or limiting the number of path initiation attempts
over a certain time period.</t>
      </section>
      <section anchor="use-of-transport-layer-security-and-the-aead-encryption-nonce">
        <name>Use of Transport Layer Security and the AEAD Encryption Nonce</name>
        <t>The multipath extension as specified in this document is only enabled after a
successful handshake when both endpoints indicate support for this extension.
Respectively, all new frames defined in this extension are only used in 1-RTT packets.
As the handshake is not changed by this extension, the transport security mechanisms
as specified in <xref target="QUIC-TLS"/>, such as encryption key exchange and peer authentication,
remain unchanged as well and the respective security considerations in <xref target="QUIC-TLS"/> applied unaltered.
Note that with the use of this extension, multiple nonces can be in use simultaneously
for the same AEAD key.</t>
        <t>Further note, that the limits as discussed on Appendix B of <xref target="QUIC-TLS"/>
apply to the total number of packets sent on all paths.</t>
        <t>This specification changes the AEAD calculation by using the path identifier as part of
AEAD encryption nonce (see <xref target="multipath-aead"/>). To ensure a unique nonce, path identifiers
are limited to 32 bits and cannot be reused for another path in the same connection.</t>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>This document is a collaboration of authors that combines work from
three proposals. Further contributors that were also involved
one of the original proposals are:</t>
      <ul spacing="normal">
        <li>
          <t>Qing An</t>
        </li>
        <li>
          <t>Zhenyu Li</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Marten Seemann, Kazuho Oku, Martin Thomson, Magnus Westerlund, Mike Bishop, Lucas Pardue, Michael Eriksson, and Yu Zhu for their thorough reviews and valuable contributions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6356">
          <front>
            <title>Coupled Congestion Control for Multipath Transport Protocols</title>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="D. Wischik" initials="D." surname="Wischik"/>
            <date month="October" year="2011"/>
            <abstract>
              <t>Often endpoints are connected by multiple paths, but communications are usually restricted to a single path per connection. Resource usage within the network would be more efficient were it possible for these multiple paths to be used concurrently. Multipath TCP is a proposal to achieve multipath transport in TCP.</t>
              <t>New congestion control algorithms are needed for multipath transport protocols such as Multipath TCP, as single path algorithms have a series of issues in the multipath context. One of the prominent problems is that running existing algorithms such as standard TCP independently on each path would give the multipath flow more than its fair share at a bottleneck link traversed by more than one of its subflows. Further, it is desirable that a source with multiple paths available will transfer more traffic using the least congested of the paths, achieving a property called "resource pooling" where a bundle of links effectively behaves like one shared link with bigger capacity. This would increase the overall efficiency of the network and also its robustness to failure.</t>
              <t>This document presents a congestion control algorithm that couples the congestion control algorithms running on different subflows by linking their increase functions, and dynamically controls the overall aggressiveness of the multipath flow. The result is a practical algorithm that is fair to TCP at bottlenecks while moving traffic away from congested links. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6356"/>
          <seriesInfo name="DOI" value="10.17487/RFC6356"/>
        </reference>
        <reference anchor="OLIA">
          <front>
            <title>MPTCP is not pareto-optimal: performance issues and a possible solution</title>
            <author initials="R." surname="Khalili">
              <organization/>
            </author>
            <author initials="N." surname="Gast">
              <organization/>
            </author>
            <author initials="M." surname="Popovic">
              <organization/>
            </author>
            <author initials="U." surname="Upadhyay">
              <organization/>
            </author>
            <author initials="J." surname="Le Boudec">
              <organization/>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="Proceedings of the 8th international conference on Emerging networking experiments and technologies, ACM" value=""/>
        </reference>
        <reference anchor="RFC2475">
          <front>
            <title>An Architecture for Differentiated Services</title>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <author fullname="M. Carlson" initials="M." surname="Carlson"/>
            <author fullname="E. Davies" initials="E." surname="Davies"/>
            <author fullname="Z. Wang" initials="Z." surname="Wang"/>
            <author fullname="W. Weiss" initials="W." surname="Weiss"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines an architecture for implementing scalable service differentiation in the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2475"/>
          <seriesInfo name="DOI" value="10.17487/RFC2475"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9W9W28cWbYm9r5/RZj10OIgM01SlypppsfNoljdnJZEHpKq
PuU+bXVkZiQZrcyMPBGRotiqOpgXA371m/3iBxswYMC/wID/jOExMP/C674v
EZGkumcAu4DTh8qM3LEva6/7+tZ4PHZt2S6LV9nb7bItN3l7m51+bot1U1br
bFHV2T+8Pztx+XRaF5/Ch+jjeTVb5yv48bzOF+24LNrF+J+35Wy80ufGh0du
nrfwyJfXx9env7gZ/OOmqu9fZU07d67c1K+ytt427dHBwcuDI5fXRf4qu67z
dbOp6tbdVfXHm7rabl7RK7M/wL/L9U32W/zMfSzu4YH5q+xs3Rb1umjHr3Em
zjVtvp5/yJfVGl59XzRuU77K/thWs1HWwLB1sWjgr/sV/vEn5/Jte1vVr9zY
Zdliu1zSquBv/O/Vq2zvP/x3/8N/+D//1//nf/5v9+TDvJmVMOLeT/l6VZTZ
m3KL39QV7mQxL9uqhn9W9c2r7HhZTvNpDjOcTeCzYpWXy1fZqsyrv5ST5f3q
Nzk/MC7hgVm1ojmkk8A5/Mf/7X//v/+P//4//i//k8zBprBdL2AKb3P6nN75
flrU2XUxu11Xy+qmLBp9u77+nn4zWeW/2cKj/rXluoF9nmSvi+ykWsOMPuKn
fMb/sC3WbblOvkuWLO9fl5+Kuinb+6xaZG+rdZM9ef/2/N3VfjCHf+bxJvNi
xsP9ZruCJyf5bDItgumcT7Lvq3X+CZ7e1oWfz/my/FTCOpMveQInb6rtpxxm
C2QAO9E0QFdN8PKKfzyZ+h//Zjtb8o/i959Mst9tyxZ+6N99cluXTVvm6/Ar
evNFXX4CEs/OZ2212XY2/pYf/438/wmQbPCqt5Ps99vidlncleu5f9vbsv5L
nnzTu++ndTlrmmodvHCFv518tN/+ppBn6NCdW1f1Km/huJDS8IaNry+P311d
nF9ev8rqxezlwcGBffPmSj871M8uT0/Ofzy9/Em/OII7vV6Eg17+cPLi6fMX
+Of5m7NjpmhhOntvL65PLrKyydZVm23gkNpqXG3acpXD3DdFTSOtZwU80myB
juE4XZ5tqqYpp8sC7vJy2wKn4ivBjGbv6ODwiD9oYLFFg/OBjy/qalbAhq1v
GqTK9rbIvgNGVhLnyHGUfJkBKS6KusA3wjaeror6BrkNHNOdMJ7iM0yrXAHN
0GyyNrhmo+z45C2/WjkK/j0WpkFnfAlnfAt3fll2v3s3yX6bN233CyCMi2pT
fSpn3e/eT7L3m3x+e5/fd7/8d5PxT5PsTQG3ZAsXDQ58PB5n+bRp63wGfPL6
FvYe2PgWF5Q1m2JWLpBf5JmxcFhxKA9w34gTb+oK+Gm1zNrKFescjwO/a0r8
Zb4uKqD+bZPfFLjbPBo8giM2NFAOj65v4CPY83UxwwOY8PRW5Xy+LJz7Btl6
Xc239OWOya6DObYVT48YEPz7MPvyJabrX35x8NDfM2UXTDmjWcEHsKMN0MRd
2d46HHWaN+lOdWcC789bOKrZEo4Ht92PDNtwU+f8F9BYvi6bFT3ummIJjwAV
r5fAYNc8wwzGyeFerQrcguIz/gIW0mxnt/D97GPRNhPcQnkabhWsM9rIOcwD
pnglr3+Jm9DZORBMi3K5bPz23FT5EiitbLN5WdO84IIWwJhhGg3sBry/KdZ4
72D2ILVvbuEGr4s72JYC7loN78UZjeg2wSj5clndNXQwOkwNC8bdBB5ebesZ
cPIcWNishPs+pw2np6slj4RHUvTSb7TSNqKmugDFBWVEUwDlICeg/Wvw9XRG
dgavHFywf5VlVyHVtKiwrIBJ4WvwxCLimfAvQmrGzc35KMo5CsJFyWvlgwnp
4Ow18z261XyU2Xq7QhnfwD9hjsCReOX8nstiVX2CJcArmHZpAbcg6LJpUYBM
nMJwQDdzIIjjhkhkxNvR3So8zXkBnBlFZLaoqxVfGf56lstaXEpUD5MSc89b
4LZwtQqnBwCkcVOBaKUfToHv4ozxlcCB4dLON1WJrHeLNzFjQmpNW4R5gsQE
hg7U1KSEjQP/8ssk+2Fb42vpkXm5IH7fxhvrZGNBIMGbYAC8/UVOV6nVzYr3
wOaPc4Xf4Kasq/X4r0VdpacJ0wGtlc9bTv+eCZ4uMuwLDLTBH3wqXM+J40Wu
snw+lw2gn8FYxAhRMYGtIc4TvJeuib8UzXaDOzaCuzhblsQGYHPp7vL76Pk8
njmcB2jUJBHxbSB+x4u8zrZr2qMLHBceAlaNa5ndVjCk3m1goLztQE3NrC6n
eipkJZTrUo4cDsgd+0XN8jWzuakcRIWiGYcPOMCzcbvFu3YLbyECB+IvURmY
u+k90EyzrZn7wC0wtgIHyAIA2cusgJ1WNpnRY8hO53M4h8Y9aYoioObv+qh5
f+LOhKeo5BElQ1kMbAIfCmgln3AfqoLVHlk8L2sG9g9JO+MPo2y6bZEx4l7o
ysKDp5/ANsBa9TCBQE6RWvW+wM28J6JU7nZ2oasrGhProVQ7W+NlasvZdpnX
I/q6l6MyGTHVLypk3bjVzQzEa11WKHKQJSFDFjLb4huNPUbzEIagG7QESobX
ZBWTAPE/4FqT3hFNFvoRh8cT5ZC3An7U9I/5lbN85KgPz5QGSlbPK3fvKqIT
0hnoF0tQOmy7R0gmcP2XS6Bp0P/h56YqA52jBHCJWlPhGuLDH2U3cBvWcgdE
RjGp0jnMi0W5ZnrDH0abMy3w+PGmMtmCalDxnQMqER7W0FVJqUu2CImcuCds
EJClbicTGcq5sws3cL74U9413rQHB4D9hInAP8pWNEcYrcGtQFEHlwpEXoN6
SZZvNktl9Cx5hi7EHW5+e7+Bp5ewV2uwOOwNMI18eVPVwFlXDR/IGhRdo7NR
pInimW+EgfJab6s7fO+9F0ugeiPbNgUvO25kDSzYUHSL7lUxvQQr+VWjQous
mZEj7gXKKtAMUTDMIFQDYHJIN6DXljN5o2tmt8V8uyRZrEvLhF/yI2P/CHDJ
kQtlH7zrE8g/kCMrHZfegfNhLnizBXYHLB9s8OoOj3KUrfB08vkn/Hgebihw
/7sCdj9Hqm9RquZLZydDG16sb8mabMobOA3aFmbSs20tWgDKRnj5loU/Wnsz
FCQkwEgHQkMQKMe0iHjXiKsT1eN9mdH1Unqdlw19cE+n6ZUlODa9QE5pGqyz
LQ4H2090tUHrtaFFNAWIO6TttshRjNwZjdQkFkHazNHCmRZCYHZVQzJmJtIE
5EzCyWja75yYOKjxbBeg79A9bStbFrH+sgY+lKMmhysqUbt0ypaCw4uVbhOB
YAqgF0a3ODg01DiZ4+A0TQlv0gkwv0tlzzffZN8TWb0u8MjBiEblUSxJOzP4
G401VC6MXzA1zvlnrHOK4n9ZjJFB5SgfQMTmAY8NpicqgjdDe0RqOAcSDUR9
IuLxR5EOa85Yb9kiseQlb0Y9PC2Zy6+agMk7sy5ZSr1vxBYG/VlVwNsix4vK
3hy6X4lljeYKbPqq/GvBXp3bwjTqWWHau+eTOGFUiv0noLsjTbHgoEHgylVy
GHfAm3h6JxUaY7QpJ2hqgzG92gLFTVGbq8c01BOvf3QN7X13d1vCvmybLTJm
vqKms9sYl9fXcIo5aIzMFOnlF2+v3weXt7mttmBq8qtxc9CClQFM4rMFwIfc
Jyd6zIVMzQW3LNY3qNh1rIZpBR+zmY23w/YmMhXrSDkWPX7DyjnbxizSTef2
1rSYivKw/lb1a5gi2990jnM8D3acRULZc+GBh1EU88zfmocDuQLYbTOdcYW6
w2paAv9v7+Ho0GpVsszrGvSTptdCcXRV1UAJzCFZEmslsb6DK4U5/pesBTtd
Le6jNw/N8oXruTV5sbz35qHtHK/tglgy6iRTVG6IpFGfWt+Tk6bPQCVTiB5F
KwgHOSMWHepwrOynzqnmNq+VjdMNlkVM2AxgIdfo0zsmtSw/FvTPimw1Xo7K
Or7fzBKVtj1Fl+LdUIccipqyTV0cJOCE3oNF9Dg1ApMRB8tJ5xStdw2vBVat
twD5fMe5ss5OdQ5smXo3y5dvdHpjNj/nv4hM6HeAmKkVuGqeiLm7P8qYs6BB
uXboTr6Br5X3HRD5H/03T4/Gh9kTcvQ1QL37E56UDcj39qZYg/RBfWNVgVys
1qxGooMQzp1dHjAcHCBKzSmKPaS/Cfn1YooW+5E2dlqiac8OBvqArPdkRaPE
ISPP9DoflMzU5Cc9go8nYVGoohprUMYjZ3gXcMaZcPUFOnBAF21EiF0cX//u
w/H3x+9en7/TKyL+qzE9+8svI37o6hoe+v4nfWgKM99uxvmnvFyioa9P/zJy
POaPx2dvjr9/c/rQD0KOxr88+T38ZgWPzj7qQxOvD6aeu1qCFyQkbMdM7eLZ
vDv9w4eT83fvTk+uz87ffYAHaGBVpeFlsF1jHBqIVV+6j+dOrskcNprcUzEN
IEkmkqD4DJpl6DYOriayRruTPctQ2SnLiXxiwThCIOYOYg2bxc3SzMmDSSK4
REAH+0UOjaGd8f6Yw5eTw+eTXm+1d6Mt73sFo04SZnMMGgGbovohLNB1RUXi
RC6yPe/IFkrf8y7JzFySvGj3XhWD/h9yLKGB3aSPKRJjUpKUZEeCxlRn8fMH
82Z+KO95q+d5wTf5Hd/kK+KxHaYXuz362PKIKCc6+ol3IntyQG28JQ/EnCTw
rE2Ha0nfWJCNziYqOz7RF8cSm2xaEpQkHtPTxb0ko2CnGOE4TyMsyetlhQPx
hxZwYJLNvJap/ChQ6dXvUa6dTEaDn8AkKlJQVI1E66FRJ5wcy1j9xX3zxO2o
2fUYfwuE+QfUfky3dQEbl2dA2a7msQmeOFn1qhxPjvruycixK6nG1SeDP5GP
P+Cn832NJYinFT5cV3dgYt6YlenYvboOSXL32tG4ZO6AHgcWT3vvgM72YAsf
c8amTGvQRt5+l99nx6fHyAgd2b7CtWQQjMupyytvYi0DeK7lsORgByG5vUXP
AxAGyOIWGErMLFQEtuTtb9oaVBHejvRlqOfjqjuupyQGEXpKJFrpqTcy1GQ3
YKAwnkGBp8uAA3YmvATTreU5Pz0CLaEVJwmaP0DO23X5z6Dr0nThknsvlnIo
if6ss48FKMKbOd1ocZv0byU8OOYHcUOJUYEU+MQuA/ZyvSZjn//95Zu5/esX
Fiv4Ksz5abK9t++vrvdG/P+zd+f09+UpEPfl6Wv8++p3x2/e2B/8hIN/nL9/
I9/jX/6XJ+dv356+e80/hk+z5KO3xz/tkZbk9s4vUBodv9nrRhJx/ex9odSC
DRILcfLoTn5/cpEdPgNG8l9c/nBydHj4EngI/+O7w2+fwT/Q5mGVjBxx/E/2
/m026PhB+lku3SzflC1Ys2xQ3KI3CFU42Nw/qDfIRz5qtuhhuot8VS5LGMbC
pzBXMOYxk+FelTnXw3SZHcVLJrGhY4BYg5PeI180ybfGCXmDuBLlfE8SKohK
90x37OPxmAbwO9gGMHHANHkXBAcptcfk7IXJ2S/fUKSvI9yYfzdp0DALgoZ6
gzUGWbj2Nrp1fab8fGu2V6Ap3OqcR65r6XV39Vo04n7FwXzuaBSRJEBv1FjZ
5odV/vkDzupDOc+eqC9T/TR0OgefDxbfPn05nc4Opy9evJgfzPZfZZi29Aks
R1J3xemgBgzP+N583fnncrVddXTGjIw9DTOVDTnAxf5WHQClWrAz3vGARi4d
EhvVeo8xewH95mw1jaL3U3YAfMe/0MiV8rT5Fu8eZuKBxKpLMUHE9c1sFwwq
dMDRTFS7Tjj9Ppq8qOF8zlfkli8XvTuNHlGWVocjvqWx0tzJUpBpNmIVHgau
JK/yaoRy4s4W0eZKmJLM677p9JEOvZb36oClPElndRqGWTD90QxxxahjDb6q
c3EjlKtVMcfVLe8xkrL4mnnxlNQHfVvesHsBRuBDd2Wj652PhHXRv2qmEvJd
pFeOHUKwY3UNp4c39n5TOLtmHy6OL4/fnl6fXn44vbw8v4RJXxUteYf6ph0p
7qhgwJzF820Kq3t7/I8fyIDzFhvQU/6Z1MDGDDXPZUls0+pNbSZrHDfYyFn9
I6hv8F4DwQJ/cj7/AX04FPrB57uzwMQC9hkUvdena7LB+RUleVuE1fl3ma2R
z+EA2lLG3HnWYSpGeyspHH5Iu+rks17fy7TB4PK5Tl7fjsUNijZyCMpslEU9
kvZG0VQczQRnYckawgivvPfydeC9jI3WyWPo3kWkpGRt4ctZXtf33uIh04Ms
pzzD+QhjdhFv6bsTLboGeavyJJUsvhEXl+fX5yfnbz78eHb+5hgVGbZ+eu6U
2PK774cdJjmkVgUqo8XcITXjxqIAAEKfNgWl/IbzeuJNk28nzyaHA5kV78T/
1nTzQfIFzsCELQyOLNumHisAPTaz1y/ZaXjfRzIuIMXA7/Dd5KjX7bBj0/p4
IWnhTeQk0euqiv0iCAWz/S8+XNoDUUDy7rnlpPl/8J/DHD7Q+3qX2ZOfGEyu
OykePnUVaTYa6axkAj3IXk3fmiNHxEAnJsDfE4vs3fvnk8N+akknw0kM3qfE
ESgUpm1JHhY26czhQiuauFPjVCuQTa3kKnKcjVSaZiO/DF/WVKZq3+MJkf+p
WpNKCcbUumU7Bw849uk04U14OXk+cA/cSblBDt1g9rgFQFivAVWiblWIHoI1
d4+PeE+xqLY3BfF4y1LtkfqTDHga+1+zWfBC1neWHKRR5hX4U/oUiOhsR6kA
yKdIfziMv8C8KJeK8WyXGCd3o7pmSZL0hVdij+0osNhd4MbIDscYBLSU2RNg
KHnNZgHO1F7R84bAI/m018/Cymo00yA7ZHnvjPeH7P1XjSm4fQmDO50rnOLZ
yfujxa9x0ZH94o2WwLPDue7Vwp0Jd8Kz9yaZZc3VmIlD1iAOZwtkGTmkYZon
Kbz3LqQZPxBucnQ6ofvJPlMlilkQ0rl38sJmLFoJZIUyg/Ov56joh+mnFqMK
d44mWsDToTomrgS8DfHx4qSbFswKHMx/inkw+E7cKcost4VQCkOVcV5l5F47
iJbOuxws7TS+W5owEsyEeWGwZfGIMI1od0mA2wtGxKlE3vrDSvcrDgpOstCO
csFcmK1iDN184GL7oFaLJgoovRVKNcmYS2MILvbfsxMRD2DirkBmLfMaXf40
2zycb0DineOjpAAYwtk1HYo+BMlLaLUnciDaOLwuoygSEbCBy9Prs8vToVew
kOoZPSLpb/hdb33y9ZdviC/4DKNflPBVPered78ZlCie39QFMz02EV3nIpDP
gsQc7xt5sIUsk/A0KQIUGLS3OHqLCmWNufVtJNAsZv+3FHiIU413mMgYdsAR
P4gK5AVun+IjZxnZ3+TAKmkO03I+L8hLS+YKHfmymiErlBRh3CfYgOmybG4t
XNyYX7cgJu45jiYgWmKUs1/TAaJu5d2tUoCCGQiooEZvxldIrL7wqWZF454U
kxsyLUpeFn79f/37/7HxF+6DPLyfsQcGPRqRSR/V2zjTnsUzROmI4earNV9j
FIhO81OZW0JVHqS4ravtelZoqqLPHpXt4vXouJg4FWWLlqxuSNan+R476+o3
/jjPtHGiGaUeUmUxMnqaaupXIZI6sE+9RivKeZLNaZkiPscu0vpe9Adn9i22
jP6AJIXOnwrmJ20buWuW1I/5g3PeWUsz9/kMk+wPBdg2y+IGPyeVT4aRoESD
lR/4nb6v4dIDskb8OKOIDsyiTqsHEncYlwGN0judXaMJHmTq73wZJtjS9VN2
XFKar7q+HslPOu6QK0yiToxszKGvpkQYDy0NgyfBmlwUmZHcnEa8lcB6JzeT
Ufbu+BrehakawEGJ6FUHz5simQpesbbpcSx7aupVQJERqPtVk6J8viElAASn
15FspluFyR+TNJ0S7gjMq/w8mN0hMbioYIjc2VGyB0tBfaMtHS018phxEoip
es6yjrsZIvsjHfx7UEHeX9B1TrJAVEfC2rmNpqsQS8FcRgzG0Yy5PDB811De
yD6HisY93jn1O3f9hLjcINmHwrJkrmuJlSfSRhd19eH7N+cnvz997Zd1cvba
PpSFBVNuxvDgGBhDM56CMPlY+IwSvEkYplncB/dvIWn98jCJHLyTXs7ljQun
qo4BSU7DDKRgPFP5SVAUc8dHXHPK3brSS5lmoOgGO1+vUouBHajCqOMvlzQ3
WbkZJh3zoTfe9I3oU2cWplB9KqhScu4cdsCXoNHZ9OV09t2ipJ5oyN53K4z0
zSWTMSmykjE6eWxciGQWx5D+utN2PeydD+goUUmRCd6dinL6otg+QHIjHbCb
KOC3rGFH61cknVEdhLrWkVRdKD7o4YbEIpdniEBwKBB2ntSg1ylKAjRR4CKv
f1fQ/UH94nQtTHe1PT3BsPXpu9+egrUojHlTzj4CTUVO6CS4EGQvBYW3Zm/A
jN9dnaoPfcgsT/w2pk+QnnSXrzlTgJ33LlFVeaZWqRYowKpNTSnDMMj7ucfa
/dwMzzRYHqhJ3w0oSSO3XS9x7JKzU7CioGS9y6oBaSqa3tuXtytGUicHybJ/
nWxDFSskpaRkSGGf17m24lC3R13w3P9vt+k9SKAlc2DajmDKZeNsHNZZgFbK
Mdr/vlSWxQTt6QNVlZK1o5XrsnGoiKU1m1yefw+iJmGUki2HUk11dk1EBStl
icGVYpJdBWXyJDDEHlqYL5d9FcBM0K8AR1zfb6guaB08ZcPzryNe0inJZA8o
Ws4BDVDFHdVUbFcZlh3AphweHRyIO5dqcMj6RrHplR9FIeBpYm23evWitMug
tISYAyv3sB4KL8I6iDz7DksKdIhuLFer62QNyI8Z5eUPJ4ggglcrtRSN35n/
KbxUXDWgxg1ynCy0saVWTXJJtUqLkq8sisWZePf+/kT6paMMEp/m3l2M5Jd3
EvO7S8GbBHpLXzhE7o5OtqrdEpbbiI2rgAZkn3nbm2BIyhvOwvJ1vpgrgOZa
fj/M2IH88XIGlVr2Dsp/VSVq4t6gd41Ga+hGzXLlVh52YVOIWRzLIzocIghK
COYaxHh7R7iDLBNnGoQml+QciyqjjXZXvRtN1Wrohkgdqk+iiFDs1d/XO1AX
7bZecxkRMk7mXOKIthHLwB0iSVuN8Pcgx66lTHS6GoE/VhP7REdAz9q2LcZ1
28Lc8dS1ekFrGPdHWsU9xdqodYEnlC+pVG9LhaB5GhswyR6fMX/JN9wlN5tD
+cFNF3910ymzRXZVrskGNUFl2xQMsACSiX8dRe/tqkllgqsRfoKj+lpJ6a1j
y3SMKpBAB2uL1aadOKsUzE2NnocaH4yKWZ0YssM6RxaoMU9VnRjvUcwMkhvu
Ojc7VMr7w4tBlYtEymfFhsyzPSBvsN5v9mgj9jCdwD6RQEh2bAUYt3kY6A81
0J5f0sKTL3igQInsUeNcosapIb3xCCTRoErSMSfWMCP82wITkXfDIxmsYIDW
77ccvwTWtRbLqcSSSpNRkACinrOOkhWWKbkgNrBLxWhC/9rR4eRwUH33uRid
DHAnEfCYjyMvFZc+wajECrmmIQ9bWWhJ9Gpo5DN4BHgKTqcXK4i4JsUIUvu5
cwljL84fzIrYEdwpeiqkaL7slUTwvU4oQTKiy3lRdyjQ7cYbiecMvKWXACnd
xXhIpCeEzk4Gu/kqf9ko1OsTRUOEHgxvBU4B02yrjxwxMNPJV6cmmxxqZXBT
HDkM+DcWJ7j2zPeO4R1Y/VXvOr2uEW6gu81QDKz60APkOenNxGlINllQDp2V
6G5vPTYIvZwcrWiC4kd7NT6+J0vNV1UY+OEJZdXUO8lzszaiRJVgaZSS/hEV
oBbPeYll2PgyIdcWtdWb+6Ez/A7uVP8punJSTEZ+5gSaYXlYNFVyO+efKkrr
JKg5cqRLtAAUpI8sR/bu6grZ7+y2KmeY26vUIamc7M3I9fwlJDLLN7lUYutp
Ax+kOsuFBi+6dpgFGwyzyHSJzEiMHZLMN+F8t+vH7krg6rpiPu0jiLGOG3t6
HuNCZQjAQJmkfWhlkyLMCq/jeG+rumAtINcUlkvgEVDCMABTLsogvmb2agp5
Wd6iAF1IDbCNyi5Cwk3B64rZ9YwQYcfDhnkwQ8HW4u2XMlspfJmjEEJjrR3+
BT5G0BxcRCyv8YG8qLKPTW/4lBV1Yqo+nMDj+Rc1sZeeWd/rFAeEHAkcav9V
YzATjYSX8DVLdCGSaiiAeBLSjLDEnC6XUtP3CHZ1er8X+XthNqhk2DiE9kFB
TIzQW+hXClbS6ky/nwkezZ79FGsN6IIjhW1vUIBT3Wloy1AiIhqZd6AcVDfl
jFg4qAytQRAwBxuYkFD9Kq8/WiFruOLeKeCEwS6UFzif7e2NDK22LxeRNUoa
n7fVMMwNxGliTUJWTLg4p2T/R/ha4xUcnOEAdz6ttq2UWrKOZpPiSuI0pC6F
aSpH6DfiBWz6Xk0hJonBuWnBVqV4m6zEX1hs4MGIxopOlhhoUImDMohLiOxA
TdkMkV3Y/xthfhF/DyFPpjXxUL4jHbOep2vHPa2L/KMyW3LcDFoabtDtEEeA
QvNjP4KFo6k64ZsS0fxYFBudPQIlohHO+fsLEGgogxhukTGdCKCNDyW2fsPE
7si7klhLgUOCzDEV2p8QkmGmVFMX44AsR9nF2bvfKlvFjTIoniBpF96FMNEf
yZOGe+zCsb36DAuUJZEeQDoEGgBYD5VL0QEQuthIzCgCMk05I5GsiX32GM5A
MOQS3JMCiYhlG+0ECXMed4oylSgEjWtix6/HkinBoCN2g/kazHTEU9x/804D
dMOoopcV7EBehWmA4V2mKwAzvamkBAd0At7N+STzkpMiIMEZKUfCfI08qSFU
RCK21UTQMgQHHoh/mEhX4jQJDzddQbiovBpRKziUvlqhPUFaKWx7mL/oaF+R
Rhgf9GaNswAexiqSYQ2T40P1mRMiZIna8fXqAuKhrtPIObaJfItcZVwHHgB8
gh3vjVGtNQ3x0+JAGe6wkAammkrcmvDJIlyOEZdVc7JcYC4ERa1ESvFlgZ8w
gQUaAEyQE98CjibvbZyiChplzxiuA7eYo79mXeAapQhFXbQuDJd4ipKUHQXc
wD1P8JpgrT3p5aR0ObZZRRrc3VYxKHCa/9PxYkjdSu6CAOTJm/Or0zAicngw
EBLJiA+gClxgZAQrZtGrF/2yV4HeZ4bZJMff5yC2iBmz2DyIk3kZ4rgC04JB
O93XfIdCdRj4ALoQ+ZgDLkj2Ionh2CMg2YUMTcmpT1gxWCjWX1tvi1f8kIrL
wBxPKt0CMEtW10RD4tlQThuJPPWJor+UPHhjngVmIwigBUON4dvRBGs97owg
oXUFFZgKYHY2jiJKCCBHNMiagMSBEUMAPax0Y30FOEIAFAbwiU+M8Qkvkqua
5YQh4mBmBl5xHdVnsCBiJ99EgymeCIAPKQshio8yATkifAWz8XWlPjifGG2b
9+WL5rUUmN3KJQFcCtWfA9klGNKniO7EfRHlULgeTQVrHzXCgYWAWEJ8zyGm
pqIF8nBttVFSJcOW3S7qTiTqUdhhS+Oa22y4donqmYNCUZ/rEohtBWIi3hVF
JumUvdLipMYjgJ/zqc9Ss/B1b6NqbIn1Ir9w8o8IzWDA2S0pxhyaYJ8I3ViX
xpj5VSxn2SadspBBCVS2amiw+sLRoGrhnmYX1+eS7+xDHNFJBnk3fasDsxjV
AtU9FYuIVOnNtia/TaNc0sdKOy51fXhsD8MdB5aqiM8UZVHo3TAbHc+DPDM6
9tApdLx4GACipWviF3k3zhaKRK7Qxj2bgq6AdfEpyL9weZpY1H+LvMshWI/E
Prw2Blo3+7WKRav0EGNcBkCgZHtv1wY6OS3A0C4rWnIZYL6In53wBTAinU9L
MGTvqXAniocQKydfORhjQWW2oUneWg52T6Zkz6WlRJTjn3prBRlbTej8LkcL
RVMtiTobJk/XiV0mIq2ThRFCxPSeRmzV8Awwp3u1aZcsQDtVGQntoXXdITsB
srbgFm49ZhiEUcC+QqNecuzw6UVJJT94hQvCzVgug1htD759YKLITNmNoAi+
O+fJbHYaFbvBGba23d6xYkce44XEVZ5ospA72ZIALWQXROtQbVOO2S2/78NY
6RFBTScqJPHckVNMYr9+9bhSsd3corqMdaeXMfAmmCe/nxo5KyFME3AU9WF7
FmRjrIsLUn01nhbj+Oa4JHowVeeDMqo+0ZtYq+QiXIe4wBzDI1TQ8B6qhixJ
TMgC5VqK1O8oyvRCxx4FFSGqxDMfU94irnpfxRxnVcRZu8TObbasfAD30JKo
tr63ZNI4n8qZ9RVgoFgGe8CrcJKYJ1EuOikuFLd2JCb71xtvsLU2IH/+JLMq
oihnC2ZPrE3agWDR5cjj6KB2qZohakgok0sFcncSZlW1qIxYTRjrTBK/UDD2
r4Bs3m+yYxTY+OSVCmozZzIyZxBJZ1AuS1cQ8i/T9elJ55ANi3W1EE720bpa
EUbterU1nE0y/+yaw0k9bLEphqYRMix1O5nXJH2B5tRtyDh5yPSDfX/NiROR
IcHcV6BtOLVmlDBr7/FEJ7tjYEH2puxS3pqgfQcPZArLXB17TViLmYw4oOc2
AmihZ+T8W+Q4BHOIjEjDnJxVN+vyr+ysnVLIyS585KAQkB72FbZ1eXOjokr7
wzClJYfhNLcBKaHesma1J4XXkQrfTbUiTcPliQYRE/OeSwQErHMrbSXqsvlI
QQq5e3Sbu/qvau1hcwYG/Kb6OoIbJC2aU91gUAUFUIoPzO9kJf1XSdBpiXJu
tjkYA22hQZEe/byOqJrOOYzJ2Hn6rC/lpCKuk/4hwmmw7HfplWLUp5ARRqIO
mU1XBeqxVINE2UGWM2LfI10Ws4YogpRUxxoE/hV+qQKbrwOGs/CmucSS8sQ5
LfxWE1O34tGQCfdoq1mUU5BPQRsb0Ed71VBVUkfe7trillPHOk73RcYYdhfy
l5pOUtVH9YSI54GoracaWdVAn2ETu3szwg8wSuPCj7BhUDqgVwRsXnbAaHEi
LdeF6blzFzq/qEhuyTFQrDzL6zm9BEntDC2ia5CoCED05ZvUOeP60CqkdxQl
x4j2Et2txnJ14abck0uIq0kqtpIk0SK8i+I0wklQRsDu9g+l4VVgktLe2gRE
JOlFfzWuOd/WUY5N+NY9MR3iZl9heHAkyokcbhAAjzoUNW4IYe26H5Rf6zwN
1TKcFvqY/VV2kY879nJG+NKhR08XgmEdbnVENTMYLYa7+ZDnU1xr7K6muhtq
ejCsu8g8PFgCW8hrmtkkBvyKUguQeaDKx5m1pWTgSCIiv08MBNXJzhZZ3Dcl
VwxaS6fP2fvT9SRsqWwZh6dyT4fFgVIpKI3xptXn4BQsbUU6vQWByiATyxle
FHLmgjykYYGDKq36b0lNJE7vA3phPt3hy0F/ehjXhllj2JIbuxG0ynGjRabq
MQq0rYGsOGapONCYRmHXxydqkIGJDY0mw+tVlaCMbVh0KHf5g6cSEgDmtKLq
TmFsVc0pLKk485z3TYHuhcgrn1HibUeB7iHgmAA/nkP8xPNOCbXgWLzDIEYj
fy/xdB1bu1z4POtwzlGSWN91cLKQfi8LwyBRVoR5qWMsB41kal4YNtpMqozN
H2GX3aPRRCFjvVJMn31O6DBcHvYK24+4EF1V8rUzK3L9nnZcnbrxF+GSyHnH
DIdiUNR7hI0/iUxqDo+0Y0C0iUwjFkRRgloTT4uaNppbXqp6e1ZJHS3YusLr
8kB/AIx2Hi9R4cabPMKasGa7oj9x0y81cJO0h/jyTU/kxfnszx6pNnoktrhK
J2dOGNVkDVghqsopO7WB+oCH2Yf/WaLT/WFIjiGU9EmERn4QJRQlsOTaDCjQ
erv4uYmjNETgwq89yAM3yzOn7zB2SRAzH1pcgC7MGYYDqCPsx6S8pbMgm6Rb
Tx+47ToZNuIhVvboNKfxpGNt7cDmGIUILgQFSw3JHFpIQLEo47xnk9Pr3grA
mG4MuVU0xIWT0Jr1vipR3IKYbwddTfI0uWBH6fxgkeckC+G8SbmVBKQksNqb
yIBx7caTAQNgMg7+OUFCj0MKAVHLYR59W9KJ5GB/1CXfzgUNYU3y3Y0GJP06
nTpPEzbjoKelYBlgVUkORUKSsSfIEpnibpqaBysVtL4HHOnbKpOCKjHTLv51
hnKBOH50fv0um/fcvkAJHhuZSNmPYkdE5JxHeNcx4Tu8Z4Yc0YxiCM+gtdKx
b2IyTG6PwLFzXnRKvIbyMshYqzQfWFM+A39YnLxDTRwY1NtyRGfADrqMDwGL
bsAaI1+CfBuweysacI8paUhTOBO7IUBjTChYU48r07B9Ug4ckQtMi34UZtZZ
yCbtbQLs+ssWyI4ig6uuKKUqmMFgVYWiXEdVFdqG4UEoFBldr/udeDqSXhBR
kUPiNlevOhzKOUHXSBtHdqnH6Et0vXbWh+ivcUJOUFkS3S7Nc7I8OA8TG12o
uFETq9v+JYpuJzwCmG2KzoWuXCu/4n5cVMCG6YiiPaiQgB2/UD1Nmk7j92Wd
HkOUGM4GUFSY5tsS78SoSs8dr6OHGWAqxOPBdNyRE9V51SfukDMdmdbs9XlN
IFJWlbAHnIR5CCwAR7ST1XS9/umPh6Ps6J/+NPJ5+ILmaM8fZk80fCjHnh3t
B4GQHsQ00SX9blOOphwMeiTBRtaMBWTnjvvbihwPALCCoYXV+ZQ0tWO6Oo9T
IJluKaEUFlhOreBx6ESdmNRgLI6rxZifmRdoXNb3mQ6bRJO2hKufsLxeCNig
fRQH4wZ8vQwh3NcOOuUYlJNArXvuHgBuoO6rATahFmFZUukDwHPCRzS5ZTdE
neV78TJVWQ6udIA4mqbcdHWlkWcZkTqr+ondr9YAwyPoQ0vNNiTGrsKDFXY7
9kCuc6RZxfr6yN36fpaG9NL7ot7dw/AD+wYYJ8AaTFH4VZeyLkw50VyNoGBl
BvSAehGo55SaHSaswI8C2yIFhiQ2OmRDxDD1N9RsjveZDLBYQ0+tNLhrHayj
ZhjsSHB/vI75WMDkkrK+u7BKUXr3fdGi9Qb/2jAkUazo6tKCZIUexOzQSmD3
KS9qKKFj3oTJcsWaBI+XHP1oYw1l1QhDlVxWcWM+DOweIC2xAHFPiD9oSDoC
1ZRc1xg0it1BdEpxIf4OmKjBGi+vjgShWHa4EWaqb78oTSpY6KUQUQI3wVgk
TnuiWyaJr+iMkxJuuUqBKsOJd9AOsY+kP8VJNRkWvISt0WhMEFk2UD0nOonf
Do+VccfFP5s2oU5GEXENasRmCUYgqxlR0uIo62IMDcGKX8UO8Z08PFK5O7q1
CwO64YIo25p5SeO9fOrLFo/mRnrRcMxYKHcHHqpg1e6wPzFgdblDSPqApWCi
Bs4kAUQ3Fmg4krGkidJ442iZk8ylgeZU/d1UJz5vwqdNNI+SsCilyCuuxi3F
+cLcgKBjD+OUx2vBC7WVKhO8Ubc5YSAybJ93FTwM3sfKxLxi1GHutiOd4i58
w6ov3ySJWs5ddLpaaX/ioD9w6uALqNwT+Jsr9dFxxilWMgCLKwkikRyu6Zv0
Ikpli/Xp69OHuuBjvo3Eu8qXGuGQzKEYN6sNwiPhuz8W9wTerCih2AsM7H9p
lRx2FBO1gDGW6Wfe2e4itVN+5YPYwZM9XzrK/cDcKU0kwpY9NSWA/q5HMbGa
7KhpGpkMMRxeXxs1ap8mRa7ocX5H3oYTn8UX68NP43MN1GA/kGR+h0UdYZsl
AbQfZe/IPb9iITarVlOORwUXNTiXsx9dkCgZXGOpiX+g12xdiNrcZQP5Em2q
OzKYkOos+YL3mNwp68BNIu3Srj28hX2aveNicN68Ry3Mnf2Y9S+MdtG+Yp0Z
ax4o4AuXXzu6Saa7eSRCa+NRa4nSQF3cNi5HK9ZrcNy8hzFibZnhSHn28sV4
Km2BSb/gNY1lTdT+ciUNwBd+ZW54ZYG5a7lXiJbFq4QTvauojwr9xsvrF/Eg
mNQkXfvg1cTH4t0u1647umVFwinhxmCrRDFLXr6QFypP767WSV44fDqfq3DB
qZoEa8q/mnPu7EfOTig+Sw/h7PzSKhRpANelD5kb3iMWTXQNhUSTmHfD4SP9
jXmo//xievTi8PDZ9OVsmh9NXzzNXxbfzefPFn/m6xKo0H9++udREPKL9g++
RdkhP+L7oG4uaaOlb/oufNO3T4ujPzPz+X1xn73n0t9QJAVNBVkm43MXt6gi
I6lJsbDaUWWnYkHZ14tEKGXDQsk3PHSpNFI5EyVfoAsobU6P72DyiOcb9KUw
61qLPPvEkXEvUTipWNIfwKRnS7DAqrq5WQqSCWMdkDcvQAfxa4Td/14quavF
YIKjl1TGlarlnOqW7znHwUle4tKsymCevQOgMgk/H2VicRsOsGQ0VEuM31N+
kahP8UKlehTr6tTDHFrK/GYXb2h0FVgNq7n5iQdVs/wD7fMNW4KeDVAItmSQ
hR0xg6yJF5NE87ESri7NmC+n63bzKcjqLWlv64LTH5qomStVBTGwgdhD7E+R
8H8ABp3rZhthp0mU66QpSKYoVotS2UvtDW56lwK+wLBOaEkC5rqBqJHFsS2O
Da+jeyKIBUzlfqnM/2GJWpWFYXs0NpZFqKMzWAs/FP823CZyAbQ1KHKgmi1e
iYprFcFxRm1ZKwikUI0vr7JENmNv87pCJF/G3GM/I6LuBWmnmF8iVTwZ1RE2
YcwLVXy0F8i1DWoI3nrHVT1kS6wRwJ1TWQIILqTFWgaUd7TVrFoyQ7DGPcMb
ol0CCY8SJZFPdk7cc0mcKexoxfOBPdoUNdVqq+jx7NCrj8/iyzHAHY1PjBAP
Sm2oRMMTX1b848Wy3NAuinVFphBBiolH3KfELsv1Rz0RcpdRp41TlpaNrzU/
DRs3oDK8KG/GIlQpHQE3CINgS5DahGBEcRwt8yZ+KgGcqAeE63TS6Oqt6AAx
SGUej3eIuxpI9nES+kF3cAjb0t+8zlQ64zBHinFMoDQuGVVjtuY7PBhhV0yk
i6MAesA3LuG6WK4mDUBmY8crLPBf/uVfXJZlJ+zh+er/rsgt43CIJ6ef1bDh
XiUV9YTNEeYKX7aPD5FF9Mc/vRrwVvzxBBZ1Vfzzrw84NH/2+teHf8rG43/r
orf+m/H4wZGuekb6G0Y5Skc5olEmkwmtWeBblMaCNR7AoK9P4Ac4kRjf84//
2LOm+L+T2wJhTMWqQ0olje6JxZJgzHfZwb6N4RdjLz7RFyuwJby3M5Wf/jTa
NY/uf5qg/EfdVZzJrw9oV75m1jzZw84u2WTTmQ29eISHQftJxPzlVfZNH48A
PtQui1/vnT7EGfZ+oWs/xGnS9HMQzg1G05j2CV1uMJZpeteAm26S8psIFlQ8
gE032ps9OTmMe3EdcnsEdZvaT9FaS2J8T64O4wCM8JWro/jjo33SUxdVXYSz
Qm9lE8bJo8zisERdPLJOY00x5q2v/EVJj1nOSExhRjNpic5j9e8KFKcIhiHY
iGjisB+d/Y4M3kMzFQx8nsZfIax100HC9g0UOE5SrVZcAUO6Vh8eQ2/6mwDI
3lY92Bf4mqtDdacOtk3tceRH2C3bukglqc99PNwpTDkRisfoisdoCQkoh/le
Y1qjmtHEtRunbaKt3kHuUAgW7/Ib+HVK2UEsgdtqDSbFpvMk7vK3ykn8T2Xl
EwX7L5aIn8GT6ebSxu/fd8ww/9EzzGi5f5QnQcrtlixP9IX0dp1K+vb93iH+
zZgn8ZMXMUOT+Cqp4lk7/JEZb//HP8mi39uij2Ix4J/9CUTqv+0VAAFp98gA
rWORoAMyf4/5whp706aGmaXicKXPvK/SRwwxmYXqjE0MQ2dmV5Pe8iPG8204
ZnAWQxqcSNqSFJ6Q45gV1yt2PhMUaysQTgi9Ink9nNY9ejDHIWoqCtySq5Vo
nrnvWtXbD1PztdF1+RdgtrorM0n47pbIqOJLCTZc3tOI4RS7kZ9Ih8yR8+0x
UVIdYxcDMerFOtkX07QupBheHQn9/um1ltZhQ7ryM9qSSV43d7kxRH8f9TSB
Ykl7l5jU1k2Wk7wlud19zZJthKhXFfIsCnSXrUUO8GltIVH5GOLIcXp+z9hJ
UJyN1L6AXPrjO4G8DYKblLWHf99iB5016zWUmRTlm2EVL8Jg9oEtxCV3sP0e
cYoS+DFuAoYQihkBFe1CRzOFjxiiq2GZS+lFjNpYagO5jZUqanayIMmsKTeE
C3t8roJIyxP/vhN5H+X2y4djmcQvQacXcmvvyhqSPAGFNbLSr3BxhuludVcp
lHJgxYfRa4tN9dah9RS4iREbbINjHxO9diWIwRSrbwoLcvcdwpbyhmngIDl3
d81D0sMybLgdN/Yjh3atJfvCeoaoISN0VTv6KBNaeBODvio6q5WWoL8kQJ6m
/F9Cca08YdNZkV+15/0xVpJlCBiGVPbWtiEp/pU0XFDNMbuZAeE47Vldo+vK
hbGkXPF1ee+Q3qmxL/rG/sJNHZkoYcgn0Zj7jlEBTVGeVi2IRJjIx5GBkBKs
ZV7Pe3cZ1PJVIfiUjAxGSYmolS9ydNuB1KrL6TbMKEHV4q6ci1KTBJODfbiR
uDDN1/9Idny14c6q7IB0Qje++HQS7PD1yYXHVUZfE10jTuzB3JWbqoaZrLIn
b86O93t5C68zia9f/nDy4unzF3CdkE6q5ScBFUL/IgjoScZCn39MlW1h2xEE
MprnG4ntxeQwyc5bzn9Gph5uvYunFEIVcE9AofN48Vpx+OXLOSxRC5pOqIuG
tXNDLotMzbfWAM0hVnXEl2o0s13RoSKtrosxlmhqnAK/pr99pgXxXF9h0Pp6
NQHWWmsSxrYW/jHDhKC19aBL2mTDBhNhx6pWk2A2IyZnnc/APsCOCDNFXaZk
eHI+5r1rbLFVUH0P9ukcG7RmpmZFwJF5QLqRFOPbQ367HLEG4XLARRBP20hT
WzA2s56R0/j5wYpyAIhBWXc1Nr5zd1NUDYtZrFRvkIKWpQD/9Y329ECGwxm4
sFkbxdn6lswOdC7x1LPgeDmnHhhoZ+RA1BYbqQSn8OfJ76MvRlQIdIswrWXq
UsFKWZoGESc1ryai/KfsNXfhgr/1v5+z62BD8d9XuiFuvOu/nx/1mQtH/zk7
pK2EP57iETl7VWaf4R8v8KmOtWGr6rE1cIlCa319nPckvJpCAGgTMvO8Mx5l
UXuYAbqaxqpYFZRUwHsq2wwBGDRjH9O1Yjhu6RrCjWDclnQVkgXiy5oVtYLu
L7TFAoVtkmb2ee1fFzdn9YJN1bs5caFGrCSiyMUSLJUtxWXpKo4k/pFrLbeX
O5sKc8mD0Afwh1Kh3mThuU6dQ+M5jo1xIwF/k5yIZfFZw1nMD8VJj3rYgvL4
Gb/vVsAJvZOFw7Uhe3PIqudbQvIw7PekAbtmV8SHTfkj5GBksnECeXFXcPVt
0k7Zfu0j/SFkWcCFHArBUaaI4ayomFcQZXRBTRs4M5GL9nkuGIPUFrnO9gYP
jYMY3u8WsiibESGi861hk9ihohWEp+keCU0rWIjRRpns0gx1Flyfi1+Jxsq6
WBpejCVTknwhovGznakUdCFj11in1Li/YmQpe7OBIUR4HKipsEZIKxxpgjHJ
ON9MEBU7DNn588JrxlFJ7A/HSHHXlJJCF6FNUQxZE5ftz5pVhV6E+QeQ2Ww+
tS3ILrwJA/liWH/64+nlT6C6dEvPJCeS2QIb4ykTgivtDBGJtRyvRdFZa4Lq
TVWpZghmW/GZGjhZC8cACjrEIY8OmW+Iw+B2U7ZcBmpaRAjDHNaGo+XnklD3
HTdTYCOV9PggeK1zglW3AQ40W8ZA3iOhcbg9a7EWkTxQKVuRZ5RBAPJNOeeW
cjCDG8KgVoahPtgZpkOwMHbGYDXjgvyrYvu+YuidHt1vsV0LwoomY/h5yCFq
W0OYNaF3WLeZTb1Fu5/hBCtBBEIDj6x+O3/iGnz40Wkoq8Bg+twlb4qKAkaK
QIpMByOA6cNMvqxc0O6btdREIDjfWJbslWekiDdO2V2euYrAjFQRIfiwoDVH
ksc8yI7hRRhxN5wt6IQ/UyoC9yahG2woa3ngZtrR0IrV9Ek8C0m6CCoLxOmC
3Z+59+Qaw+d4ZLNc4GiEnzvz1gVvuwMDs7pTRB6s407My5h/CEiyFr3ATJbb
eeEDNLKnxFdzg44aSW6Lz2vhKuvuPGAjg7R1NJMTclqD6R/l/YUSCyw3ynkg
VjOS2SF/nsWNzZ8kMSMDvrfWfQyoRC+sWgrG2OVq9kcR0qV6nULYIMNS5OQ0
T2mOPJqMP60SfeRbEUgyjrWI0ZLeLsW4+FwmsbsZ2dmKWrJm3R48Hg7HJm63
1AVwmuJgTLN+qKZX5TnQOFd/9PVc5AbPsIE+eBU2X8RfiWpk6gDps06UI3Ye
ePHQUaAS+0xzaCMLMVCh/EhYYZgqTHhQCVNWZuykcYdKHz+kNbsiRYFhnlB1
AC1INKK8dekV4mpqDMyZO9k0eBmwLDzYj8J1p6I0LkQABT1EyrUUdY8XMzQA
AakVjda58F0TwUsNVun72lway6raaCrRFpOp2rZIlGfzIcJxzhKDg1gSUs59
egY+R7PDDdGVkXT5/rZHJ9kfOXWNSqYQvKhgn9YsbG63rHKkSZZF1rzKNi0G
jyVSy+FLTjKyBiNhNJqlzWWEAdc4dxW4IDuJ/swKuTdMkF6XIskFJEGq20Zi
igJmKWTyyuX7mf2S/V9Lzw1NmXfWbgoodfcv4mBUVbt5oelI/HsC5tvP5ltm
T0X6c217xwt9gr2dw4A2KhKWt7ut0QVFeyQ1v4FVRFIAizf2I8OsC4YGzFMl
kiZpOr2jI3HGIkAl0lMnixMNDMSUxC3mNoQB77IGlUPQV1fXl6fHbxWvHOE2
c0JbEqJ2Cawwdk7DCOpcantQRSA1ws4DFeRTT4j0GL9EubSWDDNavf8dH3YH
M1DBQyjxoKa+1ZQCOKJsE/04XEejoGeFzbvhvFrFMIjAJq/PqalGYnLITQwA
76zfSFp3lFxnUjW5rUxQ5kNBmkr8XegfB3Nhq5lo2XEmW8YNjS20hFXtoWlG
bVCwjAZ+olW6uMTOJKhJV6JsgOgGNRBYBxE8I84FFlvgsQwQ6yW5JeDSK244
GXQsHbkqUKXBYCmWCw4mKgo5v1hRqTNpKI5u8m1jyfOaCspJxgaWqvijMYPx
6Ki+v3RYx2Hl9uyVVTtdQb+rte8dyWx0j3ZFmOleVNosGLMUcZ1/gtFza/LQ
H95hJUVpW7XXVhp5mAvY110hZaQgJBKTNfSU1EkvymclC5CQAOvECY37K3WB
96ehTR4melrpjLze1j6gbwigihrI2sWyIYEtjfjQ4bN+zGPi8a8v3uDYr4NK
cDaDMD34yduLq/2hAFfgt82sUwofwgoVzLOLoN+lO1+rpwFUXvY6q6cFXq8O
vKVmPTcMUTESLwT3EwqNO9qQahEACoAZ7ANvpKNxS27m1FvG04OBEAfrVsal
GSE4Q0znTm5H6VsSCylJLrdvaSHJrdyVgDyjFvEMVP+0Nz0xWBQiiiXEsiDU
QDFsk4sJz6UyxSY7xvvFJihZNrFg0kwGtOY2gnREVakMsSiL6tYnDyBinyXK
6PDlUxpe5RtmUN23cm2ZN0GZah1h+wZGC7tQ6edx+JgGG0lPJNpIZRFsBVFa
u1Cpw2eXJde9rbthzn5oIZBwi4KhQ1/bvYumRjxd+tlKzDq4ol75QmqXMoDk
rnPPxBlBePk2b42BasoqBTJrjhG/MLvxAv9HNGAVa3HLMS0DoXeHULcqwjTT
IEgROWE31P/3oZ+ODWuRykLkXUKWfk2O4Jb4fuGQ8pwgCmlr526Dq1zjgfQ4
goq0Qd6tr/G2SHaPfCCEkDiTRNvG4Ma/9V294UFMurnUpBsEcrRUBsrxQEr3
Wb95g5K2gyLDXSEVPU8JRTJ1RlrhCLbDJ4qTqKUY5fvQnbOGyMzZfmVOttpV
U9I/IzVR3jCRHENsDI0PcThfE4U0oQdbwonVx3scwPAktlpvc/R9QsRPf6mc
hcJCxbxJ86QReF4VpF81vaYi11TWqIKP27rccOmI2PZYDxPrew9mxLgHG5Cr
/yz0s6Ag+ggvj/qGO2l1pPSq3kv9d9BOTDpAIfpsYFCrD8/tyA/iyO86Bvg2
zcLENzsnmN1qF2EPmKueiU7MzeNSAVXjjTcGba8w91cTWApvkYOJuYdZysz0
7XIEqLMElMz6DunwvphxTJ6yOK8NfRzwPl8bJ3kz3LsElQnGXpEUVXth2Oe3
xW7hwP9Z6tRqlA0JRkUPqdFG42wgteJzjanUpO6xIbaeG4GocoL6nJ/KraqX
WvAkmcXJlWav3n3QnYBtIWlLvZxri3vmS+97gsMRAqHc6NTUhU0uZ2MEXrxZ
j/naoRkkVV1BfzxCfNGBBT5XpHb6jgSWOL7TjN3Nfes7Y7JLwKjQpDhnAiKj
wqLBL1/+q8sfTo6effscbiP2KMbtkrOx3gHUDq8kTvEXCYSwUdznJBQYaGAZ
mOWPeL9cZifXoKl4dmHoT/z8ZBch2gXauxswuai8T4fI6zC8Gj2i6lMpiobJ
/3gLNpxg2EjTD9FIORcQ8Y/CluV4p7elxpAw3bjrU54oYrUEuvHSBYDVPjmM
z0bSLztSQzq2o2t5uwkA+EMyoIREknYpWLOz29BEtPLKuX+lZWVSJUXrP2R/
tDLOw5dHk4PJ0eSQM+/4+th3302eH04ODw4mh/2DHfUPdvTwYOSL9juUQpRP
4BGWpVKcIK6B5HV+SC50oAl2libpOicEomBdlPHlvz6a+IWZv4HfNfKdYKxH
tu31SMvutaGZvFNLNGgHbAJAKFeoamzX1JZFjBErUY2POusmbGQYGEbJiB0+
6rwuNL/wlgpzNxb5QeVeAkW+78ccXWrr1pALDDuPVfi4Pbbv27uauPfrWUUS
n6hXcdvpDLQ+0u5FoIjhdfApItQYg6ITNrlAyPxly/CZAdI/O3XKdgG8PwJO
xCUBpwZrTuUBvlYmiC/GZjqjoEMVhvYlpZGmyGDuvs+WbwnjXbHCpjitBfaW
I75UmsyOsDCopDXHQXvs8O57SakN2rCY4B3I2h+Y2X35RgDXQJQslz7haOEd
Q6G71gO3eodiDHLTbXAfeNE8pISpyAqnlTg9OcPsflNwR0R8bV9LRPGMKpwc
UgL8Jvvh8vjt6YfTdyfnr8/e/fbD6eXl+SUBYFnx/NBMRHYw0JPW3iiYegjX
x6wYFB8QR7BTIXBfw8ExxUztYswRWCnbhI9D5CNI00dB8o2c9n1pheUr246B
93SnLi7Pr89Pzt98+PHs/M0x1iL+TQfoAtyuoMhAds66N4mJ4AQLLXuCzTfC
nKTCuNxtG6S5WmrAPiozvETrayMty82zKekDGqH6gcHrv1ltKDWPEfb68uyy
J7gjTXb9/evxwQHxKvrzcJ9iv+tAjRSO43865OobsDqkuYpTUJGe+F/WzfHr
KPR5411smUdL7y3LUSAdKanDsy9lrVp4G8bzMFdAHMQsHzjtN0pp4DP3tR2n
J+9IgfMUqYnAPY2k4poTUDtI9SQ1FdPX0z5I5EqnTvRC00lOqZ4uPUKmH9e1
p2RARWnXuPon5X72aznsyYQ3wpesPcGgT11yNiPSZnbw+fD50dF3s4ODsf15
uM9VbswoPNnD2PzFG0F7OA43wL7Feb2mVNHoo0uy0k+As7T+ix+oyth/3fOL
J5PJPpZC8+d/xOOgQRr6hgryfokK5KJN03TVZMd+oC8xMxVTx3MBdN9J/f3N
ZRYKSOEEzLTJCFQJjzrevlfuFfmLlf3292rtEpHcSgaEw+sbCSZYvbRxqROC
1NYZEcGFXESqQpWTEP/TzjFdfhK3GF17aChtyhcXWg60ZKWSjh0EH0+in+zj
efeS/lGX0o26nz9E3ackSk6quZFjTF89c4ypLJqgp7S+/QiZkZES4+I2rx4k
Ib/rGNSyaeNjx5zhB4bxGATKDXkg2uLGhFfUzYTb2oQ9+ZCgMx8GnGTvzlnf
eHLw+WC/DydU892S1m9In4GXlMU0PwPWFt7jgrp3cpUIfz2jZD4xIxfUKJII
hL4d07eDPX/lGvheVSQiLB/MN6hyQ71zA+x8jMF4xFJFUarBnCX5D1N4722N
/tEiJtJEQLlxTx76+fdwUd9f+Pyv4x+Pz94cf//mVJcn13QKq9kCm1Pftt3X
/l+ZJQg8wev9XTBeZ6fpgV4sjzGCGhAX8GTHCx++5n72/RfdRt111Z/tuOrf
PXTV6YsrrvS7UgeAlBzvuPvJxOPbn8w6uf9ywl97MJxtTl0OLB0PnxNg4b4z
6x5T990PnpEQWv8ByXi7TufpjtP5dv8/x+FEM45OJpquP5bv0eJOjs4uYPib
v5tbS4kFZl6xkyMGH0bkHbRW5Xnhrd5c4A4u8BB2k54G+smI4i7Wo1Kz1u4J
45XdIZx/o4J5eGN3iw5p7Wioo9rhMW3/w1EkgdgVMaLqB+Wf9nY64oKVFSrX
lXldvGLfcLkMfF+1IKBmnA3Hqcc4I0ndVENRAE6CVkDJGcPUem5FT38RhB2T
5KOk4kgStATT85ilBE1ArDdCyYJF+WzHna/HIyxbg7+jALCWZWinl/Q3mKDT
x4QHcJuDfghCAWmLK/hnTo4X+P0tWKyhZ2DH76wJqaw3OvCw9hrdFENnmIzZ
oIm6kWyGSXapII7iQackIGqBoGnDlk+YTm7R3SX95OoaRPb3P8kd7ynrkobS
8vKoqVx3tOg4DU+DHC/UNZiMDYmpJGsNYBi64AtDHPxRuo4CwcS09ihVhzKz
zcJ25CRjKpXhFf+vaZW5NT6LTOsgxmMy5FVAOSsZi7YAcxyjXbS2Ax3iFhY4
3WIGk+Gr94OdmXvK5UlWvXnpfB+VsC+Jj77RIgiFWhtgYiIg5w9IeE8byQTa
3BBoPbttuj0H3cMN/ciZ82sToS8HnThDAwxg2B6+nBw+7482n4XQslYNZU3Z
eOuXoMavc45rduGrYouVWaxvqGuZVDTejFnN+gFU+jBsSOEazAbFBrYRAiPx
fwkukKfZ02RvE7iXk4FN2NkF72FdCo7bT98OPFWrBt7h9atUu3q+Q7t6SQrS
gHI1oE5xK4XsAuN/GDeQj9+wFvCE1ek4refJd5PJ4YsDHtXayF8SssY1poRm
Tw6P8IcdH83whkRa29B+DHtw/lOR/m4Hz8P6Xp+DJyJiqRvNBLqDWY60Xky6
OAWlU9ugNieFJSb1zgpvRmG/I1UHBtnjInvMnrgevs2hG6vSUa2Qkhk/txE8
ycB1bvqCc6htcUa5XHTX22ZSVIyUdrW3kDoq2EuWYAT6QJI2zNDCMGvf4nFF
9Fx3tZzt4islRNCNmpu+nsM3M8rgSKC6ho6sQxXW5pVbPWAjmgEwwR1tqmQ/
SaKjQgLMc3Mbk8dw4p5v3HCLufWVA40JM1/bwROqFqGWPIwgea3cHoORTinO
9Lrhtik+nVx/5DXKY8VlHkpf8oBhigtAxTvMGmgmOINdHXUkXsrv5lh8uNWq
K+yYP6sLCrA4pDHsmEOiNOSDSsOOMXYwzxc7YkFEly5WrDh2Jp15MsGjZmnf
7TyTKArsocLwoPQzBU3S93681v5LPamhNJHehsvVunMlfAPdA13E17RREgTG
+pPml6D9gwETkVDsa1OQxoGGsU1cicEpjI9rWgvidrteSvc3/rU/v6SltmX4
+UJliqTH4dBkZuybdVKJoT09SH/zeTa7FVlp79bbe3tfFa5dt+IROldwZx6j
evW+bVj7erFD+8q/Wvvq6EcPTj5Sk3bMfVhT+k943/+zK0u+uVpHPj7QMisV
kX+PZDxuHiTtxuRMn6qksqdfkVLV4qE2bVL2jrAY3nx66Fe87ibJY1evEM/H
Tt3OhcCWUzP9+tZKLqRvbijDh+fgSg/7000qOPy2X5KY6Pev/CoFwG+6JPmi
wE+m/3fK8J4GliC1k96V6N7o5rok0nm2342uak2MZOMk6ShOEmERTLiVgk6g
dUxx7s7qQa4Zzznlk+GIw5zx2x2ccUYscKgjaB8r7J2RMr/uhDy761n+Dg8+
8KiBWSmvGth/z4jU02w5RiWX80hqfz5DyAZ085NFxMA91lwVAR3gSLgX1ig6
cAVxjIGJlAS5PBlGZUwkwVMRrYYbJs184zWTvHFrPpS5jKg2dDTJdKeY7B0B
HnF6WOa7Y2sJ5mPzweJcNuIo3On2EVNKUsNC7v6I1LA3lLaORhN5Agk2x6Pq
xUUU6mvua7PKTdl9RfPOedPGoSrb4++f9BEvQ5hUUk8UYK4QQXJLVN0MDkDM
vYXhO7dacOvk7HXSz1UDzIM9XJGFSRkxNVLifrPx+L1sbb7PJc+k+Te3XKMl
rehp+mSjIZZBLsn8XJcW1N4Psb+oF6wZA8Mz7Vl3OtviodmKw5nJUy8ipi74
yrQTwUVe+zYM4kl2A2sNEgbRs09ugYGmAB6UX7lB7ArycQOvKn0FFeS15vgw
UuMytX78L7yPvmdbffkb1Yng5mnvRiqD0axnM4qw7pGjo4Z3A7YI3CPbZLo7
YtJ3spCUEQ9xam51rBic00YT/vs3OWonnPl2wvxzCgcERaau5xY8LsqeXLI+
28SPOyx1v9shdedfK3WH59UjeZPJxSkPnS35m2XwcGA6KD/YdfzqPEAhJSJV
CIYKQn0i6R3D3LSWX2pxWGtv6IUfRbitNbWAqOPYOg0hWR8G19wmz6Tdzqv4
YJoGcOqHaSgefpiOXu6go2LYru3JxRiaVmS59swqIKAuFQTvDWH+kA9K24F+
jqleVuWcibbhW1cN3RLT+tNE8CaMk3MbPYIpiM6/V035ygx27CRmWX4oq8OM
OOcojdnrVWEyHa7+xRG1UN2uJTlDLk/jkuLYo4N+rxLhZqq3CjXOKCcwcQBw
TnU6BanAIKGFdBXau1HqHDCC44uLN2cntHT77gkS6OHBPuvjoZrt8xY9SfDd
dup86yk0o2HCwhMunZfOj3NzVq4r7ZsnIX2fGMnVlrRO31ZHajXDkREUBBGL
ZqUgFTZtpVVpaTQUKPP06vz95cnphzdnb8+uwbg9PvkdXA9e/+Ej1y/6hPOV
CtreIexJae3MQ3ADzG7MFIZSDAwSngJSIAfniY2Wh/XPgksVb0yULur0jRn3
zs0p6U2ErTp+gJdvDfVDV4QJl++urjEP4MPZu+vTyx+OT05lU46+clNYhMs1
qBeWgGQZEQwvBLeFYNQU2UYhL9mzNAOmP8qo3MOJpppndxiFvitrDoVKl9QK
0TekQ6oV4kq5vHilkYmgxxUlR8UBbNTfzpFDBgkQvNynj1yunB3naMw+Mqvr
a/CuBC3ROkQxx9V5YiYNS2u8ws5YTlrJC+CVBDDzRCPtbyovQTD3JAbhDlJX
Oo7Axt7FzTWpQGhf+skcvzvudJG5jqG5FL6E5t9jhdrcNPYjlfJcUZ2WL2v7
eq0CpO4uMHCQt8ZcZl7nC3u7o21q2OsviWtcuGtyl1XcuyJjnC5eGtKXXGFH
MHj6Y0G54ZeUDSPQkB1JvjrPlmHo+p61B1v72NbeYAjPYqLcXlqoZ48Y+rXt
14X9Zg+xRrE7wn1G0NqZf/xC6vj2qNM9ZaK6H0kaPva/n/2LsncYCGSU9BCR
ZjdS+t8Mnf49sFvR6TDTTLDwYa9B2i2+ffpyOp0dTl+8eDFHl93PvT6On2GX
kYp++YX0or4NV1Xo2MvVbHCns1M4vbIgRPXkXAN6C+scQUckvYu+eOhwWflC
dfBrz/QrD1VOlt+Hpxp++vec7eABDx0xlsSNpV5sh9obFUchTWpRTbIiCmj5
erxf3COqUXppPlSIgtF7anTkHbsTrQffIYl26SsG6gvkXbtT7ofXYyLsa162
O8dp8GXd4IydT0/A0T0ioDf4qr7IgbyqN2gvb9vtJO97W+gSTMkuCTXIO3a7
BIZW5M2x8JwGfYLyrt1m4+DuRebfI95FBqbnaYP8M2BmIduMuWafsRSzT1D+
xt7KQmQdws5zAQfN+sRjYKelvNT97fLxZy5L6/n8NUXVuNNY3/eP56r97HP4
813fO7bX+ijj4ODZ4fOD5/C/z47g/wpkq30m389sdFt2gnpsAtvqV40lWPyc
lonxDHp5+8HB86PnT5/Nnr18Nn/28vkznMGA3dWZhCj7ZsnstI0GJtUrFmBS
z58VzxcwqeL5s2cvcFI9Ns/QhNRc8VZNM/T6XokBp1I8W8Drn8IEnj1f4Os7
FsjQy9fVcIvgSOHvzojUo+iqWZ+ZwOERt4PCG0Sa0DfZlfas7+r+/YhJdcG5
67m00rCm94sib7c1Q533dJtDJV8/xlbzZPtIdUPDXQ7ifB4/G+lPoTaNZ0I5
wg/TIbxybiymR0GZcZuKYE0Q8tKP6g32vOn3ct0lbQJJNPxrGdtMDwl9m0GD
3WRE3w3zN30jiyBHw+ZgoxIME2dde9Qk/CUSlocTD/Gn2YLyLQdCczFoasb4
VOJGIezYBYXq+MbD3zfUHLFtQY+w+WgTDnSswVD3GzkCq0NpwtBSFwm7201T
+ie+LVYVvO6YzbBSymYvYJPpUlzqxjDtPTLyaZsQRjrIIz4Mt8FhL6KWGO8y
Clj6CLQL3TsEAaawcwjnYoMFh0xUYCeNZVCMI4ogF6Me4gvgn312ngLaaFvx
KkH9xpVKTUU4b3Kv+IAbt2uNvxZUU2umwE4KST42zsxhmifT4r7yvS2CWe/j
JGn5ivTvt9NX7uXSfafZpi1taUmKWLWgnWkVcWeLzxVNk9clxXbDKY2kFEFv
OCHCi20GfHlZlS2BZ1H2oPyw+HybbxlckMk9hPER085cfJzDHPCNaF9GTuF8
0HtFxxITvULAjST3hTJlaYgAQPA2b6K8WOk41QokDwLQ8y39QW4pxU2vNlW1
QOAjBneSdKJkaI/JnQ9iDn83OZr0piHjcjySn6ahbtfMFTiDx5fsMKDfnYEo
ZdL7W4SFdA+Tsw2FxSyWNghRG8NWNbhSwfettu3S65XmbD+cPO/HecyoEE/S
ju4RhY3AijX5OAeqGce8kai42bVfve/xYOqOhRL/M2AJHQ4MpxsgQGJK1VBn
VsEZDJisge3G7VClgYN2RI1xef1ZhvE678wQuinmmFYXnp2+nwiiCwcpl5Av
HnNaZO5TxYEEokENQdN7yMUCb2ZnX9n2js5UFIw7NTFQ/hUGjJcdEZeHvbFf
atKiQjjnAiWdKwuYBGjmHJzoEwxhRJRFLoMRKQW7gE8IqmwTE4EfK9UTumCp
IP2Iq0wRQnAmGs+Ky2VrY7Y9siu8lBjwXG3axknx8qyoOWyMR496a6VMRkAY
vPH1BoMRXim0Lo6nx6/BFjRt4B3mRg3riOk9ijHDNCmQ3cLaNy13nh0GKebk
RE8koWXEC3Sn98N7zuMuqfMHw5WPSFs153IXzyyYut4giXCkYGaSxuonWIa9
sSVHPBxxlJg0xgKNTTeuy3e8nuzR4wJt7GNxj1lvhoQsULRbeBUwN2Y3Iwfq
Gh67Z94wCBX96rHWtkdDnDmdjWVybtdUuYjiyufJWP6xAQnGO2E3nXLrDKhE
Su0TrhZVYRMBwqq9KkUwpyOfuOJZ+LxsZttGar2OEYpwXn7Ovg/tEjJABLRe
KuarFi5weKcY00qxtgzHfiJhkRjaPWzDTnMN8wan90Fuf5pZgVls2BmtWjj6
YXDKnIE4mHWIRRuws4gXmCOQI+gL/JNR+hLux0M7xDzx6VE2LcU+8Wi9deFB
L0Mw/DKoGA3wvsl+pE7o2Ny5qjsBo5Lj9Eswa6va9AWk0qo2Po9NCrDIDDtm
YkaT40gQNzLOlwghKgc+C16VeTQ0yucu15+w9zICjBmsTFWXNyWpbzoW3m5C
If0HPI3jNfz1X8ONud9mb0pcTNzpmNaTrz8SO38LZ4RdWwq4U2sg5d/nf93e
Vtn5x+2IvoM9ur6tVg2S+dv8Zg1G2h8KbDW13K7n8BFmZ31fgtzdjLI32xmc
+gWYtJjc8rYE4imW2Wldfmwa7ZTx0xamtlWlv8T/rbgbI6Y8Fnd8dhjDUp+B
9dgGEv1/AepSIwlnKAEA

-->

</rfc>
