<?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.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-birkholz-cose-receipts-ccf-profile-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="COSE Receipts with CCF">COSE Receipts with CCF</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-cose-receipts-ccf-profile-05"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Chamayou" fullname="Amaury Chamayou">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>amaury.chamayou@microsoft.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="13"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 69?>

<t>This document defines a new verifiable data structure type for COSE Signed Merkle Tree Proofs specifically designed for transaction ledgers produced via Trusted Execution Environments (TEEs), such as the Confidential Consortium Framework (<xref target="CCF"/>) to provide stronger tamper-evidence guarantees.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/ietf-scitt/draft-birkholz-cose-cometre-ccf-profile"/>.</t>
    </note>
  </front>
  <middle>
    <?line 73?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The COSE Receipts document <xref target="I-D.ietf-cose-merkle-tree-proofs"/> defines a common framework for defining different types of proofs, such as proof of inclusion, about verifiable data structures (VDS). For instance, inclusion proofs guarantee to a verifier that a given serializable element is recorded at a given state of the VDS, while consistency proofs are used to establish that an inclusion proof is still consistent with the new state of the VDS at a later time.</t>
      <t>In this document, we define a new type of VDS, associated with an application of the Confidential Consortium Framework (CCF) ledger that implements the SCITT Architecture defined in <xref target="I-D.ietf-scitt-architecture"/>. This VDS carries indexed transaction information in a binary Merkle Tree, where new transactions are appended to the right, so that the binary decomposition of the index of a transaction can be interpreted as the position in the tree if 0 represents the left branch and 1 the right branch.
Compared to <xref target="RFC9162"/>, the leaves of CCF trees carry additional internal information for the following purposes:</t>
      <ol spacing="normal" type="1"><li>
          <t>To bind the full details of the transaction executed, which is a super-set of what is exposed in the proof and captures internal information details useful for detailed system audit, but not for application purposes.</t>
        </li>
        <li>
          <t>To allow the distributed system executing the application logic in Trusted Excecution Environments to persist signatures to storage early, but only enable receipt production once they are fully committed by the consensus protocol.</t>
        </li>
      </ol>
      <section anchor="requirements-notation">
        <name>Requirements Notation</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="description-of-the-ccf-ledger-verifiable-data-structure">
      <name>Description of the CCF Ledger Verifiable Data Structure</name>
      <t>This documents extends the verifiable data structure registry of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> with the following value:</t>
      <table align="left" anchor="verifiable-data-structure-values">
        <name>Verifiable Data Structure Algorithms</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Value</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CCF_LEDGER_SHA256</td>
            <td align="left">TBD_1 (requested assignment 2)</td>
            <td align="left">Historical transaction ledgers, such as the CCF ledger</td>
            <td align="left">RFCthis</td>
          </tr>
        </tbody>
      </table>
      <t>This document defines inclusion proofs for CCF ledgers.</t>
      <section anchor="merkle-tree-shape">
        <name>Merkle Tree Shape</name>
        <t>A CCF ledger is a binary Merkle Tree constructed from a hash function H, which is defined from the log type. For instance, the hash function for <tt>CCF_LEDGER_SHA256</tt> is <tt>SHA256</tt>, whose <tt>HASH_SIZE</tt> is 32 bytes.</t>
        <t>The Merkle tree encodes an ordered list of <tt>n</tt> transactions T_n = {T[0], T[1], ..., T[n-1]}. We define the Merkle Tree Hash (MTH) function, which takes as input a list of serialized transactions (as byte strings), and outputs a single HASH_SIZE byte string called the Merkle root hash, by induction on the list.</t>
        <t>This function is defined as follows:</t>
        <t>The hash of an empty list is the hash of an empty string:</t>
        <artwork><![CDATA[
MTH({}) = HASH().
]]></artwork>
        <t>The hash of a list with one entry (also known as a leaf hash) is:</t>
        <artwork><![CDATA[
MTH({d[0]}) = HASH(d[0]).
]]></artwork>
        <t>For n &gt; 1, let k be the largest power of two smaller than n (i.e., k &lt; n &lt;= 2k). The Merkle Tree Hash of an n-element list D_n is then defined recursively as:</t>
        <artwork><![CDATA[
MTH(D_n) = HASH(MTH(D[0:k]) || MTH(D[k:n])),
]]></artwork>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>|| denotes concatenation</t>
          </li>
          <li>
            <t>: denotes concatenation of lists</t>
          </li>
          <li>
            <t>D[k1:k2] = D'_(k2-k1) denotes the list {d'[0] = d[k1], d'[1] = d[k1+1], ..., d'[k2-k1-1] = d[k2-1]} of length (k2 - k1).</t>
          </li>
        </ul>
      </section>
      <section anchor="transaction-components">
        <name>Transaction Components</name>
        <t>Each leaf in a CCF ledger carries the following components:</t>
        <sourcecode type="cddl"><![CDATA[
ccf-leaf = [
  ; Byte string of size HASH_SIZE(32)
  internal-transaction-hash: bstr .size 32

  ; Text string of at most 1024 bytes
  internal-evidence: tstr .size (1..1024)

  ; Byte string of size HASH_SIZE(32)
  data-hash: bstr .size 32
]
]]></sourcecode>
        <t>The <tt>internal-transaction-hash</tt> and <tt>internal-evidence</tt> byte strings are internal to the CCF implementation. They can be safely ignored by receipt Verifiers, but they commit the TS to the whole tree contents and may be used for additional, CCF-specific auditing.</t>
        <t><tt>internal-transaction-hash</tt> is a hash over the complete entry in the <xref target="CCF-Ledger-Format"/>, and <tt>internal-evidence</tt> is a revealable <xref target="CCF-Commit-Evidence"/> value that allows early persistence of ledger entries before distributed consensus can be established. This mechanism is useful to implement high-throughput transparency applications in Trusted Execution Environments that only provide a limited amount of memory, while maintaining high availability afforded by distributed consensus.</t>
        <t><tt>data-hash</tt> summarises the application data included in the ledger at this transaction, which is a Signed Statement as defined by <xref target="I-D.ietf-scitt-architecture"/>.</t>
      </section>
    </section>
    <section anchor="ccf-inclusion-proofs">
      <name>CCF Inclusion Proofs</name>
      <t>CCF inclusion proofs consist of a list of digests tagged with a single left-or-right bit.</t>
      <sourcecode type="cddl"><![CDATA[
ccf-proof-element = [
  ; Position of the element
  left: bool

  ; Hash of the proof element: byte string of size HASH_SIZE(32)
  hash: bstr .size 32
]

ccf-inclusion-proof = bstr .cbor {
  &(leaf: 1) => ccf-leaf
  &(path: 2) => [+ ccf-proof-element]
}
]]></sourcecode>
      <t>Unlike some other tree algorithms, the index of the element in the tree is not explicit in the inclusion proof, but the list of left-or-right bits can be treated as the binary decomposition of the index, from the least significant (leaf) to the most significant (root).</t>
      <section anchor="ccf-inclusion-proof-signature">
        <name>CCF Inclusion Proof Signature</name>
        <t>The proof signature for a CCF inclusion proof is a COSE signature (encoded with the <tt>COSE_Sign1</tt> CBOR type) which includes the following additional requirements for protected and unprotected headers. Please note that there may be additional header parameters defined by the application.</t>
        <t>The protected header parameters for the CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>verifiable-data-structure: int/tstr</tt>. This header <bcp14>MUST</bcp14> be set to the verifiable data structure algorithm identifier for <tt>ccf-ledger</tt> (TBD_1).</t>
          </li>
          <li>
            <t><tt>label: int</tt>. This header <bcp14>MUST</bcp14> be set to the value of the <tt>inclusion</tt> proof type in the IANA registry of Verifiable Data Structure Proof Type (-1).</t>
          </li>
        </ul>
        <t>The unprotected header for a CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>inclusion-proof: bstr .cbor ccf-inclusion-proof</tt>. This contains the serialized CCF inclusion proof, as defined above.</t>
          </li>
        </ul>
        <t>The payload of the signature is the CCF ledger Merkle root digest, and <bcp14>MUST</bcp14> be detached in order to force verifiers to recompute the root from the inclusion proof in the unprotected header. This provides a safeguard against implementation errors that use the payload of the signature but do not recompute the root from the inclusion proof.</t>
      </section>
      <section anchor="inclusion-proof-verification-algorithm">
        <name>Inclusion Proof Verification Algorithm</name>
        <t>CCF uses the following algorithm to verify an inclusion receipt:</t>
        <artwork><![CDATA[
compute_root(proof):
  h := proof.leaf.internal-transaction-hash
       || HASH(proof.leaf.internal-evidence)
       || proof.leaf.data-hash

  for [left, hash] in proof:
      h := HASH(hash + h) if left
           HASH(h + hash) else
  return h

verify_inclusion_receipt(inclusion_receipt):
  let label = INCLUSION_PROOF_LABEL
  assert(label in inclusion_receipt.unprotected_header)
  let proof = inclusion_receipt.unprotected_header[label]
  assert(inclusion_receipt.payload == nil)
  let payload = compute_root(proof)

  # Use the Merkle Root as the detached payload
  return verify_cose(inclusion_receipt, payload)
]]></artwork>
        <t>A description can also be found at <xref target="CCF-Receipt-Verification"/>.</t>
      </section>
    </section>
    <section anchor="usage-in-cose-receipts">
      <name>Usage in COSE Receipts</name>
      <t>A COSE Receipt with a CCF inclusion proof is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => 2
  * cose-label => cose-value
}
]]></sourcecode>
      <ul spacing="normal">
        <li>
          <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
        </li>
        <li>
          <t>vds (label: 395): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int.</t>
        </li>
      </ul>
      <t>The unprotected header for an inclusion proof signature is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
inclusion-proof = ccf-inclusion-proof

inclusion-proofs = [ + inclusion-proof ]

verifiable-proofs = {
  &(inclusion-proof: -1) => inclusion-proofs
}

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="I-D.ietf-cose-merkle-tree-proofs"/></t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security consideration of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> apply.</t>
      <section anchor="trusted-execution-environments">
        <name>Trusted Execution Environments</name>
        <t>CCF networks of nodes rely on executing in Trusted Execution Environments to secure their function, in particular:</t>
        <ol spacing="normal" type="1"><li>
            <t>The evaluation of registration policies</t>
          </li>
          <li>
            <t>The creation and usage of receipt signing keys</t>
          </li>
        </ol>
        <t>A compromise in the Trusted Execution Environment platform used to execute the network may allow an attacker to produce invalid and incompatible ledger branches.
Clients can mitigate this risk in two ways: by regularly auditing the consistency of the CCF ledger; and by regularly fetching attestation information about the TEE instances, available in the ledger and from the network itself, and confirming that the nodes composing the network are running up-to-date, trusted platform components.</t>
      </section>
      <section anchor="operators">
        <name>Operators</name>
        <t>The operator of a CCF network has the ability to start successor networks, with a distinct identity, which endorse the receipts produced by a previous instance.
This functionality is important to provide service continuity in the case of a catastrophic failure of a majority of nodes, but allows a potentially malicious operator to start from a prefix of an earlier ledger.
Clients can mitigate this risk by auditing the successor ledger and its attestation information, as described above. In particular, clients can check that the latest receipt they hold is present in the successor ledger before they begin making use of it.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>This document requests IANA to add the following new value to the 'COSE Verifiable Data Structures' registry:</t>
          <ul spacing="normal">
            <li>
              <t>Name: CCF_LEDGER_SHA256</t>
            </li>
            <li>
              <t>Value: 2 (requested assignment)</t>
            </li>
            <li>
              <t>Description: Append-only logs that are integrity-protected by a Merkle Tree and signatures produced via Trusted Execution Environments containing a mix of public and confidential information, as specified by the Confidential Consortium Framework.</t>
            </li>
            <li>
              <t>Reference: This document</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9162">
        <front>
          <title>Certificate Transparency Version 2.0</title>
          <author fullname="B. Laurie" initials="B." surname="Laurie"/>
          <author fullname="E. Messeri" initials="E." surname="Messeri"/>
          <author fullname="R. Stradling" initials="R." surname="Stradling"/>
          <date month="December" year="2021"/>
          <abstract>
            <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
            <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
            <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9162"/>
        <seriesInfo name="DOI" value="10.17487/RFC9162"/>
      </reference>
      <reference anchor="I-D.ietf-cose-merkle-tree-proofs">
        <front>
          <title>COSE (CBOR Object Signing and Encryption) Receipts</title>
          <author fullname="Orie Steele" initials="O." surname="Steele">
            <organization>Tradeverifyd</organization>
          </author>
          <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
            <organization>Fraunhofer SIT</organization>
          </author>
          <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
            <organization>Microsoft</organization>
          </author>
          <author fullname="Cedric Fournet" initials="C." surname="Fournet">
            <organization>Microsoft</organization>
          </author>
          <date day="10" month="September" year="2025"/>
          <abstract>
            <t>   COSE (CBOR Object Signing and Encryption) Receipts prove properties
   of a verifiable data structure to a verifier.  Verifiable data
   structures and associated proof types enable security properties,
   such as minimal disclosure, transparency and non-equivocation.
   Transparency helps maintain trust over time, and has been applied to
   certificates, end to end encrypted messaging systems, and supply
   chain security.  This specification enables concise transparency
   oriented systems, by building on CBOR (Concise Binary Object
   Representation) and COSE.  The extensibility of the approach is
   demonstrated by providing CBOR encodings for Merkle inclusion and
   consistency proofs.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-17"/>
      </reference>
      <reference anchor="I-D.ietf-scitt-architecture">
        <front>
          <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
          <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
            <organization>Fraunhofer SIT</organization>
          </author>
          <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
            <organization>Microsoft Research</organization>
          </author>
          <author fullname="Cedric Fournet" initials="C." surname="Fournet">
            <organization>Microsoft Research</organization>
          </author>
          <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
            <organization>ARM</organization>
          </author>
          <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
          <date day="10" month="October" year="2025"/>
          <abstract>
            <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document defines such an
   architecture for single-issuer signed statement transparency.  It
   ensures extensibility, interoperability between different
   transparency services, and compliance with various auditing
   procedures and regulatory requirements.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
      </reference>
      <reference anchor="CCF" target="https://github.com/microsoft/ccf">
        <front>
          <title>Confidential Consortium Framework</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Ledger-Format" target="https://microsoft.github.io/CCF/main/architecture/ledger.html">
        <front>
          <title>CCF Ledger Format</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Commit-Evidence" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#commit-evidence">
        <front>
          <title>CCF Commit Evidence</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Receipt-Verification" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#receipt-verification">
        <front>
          <title>CCF Receipt Verification</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </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:
H4sIAAAAAAAAA71a6XIbyZH+309RS0ZYwAwbFDDS2IKHsimSshhLiVoSmg2v
xCAL3QWgjD6wXdWkYIrzLH4WP9l+mVV94KBG49gw/xDdXUfe+WVWhWEYWG0T
NRRH55cn4kJFSi+sEXfazsTR0etAjseFun30c5xHmUwxPS7kxIZjXcxnefL3
MMqNCgs/PIyiSbgo8olOVPj0eWCszOJrmeQZJtqiVIFeFPzL2MHTpy+eDgJZ
KDkUlyoqC22Xwd10KEavjoP53VCcZlYVmbLhMW0ZRNIOhbFxYMpxqo3ReWaX
Cyx8ejJ6HSz0MBDC5tFQLJXBT5MXtlATUz8v0+YxkKWd5cUwCIXj6o3K5uKV
Zwqj8wKEvC5kmc3yiSrE5ekIbysZbXxQqdTJUMywSq8SzZ+1spNeBCplZIkA
kKPAwsVM6QwP0hglfv8cX6I8BglPfnw2ePH8CT1DEkNxLIsUAowtjygzW+Dl
X1SRymxZ032Y2VxnShyrRE8zacMzeSvL2HEgM/13aSGnoXiroyI3+cRCtUbJ
Ipq1KBr0xaXlgeIil3FD0dGrvhi8ftXQdCTTcaHjqWp4lpmNkz+n1fpgOG0T
/OE/a1qPVFzoSLzOS9Lqv5HEidvxm4g8TGVZLMXRTKZymZf/TkHyzr3I7/xV
aoMshx1YfavI6i9eH73o/zign6fhcY/szvllqoo5PJGoI7fMyfxXHLY9w4Ay
GxJH2qrIlgUI33wXYAriAe0Fd3MRZecozyY6VpnVMhF4IN/TZUp+kqq7vJjv
uOGymJKYdmbWLsxwf3+K6FKOib/9mtt9xJAdv0t4piCiInzN3K7tefRauM/C
fX5kj0aMfjed72PuPoSe7bc52094td7MpklNwFGeptqGJ7fEXqQ2SXADRDXg
XyGiNOpaLhZm/1YVerK8tp+Zht3I7a3qpT1NPjiHP9NwHTnD3CDMjxLtUf+f
1HkTCm9X1g/CMESYpPCGoBeMZtoIpI4yhXGIWE0Qq4yQIlN3wk2U40SJWFpJ
TlSyIgSFdTht4XLRJQKbisVbtmUxgi2L92zLwixUxHsnyRKLGzeQJmL7zIAC
8kSnViPgAHEZYcCtllgGKQi/Tz4j8/Cwk+xWF3lGhBrRGZ2cmO6eMGU0E9II
O1PiV41cdO7vIbaHhy7yEG1HiiO28oys1Mp0AVuu1CmmpQSVVinTc2JLdRwn
cLBdynxMLBFGQlRrWbmW6P39agJ+eGgJmewHjE1q+kgy/FlnUxHrCfIXLULi
NiKfCBciGq75mT7oLEpKSrh70G1e2sd1B9H9fHzZ7ZFPCkpzEqzuNQv4PRrm
SVTSr0dCmkmL5ykiWyYM3soEoZf2UYlilmFQ4DYvYmivPRZxVxGtpCqQsCfu
ZkAhEEJmNFSdRctqb0AOAauOaWuFeeNEm5nfOVsnlfYzVidJs5J1qIg2Ijte
39lRleAl2NGpgnZPM3xseQKIU15R3hnY5LEGUw5kkEdakn3yTqAKHph4J6u2
+gZ7hDV2vf07/nS6cGJ0Jn15dDoaicNWEPRUxRADGddm/H946An2auI0kkWh
oXOdxeozCbTldjqbuBzFv8HmWGcSmbXlx6QjmKATQDPVaQgcqyx2WiJaCz2d
QXAmd5zQK79iDHNIF7nRbekwSfQgV6iKIMsxfYV2FoUiEXv3rhfQGT9T0hR6
Ip7C3DDS1EJLFJL/GGuSk2Sx6Dfk+de9AFlhASaY+Pt7n58fHvb8AvLWORzF
adrHsCSXQsYx0wCFMoXuRyNHDm0zio1Jkt+RFy/KAoQrMwyCPhSTk0xiN6aE
zcbKAluYSihtSSiOfCpmRwErmkKGKSlEGWVpxh1bjMFI2iKuBOPcgjiP5ML5
/FZiq73haqDFBx96haXMEo6UCiBVDZ2OEVGy3PKQtqFXzPU8b5K4ZhpiOGKh
x0R/tZbjh2RCA9rLJPkUsBPUN0E/2hr1KWojU2BtYRhNM3N4a2xeyClikCyS
paM3z5BzVMahyUdfn2GcFVKEByFLtmXSxVK4fE4EjJdMJEUUlZmSIy1KlzxB
rNjdRZz/31IX3k/f5Q5Rujwwx4rw7diInbcfLkc7e+6/eHfOvy9O/uvD6cXJ
Mf2+fHN4dlb/CPyIyzfnH86Om1/NzKPzt29P3h27yXgrVl4FO28P/4ovpPed
8/ej0/N3h2c7zibaOZ7YhcQ2fCxAfo6gMmdHr47e//Mf/Wfwjf+Acwz6/RfI
XO7hD/3fP8MDIkPmdmNJu0cSaECBQRYcUygqy4W2MjEUNYWZ5XeZoJgCQX73
kSRzNRQ/jaNF/9lL/4IYXnlZyWzlJcts883GZCfELa+2bFNLc+X9mqRX6T38
68pzJffWy5/+lFAWCft/+NPLgLDDMct5sZIpGqj8c5O4jylxX1aJew2rkdcj
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
I/g/ZZcs01UxAAA=

-->

</rfc>
