<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xue-distributed-mls-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="DMLS">Distributed MLS</title>
    <seriesInfo name="Internet-Draft" value="draft-xue-distributed-mls-00"/>
    <author fullname="Mark Xue">
      <organization>Germ Network, Inc.</organization>
      <address>
        <email>mark@germ.network</email>
      </address>
    </author>
    <author fullname="Joseph W. Lukefahr">
      <organization>US Naval Postgraduate School</organization>
      <address>
        <email>joseph.lukefahr@nps.edu</email>
      </address>
    </author>
    <author fullname="Britta Hale">
      <organization>US Naval Postgraduate School</organization>
      <address>
        <email>britta.hale@nps.edu</email>
      </address>
    </author>
    <date year="2025" month="March" day="16"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <keyword>messaging layer security</keyword>
    <keyword>end-to-end encryption</keyword>
    <keyword>post-compromise security</keyword>
    <abstract>
      <?line 44?>

<t>The Messaging Layer Security (MLS) protocol enables a group of participants to
negotiate a common cryptographic state for messaging, providing Forward
Secrecy (FS) and Post-Compromise Security (PCS). Still, there are some use cases
where message ordering challenges may make it difficult for a group of
participants to agree on a common state or use cases where reaching eventual
consistency is impractical for the application. This document describes
Distributed-MLS (DMLS), a protocol for using MLS sessions to protect messages
among participants without negotiating a common group state.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://germ-mark.github.io/distributed-mls-id/draft-xue-distributed-mls.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-xue-distributed-mls/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Messaging Layer Security Working Group mailing list (<eref target="mailto:mls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/germ-mark/distributed-mls-id"/>.</t>
    </note>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Participants operating in peer-to-peer or partitioned network topologies
may find it impractical to access a centralized Delivery Service (DS), or reach
consensus on message sequencing to arrive at a consistent commit for each
MLS epoch.</t>
      <t>DMLS is an MLS adaptation for facilitating group messaging in such use
cases by instantiating an MLS group per participant, such that each participant
has a dedicated 'send' group within a communication superset of such groups.
This allows each participant to locally and independently control the sequence
of update processing and encrypt messages using MLS accordingingly. This draft
further addresses how to incorporate randomness from other participant's 'send'
groups to ensure post-compromise security (PCS) is maintained.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>Send Group: An MLS group where one designated member (the group 'owner') authors
all messages and other members use the group only to receive from the designated sender.</t>
        <t>Universe: A superset of MLS participants comprised of the owners of all Send
Groups.</t>
      </section>
      <section anchor="protocol-overview">
        <name>Protocol Overview</name>
        <t>Within a universe U of distributed participants, we can resolve state conflict by
assigning each member local state that only they control. In DMLS, we assign
each member an MLS group to operate as a Send Group. The Send Group owner can export
secrets from other groups owned by the Universe and import the epoch randomness
through use of Proposal messages into their own Send Group. This enables each Send Group
to include entropy from other receive-only members of their Send Group, providing for
both PCS and FS without the need to reach global consensus on ordering of updates.</t>
      </section>
      <section anchor="meeting-mls-delivery-service-requirements">
        <name>Meeting MLS Delivery Service Requirements</name>
        <t>The MLS Architecture Guide specifies two requirements for an abstract Delivery Service related to message ordering.
First, Proposal messages should all arrive before the Commit that references them.
Second, members of an MLS group must agree on a single MLS Commit message that
ends each epoch and begins the next one.</t>
        <t>An honest centralized DS, in the form of a message queuing server or content
distribution network, can guarantee these requirements to be met.
By controlling the order of messages delivered to MLS participants, for example,
it can guarantee that Commit messages always follow their associated Proposal messages.
By filtering Commit messages based on some pre-determined criteria, it can ensure
that only a single Commit message per epoch is delivered to participants.</t>
        <t>A decentralized DS, on the other hand, can take the form of a message queuing server
without specialized logic for handling MLS messages, a mesh network, or, prehaps, simply
a local area network. These DS instantiations cannot offer any such guarantees.</t>
        <t>The MLS Architecture Guide highlights the risk of two MLS members generating different
Commits in the same epoch and then sending them at the same time. The impact of this risk is
inconsistency of MLS group state among members. This perhaps leads to inability of some
authorized members to read other authorized members' messages, i.e., a loss of availability
of the message-passing service provided by MLS. A decentralized DS offers no mitigation
strategy for this risk, so the members themselves must agree on strategies, or in our
terminology, operating constraints. We could say that the full weight of the CAP theorem
is thus levied directly on the MLS members in this case. However, use cases exist that
benefit from, or even necessitate, MLS and its accompanying security guarantees for
group message passing.</t>
        <t>The DMLS operating constraints specified above allow honest members to form a distributed
system that satisfies these requirements despite a decentralized DS.</t>
      </section>
    </section>
    <section anchor="send-group-operation">
      <name>Send Group Operation</name>
      <t>An MLS Send Group operates in the following constrained way:
  * The creator of the group, occupying leaf index 0, is the designated owner of the Send Group
  * Other members only accept messages from the owner
  * Members only accept messages as defined in Group Operations
  * Each group owner updates their contribution to the group with a full or empty commit.
    To incorporate fresh keying material inputs from
    another member, the group owner creates an exporter key from the other member's Send Group and
    imports that as a PSK Proposal.</t>
      <t>To facilitate binding Send Groups together, we define the following exported values:
   * derived groupid: <tt>MLS-Exporter("derivedGroupId", leafNodePublicSigningKey, Length)</tt></t>
      <artwork><![CDATA[
  This is a unique value for each participant derived from the group's current epoch    * exportPSK: `MLS-Exporter("exporter-psk", "psk_id", KDF.Nh)`
]]></artwork>
    </section>
    <section anchor="group-operations">
      <name>Group Operations</name>
      <t>Similar to MLS, DMLS provides a participant appliation programming interface (API) with the following functions:</t>
      <ul spacing="normal">
        <li>
          <t>INIT</t>
        </li>
      </ul>
      <t>Given a list of DMLS participants, initialize an DMLS context by (1) creating an MLS group, (2) adding all
other participants (generating a set of Welcome messages and a GroupInfo message).
It is the responsibility of an DMLS implementation to define the Universe of
participants and the mechanism of generating the individual send groups.
"DMLS Requirements" sketches one such approach.</t>
      <ul spacing="normal">
        <li>
          <t>UPDATE</t>
        </li>
      </ul>
      <t>A member Alice of $U$ can introduce new key material to the universe $U$ by authoring a full
or empty commit in Alice's send group, which provides PCS with regard to the committer.</t>
      <ul spacing="normal">
        <li>
          <t>COMMIT</t>
        </li>
      </ul>
      <t>When Bob receives Alice's DMLS update (as a full or empty commit in Alice's send group),
Bob can incorporate PCS from Alice's commit by importing a PSK from Alice's send group.
Precisely, Bob:
   * Creates a PSK proposal in Bob's send group using the exportPskId
      and exportPSK from the epoch of Alice's send group after Alice's DMLS update
   * Bob generates a commit covering the PSK proposal (for each send group in which
   he has observed a new DMLS update).</t>
      <t>The <tt>psk_group_id</tt> for this PSK is more specifically defined as follows:
<tt>
psk_group_id = (opaque&lt;8&gt;) groupEpoch | groupId
</tt>
where <tt>epoch_bytes</tt> is the byte-vector representation of the epoch in which the exporter was generated, in network byte order.
Since epoch is of type <tt>uint64</tt>, this results in a fixed 8-byte vector.
<tt>groupId</tt>, which is of type <tt>opaque&lt;V&gt;</tt>, is then appended to <tt>epoch_bytes</tt>.
When a <tt>exportPskId</tt> is received as part of an incoming PSK proposal, it can then be processed as follows:
<tt>
groupId = exportPskId[8..]
epoch = (uint64) exportPskId[0..7]
</tt></t>
      <t>Per <xref target="RFC9420"/>, the <tt>psk_nonce</tt> must be a fresh random value of length <tt>KDF.Nh</tt> when the PSK proposal is generated.
This ensures key separation between a PSK generated by, for example, (1) a PSK generated by Bob from Alice's group and (2) a PSK generated by Charlie from Alice's group.</t>
      <ul spacing="normal">
        <li>
          <t>PROTECT # or encrypt? or create_message?
A member Bob protects a ciphertext message and encrypting it to $U$ by encrypting it
as an application message in their send group. As in MLS, before encrypting an
application message, Bob should incorporate any DMLS updates he has received.</t>
        </li>
      </ul>
      <t>Each of the 3 MLS configurations of commit are possible:
* If Bob has observed no updates but wishes to issue an update, they can author
an empty commit.
If bob has observed DMLS updates,
* Bob can incorporate those updates without a DMLS of his own with
a partial commit covering PSK proposals from each updated send group.
* Alternatively, Bob can incorporate his own new keys by covering those PSK proposals
with a full commit.</t>
      <ul spacing="normal">
        <li>
          <t>UNPROTECT # or decrypt? or process_message?
On receipt of an MLS message, a member can look up the corresponding send group
by the MLS groupId in the message metadata and attempt to decrypt it with that
send group.</t>
        </li>
      </ul>
    </section>
    <section anchor="dmls-requirements">
      <name>DMLS requirements</name>
      <t>The application layer over MLS has the responsibility to define
* The Universe $U$ of members of this DMLS group
* Additional common rules, such as accepted cipher suites</t>
      <t>(nothing inherently requires the send groups to agree on a cipher suite -
each sender could choose their own as long as they agree on export key length
)</t>
      <t>The DMLS layer should recommend a policy for issuing DMLS updates.</t>
      <section anchor="over-the-wire-definition">
        <name>Over the wire definition</name>
        <t>For example, $U$ can be defined over the wire by inferring it from a newly created
send group.</t>
        <t>Assume Alice has keypackages for some other members $M_i$</t>
        <t>Alice can construct a DMLS group
   * with a randomly generated groupId
   * constructing a commit adding all other members $M_i$</t>
        <t>Alice can distribute the Welcome message with an Application Message that indicates
   * this is a Send Group for Alice
   * that defines a Universe $U$ as the members of this group
   * with universe identifier equal to the groupId for Alice's send group
   * and defines a common export key length</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>DMLS inherits and matches MLS in most security considerations with one notable change to PCS nuances. In
MLS each group member can largely control when their updates will be introduced to the group state, with
deconfliction only down to the DS. In contrast, in DMLS the Send Group owner controls when key update
material is included from each member; namely, every member updates in their own Send Group and fresh
keying material is then imported to other Send Groups through use of the exporter key and PSK Proposal
option, with timing controlled by the respective Send Group owners. This means that while the PCS
healing frequency of a given member in MLS is under their own control, in DMLS the PCS healing frequency
and timeliness of PSK import is controlled by the Send Group owner. However, the Send Group owner is also
the only member sending data in the Send Group. This means that there is a natural incentive to update
frequently and in a timely manner.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="references">
      <name>References</name>
      <t>CAPBR: # Brewer, E., "Towards robust distributed systems (abstract)", ACM, Proceedings of the nineteenth annual ACM symposium on Principles of distributed computing, DOI 10.1145/343477.343502, July 2000, <eref target="https://doi.org/10.1145/343477.343502">https://doi.org/10.1145/343477.343502</eref>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9420">
        <front>
          <title>The Messaging Layer Security (MLS) Protocol</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
          <author fullname="R. Robert" initials="R." surname="Robert"/>
          <author fullname="J. Millican" initials="J." surname="Millican"/>
          <author fullname="E. Omara" initials="E." surname="Omara"/>
          <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
          <date month="July" year="2023"/>
          <abstract>
            <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9420"/>
        <seriesInfo name="DOI" value="10.17487/RFC9420"/>
      </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>
    <?line 275?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA41a/3LbyJH+f55iTt4qSy6StrzOraPb7K4s2V5lLUtnyedL
pbZWQ2BITgQCCAaQzOz5XfIsebL7unsGGJDaJFWWSQLzo3/31z0znU5V69rC
Hum9U+fbxs271ub6/N3VnjLzeWPv6A3/zExrl1WzOdKuXFRK5VVWmjVm5o1Z
tNPPnZ3mwxLTdeGnz54p383XzntXle2mxuCz19dvtH6kTeErLO3K3NYW/5Xt
3kTv2dy1VeNMQT/Ojl/ho2rw7cP1mz1Vduu5bY5UDkKOVFaV3pa+80e6bTqr
QOjXyjTWYNUrm3WNazd76r5qbpdN1dV4em69N0tXLvU7s7GNHkbd2g0G5kdK
T/W6H1XwKB9G0TsQOm2rKT7wNWs2dQu+6EVd+XaaVeu6qcCtHSbd2bIDsVr/
ayK0FgntfQLNNOAtTaHna+MKPIdEf3C2XcyqZkmPTZOt8HjVtrU/evqURtEj
d2dncdhTevB03lT33j7F/Kc0b+naVTfHzKVt1tO1aW6fbivO5TSwgKB9m2zR
T5jJGjNXPTD16W8axGzVros9pUzXrqqGxI1dtF50RSGmtHeOxfX/dnaPX4AD
U7q/GRLzkX6L3fV725JOJ/qszGY8yEbxYOoPROGslDF7D6z/x8rbeqU/zfS7
7tYuzKp5aKePV/q9uTOFvoRel43JO0hCX2WrqipGe/6Fl5sVYa0fytrPbN49
tPMraLk1+kdTPMjcv73lnNeZrbDOsJ0qq2aNle5ga4rcc/g1nU61mUMNJmuV
ul5Z/VsmqPfh5wcaNtxWWVXAxM28sF4bMV5dLXRtmtZlrjZl63VbqRIRoXVE
qdEw/3VVanaLChzUK5dp39JL0DP41YR2uHM5EfCmau5NkyuQ0NgMFLwBAQbu
RVKYngwONdB4eXJ1MNNXrSuKiW5XtsHe+PPV2uoOIzPjrVf3/EL2tBB1bhva
L4PYClsuwdXabPB3a7Vrde4WC5d1RcuUDvyqLX61WTYWy5UDu8IgZvV7a9kb
kQi+iD0tYkDbmYIjFvwBkWOjndcOzEEnLoPSaVvwok1dF3hAJjHT1yuMQpTt
1lhA59ZncCXwlgTqKTSm9yk+H0xAU6+6BRNEu9MAEEUBmDmgITZro2i8MuBi
OVbsPZy76lodtUvr9AyLbJjtmVjX2uV5YZV6BJ9smyrvMg6L6jJds6ptIyu5
UtfWNhRI6ZNkx7vTJKSe4Lygta6KaulAIqlqgUxBqkqlRgrJMjBC1EFGjSnc
37DEqS1g+80GVtPcucxCQiQfbMRKGVIHaTLaiLd/7aAaopDWbRosoU3LjAe9
tSwDJ1bCK5F0bV1lK4iCtEB6NSUL3eSmblmTPHxhMle4VkQgMhwyDUTiu2xF
NqTEhuYwkRJCLnv5y6oyE7JMNTaR2e0K5BJZ6Tu1MiSeHJmVEniuH4P1/HFY
iDTtojV3ZTA9LIcdvG3J5XlpHu1nik0SLoR8srMTia2ooJdiwy6cpHY8gRBh
GwVbeRC1VVi+qymdk1mSIoXTPrv2VpoYMzQOd8Yv/Cs20Uso46hF11BAgOjz
BhMxbVXdE1muxJy6aminButX65KsZoHgoiuekvDx2AcZKeGaFiBrgU//VpqX
qETKR5AuW/zZHBbx6JG+Rj5yJRnyRiHKgbW3AgSOU31KxID5k5e7ZcmKWluC
O3qfJCbDHlf3pW0eI0Jy/oTvFsUgIpKbMCMzPYekYXZVQg3gBYHWkm0z9/Q6
2ZP4tg1I/1iSB3kkruORNRDNo1jB0oAscnpLqzGNnn4RdcSyehushwRyGUPU
xR05p71X6lM0wi5sqj/S9AQ7jLac6HuKtCUY8VUBRiQEw8AWiJ0tXEcZTxxx
8CUjDZJk4wyj2VdEIivbW+cMEUyTH/MesopKlxh5IWQpUY2GgvxBvWSVNvkt
QmGi7WfYYas8Jbx2ZILB2mhoTv5PwoxqEIda01R+zjEnMWXVrjB7yRGEZAcp
w1ZNYh0wy4qmuoZ22KIVhhuTPXM7vFXiPUWXY1OSUb1JaQ62NGVJRrMTQ3BN
skya8xEN1RzTNXyG+Xpz1Wcc4q204J/tlEhZFtUcfIxCdp/O+/gRjOvc2jbG
iZ0k8AFRxzWWkqkPQAjDjgkxU0Yk/37bOfDpa5u5BRKPRiYCGcM0gQdlj6d2
N2lswY4E+rfBx0y9cY1HsN5VjgfzRc4OExLP3GIr8d4TyTlssY1dIFIgdHp6
tZ4RcKrKfJLKfmSj6863KWqhMFoI52HdSCatr6CwYAJiYaSeuUWo9UE1n8lr
KPEjfq3wDauPMi88B65MYwmDMjn9Dgj6HWnHQ1aS98ntMFv1rk7Jp4wIn9xl
2RlYeWtZFN6OtQEhzwnktTP1qvfhgjP4KsidKOjFnIu2RD3bkWwiWf2zWdeF
nShIZnt/yH8sM0qF92ZDZkEpMVg9wkaVObaCHU0zoQtXtGK/28vNDQfSUtBs
3aCAsi1nEDwG+qNpZqIDbZKU1BDKevVuqZbggujTbQkhFQApFW+31VmJOsXf
V4aMjTZvCTr/O3pW0bfZrcLCBOwyFjitWESfjYKYyGqrwRaqhkKIXZkaLz0i
YYEoHyI6Ff1xJEde2MnpVYqfCPuC6LKiHLbgOL4JwCbql9j/JzFh5ZarAn+t
OAIy3i3HufsqEC7ut7RlhLlUU5Cvtkq04aNjeNSDiXvhUcl5N9jtmkBnP651
ayvZBDxTxOHgCjUyBc4rgjZDWREydILRteD7QGAI9jAIkqQurMm9ACQzJ3jK
K5DxhRKdlRWZk5gcQcbugMeJ/tzMzkiLReUlKN1Rd0L2UAEphNHT2gjw8yGG
SqqQJAhuZnrXLEWNXpcIsygclqxjRUG5tctNKKeClGAvVdgv8AEhewvk4LfC
Y5jviAGsAH1VXaPaAcJNkjKGxI7xjjxHfyL8QSHcm41ECnYNVP8AEmQ2ER2d
HF/SJ2L7WjkipSMtAAflMBhkU4LKweNSu2LTcZ4LzJn+sbpHUQmPGGpO+xkm
IDF8DhtcUJGCNM18UAEK/2B8TSYxERzN9ZRnPA3TKjeiggBoB7/gfJ0WLFCQ
KCx4DNc9D8qlz6RIbfOKyikOkyFvJGbFMcSkiE/5DUx6LbL0WNlLQt5NAkCv
teMGxLaRECZIQdiF0EilaUDfKUITJOeH9EW0jhjCooj21Mx7wh4JBGfaqomq
XQrQqbKsq1mY8K4FV0Gf9bOJdn4bbAsoDLMTyEXrX4yAvER3lLppSdTjd16H
Z53/s/GGZLVgNsDjlkg8z39tYq0XiAvoKmQ2zrAxTQucTOpIaIANnixuXbeb
UCxLk+56XIQtGorut5bltDac1wqMqLuAiXmSKdN6ZpLWMoKnSQFc+QRYjWdY
M5FMMh1lXaJuWD9vIZjai50xir+8+qnP22Th1VC6A5Y5idPDSmS/S0v7cM0g
Et6yoEBcru9M0VlPFgRhEyq8w0PmyOVH+gYmOX0dGNnfC+95l7N8b8L29L7K
7WU3R6FzJRXOTxZR6Z0tl+3q4EYxT1qCPFXqVFIhHcvGfdtiVLVHMnqhMT2Q
FiIBpS9JVUKyMAIJ7RAb5T+t/S317vHxiyOifzp9M3vPpD3atTl15dbUtA54
bCKxJMR/Ij8llHtj0p/AiGVjYF3cO8G2UJHV+8eXZwdiimP5L7qSW1KQvHqi
z96fXSv11lFURIKiuAkfPN3Fg65EauFoQhbGAxiwfqYaU+8fHogBbndnJnr/
+QH1IPhFUaidDoPX+wlQAGqT2vqTLTLCfaOK3ojUzspFX1EczNRZG+MJHKkm
ADCk70grgSSOkSb6a2KcfWG53eQMkAR7ZYBmzjO2S6ild+QE0FBH1TQ5QuwO
8UHRqM7a0/7WthmiNnc3GHJBj01luGX2RH+8PD2+fk3IM1TYxwVBAOz51cev
GGi60FOk6uOe3buPFyEE9W0DmgLNBGTCoqWIpLYiEoU/3gZGPtAP91058o1o
fVSesjE1dmmaPO4ma7TcJXmiTy7Oz8mcPhGKe1XNY0Xs+x1YJqHLtc8R5qEo
+TBNBxNFa4oYhuhJlLG7xhlhDWoacjwT3imSjYYNC8/UJQh1QEGIHtgihKST
GFB5bh2rF8esjRYIDTnuRUhQ8LdneQg/3MGLoWIILIJ5odpderRZtFH5Y5kJ
YSSFYIRMXmA4A6hoIh0jkvf7WJdsAj5Yx7QmJlBntJpzlUJ+RuaVbHwQ4M0N
hTKej4B2M0BL2o4aflSmB5wjvc+YZE2sCxF2bm5uVLqO/oPer2qD0Pzty+8O
hLzXLJ7/kx+QJc2RxuANS+6X+QbM30THp1/TOyBGbmujNvK9qwdIEUq+wHSi
K0j63vTFis25Zo99d1pXaucZwnOZ2aF0pHU3NehBedf+54ubSQDZ1neF1Dcw
bvcZvL+c8jJC3kzdBJ5uopOliwU5/M93NxEklRQjqBPJTjfifiaeZvB0MDuW
SXA8ljtFtBAKyW84T6Tm0ZfQvNm8bz8/oLVAORSWbPjnl7PZz0rkAk2KOA5G
I57NZt/8zCuoS8j711//48Obk9+/eP7syxcBMmxXZQUB30gZMicMK8BIGnsh
a4OPgvO7vpFkekP94nLX5l2i0tCqlxaB57DpLcQiBjKHri2LkRboJ0H34y4I
J7ndQeyOo8iyjKBKct/ujJOVaQpnH5jFYfTyw8X165Nr/YjjojT/v+cOEUek
X0Lm+37IE0RCOMvigOBquArn5lilJOcIjBP4gCKkiNFzZRhCJmdv/RpSDLgm
DZ36mE2d8Upo0yXLmVI9sBAH2djmS0M5NSKSoONjXIrWDOkwKA8u/bUOKGTh
ll1AUfQuxEMjZxRAA4U9Iqiz4H1HgQ4lc9wLSB4ZzlN2ph6A9x0jHXk9CZ1x
kgwnVEUwewTssfx8e/mUmYmSyL2dv7AasnWkIvaHTKgkF5osl5rU9EYFEMg9
4HHQT40/lEMc8WXhfJTunsDoEPdKPhUPSW+HrrhvABp8CpekGCJ6tKdKy54o
FEY170cGjcK0N+gQaQaLvihF2XWbNG97szHR3onWoqpuNR08MAxpBPrlUrdH
VlU4Oejh6FkeS9po1GvbGkjICL4ElIFSBR7KoZtrI4g2dFAxCJEwPOuo2Wml
pzYv92ZIbkwFmccDSLXHo0qq6Y8piuOubXKa4AImEBahTKBr2itYBTZtuoLa
NoIwfSh+qWvKgQHPHWxNqX0qKaVsWHF3Dgk7cOPD2WQPaLcP/JOV9FT14IKU
w35NdzXkxC0csoCOgppvIoDNsJgkCo7KEtrVQdJLCfeOJFjANsCg5UqgriBj
6W6RsxIbqbvJGQidqzEn9+BJRMyiUm/SwB7R9dz2eKUaTeQD6IVtmhA72b0Y
JNFhLkflfGwcxyAJ1YsAeFI62KtNdivNCmzOTe3xCeVX57+4rzCV5xA90mzp
sj4cLENLBCAweJskR1AxJJgImXhYv8RwbYFCY1+P/SsShi4US2OrKgtUAK0n
Fn+enKFwdURH7V7IaftaPGk/kDh4xzjGtEEPNHDkCsF7tt1hWy59EeTowJ2a
btD2X7uhSorBoN96BMBlJQoIAxnBs3aNFWHgpCrpWgvnH5p12ttZCAg0nO7U
eb13/vHqmnoC9KnfX/D3D6//++PZh9en9P3qx+N37/ovKoy4+vHi47vT4dsw
k2qu1+9PZTKe6tEjtXd+/Ce8Iar2Li6vzy7eH7/b6zuo/X0aypVygMQdBADo
luGfihdtOG6+Orn8x98PXwT89vzw8PdfvoQfLw+/eYEfhMVkN+66yU9yd8IB
1nAbmawuM7VrkTQmpFE4N+IDRSCCP38myfx8pL+dZ/Xhi+/CA2J49DDKbPSQ
Zbb7ZGeyCPGBRw9s00tz9HxL0mN6j/80+h3lnjz89vuCmg/Tw5fff6eUtGZD
s/mE0kI+dIWkfUEB2oWOBEp+biLICxRdwMt9rzobTRd3oG4DQj2dadOlr3LJ
yqbCuewMnZ/SUb9c3xl6nmmqNc3SJtdWIuJ2TYJboFUxH2lQ5OOeqJdeO4OY
3MbrCVyfkaHkZAFhwukV3zzgzQwdEbvQwxl3hmPbU2jyQhQ5WiiVh0aqj4f2
eYKLhL3/0nQhkSCQ5ZPrwHTkqke841sCrAUuTtRO1zbUbNJ6EClIiB11SccX
FEbFKLHAl/6S1quq+HLtJEARtw6teD7iHS5IEKhACUBH5ttyiodda2vK0OBF
8VlIVIclqJU1fPK4aOQ+knTP9JI7g0EsAvSJx44z/SCbQMtYV2RgO8sq7qk5
CN3xtSO6n0HNA7nOQac6O2xt85Kc+TxoEnwry1eKm97DXYz+XJHhXoCBO1c/
EgHJfUrOVoDKqDCo+UOnKiTgNlYOKrDW9je9MJ4ZpOZcWXJvjK4DHr8/3nHu
8a1GwgmoSHikkSYtH9t86C86KDoze/XhCFD6VWPvSQSvZwj81xXdHEWlVM2p
ek5vC8nZkdf78Z7GAfLB8ck5X73IrCWRxGsquoRSWhTDnNVLSpgYiSWgHe+6
NcG1S4AgoD+6HrN1L4mOzrqWL7WeXpzpw2ezw8MXv3v69YuvX3zzzQwfv3v2
fKL/2EEwz589ezbR38ar1Hnl+IL2g1O+Czcr54BPJI3j7Las7mEfS4Hcvx7J
XXib/2FvAcXbvS8Q7MXpBWQYRyKz/D+YhCNE3i8AAA==

-->

</rfc>
