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


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

]>


<rfc ipr="trust200902" docName="draft-ietf-grow-rpsl-registry-scoped-members-00" category="info" submissionType="IETF" xml:lang="en" updates="2622, 4012">
  <front>
    <title abbrev="Registry scoped members for RPSL set objects">Registry scoped members for RPSL set objects</title>

    <author initials="S." surname="Romijn" fullname="Sasha Romijn">
      <organization>Reliably Coded</organization>
      <address>
        <postal>
          <city>Amsterdam</city>
          <country>NL</country>
        </postal>
        <email>sasha@reliablycoded.nl</email>
      </address>
    </author>
    <author initials="J." surname="Bensley" fullname="James Bensley">
      <organization>Inter.link GmbH</organization>
      <address>
        <postal>
          <street>Boxhagener Str. 80</street>
          <city>Berlin</city>
          <code>10245</code>
          <country>DE</country>
        </postal>
        <email>james@inter.link</email>
      </address>
    </author>

    <date year="2026" month="April" day="22"/>

    
    
    <keyword>rpsl</keyword>

    <abstract>


<?line 40?>

<t>This document updates RFC2622 and RFC4012 by specifying <spanx style="verb">src-members</spanx>,
a new attribute on as-set and route-set
objects in the Routing Policy Specification Language (RPSL).
This attribute allows a specific registry to be defined for each member
in a set, avoiding problematic ambiguity when resolving set members.
A new validation rule allows gradual upgrades and backwards compatibility.</t>



    </abstract>



  </front>

  <middle>


<?line 49?>

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

<t>The Routing Policy Specification Language (RPSL) <xref target="RFC2622"/> defines the
as-set and route-set objects, extended in <xref target="RFC4012"/>.
These are among the most common objects in the Internet Routing Registry (IRR) system.
These sets can either reference a direct member of the set
(such as an AS number, IP prefix, etc.), or additional sets which themselves have
their own direct members and/or reference yet more sets, ad infinitum.
In both cases, this referencing uses the <spanx style="verb">members</spanx> and <spanx style="verb">mp-members</spanx>
attributes <xref target="RFC4012"/>.
Server and client software can follow these references to 
resolve a set down to its members, a set of prefixes or ASes.</t>

<t>A set may refer to another set by including the primary key in its
<spanx style="verb">(mp-)members</spanx> attribute.
The referred set may be in the same or in another IRR registry.
It is not possible to specify the IRR registry of
the referred set. This can lead to primary key collisions
when resolving a set:</t>

<t><list style="numbers" type="1">
  <t>There are multiple significant IRR registries.</t>
  <t>Sets often reference objects in registries other than the registry the set itself is stored in.</t>
  <t>There is no guaranteed uniqueness of object primary keys amongst the different registries.</t>
  <t>Hence, multiple objects may exist in the IRR system with the same primary key, 
making references to them ambiguous.</t>
  <t>Many IRR servers will mirror data from multiple IRR registries,
meaning that even within a single server, there are usually collisions.</t>
</list></t>

<t>The ambiguity encountered when resolving set members can result in either an
incorrect RPSL object being chosen, because an object with the same primary key
was retrieved from the wrong IRR registry, or the required RPSL object (which does exist)
is not found, because the resolving process didn't try to retrieve the object from
the correct IRR registry.
"Incorrect" and "wrong" in this context meaning: not as intended or expected by the operator.</t>

<t>Including members from the incorrect RPSL object can result in the computation of
unintentional routing policy information, which is then deployed to network infrastructure.
That could cause route leaking, or worse, aid in route hijacking.
This has been seen multiple times on the public Internet.</t>

<t>If intended policies are not included, because the object was not found,
prefixes that should be accepted, are not, and the prefixes are not reachable.</t>

<t>With either case, routing policy information may end up missing and connectivity 
may be disrupted.</t>

<t>There is no current way to prevent such ambiguity during set member resolution,
both for operators who create the legitimate objects and those who try to resolve them.</t>

<t>Two previous enhancements to reduce set name collisions have been standardized.
However, the problem persists:</t>

<t><list style="symbols">
  <t><xref target="RFC2622"/> Section 5.1 defines hierarchical set names, such as <spanx style="verb">AS65000:AS-EXAMPLE</spanx>
which may also have additional authorization requirements for the referred aut-num.
However, this authorization only works within a single IRR registry, and doesn't
allow the correct external IRR to be specified, if the object in question is not
local to the IRR registry storing the referring set.</t>
  <t><xref target="RFC2725"/> Section 9.6 defines external repository (IRR) references.
This allows for the correct IRR registry to be specified for a set member object
by using the SOURCE:: notation however, this syntax isn't supported in the members
field of set objects.</t>
</list></t>

<t>To solve this, this document adds <spanx style="verb">src-members</spanx> to as-set and route-set objects,
using a IRR registry name prefix with a double colon.
For example: "RIPE::AS-EXAMPLE", to refer specifically to an object "AS-EXAMPLE"
in the IRR registry "RIPE". This format is already widely used informally by operators,
including in platforms such as PeeringDB.
Continued availability of existing <spanx style="verb">(mp-)members</spanx> attributes
together with new validation rules, ensures backwards compatibility.</t>

<section anchor="requirements-language"><name>Requirements Language</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>
<section anchor="the-src-members-attribute"><name>The <spanx style="verb">src-members</spanx> attribute</name>

<section anchor="as-set-class"><name>as-set class</name>

<t>The new <spanx style="verb">src-members</spanx> attribute on as-set is similar to the <spanx style="verb">members</spanx> attribute
from <xref target="RFC2622"/>, except that the AS set name <bcp14>MUST</bcp14> be prefixed with a registry name
and a double colon.</t>

<dl newline="true">
  <dt>Attribute:</dt>
  <dd>
    <t><spanx style="verb">src-members</spanx></t>
  </dd>
  <dt>Value:</dt>
  <dd>
    <t>list of ([<spanx style="verb">as-number</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">as-set-name</spanx>])</t>
  </dd>
  <dt>Type:</dt>
  <dd>
    <t>optional, multi-valued</t>
  </dd>
</dl>

</section>
<section anchor="route-set-class"><name>route-set class</name>

<t>The new <spanx style="verb">src-members</spanx> attribute on route-set is similar to the <spanx style="verb">mp-members</spanx> attribute 
from <xref target="RFC4012"/>, except that any references to set names <bcp14>MUST</bcp14> 
be prefixed with a registry name and a double colon.</t>

<dl newline="true">
  <dt>Attribute:</dt>
  <dd>
    <t><spanx style="verb">src-members</spanx></t>
  </dd>
  <dt>Value:</dt>
  <dd>
    <t>list of ([<spanx style="verb">ipv4-address-prefix-range</spanx>] or [<spanx style="verb">ipv6-address-prefix-range</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">route-set-name</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">as-set-name</spanx>] or [<spanx style="verb">as-number</spanx>] or [<spanx style="verb">registry-name</spanx>]::[<spanx style="verb">route-set-name</spanx>][<spanx style="verb">range-operator</spanx>])</t>
  </dd>
  <dt>Type:</dt>
  <dd>
    <t>optional, multi-valued</t>
  </dd>
</dl>

</section>
<section anchor="resolving"><name>Resolving members through <spanx style="verb">src-members</spanx></name>

<t>IRR software that resolves the members of a set <bcp14>MUST</bcp14> have support for
objects with and without <spanx style="verb">src-members</spanx>.
These objects may be encountered if they were created or updated before
adoption of <spanx style="verb">src-members</spanx>, or the objects have not been updated since.</t>

<t>The resolving process is:</t>

<t><list style="numbers" type="1">
  <t>The resolver <bcp14>MUST</bcp14> include all members listed in the <spanx style="verb">src-members</spanx> attribute,
if any.
To find the referenced sets, the resolver <bcp14>MUST</bcp14> match on both the IRR registry
name and the set's primary key.
If the IRR registry is unknown to the resolver, no set can match the reference.</t>
  <t>The resolver <bcp14>MUST</bcp14> include all members listed in the <spanx style="verb">members</spanx> and <spanx style="verb">mp-members</spanx>
attributes, when their primary key was not already listed in <spanx style="verb">src-members</spanx>.
If there are multiple sets with a primary key known to the resolver,
the behavior is not defined by this document as this was a previously 
existing problem.</t>
</list></t>

<t>Note that the restriction to a specific IRR registry name is only used
to select the correct IRR registry to retrieve the referred object and its
attributes. During recursive resolving, if that set has references to further sets,
those <bcp14>MUST</bcp14> be retrieved from a potentially different registry. This could be either the
registry specified in the <spanx style="verb">src-members</spanx> attribute, if present, or the existing source
selection algorithm the IRR server currently uses when resolving using <spanx style="verb">(mp-)members</spanx>.
In other words, the restriction of the lookup to a specific IRR registry does not cascade.</t>

<section anchor="resolving-example"><name>Resolving example</name>

<figure title="Example objects for recursive lookups and attribute interactions"><sourcecode type="rpsl"><![CDATA[
route-set: RS-FIRST
members: RS-SECOND
mp-members: RS-LEGACY
src-members: RIPE::RS-SECOND
source: EXAMPLE

route-set: RS-SECOND
members: RS-THIRD
source: RIPE

route-set: RS-SECOND
members: AS65002
source: OTHER

route-set: RS-THIRD
members: AS65000
source: OTHER

route-set: RS-LEGACY
members: AS65001
source: OTHER
]]></sourcecode></figure>

<t>To perform a recursive lookup of RS-FIRST, the IRR software will:</t>

<t><list style="numbers" type="1">
  <t>Look up RS-FIRST.</t>
  <t>Determine that the members of RS-FIRST are RS-SECOND (RIPE registry only)
and RS-LEGACY (any registry). The mention of RS-SECOND in the <spanx style="verb">members</spanx>
attribute is not included, as <spanx style="verb">RS-SECOND</spanx> is already listed in <spanx style="verb">src-members</spanx>.</t>
  <t>Look up RS-SECOND in RIPE, and RS-LEGACY in any registry.</t>
  <t>Determine that the members of RS-LEGACY are AS65001, and the members
of RS-SECOND are RS-THIRD.</t>
  <t>Look up RS-THIRD in any registry.</t>
  <t>Determine that the members of RS-THIRD are AS65000.</t>
</list></t>

<t>If all mentioned registries are enabled, RS-FIRST would resolve to
AS65000 and AS65001.</t>

<t>The RS-SECOND object in the OTHER registry is never looked up,
and AS65002 is not included. This would happen even if there was no
RS-SECOND object found in RIPE.</t>

</section>
<section anchor="query-parameters"><name>Query parameters</name>

<t>When querying a set to resolve its members, IRR software typically
expects the primary key of the set as a query parameter from the user.
This reference is also ambiguous without referring to a specific registry.</t>

<t>IRR software <bcp14>MUST</bcp14> support a user-provided parameter to restrict the initial lookup
of the set object to a specific registry.
This restriction <bcp14>MUST NOT</bcp14> apply to further lookups performed by the IRR software
when resolving the set, i.e., this restriction also does not cascade.</t>

<t>For text based queries, IRR software is <bcp14>RECOMMENDED</bcp14> to allow this parameter to be
provided in similar syntax as the <spanx style="verb">src-members</spanx> value, e.g. RIPE::AS-DEMO,
to query the object with primary key AS-DEMO in registry RIPE,
and then continue resolving its members.</t>

</section>
</section>
</section>
<section anchor="relation-to-mp-members"><name>Relation to <spanx style="verb">(mp-)members</spanx></name>

<t>Existing IRR software will not be aware of the new <spanx style="verb">src-members</spanx> attribute
and instead refer to <spanx style="verb">(mp-)members</spanx>.
This is also why the existing attributes are not modified - this existing software
would consider e.g. <spanx style="verb">RIPE::AS-EXAMPLE</spanx> as the full primary key of a set, and fail
to look up the reference as intended.</t>

<t>Existing IRR objects may also not be updated with <spanx style="verb">src-members</spanx> for some time,
as this cannot be done automatically. Or, they may be partially updated
as for large sets, finding the intended IRR registry references
may take some time.
Deployment in both software and objects will be a gradual process, however,
even partial deployment will reduce the potential for issues from reference
mixups.</t>

<t>In order to keep support for existing IRR software, the contents of
<spanx style="verb">src-members</spanx> must match <spanx style="verb">(mp-)members</spanx> as close as possible,
which the IRR server will ensure.</t>

<section anchor="validation"><name>Additional validation</name>

<t>When an authoritative IRR registry processes a set object with a <spanx style="verb">src-members</spanx>
attribute, it <bcp14>MUST</bcp14> validate that all references in <spanx style="verb">src-members</spanx>, with the registry
names removed, are also listed in <spanx style="verb">members</spanx> or <spanx style="verb">mp-members</spanx>.
All values <bcp14>MUST</bcp14> be combined, regardless if they were listed in
one attribute, or in multiple repetitions of the attribute.</t>

<t>This ensures that the new <spanx style="verb">src-members</spanx> can be used, providing the benefits
for updated resolver software, while still having a consistent <spanx style="verb">(mp-)members</spanx> available
for older software.</t>

<t>IRR registry software is <bcp14>RECOMMENDED</bcp14> to make the <spanx style="verb">src-members</spanx> attribute
mandatory on all new as-set/route-set objects, and <bcp14>MAY</bcp14> make it required when modifying
existing objects.</t>

<t>Example of a valid object:</t>

<figure title="Valid object"><sourcecode type="rpsl"><![CDATA[
route-set: RS-EXAMPLE
members: 192.0.2.0/24
mp-members: 2001:db8::/32
mp-members: RS-OTHER
src-members: 192.0.2.0/24, RIPE::RS-OTHER, 2001:db8::/32
source: EXAMPLE
]]></sourcecode></figure>

<t>Example of an invalid object:</t>

<figure title="Invalid object: inconsistent inclusion of NTTCOM::RS-SRCMBRONLY, and 200:db8::/36 vs /32. Note: the inclusion RS-MPMBRONLY only in mp-members is permitted."><sourcecode type="rpsl"><![CDATA[
route-set: RS-EXAMPLE
members: 192.0.2.0/24
mp-members: 2001:db8::/36
mp-members: RS-OTHER, RS-MPMBRONLY
src-members: 192.0.2.0/24, RIPE::RS-OTHER
src-members: NTTCOM::RS-SRCMBRONLY, 2001:db8::/32
source: EXAMPLE
]]></sourcecode></figure>

</section>
<section anchor="automatic-generation-of-mp-members"><name>Automatic generation of <spanx style="verb">(mp-)members</spanx></name>

<t>Managing multiple copies of the same records is tedious for users.
Therefore, IRR registry software is <bcp14>RECOMMENDED</bcp14> to automatically
fill <spanx style="verb">(mp-)members</spanx>, if not specified by the user, based on <spanx style="verb">src-members</spanx>,
in authoritative objects, when the user creates or updates the object.</t>

<t>Specifically, for authoritative IRR registries:</t>

<t><list style="symbols">
  <t>It is <bcp14>RECOMMENDED</bcp14> that when creating/updating a route-set object
with a <spanx style="verb">src-members</spanx> attribute, but without both a <spanx style="verb">members</spanx> and <spanx style="verb">mp-members</spanx>
attribute, the software fills the <spanx style="verb">mp-members</spanx> attribute automatically with the contents
of <spanx style="verb">src-members</spanx>, with the IRR registry prefix removed from references.</t>
  <t>It is <bcp14>RECOMMENDED</bcp14> that when creating/updating an as-set object
with a <spanx style="verb">src-members</spanx> attribute, but without a <spanx style="verb">members</spanx>
attribute, the software fills the <spanx style="verb">members</spanx> attribute automatically with the contents
of <spanx style="verb">src-members</spanx>, with the IRR registry prefix removed from references.</t>
</list></t>

<t>The registry <bcp14>MAY</bcp14> return an informational message to the user about
the modifications.
The objects <bcp14>MUST NOT</bcp14> be modified if already submitted with any
<spanx style="verb">members</spanx> or <spanx style="verb">mp-members</spanx> attribute, though the <xref target="validation">validation rules noted
earlier</xref> <bcp14>MUST</bcp14> still be applied.
Non-authoritative servers <bcp14>MUST NOT</bcp14> generate <spanx style="verb">members</spanx> or <spanx style="verb">mp-members</spanx>
automatically.</t>

<t>IRR registry software <bcp14>MUST NOT</bcp14> attempt to automatically derive
<spanx style="verb">src-members</spanx> from <spanx style="verb">(mp-)members</spanx>, as this cannot be done reliably.</t>

</section>
<section anchor="multiple-references-to-the-same-primary-key"><name>Multiple references to the same primary key</name>

<t>Adding a IRR registry scope to each reference syntactically allows a new
behavior: having multiple references to the same RPSL primary key.
This is not permitted, and IRR registry software <bcp14>MUST</bcp14> reject this:</t>

<figure title="Invalid object fragment using multiple registry prefixes with the same RPSL primary key"><sourcecode type="rpsl"><![CDATA[
src-members: RIPE::AS-OTHER, ARIN::AS-OTHER
]]></sourcecode></figure>

<t>The IRR registry software <bcp14>MUST</bcp14> verify that, without their registry prefix,
all references from <spanx style="verb">src-members</spanx> are unique.</t>

<t>This reduces ambiguity regarding backwards compatibility with <spanx style="verb">(mp-)members</spanx>
described earlier.
If allowed, the attribute <spanx style="verb">src-members: RIPE::AS-OTHER, ARIN::AS-OTHER</spanx> would
refer to two different sets, whereas the translation <spanx style="verb">mp-members: AS-OTHER</spanx>
only refers to one set.</t>

</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>This memo includes no request to IANA.</t>

</section>
<section anchor="Security"><name>Security Considerations</name>

<t>This document removes a potential security issue where routing
policy could be manipulated by maliciously creating set objects,
which could be used in favor of legitimate objects.</t>

<t>While not a new issue, references between set objects can be
circular, and software <bcp14>MUST</bcp14> detect such cases while resolving.
It is <bcp14>RECOMMENDED</bcp14> to also limit the depth or size of their resolving
to prevent excessive resource use.</t>

</section>


  </middle>

  <back>



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



<reference anchor="RFC2622">
  <front>
    <title>Routing Policy Specification Language (RPSL)</title>
    <author fullname="C. Alaettinoglu" initials="C." surname="Alaettinoglu"/>
    <author fullname="C. Villamizar" initials="C." surname="Villamizar"/>
    <author fullname="E. Gerich" initials="E." surname="Gerich"/>
    <author fullname="D. Kessens" initials="D." surname="Kessens"/>
    <author fullname="D. Meyer" initials="D." surname="Meyer"/>
    <author fullname="T. Bates" initials="T." surname="Bates"/>
    <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
    <author fullname="M. Terpstra" initials="M." surname="Terpstra"/>
    <date month="June" year="1999"/>
    <abstract>
      <t>RPSL allows a network operator to be able to specify routing policies at various levels in the Internet hierarchy; for example at the Autonomous System (AS) level. At the same time, policies can be specified with sufficient detail in RPSL so that low level router configurations can be generated from them. RPSL is extensible; new routing protocols and new protocol features can be introduced at any time. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2622"/>
  <seriesInfo name="DOI" value="10.17487/RFC2622"/>
</reference>
<reference anchor="RFC2725">
  <front>
    <title>Routing Policy System Security</title>
    <author fullname="C. Villamizar" initials="C." surname="Villamizar"/>
    <author fullname="C. Alaettinoglu" initials="C." surname="Alaettinoglu"/>
    <author fullname="D. Meyer" initials="D." surname="Meyer"/>
    <author fullname="S. Murphy" initials="S." surname="Murphy"/>
    <date month="December" year="1999"/>
    <abstract>
      <t>The implementation and deployment of a routing policy system must maintain some degree of integrity to be of any operational use. This document addresses the need to assure integrity of the data by providing an authentication and authorization model. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2725"/>
  <seriesInfo name="DOI" value="10.17487/RFC2725"/>
</reference>
<reference anchor="RFC4012">
  <front>
    <title>Routing Policy Specification Language next generation (RPSLng)</title>
    <author fullname="L. Blunk" initials="L." surname="Blunk"/>
    <author fullname="J. Damas" initials="J." surname="Damas"/>
    <author fullname="F. Parent" initials="F." surname="Parent"/>
    <author fullname="A. Robachevsky" initials="A." surname="Robachevsky"/>
    <date month="March" year="2005"/>
    <abstract>
      <t>This memo introduces a new set of simple extensions to the Routing Policy Specification Language (RPSL), enabling the language to document routing policies for the IPv6 and multicast address families currently used in the Internet. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4012"/>
  <seriesInfo name="DOI" value="10.17487/RFC4012"/>
</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>





  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA8Vb/3Ibx5H+f55ijv7DUgqASZ7s2KhcEkqiI6ZISiHk5Fy2
6zjYHRBrLXbhnV1CtEv3LPcs92T3dffM7OyCpOVUpS5VVojFzkz/7q+7B9Pp
VLnWVPl/mbKu7Fy3TWdVsW34L9ceHx5+dXisMtPOdVGtauW65aZwrqir9m6L
989O336tTGPNXKvdzVypvM4qs8E3eWNW7bSw7Wp609S7abN15bSxN4Vrm7up
y+qtzacbu1naxk0PD1W3zU1r3Vwff3F8PNHPDo+OlWqLtsReV36ZlmXaL9Or
utFXbxbn2tlW18sfbdY6ZZbLxt7+xkWlqW7m2lbq3W6utJ5qIleZrl3XzVxN
wTwoW8z0Vb0pfqzwhjC5MG5t+od1c0PnloVZlnf6RZ3bHE+zor2b65ONa22T
mw09qbsKlM315Tk+2Y0pyrl2tNefG786o8Wzqgxn/3Wmn9vKlfYuHv5X/OuS
p3z6WYVTZmVRvdN/2Sxf4TFkYC3097x+vzY3trKNXrTNTH95yJTk2Ono8PjZ
55HS57bB+pTMl6c9mT/SqX8u4jFKqapuNqYtbi2J7urrF6TB8Ofvjz/3f5JG
54qsKL6tptOpNktQaLJWqbfrwmkYULexVau9QYQNNaw0bKOX0OrWZsXqrqhu
9LVrsmBK1xNldGV32rRtUyy71uq60sZNSdu0RVPjGX1SXveQr27XFlrsWtrt
TV0W2Z1e8P4FTB/Grs9hHx2kp5+Q6TydCa39GaYs6x0eeLKKTAdT122tl1bn
dlVUsEKyPmuytTdHyIMW2XaizW1d5ETAtqmXpSUZZdpslsVNB7Xo3dpW2NTV
5S29ROx4lmfqhDm+NWWRC7lNV0aabhqTd6aEPOkvCJSksDTZu51pcgclb7ZY
tCxKnDITlWyKPC+tUp+QOTV13mW0Kynot4lJ//KL196HD14CjmSt7tNH8MWJ
tu9bW8H8STO8A+n8wwcSunXgq8F/mxo0kNo2tWuJCTzQI42yL1TYOdAcQ8KT
s6urp9rdwSU3YVuQAGmYStsCixvIemUbW2U4TOdFg429wHW94u3Jhp64Dro0
JFR9stBVRy9M9NkbaBH8vgczbTZ7OoFzapPnBUkJuuCzdusCa7HTxtnyFpJZ
m1ur8LnAEbtqeCir7bM6JeuOTKBuhHLYD8kLIi7aDjydVXpZt2sw5Cy+bMlc
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

-->

</rfc>

