<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC0768 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0768.xml">
<!ENTITY RFC0791 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8200 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC2991 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2991.xml">
<!ENTITY RFC2992 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2992.xml">
<!ENTITY RFC3828 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3828.xml">
<!ENTITY RFC4787 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4787.xml">
<!ENTITY RFC4987 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4987.xml">
<!ENTITY RFC5508 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5508.xml">
<!ENTITY RFC6335 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6335.xml">
<!ENTITY RFC9293 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9293.xml">
]>


<rfc ipr="trust200902" docName="draft-cmcc-asrp-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Available Session Recovery Protocol</title>

    <author initials="Z." surname="Luo" fullname="Zhaoyu Luo" role="editor">
      <organization>CMCC</organization>
      <address>
        <postal>
          <street>No. 58 Kunlunshan Road</street>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>luozhaoyu@cmss.chinamobile.com</email>
      </address>
    </author>
    <author initials="H." surname="Yan" fullname="Haishuang Yan">
      <organization>CMCC</organization>
      <address>
        <postal>
          <street>No. 58 Kunlunshan Road</street>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>yanhaishuang@cmss.chinamobile.com</email>
      </address>
    </author>

    <date year="2026" month="January" day="23"/>

    <area>Applications</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 67?>

<t>This document describes an experimental protocol named the Available Session Recovery Protocol (ASRP). The protocol is designed to optimize high-availability network cluster architectures, providing a superior high-availability solution for clusters offering stateful network services such as load balancing and Network Address Translation (NAT <xref target="RFC4787"/> <xref target="RFC5508"/>). ASRP defines the procedures for session backup and recovery, as well as the message formats used during these interactions, enabling efficient and streamlined session state management.</t>

<t>In contrast to traditional high-availability techniques that back up session state within the cluster itself, the core innovation of ASRP lies in its distributed backup of state information to the client or server side. This approach offers multiple advantages: it significantly enhances the cluster&#39;s elastic scaling capabilities; supports rapid recovery from single-point or even multi-point failures; reduces resource redundancy by eliminating centralized backup nodes; and substantially simplifies the implementation complexity of the cluster.</t>

<t>The ASRP protocol provides exceptional elastic scalability for network clusters, facilitating the implementation and deployment of large-scale elastic network clusters.</t>



    </abstract>



  </front>

  <middle>


<?line 75?>

<section anchor="introduction"><name>Introduction</name>

<t>Traditional high-availability network clusters based on a master-backup architecture rely on session state synchronization between the master and backup nodes. While functionally complete, this architecture faces challenges in the cloud era, such as insufficient flexibility for elastic scaling, resource redundancy, and high implementation complexity. To address these challenges, the industry has proposed the Elastic Stateful Cluster.</t>

<t>An Elastic Stateful Cluster is a high-availability network service cluster composed of multiple cooperative nodes. The number of nodes within the cluster can be elastically scaled, enabling it to provide stateful network services such as load balancing (SLB) and Network Address Translation (NAT). To achieve elastic scaling, traditional Elastic Stateful Clusters adopt a Fast/Slow Path design philosophy, separating session management from packet forwarding. This allows the fast path node layer to achieve good elastic scaling capabilities.</t>

<section anchor="traditional-path-elastic-stateful-cluster"><name>Traditional Path Elastic Stateful Cluster</name>
<figure title="Fast/Slow Path Elastic Stateful Cluster" anchor="FP-SP-ESC"><artwork><![CDATA[
                   +--------------------------+
                   | +----------------------+ |
                   | |                      | |
                   | |    Slow Path Nodes   | |
                   | |                      | |
                   | +----------------------+ |
                   |         ^        |       |
                   |         |        |       |
                   | +-------|--------|-----+ |
                   | |       |  ...   |     | |
+----------+       | |       |  ...   V     | |       +----------+
|          |       | |  +----------------+  | |       |          |
|  Client  | <--------> | Fast Path Node | <--------> |  Server  |
|          |       | |  +----------------+  | |       |          |
+----------+       | |          ...         | |       +----------+
                   | |          ...         | |
                   | +----------------------+ |
                   +--------------------------+
]]></artwork></figure>

<t>The slow path nodes are responsible for session creation and synchronization, while the fast path nodes are responsible for rapid packet forwarding. When a fast path node fails, external traffic can automatically switch to other healthy nodes, ensuring continuous service availability. The drawback of this Elastic Stateful Cluster architecture is the weak elastic scaling capability of the slow path nodes. Implementing session synchronization among slow path nodes is complex. A typical implementation reference is the AWS Hyperplane NFV platform.</t>

</section>
<section anchor="asrp-elastic-stateful-cluster"><name>ASRP Elastic Stateful Cluster</name>
<figure title="ASRP Elastic Stateful Cluster" anchor="ASRP-ESC"><artwork><![CDATA[
                     +----------------------+
                     |          ...         |
+----------+         |          ...         |         +----------+
|          |         |  +----------------+  |         |          |
|  Client  | <--------> |    ASRP Node   | <--------> |  Server  |
|          |         |  +----------------+  |         |          |
+----------+         |          ...         |         +----------+
                     |          ...         |
                     +----------------------+
]]></artwork></figure>

<t>The Available Session Recovery Protocol (ASRP) proposes an innovative high-availability solution aimed at constructing a more concise, efficiently elastic, and highly available architecture for stateful services. Its core idea is to innovatively distribute backup session state information to the endpoints of a session (either the client or the server). The lifecycle of the backup state is strictly synchronized with the real session; it is created as the session is established and removed when the session terminates. By eliminating the need for independent keepalive and timeout mechanisms, this design ensures the timeliness and availability of the backup information. Based on this mechanism, network nodes within a cluster (such as load balancers or NAT devices) can rapidly reconstruct complete session states directly from the endpoints during node failures or cluster scaling events, thereby logically achieving a &quot;stateless&quot; nature for these network nodes.</t>

<t>To achieve the aforementioned objectives, ASRP defines corresponding session backup and recovery mechanisms. The protocol allows protocol messages to be transmitted together with a forwarded packet, thereby avoiding the overhead of additional control packets for state synchronization in the vast majority of cases.</t>

<t>In summary, by focusing on endpoint backup and rapid recovery of session state, the ASRP protocol effectively ensures session consistency and service continuity for services running on network nodes within a cluster. In an Elastic Stateful Cluster built using ASRP, network nodes possess atomic and mutually independent properties. There is no need for communication between nodes, nor is session synchronization required within the cluster. This fundamental design significantly enhances the cluster&#39;s elastic scaling capability, supports rapid recovery from single-point or even multi-point failures, and reduces resource redundancy and system implementation complexity by eliminating centralized backup nodes. Consequently, the ASRP protocol is particularly suitable for network environments that require frequent elastic scaling and pursue extremely high resource utilization and service stability, providing a robust solution for the deployment and operation of large-scale, highly elastic network clusters.</t>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
   &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and
   &quot;OPTIONAL&quot; in this document are to be interpreted as described in
   BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
   capitals, as shown here.</t>

</section>
<section anchor="protocol-overview"><name>Protocol Overview</name>

<section anchor="two-operational-modes"><name>Two Operational Modes</name>

<t>For the ASRP protocol to function correctly, two prerequisites must be met. First, all network nodes within the cluster must run service software supporting the ASRP protocol. Second, the server or client responsible for backing up sessions must deploy a kernel module or an eBPF module that supports ASRP. Depending on whether this module is deployed on the server or the client, the protocol operates in one of two corresponding modes: Passive (PSV) Mode and Active (ACT) Mode.</t>

<section anchor="psv-mode"><name>PSV Mode</name>

<t>In PSV mode, the network node is typically located within the same trusted network domain as the server (e.g., inside a data center). The network node backs up session state information to the server and recovers the session state from the server when necessary. This mode requires both the network node and the server to support ASRP. Its typical application scenarios include: traditional load balancer scenarios that provide services externally via a Virtual IP (VIP), or scenarios where an NFV load balancer network element provides cloud load balancing services.</t>

</section>
<section anchor="act-mode"><name>ACT Mode</name>

<t>In ACT mode, the network node is typically located within the same trusted network domain as the client (e.g., an enterprise intranet). The network node backs up session state information to the client and recovers the session state from the client when necessary. This mode requires both the network node and the client to support ASRP. Its typical application scenarios include: Source Network Address Translation (SNAT) scenarios, for example, where internal network devices access the internet via an SNAT gateway, or scenarios where cloud SNAT services are provided by an NFV SNAT network element.</t>

</section>
</section>
<section anchor="two-routing-behaviors"><name>Two Routing Behaviors</name>

<section anchor="symmetric-routing"><name>Symmetric Routing</name>
<figure title="Symmetric Routing" anchor="Symmetric-Routing"><artwork><![CDATA[
                             Elastic
                             Stateful
                             Cluster
                       +------------------+
+----------+           |       ...        |           +----------+
|          |           |  +------------+  |           |          |
|  Client  | <----------> |   node X   | <----------> |  Server  |
|          |           |  +------------+  |           |          |
+----------+           |       ...        |           +----------+
                       +------------------+
]]></artwork></figure>

<t>Symmetric routing refers to a path type in which the bidirectional traffic of the same session between a client and a server is always routed to the same node within the cluster.</t>

<t>Typical examples that demonstrate symmetric routing include,</t>

<t><list style="numbers" type="1">
  <t>Active-Standby High Availability Architecture  <vspace blankLines='1'/>
All traffic for a specific session is always processed and maintained by the master node (e.g., NAT mapping tables, firewall session state). The backup node remains in a standby state, taking over only when the master node fails. This architecture inherently ensures symmetric routing of traffic to the master node.</t>
  <t>Stateful Load Balancing Cluster with a &quot;Same-Source-Same-Destination&quot; Mechanism  <vspace blankLines='1'/>
In this modern, scaled architecture, network devices (such as OVS or routers) use a &quot;same source, same destination&quot; policy to ensure all packets belonging to the same connection are directed to the same load-balancing node, thereby maintaining symmetric routing in a distributed environment.</t>
</list></t>

</section>
<section anchor="asymmetric-routing"><name>Asymmetric Routing</name>
<figure title="Asymmetric Routing" anchor="Asymmetric-Routing"><artwork><![CDATA[
                             Elastic
                             Stateful
                             Cluster
                       +------------------+
                       |       ...        |
+----------+           |  +------------+  |           +----------+
|          | -----------> |   node X   | -----------> |          |
|          |           |  +------------+  |           |          |
|  Client  |           |       ...        |           |  Server  |
|          |           |  +------------+  |           |          |
|          | <----------- |   node Y   | <----------- |          |
+----------+           |  +------------+  |           +----------+
                       |       ...        |
                       +------------------+
]]></artwork></figure>

<t>Asymmetric routing refers to the scenario where bidirectional traffic of the same session may be routed to different nodes within a cluster. Specifically, a request from the client to the server might be processed by node X, while the corresponding response from the server to the client might be processed by node Y. This path inconsistency requires two or more nodes to collaboratively maintain the state information for the same session, posing a new challenge to the failure recovery mechanisms of stateful service clusters.</t>

<t>In cloud networking environments, asymmetric routing is an extremely common, even default, phenomenon. Taking an NFV network element cluster requiring elastic scaling as an example, one of the core architectural design goals is to allow nodes to scale out independently and flexibly. In such distributed architectures, unless specific traffic steering policies like &quot;same source, same destination&quot; are deployed, the underlying network devices (such as switches or load balancers) typically distribute traffic naturally and evenly across multiple available nodes based on mechanisms like ECMP (Equal-Cost Multi-Path <xref target="RFC2991"/>, <xref target="RFC2992"/>), thereby commonly resulting in asymmetric routing.</t>

</section>
</section>
<section anchor="protocol-message"><name>Protocol Message</name>

<t>ASRP achieves distributed backup and recovery of session state information by exchanging specific protocol messages among the client, server, and network nodes (such as load balancers or NAT devices). In a load-balancing scenario, session state is distributed and backed up to individual servers; in a Source Network Address Translation (SNAT) scenario, session state is distributed and backed up to individual clients.</t>

<t>ASRP defines four protocol messages: New Session message (NS), Hello Session message (HS), Query Session message (QS), and Recover Session message (RS). ASRP protocol messages are encapsulated within UDP (<xref target="RFC0768"/>, <xref target="RFC3828"/>) datagrams for transmission. A specific destination port, referred to as ASRP-PORT (currently configurable for experimentation, e.g., 51200), is used to identify that the UDP payload contains an ASRP message.</t>

<t>A UDP datagram that carries an ASRP message is termed an ASRP packet (NS/HS/QS/RS packet). An ASRP packet can simultaneously carry both the ASRP message and the forwarded packet. If it carries only the ASRP message, it is referred to as a pure ASRP packet (pure NS/HS/QS/RS packet). If transmission can occur without causing IP fragmentation, the ASRP packet and the forwarded packet may be transmitted together; otherwise, to avoid IP fragmentation, the ASRP packet may be transmitted separately and given priority.</t>

<section anchor="ns-message"><name>NS Message</name>

<t>Generated by the network node, it is used to send session state information to a designated client (in ACT mode) or server (in PSV mode) for backup when creating a new session.</t>

</section>
<section anchor="hs-message"><name>HS Message</name>

<t>Generated by the client, it is used in ACT mode to announce to the network node its capability to support the ASRP protocol and to trigger the network node to return an NS message to complete session backup.</t>

</section>
<section anchor="qs-message"><name>QS Message</name>

<t>Generated by the network node, it is used to query the client or server for backup session state information when a received packet cannot match any local session and a session cannot be directly created. For TCP SYN packets, if no local session matches, a session can be created directly without querying the state.</t>

</section>
<section anchor="rs-message"><name>RS Message</name>

<t>Generated by the client or server holding the backup as a response to a QS message, it contains the state information required to recover the session. The network node parses the RS message and reconstructs the local session, thereby achieving failure recovery.</t>

</section>
</section>
<section anchor="session-creationrecovery-scenarios"><name>Session Creation/Recovery Scenarios</name>

<t>This section elaborates on, through a series of typical scenarios, how the ASRP protocol achieves session backup and recovery via message interaction in the event of network node failures under different operational modes. Each scenario details the involved protocol message flows and the processing steps of each entity.</t>

<section anchor="psv-scenario-1"><name>PSV-Scenario-1</name>

<figure title="Direct Session Creation in PSV Mdoe" anchor="PSV-Scenario-1"><artwork><![CDATA[
                            Elastic
                            Stateful
                            Cluster
+----------+            +-------------+                 +----------+
|          | --1:PKT--> |             | -----2:NS-----> |          |
|          |            |             |                 |          |
|  client  |            |    Nodes    |                 |  server  |
|          |            |             |                 |          |
|          | <--4:PKT-- |             | <----3:RS------ |          |
+----------+            +-------------+                 +----------+

                      a. recv PKT                    a. recv NS
                      b. new SESS                    b. new/get SESS
                      c. FWD NS                      c. send RS
                      d. recv RS
                      e. new/update SESS
                      f. FWD PKT
]]></artwork></figure>

<t>This scenario describes the direct session creation flow in PSV mode. The most common example is the SYN packet during TCP connection establishment, which represents the client initiating a new connection.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Creation: Upon receiving a packet from a client (e.g., a TCP SYN), if no local session is found, the network node directly creates a new session. Subsequently, the network node sends an NS packet to the selected server. If the NS packet and the forwarded packet are transmitted separately, the NS packet is sent first.</t>
  <t>Server Response: Upon receiving the NS message, the server backs up the session state information contained in the NS message locally and associates it with its local session. In the case of asymmetric routing, when the server sends its first response packet, it generates an RS packet and sends it to the network node.</t>
  <t>Session Recovery: In the case of asymmetric routing, the network node, upon receiving the RS message, recovers the local session and subsequently forwards packets according to that session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation occurs, the NS/RS packets and the forwarded packets SHOULD be transmitted together to improve transmission efficiency. For example, for a TCP session, NS/RS messages are generally transmitted together with the SYN/SYN-ACK (<xref target="RFC9293"/>) packets. The backed-up session state information is released when the local session closes, requiring no additional close messages</t>

</section>
<section anchor="psv-scenario-2"><name>PSV-Scenario-2</name>

<figure title="Session Recovery for Server in PSV Mode" anchor="PSV-Scenario-2"><artwork><![CDATA[
                            Elastic
                            Stateful
                            Cluster
+----------+             +-------------+                +----------+
|          |             |             | <----1:PKT---- |          |
|          |             |             |                |          |
|  client  | <--4:PKT--- |    Nodes    | -----2:QS----> |  server  |
|          |             |             |                |          |
|          |             |             | <----3:RS----- |          |
+----------+             +-------------+                +----------+

                         a. recv PKT                    a. send PKT
                         b. no SESS                     b. recv QS
                         c. reply QS                    c. get SESS
                         d. recv RS                     d. reply RS
                         e. new SESS
                         f. FWD PKT
]]></artwork></figure>

<t>This scenario describes the session recovery flow triggered by a server packet when the network node has lost the session in PSV mode.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Query: Upon receiving a packet from the server, the network node searches its local session table. If no corresponding session is found, the network node generates a QS packet and sends it back to the server.</t>
  <t>Server-Assisted Reply: After receiving the QS packet, the server, based on the content of the QS message, looks up the locally stored backup session state information and then generates an RS packet, sending it back to the network node.</t>
  <t>Session Recovery: After receiving the RS packet, the network node creates a new local session and subsequently forwards packets according to that session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS packet; otherwise, the network node should buffer the forwarded packet. Once the session is recovered, any buffered packet must be processed immediately and forwarded in accordance with the session.</t>

</section>
<section anchor="psv-scenario-3"><name>PSV-Scenario-3</name>

<figure title="Session Creation/Recovery for Client in PSV Mode" anchor="PSV-Scenario-3"><artwork><![CDATA[
                            Elastic
                            Stateful
                            Cluster
+----------+             +-----------+               +------------+
|          |             |           | ----2:QS----> |    ...     |
|          | ---1:PKT--> |           | <---3:RS----- | +--------+ |
|          |             |           |      ...      | | server | |
|          |             |           |      ...      | +--------+ |
|  client  |             |   Nodes   | ----4:PKT---> |    ...     |
|          |             |           |               | +--------+ |
|          |             |           | ----4:NS----> | | server | |
|          | <--7:PKT--- |           | <---5:RS----- | +--------+ |
|          |             |           | <---6:RS----- |    ...     |
+----------+             +-----------+               +------------+

                      a. recv PKT                    a. recv QS
                      b. no SESS                     b. reply RS
                      c. send QS                     c. recv NS
                      d. recv RS                     d. new SESS
                      e. new/recover SESS            e. reply RS
                      f. send NS                     f. send RS
                      g. recv RS
                      h. recover SESS
                      j. FWD PKT
]]></artwork></figure>

<t>This scenario describes the situation in PSV mode where, upon receiving a packet from a client, the network node cannot match it to a local session and cannot directly create a new session either. The network node must first determine whether this packet belongs to an existing session to decide how to handle it. The network node uses the ASRP protocol to query servers that may hold the backup session state information. ASRP relies on the cluster employing a deterministic server selection algorithm (such as a consistent hashing algorithm or a consistent hashing algorithm with history) to identify the target servers for querying.</t>

<t>A consistent hashing algorithm with history maintains a list of servers that have been used historically within a hash bucket. This list also serves as the target candidate server list for the network node&#39;s queries. ASRP recommends setting a maximum query count to avoid performance issues. Simultaneously, ASRP suggests setting a timeout for historical servers in the hash bucket to reduce the length of the server list by deleting timed-out historical records.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Query Local Session: Upon receiving a forwarded packet from a client, the network node searches its local session table. If no local session is found, it calculates candidate servers (which may be multiple) using a deterministic server selection algorithm.</t>
  <t>Query Backup Session: The network node sends QS packets to each candidate server to query for the backup session. The servers return the query results via RS packets.</t>
  <t>Process Query Results: If a session is found, the network node recovers the local session based on the RS packet and then forwards the forwarded packet. If no session is found, it proceeds to the new session creation flow by sending an NS packet to the server selected by the algorithm.</t>
  <t>Server Creates New Session: After receiving the NS packet, the server backs up the session state information locally. In an asymmetric routing environment, it must immediately reply with a pure RS packet as an acknowledgment.</t>
  <t>Session Recovery: When the server sends its first service packet to the client, it generates an RS packet and sends it to the network node. Upon receiving the RS packet, the network node first recovers the local session based on the message and then forwards packets according to the session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS packet; otherwise, the network node SHOULD buffer the forwarded packet. Once the session is created or recovered, any buffered packet must be processed immediately and forwarded in accordance with the session.</t>

</section>
<section anchor="act-scenario-1"><name>ACT-Scenario-1</name>

<figure title="Session Creation/Recovery in ACT Mode" anchor="ACT-Scenario-1"><artwork><![CDATA[
                                Elastic
                                Stateful
                                Cluster
+----------+                +-------------+             +----------+
|          | -----1:HS----> |             |             |          |
|          | <----2:NS----- |             | ---3:PKT--> |          |
|  client  |                |    Nodes    |             |  server  |
|          | <----5:QS----- |             | <--4:PKT--- |          |
|          | -----6:RS----> |             |             |          |
+----------+                +-------------+             +----------+

a. send HS                  a. recv HS
b. recv NS                  b. new session
c. store NS                 c. reply NS
d. recv QS                  d. recv PKT
e. reply RS                 e. no SESS
                            f. send QS
                            g. recv RS
                            h. FWD PKT
]]></artwork></figure>

<t>This scenario describes the session creation process by the network node and the server-packet-triggered session recovery flow in ACT mode. During the session recovery phase, the network node must be able to deterministically locate the client that holds the backup for that session. The use of a static, configurable mapping strategy is recommended. If such a mapping cannot be established, ASRP cannot function in this scenario. For SNAT services, ports can typically be used to map clients, with different clients using different, configurable port ranges.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Creation: When a client initiates the first packet, it generates an HS packet and sends it to the network node. Upon receiving the HS packet, the network node follows the normal procedure to create a new session, returns a pure NS packet to the client, and forwards the forwarded packet according to the session.</t>
  <t>Processing Server Response Packets: If a matching session is found, the packet is forwarded according to that session. If no matching session is found, the network node uses the mapping relationship to locate the corresponding client and sends a QS packet to it.</t>
  <t>Client-Assisted Recovery: After receiving the QS packet, the client queries its locally stored backup session state information and replies with an RS packet to the network node.</t>
  <t>Session Recovery: After receiving the RS packet, the network node recovers the session state locally and subsequently forwards packets according to the session.</t>
</list></t>

<t>After sending an HS message, the client waits for an NS message. If an NS message is not received, a minimum time interval (suggested on the order of milliseconds) is set. Subsequent packets sent by the client will trigger new HS messages to remind the network node to return an NS message. Upon receiving an HS message, if the network node does not find a matching local session, it creates a session, generates an NS message, and sends it to the client. If the network node subsequently receives further HS messages that do match a local session, it will also immediately send an NS message to the client.</t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS packet; otherwise, the network node SHOULD buffer the forwarded packet. Once the session is recovered, any buffered packet must be processed immediately and forwarded in accordance with the session.</t>

</section>
<section anchor="act-scenario-2"><name>ACT-Scenario-2</name>

<figure title="Session Recovery for Client in ACT Mode" anchor="ACT-Scenario-2"><artwork><![CDATA[
                              Elastic
                              Stateful
                              Cluster
+----------+              +-------------+               +----------+
|          | ---1:PKT---> |             |               |          |
|          |              |             |               |          |
|  client  | <---2:QS---- |    Nodes    | ----4:PKT---> |  server  |
|          |              |             |               |          |
|          | ----3:RS---> |             |               |          |
+----------+              +-------------+               +----------+

a. send PKT               a. recv PKT
b. recv QS                b. no SESS
c. got SESS               c. reply QS
d. replay RS              d. recv RS
                          e. new SESS
                          f. FWD PKT
]]></artwork></figure>

<t>This scenario describes the client-packet-triggered session recovery flow in ACT mode.</t>

<t>The processing flow is as follows:</t>

<t><list style="numbers" type="1">
  <t>Session Query: Upon receiving a packet from a client, if the network node finds no local session and the packet does not contain an HS message, it sends a QS packet to the client.</t>
  <t>Client-Assisted Recovery: After receiving the QS packet, the client queries its locally stored backup session state information and replies with an RS packet to the network node.</t>
  <t>Session Recovery: After receiving the RS packet, the network node recovers the session locally and subsequently forwards the packet according to the session.</t>
</list></t>

<t>In the scenario above, provided that no IP fragmentation would occur, the forwarded packet may either be buffered or transmitted together with the QS packet; otherwise, the network node SHOULD buffer the forwarded packet. Once the session is recovered, any buffered packet must be processed immediately and forwarded in accordance with the session.</t>

</section>
</section>
</section>
<section anchor="protocol-details"><name>Protocol Details</name>

<section anchor="message-format"><name>Message Format</name>

<t>All ASRP protocol messages are encoded using the TLV (Type-Length-Value) structure. All numeric fields use network byte order (big-endian).</t>

<t>The fields that can be used in ASRP messages are as follows:</t>

<t><list style="numbers" type="1">
  <t>Sub and Type: 1 byte. Sub (high 4 bits) indicates the internal data type of the message; Type (low 4 bits) indicates the message type.</t>
  <t>Length: 1 byte, indicating the total length of the entire ASRP message.</t>
  <t>Flags: 1 byte. ASRP_F_ACT (0x1) is ACT mode flag; ASRP_F_MSG (0x2) is pure message flag.</t>
  <t>Protocol: 1 byte, identifying the session protocol, such as TCP, UDP, etc.</t>
  <t>Session-Tuple: Contains source address, destination address, source port, destination port. The IP address type is IPv4 or IPv6 (<xref target="RFC0791"/> <xref target="RFC8200"/>).</t>
  <t>Session-Data: Variable-length field, carrying the private state information of the network node. The specific content is determined by the implementation and can generally be empty.</t>
</list></t>

<section anchor="ns-message-format"><name>NS Message Format</name>

<t>The NS message is used by the network node to back up session state information to the client or server. The NS message contains two Session-Tuples.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
NS: 0x0

Sub Assignments (Most significant nibble):
ST44: 0x0, IPv4-Session-Tuple + IPv4-Session-Tuple
ST66: 0x1, IPv6-Session-Tuple + IPv6-Session-Tuple
ST46: 0x2, IPv4-Session-Tuple + IPv6-Session-Tuple
ST64: 0x3, IPv6-Session-Tuple + IPv4-Session-Tuple
]]></artwork></figure>

<t>IPv4-Session-Tuple Format:</t>

<figure title="IPv4 Session Tuple Format" anchor="ASRP-ST4"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Source IP (IPv4)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Destination IP (IPv4)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>IPv6-Session-Tuple Format: The structure of IPv6-Session-Tuple is the same as IPv4-Session-Tuple, with the main difference being the IP address length/type in the Session-Tuple field.</t>

<t>NS(Sub-ST44/ST66/ST46/ST64) Message Format:</t>

<figure title="ASRP NS Message Format" anchor="ASRP-NS-MSG"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub  |  Type |      Length   |     Flags     |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~               IPv4/IPv6/IPv4/IPv6-Session-Tuple               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~               IPv4/IPv6/IPv6/IPv4-Session-Tuple               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                         Session-Data                          ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The NS message contains two Session-Tuples, representing the connection between the network node and the client, and the connection between the network node and the server, respectively.</t>

<t>The format of the NS/HS/QS/RS packet is as follows:</t>

<figure title="ASRP packet" anchor="ASRP-MSG-PKT"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~   IP-Header + UDP Header (with destination port: ASRP-PORT)   ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                      NS/HS/QS/RS message                      ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                         Forwarded-PKT                         ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>If the ASRP_F_MSG flag is set in the Flags field of an NS/HS/QS/RS message, it indicates that this is a pure NS/HS/QS/RS packet (in which case the Forwarded-PKT section has a length of zero); otherwise, it indicates that the ASRP message packet is transmitted together with the forwarded packet.</t>

</section>
<section anchor="hs-message-format"><name>HS Message Format</name>

<t>The HS message is generated by the client to announce to the network node that it requires an NS message to back up session state information.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
HS: 0x1

Sub Assignments (Most significant nibble):
NST: 0x0, No-Session-Tuple
]]></artwork></figure>

<figure title="ASRP HS Message Format" anchor="ASRP-HS-MSG"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub  |  Type |      Length   |     Flags     |    reserved   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="qs-message-format"><name>QS Message Format</name>

<t>The QS message is used by the network node to query backup session state information.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
0x2: QS

Sub Assignments (Most significant nibble):
ST4: 0x0, IPv4-Session-Tuple
ST6: 0x1, IPv6-Session-Tuple
]]></artwork></figure>

<t>QS(Sub-ST4/ST6) Message Format:</t>

<figure title="ASRP QS Message Format" anchor="ASRP-QS-MSG"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub  |  Type |     Length    |     Flags     |    Protocol   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                    IPv4/IPv6-Session-Tuple                    ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                         Session-Data                          ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="rs-message-format"><name>RS Message Format</name>

<t>The RS message is used to recover a network node&#39;s session.</t>

<figure><artwork><![CDATA[
Type Assignments (Least significant nibble):
0x3: RS

Sub Assignments (Most significant nibble):
ST44: 0x0, IPv4-Session-Tuple + IPv4-Session-Tuple
ST66: 0x1, IPv6-Session-Tuple + IPv6-Session-Tuple
ST46: 0x2, IPv4-Session-Tuple + IPv6-Session-Tuple
ST64: 0x3, IPv6-Session-Tuple + IPv4-Session-Tuple
ST4: 0x4, IPv4-Session-Tuple
ST6: 0x5, IPv6-Session-Tuple
]]></artwork></figure>

<t>RS(Sub-ST44/ST66/ST46/ST64) Message Format: The structure of RS(ST44/ST66/ST46/ST64) messages is the same as NS(ST44/ST66/ST46/ST64).</t>

<t>RS(Sub-ST4/ST6) Message Format: The structure of RS(ST4/ST6) messages is the same as QS(ST4/ST6).</t>

<t>If the Sub field of an RS message is ST44, ST66, ST46, or ST64, it indicates the RS message carries session recovery information. If the Sub field is ST4 or ST6, this RS message is a response indicating a failed query for the corresponding QS message.</t>

</section>
</section>
<section anchor="message-processing"><name>Message Processing</name>

<t>ASRP packets can be identified by their UDP destination port. Once an ASRP packet is identified, the ASRP message within the packet can be parsed and processed.</t>

<section anchor="ns-message-processing"><name>NS Message Processing</name>

<t>The NS message is generated by a network node when creating a new session and is used to back up the session to the client or server.</t>

<t>The source IP of the NS packet is set to the network node&#39;s local IP (which can be obtained from configuration), and the destination IP is set to the client&#39;s or server&#39;s IP (which can be obtained from the forwarded packet). The source port is randomly generated, and the destination port is set to ASRP-PORT. If it can be done without causing fragmentation, the forwarded IP packet can be placed after the NS message and transmitted together with it. If the NS message is transmitted alone, the ASRP_F_MSG flag must be set in the NS message&#39;s Flags field.</t>

<t>In PSV mode, if an NS message is lost, for TCP connections, the retransmission of the SYN packet will trigger the retransmission of the NS message. For other types of connections, subsequent packets will continue to generate NS messages until an RS message is received.</t>

<t>In ACT mode, if an NS message is lost, subsequent packets sent by the client will generate HS messages, prompting the network node to retransmit the NS message in response to these subsequent HS messages.</t>

<t>NS messages may be generated in both PSV and ACT modes. The handling procedures are described in <xref target="PSV-Scenario-1"/>, <xref target="PSV-Scenario-3"/>, and <xref target="ACT-Scenario-1"/>.</t>

</section>
<section anchor="hs-message-processing"><name>HS Message Processing</name>

<t>The HS message is sent by the client during the initial connection establishment phase to announce to the network node that it requires an NS message to back up session state information.</t>

<t>The source IP, destination IP, and source port for the HS packet are copied from the sending packet; the destination port is set to ASRP-PORT. If it can be done without causing fragmentation, the forwarded IP packet can be placed after the HS message and transmitted together with it. If the HS message is transmitted alone, the ASRP_F_MSG flag must be set in the HS message&#39;s Flags field.</t>

<t>HS messages are only generated in ACT mode. The handling procedure is described in <xref target="ACT-Scenario-1"/>.</t>

</section>
<section anchor="qs-message-processing"><name>QS Message Processing</name>

<t>The QS message is generated by the network node to query backup session state information.</t>

<t>The source IP of the QS packet is set to the network node&#39;s local IP (obtainable from configuration), and the destination IP is set to the client&#39;s or server&#39;s IP (obtainable from the forwarded packet as described in <xref target="PSV-Scenario-2"/> and <xref target="ACT-Scenario-2"/>, or derived via algorithmic mapping to the client or server as described in <xref target="PSV-Scenario-3"/> and <xref target="ACT-Scenario-1"/>). The source port is randomly generated, and the destination port is set to ASRP-PORT. If transmission can occur without causing fragmentation, the forwarded IP packet may be appended after the QS message and transmitted together. If the QS message is transmitted independently, the ASRP_F_MSG flag must be set in the Flags field of the QS message.</t>

<t>If a QS message is lost, subsequent packets will trigger the generation of new QS packets, continuing the attempt to recover the session.</t>

<t>QS messages may be generated in both PSV and ACT modes. The handling procedures are described in <xref target="PSV-Scenario-2"/>, <xref target="PSV-Scenario-3"/>, and <xref target="ACT-Scenario-2"/>.</t>

</section>
<section anchor="rs-message-processing"><name>RS Message Processing</name>

<t>The RS message is generated by the client or server in response to an NS or QS message. It is processed by the network node to recover a session.</t>

<t>When an RS message responds to a QS message, the RS packet reuses the IP/UDP header of the QS packet, with the IP addresses and UDP ports swapped (source and destination are exchanged). When an RS message responds to an NS message, the RS packet is triggered by the currently sent packet. It reuses the source and destination IPs of the current packet, with a randomly generated source port and the destination port set to ASRP-PORT. If transmission can occur without causing fragmentation, the forwarded IP packet may be appended after the RS message and transmitted together. If the RS message is transmitted independently, the ASRP_F_MSG flag must be set in the Flags field of the RS message.</t>

<t>When a client or server receives a QS message, it searches locally for the backup session state information. If found, it generates an RS message (with Sub-ST44, ST66, ST46, or ST64) and sends it back to the network node. If the corresponding session state information is not found, it returns an RS message (with Sub-ST4 or ST6) to the network node.</t>

<t>If an RS message is lost, subsequent NS or QS messages will continue the attempt to recover the session, thereby triggering retransmission of the RS message.</t>

<t>RS messages may be generated in both PSV and ACT modes. The handling procedures are described in <xref target="PSV-Scenario-1"/>, <xref target="PSV-Scenario-2"/>, <xref target="PSV-Scenario-3"/>, <xref target="ACT-Scenario-1"/>, and <xref target="ACT-Scenario-2"/>.</t>

</section>
</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="general-defenses-against-message-forgery-attacks"><name>General Defenses Against Message Forgery Attacks</name>

<t>The security design of the ASRP protocol is based on its typical deployment model.</t>

<t>Deployment Boundaries and Access Control: ASRP recommends deploying network nodes and the clients or servers that back up sessions within the same trusted internal network domain. In this model, all ASRP protocol packets communicate within an internal address space. By implementing appropriate network segmentation (e.g., using firewall policies or security groups) and strictly checking the source addresses of packets, forged ASRP packets originating from untrusted external networks can be effectively prevented from reaching the target nodes.</t>

<t>Session Legitimacy Verification: When processing ASRP packets that may establish new sessions (e.g., HS or RS packets), network nodes MUST perform basic validation according to the specific policies of the upper-layer application or service. For instance, in a load-balancing scenario, a node SHOULD verify whether the session points to a known and healthy server. In a NAT scenario, it SHOULD verify whether the address translation complies with predefined rules. This prevents the establishment of illegal sessions at the application layer.</t>

<t>Internal Threat Assessment: Even if an attacker is located within the trusted network and can forge ASRP packets, the scope of impact is inherently limited. The attacker can only forge sessions where they themselves are the endpoint (e.g., masquerading as a client to request recovery of a non-existent connection). Such forged sessions are indistinguishable in form from sessions established through normal access. They do not directly jeopardize the security of other users or nodes, nor can they elevate the attacker&#39;s privileges or grant access to unauthorized resources.</t>

</section>
<section anchor="mitigation-against-qsrs-flood-attacks"><name>Mitigation Against QS/RS Flood Attacks</name>

<t>When a network node loses a session, it may generate a large volume of QS packets. If maliciously exploited or due to a malfunction, this could lead to a flood attack <xref target="RFC4987"/>. To mitigate such risks, implementers should consider the following protective measures:</t>

<t>Rate Limiting and Traffic Shaping: Each network node MUST implement monitoring and limiting of the rate at which QS packets are sent. A reasonable threshold (e.g., the number of QS packets allowed per second) SHOULD be set. When the rate exceeds this threshold, the node SHOULD adopt a packet drop policy, for example, discarding newly arriving service packets that trigger queries. The parameters for rate limiting SHOULD be configurable to adapt to deployment environments of different scales.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document defines an application-layer protocol (ASRP). The protocol message types and internal identifiers are defined by this specification itself and constitute internal implementation details of the protocol. Therefore, there is no need to request registration of a separate protocol number or code point from IANA. However, for the implementation of this protocol, a UDP destination port requires allocation:</t>

<section anchor="udp-destination-port-for-encapsulated-asrp-messages"><name>UDP Destination Port for Encapsulated ASRP Messages</name>

<t>ASRP messages (NS, HS, QS, RS) are encapsulated within UDP datagrams for transmission. A fixed UDP destination port number is required so that the receiving end can identify and process such encapsulated packets.</t>

<t>Service Name: asrp</t>

<t>Port Number: 51200 (proposed value for current experimentation)</t>

<t>Transport Protocol: udp</t>

<t>Description: Used for receiving UDP-encapsulated ASRP protocol messages.</t>

<t>For experimental implementations and interoperability testing prior to IANA assignment, UDP port 51200 MAY be used as a temporary default. This port falls within the dynamic/private port range (49152-65535) reserved for local or temporary use and documentation examples <xref target="RFC6335"/>.</t>

<t>IANA is requested to assign a permanent port number in the &quot;User Ports&quot; range (1024-49151) for the &quot;asrp&quot; service in the &quot;Service Name and Transport Protocol Port Number Registry&quot;, with a reference to this document.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC0768;
&RFC0791;
&RFC2119;
&RFC8174;
&RFC8200;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC2991;
&RFC2992;
&RFC3828;
&RFC4787;
&RFC4987;
&RFC5508;
&RFC6335;
&RFC9293;


    </references>

</references>


<?line 684?>

<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors would like to thank all individuals who have provided valuable feedback and contributions during the development of this document.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+19a3cbt7Xod/4KXOdDpGVSlmTZiZXes64s25VWbVkSFefm
fLhdwxmQnHo4w85DMhM7v/3uFzDAPEjKdtq0PexqTHEwwMbGxn5jYzQaDcq4
TPSxOrkN4iSYJFqNdVHEWaqudZjd6nylLvOszMIsGXyjgskk17fQenx9OYiy
MA0W8G6UB9NyFC7CcBQU+XK0fwRNo6CER4f7h09GB4ejw4PmT97fA/irKIM0
+muQZCn8WOaVHgziZU5fi/Jwf//Z/uEgyHUAoy+XSRwGJUBZDO5mx+pCl3dZ
/l79BP+J05n6c55Vy8H7u2N1npY6T3U5eoEwDuClYxgoGhTVZBHTPMvVEsY7
f3nzajAIswheP1ZVARMJ43iwjI8VfL5RYZDCr1oFeR6s1E48VUGSqJUudlWW
q3lQzNVc5xqmoUYKsMVfiiwvcz0t5K/Vgv5Q2OAYX4avpskxDRPpaVAlZQEt
zHN+iZsPgqqcZ/nxQNFnJP8qFafQ4r/31Osqs7/x2vz3PMhWlfcgy2GKp29O
T+0veYYkoKO4zHL7YwFwaUDXRbannnyv/lKlSZUWc0DEdRZEtlkYl6tjNa5+
mWdV/WMW4coePNnf33d+rNIyh8an8zgN7M96AZR3rJIq+4Vg/T/hoij2Qmyz
yCZxovfCbNE947M99XOQNmZ8FsTFvAqADNxn7Un/g+e3CtK5gax7ioM0yxdA
1bf6GAlGZqzyaXh4cPCs8dP3B98dwRDXr073v3v6/bH5+uxAvuIr8hWbmq+w
j45hX6XTeihu/qx+89mzQ/n6+PtD0/XRd99/Z74+s1+fPNk3DZ4+fvxEvj47
fPYYRhmNRsAwAM1BWA4GN/O4UMAyqoVOSyD0IszjiS4U4Ft/WOo8xt+DRC2F
29BqRqqc6214k9pBlrS7p26gve0CR9RFPEuxo0xlyzJexL9oNY9n81HAvcYJ
LLBKhYOECTAbncM+h9UpdVhWuS6G2ONtjLxBBaqoEFrc9a1eiiypkCspQK/p
qlDZdAovwLvA4Uo9rRI7WqHz2zgEJBRVOFdBoRKgPDUJkiANabA0srztJIoA
lELd5EFaJMT81M7FyY369VdZnk+f+DsuyqdPgAtECbKUOIUhSkZMqCOcEkFY
CDYnQfi+WtJouSB2iNDcaeBxAb+6gLbBTCsmnAKZYaSgKwQTngNrjJHVwlIj
Vx4qncKC4UM9ncZhjGuO/eOmCxbwAN42wxNa1CJIoX8kgr3B4DyF3QSbKShK
XDj4ArwJ2gJ9tLEOyzRP479XNMmgpOkomI/f/11cwn6juZhFjstCJ9Mh/5bl
OIU0u2XUZlNGXxJDt/AetFVRDODHk6rUkcEZNOPu7ZaCdxFiGoamTYjOAamq
iCONFApkGSxhLQJYdCKOQi2A68dLoPAgug1gH8w0sLe4VEi8MSAQfktWgFRg
T6Espszi20LpBPAUh6oIA0J5GCwZNwD7D0ivSxAyhcqDZVyvsJrm2QL6T2eJ
Hi2zmCHVtzplYOS3KSAaCeYHeDGqcGz4I6vyUNMPaQQArdQEYEtgb6WAAARA
49olsNUsolLgmNAJ0UA1QVlfxiBCYc/EC5Dm01hmhX8RFTAqgS/C3x9wmQHV
zrT3kKNoXiO733mbQk/6Q6iXQjAudgzJIPU3tjzQ7DQI8THPoQMYBD7SyyRb
EQ8DgJIgn+kR9qztOM1+95gTLuIoSjQqOqCT5BngEvuEWayl7WZngE7ceAgM
7Bj8aWR2r8OxYGkAs0j63hYoVmk4z7M0/oXnM4HOteY9wZ3RFN0V21M/zUE+
qWmVhgwkdMyLUmrcOUjL7siAQ8B/OIeGOp3x3uFly6pIAYMYWmYHIryyzGGK
q+ysToOmh11kNyRwEWn9ZAP7LYNNxbyTGVUNHG/9OI0AubAjQI1DElpmhQie
lwLE2DDuU0t8J2nvUxQ7wZq1FK5v2RACS0MCQVk+EGYZiBkS0WYlkN7TajGB
V6Al/djF1VBVnVhy5D2GBBo5TDkmtirb5f5yaWf8+vnuVtJpl/EPBAKcpb2o
LmPvQycgMwLJDSh9BQ0ejZPsTl0G5VxEu1oCgWZFtpwDPRR6GeS8fw3p13KF
Od4SqFuXSGN3QY4i3XDkBDpmHjRFsbPEIRDJsMlXgNaynsYsy6K1TBfo45tv
lLuzCeC+GQ5+++03qy46n4ej3s/DrvYf+954qD52t//Y8Ss/WNO+XoELosFN
7e/R/33hN5//1/xpQ/uPzS8b4Pk48r5sxCf8u7e3Z/vH+T50p9Pb/l3jgfvW
wMHmR7eLFtYeNvq2b2EXp6yWwO9/Mu3/C/7AzVWvavMpaN6kwnAXXwrFWlwo
g4vmAw8Xa9Hf7uJrkNva7Yhb+Ndj9c2ry9H4cvRyfKrIsfK/HzSYVh8PePCJ
FZoCW1reg8IVJV6xBKU6RgvI1dtD0KWtYtIQ7kN1R4K7zc+6+2TlsIM5/jTX
qGw0eCKqhajlf0D3CvA3YOQoykn4BFWZoSYssgdEFAgRNL8AFrCadJCU8xWD
giKpYCMC9f04rbKqsALSlZ4s/qI8uCP1npRB4Nq9MthTSmLm63c6eN/Pt62G
2ViCPXVulAtXrjSVKbDk8Wlj+WBk0UXAHFPlaolYaWoruQYbQINibwA9+Wms
zlYg/5cgcbW6ePVOwbcSLQwWLaT23lec9FJw525Svbupa/v2t+4avJOVqX4m
0jHGOlYGH0IQMbL207Ws7L5QfAVcqK5PL/I7W/curGFLiA+XK60lIMOLtve7
GLWZ3DnGir7tcrRYF0kQo3sHzHXY+KB9ozlE7pUFGuLwWxgXYGBY7wFavwxu
rfXDb4EF0bdCkEuaWRltFjZyWYihH+mANlvmQAvd1Ra+sYJ8C6rDytdpRJYy
+nnQOyTtd3RM7M53BBB7IfITVxVYvjpchQC/MB8zLA9XoMMkDnH2Nb8BtKHa
T81BAiRmzB9QrUeGg2IBcVvIeAwRPNHQLRgAxRyfkrdnAcsJ3c3FCjRtgQjI
mEekPfdte2yWangJcQymk14CBnB67zUo3wmuOnZdwvJmVakWGsytNC4WhViL
orUT3xebH9uiS6go6FWPXny0OPgHwIwpTP3agYbWjPFMpMAaSDsdVg356XKF
/rRIE7XskiwjsQjYR6+JkKk1f33aQPcQtMKlIjvDpw3xlFnZSXOvnYRWGqH/
pWS7NNeTFYA4EznKxgfvkQc0YgLDP1CwLIbi2bz1Zo9uktpwQZgCaMnCLEMn
XDb5GwANqwaDev5C2CesI0Su1OtwFTpL3HC/ikll/xYfIm07sFBLtBUXcVmS
d3amab8QZQdGA9FGJakxEtxm7InFySAAoFCQ6QxGvrG2yHeI/iB6t6jZQUtq
i+18i9rNIvhblgvNhUBbBTsii2qxCNAjOkHPRFihywypziyuhxPfxYbeQZdG
2N/g+6yAw/ECkH+PN4VV8FBDA/pAFxvpeMZzwLqS8ZVYcz2v0lSgW78HgBWi
1tivPk2qOCkVzxXhbW4qYPYF7VdQ9eB9BG5RlRVRqssUUC7onGxipA3WxdKs
5iCwmRZVKtE865ES5TDNyJnSp3Ll+u8V7LmowwsiRv0UPUUSWBDG82UeVfQx
fBV/6lD2UL9PlZV6AGixxim6peN1T50CKQG6SJJ2kSEgaxnAQoVVEuQoboC6
AmMcmLXX6W0M+EdIxNcuSwCT585bmMNZLKu8qDQaC8h5oHNy2dk5gz6QWC3a
oXIUVoJzN/6SZxNYJj/WgvNxPLPYi7jP2JXv+GmHRnVY46/9Rt2QAMyA/a4G
qHIhX3uvVwpaRoV68ObH8c2DIf+rLt7S9+uXVz+eX798gd/HZyevX9sv3AK7
gb/f/vhamuC3+uXTt2/evLx4we/Dr6rx05uTnx8Q0VA/by9vzt9enLx+wBzM
Da2hdccMliIyy1yLMmBibhE8wE6en16qgyOOGWG40MSPMF4I31EpYCrNUkAX
/wmIXmHwQgco/JHDY0+wPYBa0CCEYYp5dpdSNJwwaTXFt7e4rvqOfWN3mXpr
Vgg25xuk0sHglaylT5swG+N/ZrEUMhHfoQtTEwkWMUrgBRLGBINV5Z56FecF
yA2M03cyQ9dnSi8C96xpL5uWd4hJ2e1G4HiA7YFeDKw4Gjp6HQt10veaJjZu
SOyn1ioFYqZcIO33mKsAcjKLKtQIcwqOPr98ZX6hLWf5D8Kyp14QrxWuD4sk
WidqRPwS6Vw4gFGWXFBr9XRoIoSMc94+7L8HRYH0MMC3rxUsEJ/H6jKA2YB6
sXM5frdLS0lkc0JiDSyE0xv+lWxXoIjxO/qTpCv+gd0MRbGsF4r0czaYE1SE
QlJqncUrgLNzdgj8bt6MskWAhFm4E93Re7O9IQYc0N0dYOJJQLzS6uHewLhQ
RTuC2KH8S/+OOuTr3Pyi1QelOanbqQ5RHcpXIqoQCYadFmqSiYLvAUaKdd0P
ACHEILSA9o3xMQR1kgwwY50GeZzhagLJR5RgUzunPT3YaUzkZoMERskwPh9Y
lNs4AGy+i3OU/Or8Uu28O7/cHVLI0/ZyR2IfKBndGP5QVq6wdKvjdxwtakQd
rB3HZARkVZMR/vH7kZFsaCEj3JTMWWMOe4Meq8svIyQZYVtCkuZfTEjSz5cQ
0piF+NpA0BgjQfXLQ47wfQhQjRkKgZCwQmq0S8B2GBgvocTupI0umfBShf2q
GWDmLlh1Uh3TETWz9ItcXQgtQv1JKJMaNQhyz8qqa7BlkQaf63lwG2d5wTQ4
Xi1A1oCFbhr0+97MR1Tu9Y2MPr6+lfH39TzucAo97PZX1e4mx9f0sburHt9d
22/2sPXYfu3x3RnvHZHo/1Vdzzb47u4HxVfAher+dKLe+OIs0YwMVYlTrkVN
6Iirf8ylNbmLyYgO2NWMKYwop+/mccibfRKzM4L5u3HOG/82Mjxr0IvFFbgs
KDAShuKisLkKGpyzqGwXtEwdptdgcCOsQ7a4SJJIL8iHwnZ4c1bCUIaDwcGe
qA6jMaaEwhY9Q3vhxHULnTjePlLQT5J6nshdYApLHaKh5zrAZDKUB1UU4gVD
Tl8GlJIEYznJEDRBYfrIHRbACmm50DBCLgY4vkP90uPSIggc8wv9bNA/6VIB
57nCQMYjEJBSmJFCZhTtFhQUbzGRai+0kSKjE1tWvAct3OLCC25kAZ2+Yb0O
92oPwGsUus+t0DUOAfHLPBjDyo+Y54/o+wsN7CwlRv9AvTGuIFqT89QqosC2
h5KG4ME/bLF76517+26MLJ0ILy92Of1WPWDqJQCGTIeRC8EyA2G1wmkyOkj/
N36giU6ydEZL6NAxqPAp7xWSDbxzGrSOqsioVkVSo2qQS8oQECkpHYSNGqeT
OuZY0UaVKf7l5EhP2y7euYbPrmPV/TLHeaclMFrPLBRfW2ytn7T/+KuKLa8L
R0COalz83P3MdvEVVkR1fzoJoKftWilZ74mmmGzvFpSTJ+2dVwtK2seiG4pq
uL2IXAQrdCrUEjCKpxSwLXu9q2ORPWhzDNFnhd6xomwp8L4ZuQAxR/6LWj5N
VkLcbjzfN8LFzdA2M33TYk3nP4tgIWUC5LDjdbZ2BBr/wI0pOsezLtEbkIBE
znITPjOMkKFo2TrGU+did4iuZHbspfquzs0z0Iu/tCvaYJNvnSCf68XDJGLS
/0XEUHzF8WCit6rNrSUj3bgq0T+NUJIjV45nAMwgozPoBMNQNyzAxYxomrTG
w8SIJBCaHlIZUawh42wxOcmOtKyd2LMsSAoJYFKUpV4TTkbF0Jvjh0/YncxJ
lsmK3P8kZ1251Mh5r1IMMNVqlNkiMB1OZydRi3m7SfxebxTMJFrFD8VWegWg
5cmK5GmfEsDZIxwr88N1u45V74RtDZQUFuPAGUwcV49iaHlWuMnWNnrM6LPJ
tQ6R0eRenr65VDsv/14Fyeg0g438hlz6lNHD/tNnzw4+fRraPw4/fdqtFQQm
IgojFviiaAUt6mN703pM33C8DHgbeh0liNeZhu7F45pRJ28PYsDgA06O1CC7
uO0YHeezuP5BZivsEvY9qltGVDnq1NSlDF8eNqH2Z2oyk+ErTJgC91EMRnwV
JAJZ8QPrWvf3SHzB0IwcZDde9HQKMLSRiifV7mwyhTlSsXMxBlo507CP28/O
8NlVhevaenaFzxA4Sctot7gem2MgHQucY4A6DJZAkq5P7McXQOpEx3iyyBI1
ngUCoibf6SwPFhxVlRguDYsZTpagnL2v0LE0ZGmcswQN2Hs9unx7faN2wioX
EwZEzzSewcY1PnPnaBBntbE19uTgcH8fJh/LQRRcE+Rz8XTFtibSLU5kGayI
JjFiSiYYsFrCh6AB140ammnx62GQ57FutSaOq3NKXJEnkjEHa/jobPzoavzo
eiy/Ieb9RphQUMTIfYJUZ1WBE4aBVrWTzhvMOOmasXDYRlNM9TBAEmdpvj2U
ZJAG1gMMxmkfdPqlE/7zqbfANIEshOUiWkEZEwYcIz6/BPUjmDkLVUdLeJi+
2Rj1qisb4AfOGbyjVCCcAMb+txiro0vJDNciEGYxyvMlnuPC5EI2wy7GNcv9
s04pAGJ9Ai7HM8g1tFfotHmcqeHjDURyU4/GnRzXfutd55gQ/m7CIrs2cgSc
hzwDnPRpFSYZVWZwtm4Gho87sDsQEJRpmlWYhyjKl+9Hx+SpOlnS8Rm3I3a0
2HhuK57NJAnK6wue5RoENCUhANoNyZNO2ciu4cnLBK8+d4n+Tiy081iWg+H+
NbzjNFgQsjq+rYk3RJQhwWGOa5BygKF2CBlnmt0+2Hii61QhydXaUxj5vDm9
VOOfL4y7AqaAxzwaXdJQlD/g9oudmrwv27nZpDR3E8GkqQk2rzeTi4OneZbY
xBujdxSEEzFAiM6vxh4Lsoy32ySwKRxEESzFnLhHR0wFtnEh+RrXY49XOjla
/NxDnJNBZDOpmsYF619Gip5KevUjm/U4NuEFOc5aiNtIixVEzBgHAn1uNmc3
KnHoqY2mOEGQOajtHVvHqHnrUq4w/mFlUn3u0qQzURYZHRJyMWfzzkjxdqzY
zAnELzhd5CWeTbQWc6RL9D9KDOY2S2gHNDQKsC4w28vweTEz+dyrXhISNPaK
YtqyXOBzI4PV0cFgo9trG6/XVk4v4/Pq8YQ0fBMPW++v804dHF/+5abhf1LW
OXV4fDG+h3+q1Unz0+wk7PBQ8R/muE53J8UmH9W9Ial//9NodMRIaXVCTqrH
x9fje/ip7rc6PXQQ7OF+ulUA1rrHF+Oe9yd7JIDHL8fj/sePQJGhJj2dhMD5
f3qBIrDvMekW133vRwJlbwPNYFRLLLaxDpIpQwLYsC44f3Ma99sLEi8tLqlE
a3kTZZoTyJFB1hzEnPenVC3uonWOBTmIcrQfZv8LNLjZhDZuEnNQopaWJsMW
Zajj0LcZzwtSfThCluslsEFJYrOCLk7jMnZVq7obOWzssDSGtEABOM0ozfWY
AldNrByrH5ck5lBt4K7NGRv01gXN1AKjA+x2C/+YLEuTceRx94ZKUTT0QzWu
Jo0EQO91JLNCtDGB0DonE46HMINgq2CunYa9qj2lonUq4cNGFyRMMT0Sk7Yk
IsX86Fq0ixYmpQOrbDieT5t30U6hcJUP0U1YD/a7Y7yLsRAURRbGnA1VciQM
lWFvafY42qUpc5jSkVvenaGbZ88FAQjp2BfNu9akTNIzDDcTvYwW59rDuXm9
S10HHD7ea53bON4GyrYqXbUxf+1g3stYaSvAhUN5hkYKG5MLwjDLIxuTC0rH
pBFgLRcBLetWD+vsDWoOm6RpEbKRWhgiq23aopdWCyUJmX2J6ehiWODI2reJ
zQmVcMVKvHXkchQa97PVQBkUzwPDy4uU1p8OL5zuEfx/dHL6F/HOYJUVdMgI
/HXUWUejtaYMeQUSTb5OS5H+soUJHuYZOl7rNPMS7PG5nUiHKnf4B1LlNmkL
2yS3tP8ivUU0vabasnUnjU+/KlcrUKOWLida5dXYKpWbVbn7QrJdJ74ut50q
d6/V6aeDzdocKVKo3vT2gSpb1qvQ4WMa4qpPhVKksIF2Abv5qrMPeLxBIVSu
Ttf/GIfo1fmUUfs2DLRJ5Tu0iUnN43/I20Q+G7UP6HGT2me4S31kArUocRJJ
Mp6hXRFzlj95ysqcQg1F6fXq6o331tfIw75BWasFd6f+hOEzXbQ1A04XIrUp
bSZQb6HXOfIfiapL/NOJaC+U7GpQo5OCwrkYJgCyOVYnUw5IuuLc9jz0pjmp
j9jxqSPxK8grVgNIsqxWuIzqVJRZXoeo+uWRiOS0R9UZ0kSlaok71W3Una65
Xvtz9bDtK89/CF3mLquSiDWaYb8HXY6bgvYyqcivE6k6PNOjU9hF9/3sLdKe
EwTcb09E4i15jd3dWJhtjuFe9IxauAzUclijzkeIQRWN4tpJXw+DcT3CLQYW
6wn4zm+Pdz3+oyogTQHnJ9xsJ2tZ5nsiv864+dhKlur0R7G0doX1wxrELWW+
fLe5PliBQ/j3x8/vowlHp0OL/qrrz2BzoyCtx8cGOJy/PwcfDMeFXZd+fAD2
v/M0OvfJ6MkXrgv28dRXxGp8fA06/TKnWq8KtY0Ktlb3MR6zbv2L9bN1Xr3N
ytcGvUocbiaY0ZyK3jiDqcygxyc43eQSnG1yCc73lAtdT6u/bVAOHzeVw3a4
BLXEU+Nc215LjMvK8yhSdJKS9lqeiG5vWpdcd+N07DEJOsS7NGv40nxXmoja
jtAUSTT25ESaSyho/0ieQMt5yJy9hT7NuPBKy2CKoQ7x0BWFiDLQd9MInZ5l
x6CViYa1zkxyyFNyY1i/QE0Bw3huDK9XMZPMkVwnnGXgJvkrvcBULl4DM9mY
89qMbysxSdXJDKPs80WdJxTUR9tLqp5MHdl25DlZ24JUAMAoqJir3Ub6Bygi
eNy3tFNHOjQxUEr42Lprm9GIICfwGydXORidB7eASTxBQZFmfk/S0mxeKNWH
nlSsKhHtU19BUmTcW2FOmgnkQIdRTB57wSa1N/mT7vp/W9DU6IC9LBe6ysk0
KHRpiqoEH+JFtRCSoELFdT7FUue05lyAqKiwq7GXpiKlIYoKDLWidDs2ZT6m
VA/XzN2iSPyqzvw50Iun3tlW0OmsnNu0W2eyYAxGQEKS+AuK4QjHccbAiYLy
vb2tx1lUr2nTC9PqsPha2vUm1rKt5dfnyadMniSkJKyitfKF2uGgheS0mNzF
XSnOsP3uY5uQkfCct77FQoursG15VftN8UAFRm9blGkZjaFOn60wxzJzkaQP
bMYvcUJkQQHt2kvL1twlL6mAfM0tjxGbQQcaW+uyxivtmbXXzThGWht2velX
ada9kkSGOipqG7WWG36YC08AiV3bHXVx1rFOynBX88jGSE7FanWyC7tN34su
M3/bcInY9aZ2SEfytJNdTdgggehadaz6yFkiyjtzsE9mP3xPs7tERzM5H/Ok
y6z/aUMgxWSD+zh1EqA+N6rSFYRa508wcZ3tSLGR+Zdu9DC4JvC/roPBRF7u
62AwCU9Z/g/3NZyc3twrbwU/W53YUtse2lJb+B3Ueu/6hhNWB8dnrn/Bedzz
V9fRJJvt0pUM87jDMbHG5Dej9eSx9Ac+CJIn4i7pTEE56jDF246U2qa+B06+
yuoMTADjrMMqNFb12XgwsfZtu5kkrAghD9BSRg9tV1sbxgA7ObI2e7vLqDb3
B45l22qnrVm/lqin1nhf22yjhcufeduC9bftZgtW8mPvE9ywUl54TVdyaqOQ
x4i51KiOhHRHSpxs3T31wt690G69BIW7i9EaNkjp9WRlOqqjUx/DTYthKwds
xsLV7ljZcxzcpOZVklRAygNWavTy+c3xaT4CPlsZHzFZK5gDC3oVG4i2aZ0x
65QuFGtEntnKQKYQklkfDsd7tR+GiivnYMJsfXpoom2WMIxrTnQMmfXXWZLy
u+jd9vfGJCkhGoTiTN/DMmlnDUnVXT81SSiNdYq+FJGzL1NmztYpM1ldI53u
qknqG0UodbvDWzIUnd8ePWhpukYrc6Rwt+K9Tvk5tOYCPm6kDqlL1p7EdiAn
UH/0rc5IqgHoD+yIMbChz26PjaHyXPOxpGIe0/EidxN64UKnRIPkazkhQXSC
lGw5sdPNDfyti4c1Yn8yiHgVaqv2nhE9lAWxHI71lezu8N3R1wjframd4yZ0
3SuK55IZw+PYbWeNBDRTmCeIpeykd76BqMU/8UDlEEt7rgBTAJEho7MGvR6c
3X0LO21HvC+1tQBA8lUQizgBzkilyIpdTqUr3YQ/OzNKsfPT++9iKpzB5zRw
356NvTqduQZwojame05wtHhKA0fxtCNzMdOMhGlMxyXsXmrk76OjxIZn7a8e
83PzAbvYH0/apjD6Lg+XKGQ9sIJkTjaNhxaqZpKZUx8dcBJWyb3n2hmk27QO
vDhw/Scacf9Uy22LNLVt7bYtrbbNNtv6fKi1NtuBHwF1Hqq+v9dEFO/ZiZes
ZoPTndlqXqR2i2S1z57OaGRD3PfCyVdZnYGTdNZo54RJB5Ne+6oOhqKxNsvK
rsCok3E2kNSwoG2DbTwngJ+tksa6ssb8PbU2a6yOB25rWDFdfY6N9LtkgdWR
gC5ZhiKsaHv77aEoOatgJJ5koLekZNmt33mi4vBfU8/7KmlanXreZg3PWYL/
caT+s2RwXd/iBR8rpEOXcg4VbXYgLtC0QYFaX7ggw+HYGMcRbl6/Uzs3q6Ue
vaaY4uhdkFR6V/GBULA896hGXFotNIYsprFGl0blFMyfrEqjVO9M4tkItfwg
3RU2Ii9IeYDUeg1iv0QAg9diMNWE8HRDlw0f0FD86w7Vwj5SE9h/u1RYIrSG
vi2JSfVqqcqfBEplsB+oQ7WDbK27C6tnQjvmGYwdA8TQtDdoLDOsle6HZTGy
nutm3QTYyK+SYFbU88EGf331V+S/O/sfDsgUscfLp9D2B9PkzfjP2OSQmpBb
oD5EGszYGjRk4oAqMf6m38uQSH214M3p5RDLOgyVLkMviDS6qZZ42fGpOZcs
RcjlisChV7jC/iiNuJBFs7QF+76AG9hrBqkeYwE/3R7h3oZ/n9qSGlgnRups
H+7v4z2tg8HTGrwXsNTH6h0wHnQnjWQhiPiGXC3CzH6Zx7cUh22x5awtmCQM
a6pzmFReqg0tmSo2xthx6yUSfH1SBd1xi2VH2QS7e2/mumHkVkX3OX0qVd55
YesWN6ryrJyB6tPmd5m/4uiNQ3WFNgwKzJmUsd95rfHyB+daAJXGE8D97vHg
Ynys9j/sDwa4U72X3mR974xvjo7orSGt/8iDQj3s+BFeefoUXzmgV552vfK0
9coRvXLYP0r7lacE2OP+UZqAIcIGHf3zMh+L8bTfoSQedPx22PHbY3z9AB49
Bgb2RD1V36nv1bP7/Aa6+hf+b9CKMtmPlBLCytaIht3uVh9/Pxic6prrofjK
MMjEL9GbXY/RAZTb4mvA4F1YBVRujAnipUZxdKkQzYcOehYSZbZnVADkjB1t
5TAx1SwLio6NMKwVGSoLbpz/IaZ+GX7sCADm2o9MXV586o9I/Bw40sV4B1gL
zvPoEXKBR7iv8Rssss9T/502G3JTJCbixUJUrJZYIiPNoiY6qzL+rptt68/H
wW+NX5BmHiFpPbLfGkTmf377CjD84fHAyPiPxEP9cRW7/h7+GHjwmO/FeIRq
unthYEvTMzcFbqeCDevKC4ZpOqUa3NvI11xWMKz/vse75kAbBtPMdVvGsKOZ
GKW5XQet5TD6t+HDX0hvSPPnl6MzHaDJ/JDK6MkfOxw7bxhKx3XRP9Rh/hg0
/7vtfZeSzObo/Pyb4wE+r4x7aNRzLog+fww8eDwQGCCB7DJB5gqkdjLLcHwa
6L2QAKxR/FiTIYWPcmPSLsLganWO54ZKWMZU4tfmTbQY046984HKedBoHqZN
fbI5HbmonTq/6Dzb9VyJXcM3ylHW3HC9r7LlcmyWJvS8BGeel2DWU4RuU21C
gji219EV7SjrRh/D5/gHzsg/cHAv/8DF+EbcAxdZl7n9byNd7q/lo2qQY2m5
32Enn7W1mRZF4p72i0x6pHq1tUOLzzZsPF/1GRS3/+HwGCN99/RI9Tqk0CvU
63pigryyNioapv9hdqkl2H9Ru5Q+25mk9PljyOD/scc6ONhVm4O1GJXhYNfd
HOy6zcGcuqtB82BhHbT7DD71+BiTDf5TPefCc4/W8dwn/Tz3enu/YNvDiS93
vWgjlA1/50V3+z0XjE7W3zc0N+4b7qpus2d1aCQTV0f2KRXBGyqED/979JTu
+kMgW4qrR+OmQHorU8Q75NyCgAeUIeTWeh8ep+axEz4NqMIu7Cn/PKSfwlsr
EXte3LvOXpabBEzOpsSaJfYZW6UjzrlufSsYSQH+Rnl6tCRsB8O2bu/c4ubU
qp9ItWW+AcFG/9thPxf4dujPU+p9JrOupDkN6rApo8G7kd++uCCDUdjoTdYs
WSk2Woct8a05xIvhFmNdES6yiVSLpDwgm/WPqN+tvVKRH7HxB2JAvy1qUL8t
Ng3UZVPJHXNOWJrSOACGbJGsaox3g2XaC2DWKVNfLEBgRHgVTbPQf0fl/Rq4
88sm+SRBiORD6T2lTxkEWa8lGZduoVH3/gXnlSABEGtydo1wk7PiWOJ1P4B0
xyzfa1xEHHfkaGO1MS7p6BeYlRqTufZqQgq5OdVpvTTr/jfcRGo8vUIWOuUT
UP1sb9yind9No6ADNk4rMkQMITgdY/nvMk7aTNakoO81LtTtR0cHBH0Z5hYQ
J4+aUqoWS+sL7sgvl7VukUHqFZ2Hp4Wbv+0OQkG2eu5yir5mSdAV3b6By0+X
Vsu8pZ4mVd6gy47MQZdCbjKq71JXv/7qV0rmO1P8ain4G/b/66/+GbRPn9r+
kSY79X0kHSiO6rNgfFQo6a2BzGfD/kEOFY8JDxusUTL0HRZmJKZzhAnv8M2W
scsLzekLkxD3B+JuZ5/B3c6+Enc76+du7tkFxChdGONtgfpYYTfRc6KQR/I9
ZHzVT8ZX6119n+1E6RT1V/cV9Sx0+eKhry/fm713ZocGLST75Tg/fepiIYfI
WmC8SOd0MwndjW3KRMRhfWttt660adTH3aMeYOba76aEbHnr0JbbVZg+4IEO
mjob9mrzhrUb9ap3o3oX7W29YRuBAX8ItoyCxqC9YrelXgjyRbVArbqu5TI0
KoKRGQHMAuRw3x0s6AL8x0rQw3tI0EPLeq77Wc/1etbT2hMNBYOFHzx2Fkid
E/l6t2l2azHGu1Ljk0/3egqYmIhF+xKd0s2Fh3b2+Oj55SO0AOcccm3yPSdn
qc5M0lwAnW5Go5PQxR3uikjtmDRYeOplwGKuNd8XqCPY8Jsg94/g+aDTrnFq
/RLm7dVvRU3PhFtnoj2wnV8W9qZM7safetDBizxu1cuW/qk86foePOn69+dJ
1y5P8o+l1/vFHpds3f9kq2OZ0xndZaK6qs/BHOvCSs2CPfaKQ1pq4yzrdBLt
9ldL9lOkz+21qx0lmjvr6NOpVQujPeneD6HAtNtzOOa8w/nVYvpNVtSy+zay
9PouLNmQfAq9yyL1lv/6D2BJ9cqGtoKyTl6osYbdixfZnWIxwEikJR9G4bvQ
8IDKVKfIhU5mmNJUug7QGWqnJ2WJtbNEBzU9yiW9WZ0eUJ9iiZ1bZvHIlbkX
jK/GJQsNkZYAjC/qn54jjQVyJSWgNqTKIniGIccDEs3Cf9yZe7Eu39PqZ1I5
WqrE/Bs2XeH6Bcl9W+ZVwWstJ1Psxb0ZJsbKJSgwR5rDEO8mbszfujUB1iol
v62tk5jW/ZpM2gLaw858vqpPJZCjcAkdLnM8gWRBKLRzFEvu0xGWDBbsHYJi
byymictqzfKsWhbCJLCcGRX+nOvwvT1n4h0RYVeM1aWmSAqR8ny2oHvPSKCQ
PAB1v0oN5vQHH3PWwaunU5OYBtiiG9yM1Ztj5T17QIcrRNKCApGYlOjXegaG
/yIIV+od7OcpOaVtJRHnDKQHqC0Kan0Erge2MGg8I45T1+cDc8gnrDc/jm9M
HUmkbzA7boME6wSSEtE6a2evHbYLwnulAnGYj5JghQrTcpnILAyhxqH4xXAz
4gGzId/423ujcOCdi7tFxKyciqzOEaIsTktRvrAAHXufQbVKyrmpoSrXF1NB
GTsCsP3+3u2BIOfqYbrf0h6YhJXmK4MjlVcJ80rSKokAWP3x/TeAKeD2elaf
LoV9zR4yF2OEQ3LlCb3dzNHLjrE4eAt7OlYv8Q5Udu8FxMhQ8y2k/Ejkbn5D
vWbVzZkgIn6PpKSwYJjxYTXYtUHI8Yd0rkXVS2JQUrDgzw1LKh6ZVKqUNYSZ
dngQvoe9ksa4KHRyK6KDkJNGtHaGVBdBgY6DIDJXqzspROjM0nU5vhXXKkqz
dEQleKnIj3Wb7eL5vHBu9neN65yDPlSyt4JVIaM+JlwseL/atk7RImUuhZTC
OQGxcELBCmtJeGWH/6azJSiM8S/mpKawKoCXPcKgGvP12rT9htgpFzXC3nSi
b039GIPdbws6LxYD4TD7m+UYe2UoEDdVGlSgyOYwJp7pZZZXSIwKOMuMycoI
Qs5De5VkWVQLQdEOPQuILhJy63XEzHCsQxh2L3I0dZsl1YJoprZUSSUDbAGP
4OuS9QcQbLHU/IsquXIUWpgqUBKuC+kkbgKWEbeYEqCMDD58d/Ts++9AE1A3
mVrw9DSfHszj4j1evWrEDSJabkAIRVMQpR7zgUWhKZl1g3YUFKjZHIOuhD2+
RkrnMigRXkBOV9OP5wE6ZI75kk0PW8RH7dAgRdMYy91KB4npTbgl46+UHECn
WCvSaEGFTk5QeBQZe56ABHVB5Z9ls5AGWi0mbD66HeDcNJUGVlxYZte5H4vK
y9gSnAQF2Ihc9nRO0V4ZR0ZwWHAQZaCV2hP1EUhxFgKrodz3LbdnwQYLAxYa
IJHwmHGe89lwv7anyVYU34ethXxDocwclJbSlIAmQC0O6+l49buQXKKANWdH
J3Mqm5KwqsuCAZh8uvAbdX5ycdJSJ4mfR1lYUT/mfnhkuTW3FolnlaQd5Kji
Xmtds8rRIAqOGt5uY7u50amn9YFO9LGJvBW7pQQeOmUejhfmxmVVOoeNG8c/
zd2vQnMGHAIu14BXLdYE20OwWiarxDDbWUwV38SoQFbAtwDWUzM0CEyMrvgl
hk6sFFG6p86AGCl93xiPDRgJNnbGyEHgoDM47oQzEpJyqCERi8PWrWNtONrL
NAyWBRVnFiVPbIBC4vTWINq5GKOmNIR9NARdadecU69fF4HqXjfPlOkaXrhn
p/EHHXXPQFBF8Tq5OrmQkmQcVjQlFLSIaFsY3YnhM6fzYKsrL49lf13A3jkG
EZovBwNCxwUNfayeHBzu76sd1MAztGRu8aA9zcO4YYBNwza067MLuwBnSBOo
j3VX0RKNHDT/lnJXJnY3zdxKEICEkW6tQasoAMDNl+/ZgZuE7GwZuu/YXGOu
ufY+XQWPdEubOLAZS0PrLJN5vzn52Z79J/0CDe0sD3K0+6ZBlZgS7xzSAkLz
zKholQaLOHxkTm/X9QLVztGzgyeHo6dPnjx+slsnwyI+OEyBANrBsHIBecSE
tTCNCP8sWMg9ffz4CZm7NCmhGa4hhnyOJonMWGP1d/KfuSTGAD+ARclpPxQP
DKAH+4dHI4T2YNduyQdIKQ8sdzZvu9RkpGCDEpRDXeqa2cXqQe3E0+asJVkP
DjeFiWGFIbRakf2eeKWjxShnraaQ2hxJ/F66CdL3ZJ2iKncbR1WAyzTPuJ6/
LfWBpM1BG+BqZB0L1wR5M6mYrJzgawRcKsmWRk/vAnaaVNPpYPCn/wXfuRb9
T1jF/lgxYRO7US9On5+eqfHr5+jrAeMLJDNoW1T8B8vujEb/Nfj/jY6gb7u7
AAA=

-->

</rfc>

