<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xue-distributed-mls-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="DMLS">Distributed MLS</title>
    <seriesInfo name="Internet-Draft" value="draft-xue-distributed-mls-02"/>
    <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="October" day="20"/>
    <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). 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 composition 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 composition or 'super'-group for facilitating group messaging in
such use cases that uses MLS as a 'sub' protocol. It instantiates an MLS session
per participant, such that each participant acts as the 'owner' of its own group.
These sub-groups also act as 'Send Groups', in which the owner sends all of their
application messages and determines the ordering of Proposals and Commits. This
allows each participant to locally and independently control the sequence
of Update processing and encrypt messages using MLS accordingingly. A distributed
group (DGroup) using DMLS then comprises the communication superset of such Send
Groups.  This draft further addresses how to incorporate randomness from other
participants' 'Send Groups' to ensure post-compromise security (PCS) is maintained
across the superset.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>Send Group: An MLS session where one designated sender (the group 'owner') authors
all messages and other members use the group only to receive from the designated
sender.</t>
      <t>DMLS Session: A session between a set of communication participants, where each
participant can broadcast messages by operating their Send Group.</t>
      <t>DGroup: the set of communication participants of a DMLS Session.</t>
      <t>DMembers: Members of the DGroup participating in the DMLS session.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>Within a group of distributed DMembers, we can resolve state conflict
by assigning each member local state that only they control. In a DMLS Session, we assign
to each DMember ownership of an MLS group that they then operate as a Send Group.
The Send Group owner can export secrets from other groups owned by DMembers and
import such secrets as added randomness into their own Send Group through use of
epochal Proposal messages. The Send Group owner can also Update leaf nodes of other
DMembers; if updating the leaf nodes of other DMembers within the owner's Send
Group, the owner <bcp14>MUST</bcp14> use the public keys published by the respective DMember within
their own Send Group. This enables each Send Group to include entropy and fresh
public keys 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 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,
perhaps, 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 or forking of MLS group state among members, which in
turn risks authorized members being unable to read each other's messages. 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 in
such cases that the full weight of the CAP theorem is therefor levied directly on the
MLS members. However, use cases exist that benefit from, or even necessitate, MLS and
its accompanying security guarantees for distributed group communications.</t>
        <t>The DMLS operating constraints specified above allow honest members to form a
distributed system that satisfies these requirements despite a decentralized DS.
Moreover, instead of mitigating or providing methods for resolving Commit collisions,
it effectively eliminates any risk of them occuring. It also, consequently removes the
risk of insider state desyncronization attacks, as an insider (a DMember) can only
control state in their own Send Group. The Send Group methodology ensures that a
single owner controls the Send sequence in their own group, including both application
messages and Commits. As a potential functional benefit in some use cases, DMLS further
enables flexibility in receive-only modes, namely that any DMember can continue to
receive messages sent from other groups, even if not sending information themselves.</t>
        <t>Downsides of the DMLS design that may make it not suitable for all settings include
increased overhead, namely due to the fact that within any Send Group, intermediate
nodes along the parent path of any non-owner remain blank. While the owner path Updates
when it Commits and other leaf nodes can be Updated as explained later, the parent path
of the other leaf nodes is not filled in. Thus DMLS comes with functional trade-offs.</t>
      </section>
    </section>
    <section anchor="protocol-definition">
      <name>Protocol Definition</name>
      <section anchor="send-group-operation">
        <name>Send Group Operation</name>
        <t>A DMLS Send Group operates in the following 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</t>
        <section anchor="send-group-mutation">
          <name>Send Group Mutation</name>
          <t>Under this configuration, only the Send Group owner can mutate the group.
The owner can Commit to their Send Group to Update their leaf node and/or to incorporate
new keys and entropy from other DMembers.</t>
          <section anchor="dmls-update-broadcast-new-keys-for-creator">
            <name>(DMLS Update) Broadcast new keys for creator</name>
            <t>Alice can provide PCS for herself in her Send Group by authoring a (full or empty)
Commit that Updates her own leaf node.</t>
          </section>
          <section anchor="dmls-commit-incorporate-new-key-material-from-others">
            <name>(DMLS Commit) Incorporate new key material from others</name>
            <t>If Alice has received DMLS Updates from other members, Alice can incorporate them as
follows:</t>
            <t>If the latest DMLS Update Alice received from Bob in his Send Group is a Commit
starting epoch k, and was not already incorporated into Alice's Send Group,
Alice can author a Commit that
*  imports a PSK from Bob's Send Group, epoch k with the following parameters
   *  psk_id: k || (Bob's Send Group's groupID)
      where k is a fixed width 8-byte encoding of the epoch in network byte order
   *  psk: MLS-Exporter("exporter-psk", "psk_id", KDF.Nh)
*  replaces Bob's leaf node in Alice's Send Group with Bob's new leaf note in Commit k</t>
            <t>An MLS Commit in a Send Group can convey either a DMLS Update or Commit, or both.</t>
          </section>
        </section>
        <section anchor="leaf-node-update">
          <name>Leaf Node Update</name>
          <t>When Bob incorporates PCS from Alice's Commit into his own Send Group by importing a PSK
from Alice's Send Group, it is also critical that the associated leaf node changes are
also Updated in Bob's Send Group.</t>
          <t>Thus, when Bob creates a <tt>psk_id</tt> as defined above, it directly references a
specific <tt>groupID</tt> and <tt>epoch</tt> from Alice's Send Group, which itself corresponds to the
current leaf node of Alice for that epoch. When Bob generates a Commit covering the
PSK Proposal, Bob <bcp14>MUST</bcp14> also Update Alice's leaf node within Bob's own Send Group to
match the leaf node of Alice for the given <tt>groupID</tt> and <tt>epoch</tt>. When other DMembers
receiving messages in Bob's Send Group receive the Commit, they <bcp14>MUST</bcp14> also Update their
tree representations to reflect Alice's leaf node corresponding to the <tt>groupID</tt> and
<tt>epoch</tt>.</t>
          <t>Alice's leaf node placement in Bob's own MLS tree <bcp14>MAY</bcp14> be different than in Alice' MLS
tree, and consequently the Alice's Update within her own Send Group does not correspond
to intermediate node Updates for Alice's path in Bob's Send Group.
Only the leaf node is Updated.</t>
        </section>
      </section>
      <section anchor="dmls-session-operations">
        <name>DMLS Session Operations</name>
        <t>Similar to MLS, DMLS provides a participant application programming interface (API)
with the following functions:</t>
        <section anchor="init">
          <name>INIT</name>
          <t>An application constructs a DMLS Session by defining
* the DGroup
* a scheme for assigning a Send Group identifier for each DMember
* allowed cipher suites, and an export key length.
and distributing an initial keypackage for each DMember</t>
          <t>(Nothing inherently requires the Send Groups to agree on a cipher suite -
each sender could choose their own, suitable to their own data transmission
protection requirements, as long as they agree on export key length. It is
advisable that the application set minimum requirements for all Send Groups
within the DGroup.)</t>
          <t>The DMLS application <bcp14>SHOULD</bcp14> recommend a policy for issuing DMLS Updates.</t>
          <t>Each DMember creates their Send Group by constructing a MLS group
*  with the assigned Send Group identifier
*  adding all other Dembers
*  distributing the resulting welcome message</t>
        </section>
        <section anchor="update">
          <name>UPDATE</name>
          <t>As defined above under Send Group Mutation</t>
        </section>
        <section anchor="commit">
          <name>COMMIT</name>
          <t>As defined above under Send Group Mutation</t>
        </section>
        <section anchor="protect">
          <name>PROTECT</name>
          <t>A member Bob protects a ciphertext message and encrypts it to the DMembers by
encrypting it as an application message in his Send Group, as in MLS. As in MLS,
before encrypting an application message, Bob <bcp14>SHOULD</bcp14> incorporate any DMLS Updates
of Bob's own or PSK proposals corresponding to Updates in other DMember Send Groups
that he has observed.</t>
        </section>
        <section anchor="unprotect">
          <name>UNPROTECT</name>
          <t>On receipt of an MLS message, a member can look up the corresponding Send Group
by the MLS groupID in the message metadata and decrypt it with the keys associated
with that Send Group.</t>
        </section>
      </section>
    </section>
    <section anchor="characteristics">
      <name>Characteristics</name>
      <t>Under DMLS, members can successfully encrypt messages at any time without waiting for
in-flight handshake messages from other members. A DMLS Commit by Alice acknowledges
to everyone else the newest DMLS Update Alice has received from each member.
Alice can delete her k_th leaf node private key when all members have committed
a newer leafNode from her.</t>
      <t>An offline member that has not been issuing DMLS Commits may prevent Alice from deleting
old private keys. As in MLS, applications <bcp14>SHOULD</bcp14> handle members that are offline for
excessive periods by dropping them from the Send Group.
For example, if Bob has been offline past an application's threshold and not acknowleged
Alice's kth Update, Alice may choose to delete her k_th key anyway, allowing for the chance
that she may stop receiving messages from Bob (if Bob later Commits Alice's kth Update).</t>
      <t>Alice can signal this in her next DMLS Update or Commit by
removing Bob from her Send Group. This allows each member of the universe to
independently excise offline members, and signal to everyone (including the removed member)
that they are doing so. On receipt of Alice's removal of Bob, another DMember Charlie <bcp14>MUST</bcp14>
also remove Bob from his Send Group, as Bob will not be able to process any future DMLS
Commit that incorporates newer group state from Alice.</t>
      <t>Reintroducing offline members is outside the scope of this draft, and could be done by
initiating a new DGroup.</t>
      <section anchor="tolerance-to-dropped-messages">
        <name>Tolerance to dropped messages</name>
        <t>Analogously to MLS, where members must receive every Commit message and apply them in
order to be able to compute the group's most recent state, withing a given Send Group,
each DMember must receive every Commit from the Send Group owner. Recipients must apply
Commits from each Send Group in order provided by the Send Group owner, aided by MLS
message metadata.</t>
        <t>The injection of PSK's across groups introduces an additional desirable Commit ordering
consideration, although injection order is within the control of the Send Group owner.
The format of the PSK ID helps DMembers order the application of Commits across Send
Groups to succesfully import PSK's:
   * Alice issues a DMLS Update in the Commit starting epoch k of her Send Group.
   * Bob receives Alice's kth DMLS Update, and incorporates it in the j_th Commit of his
     Send Group
   * Charlie, on receipt of Bob's j_th Commit, can process it and understand it depends
     on a psk_id that he can parse as k_th Commit from Alice.</t>
        <t>The dependency order of Commits forms a directed (acyclic) graph among pairs of
(epoch, groupId) in a DMLS Session.</t>
      </section>
    </section>
    <section anchor="wire-formats">
      <name>Wire Formats</name>
      <t>DMLS uses standard wire formats as defined in <xref target="RFC9420"/>.  An application using
DMLS <bcp14>SHOULD</bcp14> define formats for any additional messages containing common
configuration or operational parameters.</t>
    </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 security control nuances. In MLS each group member can largely control
when their Update 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, and
that PCS impacts on sending of data are not delayed from the point of original
Update.</t>
      <t>FS guarantees per Send Group follow similarly; the Send Group owner determines the
frequency of key roll-over.</t>
      <t>Notably, since the Send Group owner determines what is introduced as a PSK from
other DMembers, it is not possible for an insider threat to disrupt the group state
and cause desynchronization of the group view. This is unlike in MLS, where all
contributing parties must behave honestly to avoid state disruption.</t>
      <t>As in MLS, it is essential for PCS security that all members Update frequently.
In MLS, if a member Bob does not receive an Update from another member,
Alice, Bob's state will become desynchronized from the rest of the MLS group,
leading Bob to be unable to send messages that other group members (which have
correctly processed Alice's Updates) will be able to decrypt and also preventing
Bob from decrypting messages sent by those members. Bob must obtain the missing
Alice Update from the DS. In DMLS, however, the removal of desynchronization risk
means that Bob will continue to be able to send messages to DMembers in Bob's Send
Group even if Bob has not yet observed Alice's Update. This presents both a benefit
and a risk, as a denial-of-service attacker that has compromised Alice's state could
prevent Bob from receiving Alice's PCS Update, meaning that Bob continues to send
messages accessible under Alice's compromised state even after Alice has Updated.
To prevent this, the application <bcp14>SHOULD</bcp14> specify minimal Update frequency and Send
Group owners <bcp14>SHOULD</bcp14> remove members from which no Update has been observed for an
excessive period.</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 379?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5Vc63IbyXX+30/RoX6I3AIgaS2XbdqxTYmSl7YkMqJUiiuV
8g4wDWCWgxlkLoRge98lz5Iny/ed093TA2DtpMprksD05dy/cxlNp1PTFV3p
Lu3ZddF2TTHvO5fb9+/uz0w2nzfukd/In4usc6u62V/aolrWxuT1oso2WJk3
2bKbfu3dNB+2mG7Kdvr8W9P2803RtkVddfstHr558+mttU9sVrY1ti6q3G0d
/q/qzib2zOVFVzdFVvKPm6tX+FE3+O3jp7dnpuo3c9dcmhwXuTSLumpd1fbt
pe2a3hlc9Gcma1yGXe/dom+Kbn9mdnXzsGrqfotP37u2zVZFtbLvsr1r7PDU
g9vjwfzS2KndxKdKear1T/E7XHTa1VP8wK+LZr/tQBe/2NZtN13Um21Tg1o3
LHp0VY/LWvvPL2GtcujsC+7MB/7AJfx8kxUlPgdHf1+4bjmrmxU/zprFGh+v
u27bXj57xqf4UfHoZuGxZ/zg2bypd617hvXPuG5VdOt+jpUr12ymm6x5eHYo
uCLngyUY3XbJEXHBTPeYFfWJpc9+UiFm625TnhmT9d26bshunGLtsi9LVaWz
99jc/nvvzuQLUJBVxV8zsvnS/gGn2w+uo0wn9qZazOQhF9iDpb/nDWeVPnN2
Yv8/1q3bru2XmX3XP7hltm5OnfT53n7IHrPS3kGuqybLe3DC3i/WdV2OzvxB
tpuVfq/fV9t25vL+1MmvIOUus99l5Uni/s9HzmWf2Rr7DMeZqm422OkRumZo
nsNf0+nUZnOIIVt0xnxaO/tTKmjPYecXFjrc1Yu6hIpn89K1NlPltfXSbrOm
KxbFNqu61na1qeARuoI3zSzUf1NXVsyiBgXbdbGwbccvcZ/BriY84bHIeYG3
dbPLmtzgCo1b4AZvcYEM5kUuTF8PBjXc8e71/cXMgo4Gh+K/tt442+ORRda6
1uzkCz3Mgce5a3jQAvwqXbUCOZtsj/8enC06mxfLZbHoy06uOBBqDgi12apx
2K4a6FTKsCqebfVsuCAYIc50MP6uz0pxVTAEuIy9LVpbgCoIo1hA2jy2g0yy
7bbEB9QFEoen4F77DTawuWsXsCHQlnjoKURlz+mYLyZ6J7iggssH+S3lcrwJ
H8YF6YWFGj7ioA6eTRAxKFqNpbuDhdd9Z4OIuU8kXvkkLJipim2KPC+dMU9g
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

-->

</rfc>
