<?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-ietf-rats-corim-08" category="std" consensus="true" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="CoRIM">Concise Reference Integrity Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-08"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>Thomas.Fossati@linaro.org</email>
      </address>
    </author>
    <author initials="Y." surname="Deshpande" fullname="Yogesh Deshpande">
      <organization>arm</organization>
      <address>
        <email>yogesh.deshpande@arm.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel</organization>
      <address>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>RIM, RATS, attestation, verifier, supply chain</keyword>
    <abstract>
      <?line 145?>

<t>Remote Attestation Procedures (RATS) enable Relying Parties to assess the trustworthiness of a remote Attester and therefore to decide whether or not to engage in secure interactions with it.
Evidence about trustworthiness can be rather complex and it is deemed unrealistic that every Relying Party is capable of the appraisal of Evidence.
Therefore that burden is typically offloaded to a Verifier.
In order to conduct Evidence appraisal, a Verifier requires not only fresh Evidence from an Attester, but also trusted Endorsements and Reference Values from Endorsers and Reference Value Providers, such as manufacturers, distributors, or device owners.
This document specifies the information elements for representing Endorsements and Reference Values in CBOR format.</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-rats-wg/draft-ietf-rats-corim"/>.</t>
    </note>
  </front>
  <middle>
    <?line 153?>

<section anchor="sec-intro">
      <name>Introduction</name>
      <t>The RATS Architecture <xref section="4" sectionFormat="of" target="RFC9334"/> specifies several roles, including Endorsers and Reference Value Providers.
These two roles are typically fulfilled by supply chain actors, such as manufacturers, distributors, or device owners.
Endorsers and Reference Value Providers supply Endorsements (e.g., test results or certification data) and Reference Values (e.g., digest ) relating to an Attester.
This information is used by a Verifier to appraise Evidence received from an Attester which describes Attester operational state.</t>
      <t>In a complex supply chain, multiple actors will likely produce these values over several points in time.
As such, one supply chain actor might only supply a portion of the Reference Values or Endorsements that otherwise fully characterizes an Attester.
Ideally, only the supply chain actor who is the most knowledgable entity regarding a particular component will supply Reference Values or Endorsements for that component.</t>
      <t>Attesters vary across vendors and even across products from a single vendor.
Not only Attesters can evolve and therefore new measurement types need to be expressed, but an Endorser may also want to provide new security relevant attributes about an Attester at a future point in time.</t>
      <t>In order to promote inter-operability, consistency and accuracy in the representation of Endorsements and Reference Values this document specifies a data model for Endorsements and Reference Values known as Concise Reference Integrity Manifests (CoRIM).
The CoRIM data model is expressed in CDDL which is used to realize a CBOR <xref target="STD94"/> encoding suitable for cryptographic operations (e.g., hashing, signing, encryption) and transmission over computer networks.
Additionally, this document describes multiple phases of a Verifier Appraisal and provides an example of a possible use of CoRIM messages from multiple supply chain actors to represent a homogeneous representation of Attester state.
CoRIM is extensible to accommodate supply chain diversity while supporting a common representation for Endorsement and Reference Value inputs to Verifiers.
See <xref target="sec-verifier-rec"/>.</t>
      <section anchor="terminology-and-requirements-language">
        <name>Terminology and Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
        </t>
        <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary, see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
        <t>This document uses the terms <em>"actual state"</em> and <em>"reference state"</em> as defined in <xref section="2" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
        <t>In this document, the term CoRIM message and CoRIM documents are used as synonyms. A CoRIM data structure can be at rest (e.g., residing in a file system as a document) or can be in flight (e.g., conveyed as a message in a protocol exchange). The bytes composing the CoRIM data structure are the same either way.</t>
        <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>. Terms and concepts are always referenced as proper nouns, i.e., with Capital Letters.</t>
        <section anchor="sec-glossary">
          <name>Glossary</name>
          <t>This document uses the following terms:</t>
          <dl newline="true">
            <dt>Appraisal Claims Set (ACS):</dt>
            <dd>
              <t>A structure that holds Environment-Claim Tuples that have been appraised.
The ACS contains Attester state that has been authorized by Verifier processing and Appraisal Policy.</t>
            </dd>
            <dt>Appraisal Policy:</dt>
            <dd>
              <t>A description of the conditions that, if met, allow appraisal of Claims.
Typically, the entity asserting a Claim should have knowledge, expertise, or context that gives credibility to the assertion.
Appraisal Policy resolves which entities are credible and under what conditions.
See also "Appraisal Policy for Evidence" in <xref target="RFC9334"/>.</t>
            </dd>
            <dt>Attestation Results Set (ARS):</dt>
            <dd>
              <t>A structure that holds results of appraisal and Environment-Claim Tuples that are used to construct an Attestation Results message that is conveyed to a Relying Party.</t>
            </dd>
            <dt>Authority:</dt>
            <dd>
              <t>The entity asserting that a Claim is true.
Typically, a Claim is asserted using a cryptographic key to digitally sign the Claim.
A cryptographic key can be a proxy for a human or organizational entity.</t>
            </dd>
            <dt>Claim:</dt>
            <dd>
              <t>A piece of information, in the form of a key-value pair.
See also <xref section="4.2" sectionFormat="of" target="RFC9334"/> and <xref section="2" sectionFormat="of" target="RFC7519"/>.</t>
            </dd>
            <dt>Class ID:</dt>
            <dd>
              <t>An identifier for an Environment that is shared among similar Environment instances, such as those with the same hardware assembly.
See also <xref section="4.2.4" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
            </dd>
            <dt>Composite Attester:</dt>
            <dd>
              <t>A Composite Attester is either a Composite Device (<xref section="3.3" sectionFormat="of" target="RFC9334"/>) or a Layered Attester (<xref section="3.2" sectionFormat="of" target="RFC9334"/>) or any composition involving a combination of one or more Composite Devices or Layered Attesters.</t>
            </dd>
            <dt>Domain:</dt>
            <dd>
              <t>A domain is a hierarchical description of a Composite Attester in terms of its constituent Environments and their compositional relationships.</t>
            </dd>
            <dt>Endorsed values:</dt>
            <dd>
              <t>A set of characteristics of an Attester that do not appear in Evidence.
For example, Endorsed Values may include testing or certification data related to a hardware or firmware module.
Endorsed Values are said to be "conditional" when they apply if Attester's actual state matches Verifier's accepted Claims.
See also <xref section="3" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
            </dd>
            <dt>Environment:</dt>
            <dd>
              <t>A logical partition within an Attester.
The term "Target Environment" refers to the group of system security metrics that are reported through Evidence.
The term "Attesting Environment" refers to the entity that collects and cryptographically signs such security metrics.
See also <xref section="3.1" sectionFormat="of" target="RFC9334"/>.</t>
            </dd>
            <dt>Environment-Claim Tuple (ECT):</dt>
            <dd>
              <t>A structure containing a set of values that describe a Target Environment plus a set of Measurement / Claim values that describe properties of the Target Environment.
The ECT also contains Authority which identifies the entity that authored the ECT.</t>
            </dd>
            <dt>Instance ID:</dt>
            <dd>
              <t>An identifier of an Environment that is unique to that Environment instance, such as the serial number of a hardware module.
See also <xref section="4.2.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
            </dd>
            <dt>Measurement:</dt>
            <dd>
              <t>A value associated with specific security characteristics of an Attester that influences the trustworthiness of that Attester.
The object of a Measurement could be the invariant part of a firmware component loaded into memory during startup, a run-time integrity check (RTIC), a file system object, or a CPU register.
A measured object is part of the Attester's Target Environment.
Expected, or "golden," Measurements are compiled as Reference Values, which are used by the Verifier to assess the trust state of the Attester.
See also <xref target="TNC.Arch"/>, and Section 9.5.5 of <xref target="TPM2.Part1"/>.</t>
            </dd>
            <dt>Reference Values:</dt>
            <dd>
              <t>A set of values that represent the desired or undesired state of an Attester.
Reference Values are compared against Evidence to determine whether Attester state is corroborated by a Reference Value Provider.
Reference Values with matching Evidence produce "acceptable Claims."
See also <xref section="4.2" sectionFormat="of" target="RFC9334"/>, <xref section="8.3" sectionFormat="of" target="RFC9334"/>, and <xref section="2" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
            </dd>
            <dt>Triple:</dt>
            <dd>
              <t>A term derived from the Resource Description Framework (RDF) to mean a statement expressing a relationship between a subject and an object resource.
The nature of the relationship between subject and object is expressed via a predicate.
In CoRIM, unlike RDF, the predicate of the triple is implicit and is encoded in the triple's name/codepoint.
CoRIM triples typically represent assertions made by the CoRIM author regarding Attesting or Target Environments and their security features, such as Measurements and cryptographic key material.
See also Section 3.1 of <xref target="W3C.rdf11-primer"/>.</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
    <section anchor="sec-verifier-rec">
      <name>Verifier Reconciliation</name>
      <t>This specification describes the CoRIM format and documents how a Verifier must process the CoRIM.
This ensures that the behaviour of the CoRIM-based appraisal is predictable and consistent, in a word deterministic.</t>
      <t>A Verifier needs to reconcile its various inputs, with CoRIM being one of them.
In addition to the external CoRIM documents, the Verifier is expected to create an internal representation for each input and map each external representation to an internal one.
By using the internal representation, the Verifier processes inputs as if they are part of a conversation, keeping track of who said what.
The origin of the inputs is tracked as <em>authority</em>.
The authority for the Claims in a CoRIM is the CoRIM issuer.
To this effect, this specification defines one possible internal representation of the attester's actual state for use during the appraisal procedure, known as Appraisal Claims Set (ACS).</t>
      <t>Effectively, Attesters, Reference Value Providers, Endorsers, Verifier Owners, Relying Parties, and even the Verifier potentially all contribute to the conversation.
Each producer of corresponding RATS Conceptual Messages can assert Claims about an Attester's actual or allowed state.
The Verifier's objective is to produce a list of Claims that describe the Attester's presumed actual state.
Producers of RATS Conceptual Messages can assert contradictory assertions.
For example, a compromised Attester may produce false claims that conflict with the Reference Values provided by a Reference Value Provider (RVP).
In essence, if Evidence is not corroborated by an RVP's Claims, then the RVP's Claims are not included in the ACS.</t>
      <t>A Verifier relies on input from appraisal policy to identify relevant assertions included in the ACS.
For example, if a policy requires corroborated assertions issued by a particular RVP, then those assertions may be conveyed as Attestation Results.
The Verifier may produce new assertions as a result of an applied appraisal policy.
For example, if an appraisal procedure finds all of the components of a subsystem are configured correctly, the policy may direct the Verifier to produce new assertions, "Subsystem=X" has the Claim "TRUSTED=TRUE".
Consequently, the internal ACS structure is a reconciled conversation between several producers of RATS Conceptual Messages that has mapped each message into a consistent internal representation, has associated the identity of the corresponding RATS role with each assertion (the authority), and has applied Conceptual Message constraints to the assertion.</t>
      <t>The CoRIM data model specified in this document covers the RATS Conceptual Message types, "Reference Values" and "Endorsements".
Reference values and Endorsements are required for Verifier reconciliation, and Evidence is required for corresponding internal ACS creation as illustrated in <xref target="sec-interact-acs"/>.</t>
      <section anchor="sec-internal-rep">
        <name>Internal Representation</name>
        <t>In this document CDDL is used to specify both the CoRIM structure and to specify an internal representation for use in the appraisal procedure.
The actual internal representation of a Verifier is implementation-specific and out-of-scope of this document.
Requirements for an internal representation of Conceptual Messages are defined in <xref target="tbl-cmrr"/>, where each Conceptual Message type has a structure as depicted by the <em>Structure</em> column.
The internal representations used by this document are defined in <xref target="sec-ir-cm"/>.</t>
      </section>
      <section anchor="sec-interact-acs">
        <name>Interacting with an ACS</name>
        <t>Conceptual Messages interact with an ACS by specifying criteria that should be met by the ACS and by presenting the assertions that should be added to the ACS if the criteria are satisfied.
Internal representations of Conceptual Messages, ACS, and Attestation Results Set (ARS) SHOULD satisfy the following requirements for Verifier reconciliation and appraisal processing:</t>
        <table anchor="tbl-cmrr">
          <name>Conceptual Message Representation Requirements</name>
          <thead>
            <tr>
              <th align="left">CM Type</th>
              <th align="left">Structure</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Evidence</td>
              <td align="left">List of Evidence claims</td>
              <td align="left">If the Attester is authenticated, add Evidence claims to the ACS with Attester authority</td>
            </tr>
            <tr>
              <td align="left">Reference Values</td>
              <td align="left">List of Reference Values claims</td>
              <td align="left">If a reference value in a CoRIM matches claims in the ACS, then the authority of the CoRIM issuer is added to those claims.</td>
            </tr>
            <tr>
              <td align="left">Endorsements</td>
              <td align="left">List of expected actual state claims, List of Endorsed Values claims</td>
              <td align="left">If the list of expected claims are in the ACS, then add the list of Endorsed Values claims to the ACS with Endorser authority</td>
            </tr>
            <tr>
              <td align="left">Series Endorsements</td>
              <td align="left">List of expected actual state claims and a series of selection-addition tuples</td>
              <td align="left">If the expected claims are in the ACS, and if the series selection condition is satisfied, then add the additional claims to the ACS with Endorser authority. See <xref target="sec-ir-end-val"/></td>
            </tr>
            <tr>
              <td align="left">Verifier</td>
              <td align="left">List of expected actual state claims, List of Verifier-generated claims</td>
              <td align="left">If the list of expected claims are in the ACS, then add the list of Verifier-generated claims to the ACS with Verifier authority</td>
            </tr>
            <tr>
              <td align="left">Policy</td>
              <td align="left">List of expected actual state claims, List of Policy-generated claims</td>
              <td align="left">If the list of expected claims are in the ACS, then add the list of Policy-generated claims to the ACS with Policy Owner authority</td>
            </tr>
            <tr>
              <td align="left">Attestation Results</td>
              <td align="left">List of expected actual state claims, List of expected Attestation Results claims</td>
              <td align="left">If the list of expected claims are in the ACS, then copy the list of Attestation Results claims into the ARS. See <xref target="sec-ir-ars"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-quantize">
        <name>Quantizing Inputs</name>
        <t><cref anchor="tracked-at">Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/242</t>
      </section>
    </section>
    <section anchor="sec-type-conv">
      <name>Typographical Conventions for CDDL</name>
      <t>The CDDL definitions in this document follows the naming conventions illustrated in <xref target="tbl-typography"/>.</t>
      <table anchor="tbl-typography">
        <name>Type Traits and Typographical Conventions</name>
        <thead>
          <tr>
            <th align="left">Type trait</th>
            <th align="left">Example</th>
            <th align="left">Typographical convention</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">extensible type choice</td>
            <td align="left">
              <tt>int / text / ...</tt></td>
            <td align="left">
              <tt>$</tt>NAME<tt>-type-choice</tt></td>
          </tr>
          <tr>
            <td align="left">closed type choice</td>
            <td align="left">
              <tt>int / text</tt></td>
            <td align="left">NAME<tt>-type-choice</tt></td>
          </tr>
          <tr>
            <td align="left">group choice</td>
            <td align="left">
              <tt>( 1 =&gt; int // 2 =&gt; text )</tt></td>
            <td align="left">
              <tt>$$</tt>NAME<tt>-group-choice</tt></td>
          </tr>
          <tr>
            <td align="left">group</td>
            <td align="left">
              <tt>( 1 =&gt; int, 2 =&gt; text )</tt></td>
            <td align="left">NAME<tt>-group</tt></td>
          </tr>
          <tr>
            <td align="left">type</td>
            <td align="left">
              <tt>int</tt></td>
            <td align="left">NAME<tt>-type</tt></td>
          </tr>
          <tr>
            <td align="left">tagged type</td>
            <td align="left">
              <tt>#6.123(int)</tt></td>
            <td align="left">
              <tt>tagged-</tt>NAME<tt>-type</tt></td>
          </tr>
          <tr>
            <td align="left">map</td>
            <td align="left">
              <tt>{ 1 =&gt; int, 2 =&gt; text }</tt></td>
            <td align="left">NAME-<tt>map</tt></td>
          </tr>
          <tr>
            <td align="left">flags</td>
            <td align="left">
              <tt>&amp;( a: 1, b: 2 )</tt></td>
            <td align="left">NAME-<tt>flags</tt></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="sec-corim">
      <name>Concise Reference Integrity Manifest (CoRIM)</name>
      <t>A CoRIM is a collection of tags and related metadata in a concise CBOR <xref target="STD94"/> encoding.
A CoRIM can be digitally signed with a COSE <xref target="STD96"/> signature.
A tag is a structured, machine-readable data format used to uniquely identify, describe, and manage modules or components of a system.</t>
      <t>Tags can be of different types:</t>
      <ul spacing="normal">
        <li>
          <t>Concise Module ID (CoMID) tags (<xref target="sec-comid"/>) contain metadata and claims about the hardware and firmware modules.</t>
        </li>
        <li>
          <t>Concise Software ID (CoSWID) tags (<xref target="RFC9393"/>) are used to identify, describe and manage software components.</t>
        </li>
        <li>
          <t>Concise Tag List (CoTL) tags (<xref target="sec-cotl"/>) contain the list of CoMID and CoSWID tags that the Verifier should consider as "active" at a certain point in time.</t>
        </li>
      </ul>
      <t>CoRIM allows for new types of tags to be added in future specifications.
For example, Concise Trust Anchor Stores (CoTS) (<xref target="I-D.ietf-rats-concise-ta-stores"/>) is currently being defined as a standard CoRIM extension.</t>
      <t>Each CoRIM contains a unique identifier to distinguish a CoRIM from other CoRIMs.</t>
      <t>CoRIM can also carry the following optional metadata:</t>
      <ul spacing="normal">
        <li>
          <t>A locator, which allows discovery of possibly related RIMs.</t>
        </li>
        <li>
          <t>A profile identifier, which is used to interpret the information contained in the enclosed tags.
A profile allows the base CoRIM CDDL definition to be customized to fit a specific Attester by augmenting the base CDDL data definition via the specified extension points or by constraining types defined.
A profile MUST NOT change the base CoRIM CDDL definition's semantics, which includes not changing or overloading names and numbers registered at IANA registries used by this document.
For more detail, see <xref target="sec-corim-profile-types"/>.</t>
        </li>
        <li>
          <t>A validity period, which indicates the time period for which the CoRIM contents are valid.</t>
        </li>
        <li>
          <t>Information about the supply chain entities responsible for the contents of the CoRIM and their associated roles.</t>
        </li>
      </ul>
      <t>A CoRIM can be signed (<xref target="sec-corim-signed"/>) using COSE Sign1 to provide end-to-end security to the CoRIM contents.
When CoRIM is signed, the protected header carries further identifying information about the CoRIM signer.
Alternatively, CoRIM can be encoded as a #6.501 CBOR-tagged payload (<xref target="sec-corim-map"/>) and transported over a secure channel.</t>
      <t>The following CDDL describes the top-level CoRIM.</t>
      <sourcecode type="cddl"><![CDATA[
corim = concise-rim-type-choice

concise-rim-type-choice /= tagged-unsigned-corim-map
concise-rim-type-choice /= signed-corim
]]></sourcecode>
      <section anchor="sec-corim-map">
        <name>CoRIM Map</name>
        <t>The CDDL specification for the <tt>corim-map</tt> is as follows and this rule and its
constraints MUST be followed when creating or validating a CoRIM map.</t>
        <sourcecode type="cddl"><![CDATA[
corim-map = {
  &(id: 0) => $corim-id-type-choice
  &(tags: 1) => [ + $concise-tag-type-choice ]
  ? &(dependent-rims: 2) => [ + corim-locator-map ]
  ? &(profile: 3) => $profile-type-choice
  ? &(rim-validity: 4) => validity-map
  ? &(entities: 5) => [ + corim-entity-map ]
  * $$corim-map-extension
}
unsigned-corim-map = corim-map
]]></sourcecode>
        <t>The following describes each child item of this map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>id</tt> (index 0): A globally unique identifier to identify a CoRIM. Described
in <xref target="sec-corim-id"/>.</t>
          </li>
          <li>
            <t><tt>tags</tt> (index 1):  An array of one or more CoMID or CoSWID tags.  Described
in <xref target="sec-corim-tags"/>.</t>
          </li>
          <li>
            <t><tt>dependent-rims</tt> (index 2): One or more services supplying additional,
possibly dependent, manifests or related files.
Described in <xref target="sec-corim-locator-map"/>.</t>
          </li>
          <li>
            <t><tt>profile</tt> (index 3): An optional profile identifier for the tags contained in
this CoRIM.  The profile MUST be understood by the CoRIM processor.  Failure
to recognize the profile identifier MUST result in the rejection of the
entire CoRIM.
See <xref target="sec-corim-profile-types"/></t>
          </li>
          <li>
            <t><tt>rim-validity</tt> (index 4): Specifies the validity period of the CoRIM.
Described in <xref target="sec-common-validity"/>.</t>
          </li>
          <li>
            <t><tt>entities</tt> (index 5): A list of entities involved in a CoRIM life-cycle.
Described in <xref target="sec-corim-entity"/>.</t>
          </li>
          <li>
            <t><tt>$$corim-map-extension</tt>: This CDDL socket is used to add new information
structures to the <tt>corim-map</tt>.
Described in <xref target="sec-iana-corim"/>.</t>
          </li>
        </ul>
        <t>A <tt>corim-map</tt> is unsigned, and its tagged form is an entrypoint for parsing a CoRIM, so it is named <tt>tagged-unsigned-corim-map</tt>.
~~~ cddl
tagged-unsigned-corim-map = #6.501(unsigned-corim-map)
~~~</t>
        <section anchor="sec-corim-id">
          <name>Identity</name>
          <t>A CoRIM Identifier uniquely identifies a CoRIM instance.
The base CDDL definition allows UUID and text identifiers.
Other types of identifiers could be defined as needed.</t>
          <sourcecode type="cddl"><![CDATA[
$corim-id-type-choice /= tstr
$corim-id-type-choice /= uuid-type
]]></sourcecode>
        </section>
        <section anchor="sec-corim-tags">
          <name>Tags</name>
          <t>A <tt>$concise-tag-type-choice</tt> is a tagged CBOR payload that carries either a
CoMID (<xref target="sec-comid"/>), a CoSWID (<xref target="RFC9393"/>), or a CoTL (<xref target="sec-cotl"/>).</t>
          <sourcecode type="cddl"><![CDATA[
$concise-tag-type-choice /= tagged-concise-swid-tag
$concise-tag-type-choice /= tagged-concise-mid-tag
$concise-tag-type-choice /= tagged-concise-tl-tag
]]></sourcecode>
        </section>
        <section anchor="sec-corim-locator-map">
          <name>Locator Map</name>
          <t>The locator map contains pointers to repositories where dependent manifests,
certificates, or other relevant information can be retrieved by the Verifier.</t>
          <sourcecode type="cddl"><![CDATA[
corim-locator-map = {
  &(href: 0) => uri / [ + uri ]
  ? &(thumbprint: 1) => digest
}
]]></sourcecode>
          <t>The following describes each child element of this type.</t>
          <ul spacing="normal">
            <li>
              <t><tt>href</tt> (index 0): a URI or array of alternative URIs identifying locations where the additional resource can be fetched.</t>
            </li>
            <li>
              <t><tt>thumbprint</tt> (index 1): expected digest of the resource referenced by <tt>href</tt>.
See sec-common-hash-entry}}.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-corim-profile-types">
          <name>Profile Types</name>
          <t>Profiling is the mechanism that allows the base CoRIM CDDL definition to be customized to fit a specific Attester.</t>
          <t>A profile defines which of the optional parts of a CoRIM are required, which are prohibited and which extension points are exercised and how.
A profile MUST NOT alter the syntax or semantics of CoRIM types defined in this document.</t>
          <t>A profile MAY constrain the values of a given CoRIM type to a subset of the values.
A profile MAY extend the set of a given CoRIM type using the defined extension points (<xref target="sec-extensibility"/>).
Exercised extension points SHOULD preserve the intent of the original semantics.</t>
          <t>CoRIM profiles SHOULD be specified in a publicly available document.</t>
          <t>A CoRIM profile can use one of the base CoRIM media type defined in <xref target="sec-mt-rim-cbor"/> with the <tt>profile</tt> parameter set to the appropriate value.
Alternatively, it MAY define and register its own media type.</t>
          <t>A profile identifier is either an OID <xref target="RFC9090"/> or a URL <xref target="STD66"/>.</t>
          <t>The profile identifier uniquely identifies a documented profile.  Any changes
to the profile, even the slightest deviation, is considered a different profile
that MUST have a different identifier.</t>
          <sourcecode type="cddl"><![CDATA[
$profile-type-choice /= uri 
$profile-type-choice /= tagged-oid-type
]]></sourcecode>
          <t>For an example profile definition, see <xref target="I-D.fdb-rats-psa-endorsements"/>.</t>
        </section>
        <section anchor="sec-corim-entity">
          <name>Entities</name>
          <t>The CoRIM Entity is an instantiation of the Entity generic (<xref target="sec-common-entity"/>) using a <tt>$corim-role-type-choice</tt>.</t>
          <t>The only role defined in this specification for a CoRIM Entity is
<tt>manifest-creator</tt>.</t>
          <t>The <tt>$$corim-entity-map-extension</tt> extension socket is empty in this
specification.</t>
          <sourcecode type="cddl"><![CDATA[
corim-entity-map =
  entity-map<$corim-role-type-choice, $$corim-entity-map-extension>

$corim-role-type-choice /= &(manifest-creator: 1)
$corim-role-type-choice /= &(manifest-signer: 2)
]]></sourcecode>
          <t>The <tt>corim-entity-map</tt> MUST NOT contain two entities with the <tt>manifest-signer</tt> role.</t>
        </section>
      </section>
      <section anchor="sec-corim-signed">
        <name>Signed CoRIM</name>
        <sourcecode type="cddl"><![CDATA[
signed-corim = #6.18(COSE-Sign1-corim)
]]></sourcecode>
        <t>Signing a CoRIM follows the procedures defined in CBOR Object Signing and
Encryption <xref target="STD96"/>. A CoRIM tag MUST be wrapped in a COSE_Sign1 structure.
The CoRIM MUST be signed by the CoRIM creator.</t>
        <t>The following CDDL specification defines a restrictive subset of COSE header
parameters that MUST be used in the protected header alongside additional
information about the CoRIM encoded in a <tt>corim-meta-map</tt> (<xref target="sec-corim-meta"/>).</t>
        <sourcecode type="cddl"><![CDATA[
COSE-Sign1-corim = [
  protected: bstr .cbor protected-corim-header-map
  unprotected: unprotected-corim-header-map
  payload: bstr .cbor tagged-unsigned-corim-map
  signature: bstr
]
]]></sourcecode>
        <t>The following describes each child element of this type.</t>
        <ul spacing="normal">
          <li>
            <t><tt>protected</tt>: A CBOR Encoded protected header which is protected by the COSE
signature. Contains information as given by Protected Header Map below.</t>
          </li>
          <li>
            <t><tt>unprotected</tt>: A COSE header that is not protected by COSE signature.</t>
          </li>
          <li>
            <t><tt>payload</tt>: A CBOR encoded tagged CoRIM.</t>
          </li>
          <li>
            <t><tt>signature</tt>: A COSE signature block which is the signature over the protected
and payload components of the signed CoRIM.</t>
          </li>
        </ul>
        <section anchor="protected-header-map">
          <name>Protected Header Map</name>
          <sourcecode type="cddl"><![CDATA[
protected-corim-header-map = {
  &(alg: 1) => int
  &(content-type: 3) => "application/rim+cbor"
  &(kid: 4) => bstr
  &(corim-meta: 8) => bstr .cbor corim-meta-map
  * cose-label => cose-value
}
]]></sourcecode>
          <t>The CoRIM protected header map uses some common COSE header parameters plus an additional <tt>corim-meta</tt> parameter.
The following describes each child item of this map.</t>
          <ul spacing="normal">
            <li>
              <t><tt>alg</tt> (index 1): An integer that identifies a signature algorithm.</t>
            </li>
            <li>
              <t><tt>content-type</tt> (index 3): A string that represents the "MIME Content type" carried in the CoRIM payload.</t>
            </li>
            <li>
              <t><tt>kid</tt> (index 4): A byte string which is a key identity pertaining to the CoRIM Issuer.</t>
            </li>
            <li>
              <t><tt>corim-meta</tt> (index 8): A map that contains metadata associated with a signed CoRIM.
Described in <xref target="sec-corim-meta"/>.</t>
            </li>
          </ul>
          <t>Additional data can be included in the COSE header map as per (<xref section="3" sectionFormat="of" target="STD96"/>).</t>
        </section>
        <section anchor="sec-corim-meta">
          <name>Meta Map</name>
          <t>The CoRIM meta map identifies the entity or entities that create and sign the CoRIM.
This ensures the consumer is able to identify credentials used to authenticate its signer.</t>
          <sourcecode type="cddl"><![CDATA[
corim-meta-map = {
  &(signer: 0) => corim-signer-map
  ? &(signature-validity: 1) => validity-map
}
]]></sourcecode>
          <t>The following describes each child item of this group.</t>
          <ul spacing="normal">
            <li>
              <t><tt>signer</tt> (index 0): Information about the entity that signs the CoRIM.
Described in <xref target="sec-corim-signer"/>.</t>
            </li>
            <li>
              <t><tt>signature-validity</tt> (index 1): Validity period for the CoRIM.
Described in <xref target="sec-common-validity"/>.</t>
            </li>
          </ul>
          <section anchor="sec-corim-signer">
            <name>Signer Map</name>
            <sourcecode type="cddl"><![CDATA[
corim-signer-map = {
  &(signer-name: 0) => $entity-name-type-choice
  ? &(signer-uri: 1) => uri
  * $$corim-signer-map-extension
}
]]></sourcecode>
            <ul spacing="normal">
              <li>
                <t><tt>signer-name</tt> (index 0): Name of the organization that performs the signer
role</t>
              </li>
              <li>
                <t><tt>signer-uri</tt> (index 1): A URI identifying the same organization</t>
              </li>
              <li>
                <t><tt>$$corim-signer-map-extension</tt>: Extension point for future expansion of the
Signer map.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="sec-corim-unprotected-header">
          <name>Unprotected CoRIM Header Map</name>
          <sourcecode type="cddl"><![CDATA[
unprotected-corim-header-map = {
  * cose-label => cose-value
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-conveyed-signer">
        <name>Signer authority of securely conveyed unsigned CoRIM</name>
        <t>An unsigned (#6.501-tagged) CoRIM may be a payload in an enveloping signed document.
The CoRIM signer authority is taken from the authenticated credential of the entity that originates the CoRIM.
A CoRIM role entry that contains the <tt>manifest-signer</tt> role MUST be added to <tt>corim-entity-map</tt>.</t>
        <t>It is out of scope of this document to specify a method of delegating the signer role in the case that an unsigned CoRIM is conveyed through multiple secured links with different notions of authenticity without end-to-end integrity protection.</t>
        <section anchor="corim-collections">
          <name>CoRIM collections</name>
          <t>Several CoRIMs may share the same signer (e.g., as collection payload in a different signed message) and use locally-resolvable references to each other, for example using a RATS Conceptual Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.
The Collection CMW type is similar to a profile in its way of restricting the shape of the CMW collection.
The Collection CMW type for a CoRIM collection SHALL be <tt>tag:{{&amp;SELF}}:corim</tt>.</t>
          <t>A COSE_Sign1-signed CoRIM Collection CMW has a similar requirement to a signed CoRIM.
The signing operation MUST include the <tt>corim-meta</tt> in the COSE_Sign1 <tt>protected-header</tt> parameter.
The <tt>corim-meta</tt> statement ensures that each CoRIM in the collection has an identified signer.
The COSE protected header can include a Collection CMW type name by using the <tt>cmwc_t</tt> content type parameter for the <tt>&amp;(content-type: 3)</tt> COSE header.</t>
          <t>If using other signing envelope formats, the CoRIM signing authority MUST be specified. For example, this can be accomplished by adding the <tt>manifest-signer</tt> role to every CoRIM, or by using a protected header analogous to <tt>corim-meta</tt>.</t>
          <sourcecode type="cddl"><![CDATA[
corim-cbor-collection = {
  "__cmwc_t" => "tag:{{&SELF}}:corim",
  + cmw-label => [TBD1, bytes .cbor tagged-corim-map]
}
cmw-label = text / int
]]></sourcecode>
          <t>The Collection CMW MAY use any label for its CoRIMs.
If there is a hierarchical structure to the CoRIM Collection CMW, the base entry point SHOULD be labeled <tt>0</tt> in CBOR or <tt>"base"</tt> in JSON.
It is RECOMMENDED to label a CoRIM with its tag-id in string format, where <tt>uuid-type</tt> string format is specified by <xref target="RFC9562"/>.
CoRIMs distributed in a CoRIM Collection CMW MAY declare their interdependence <tt>dependent-rims</tt> with local resource indicators.
It is RECOMMENDED that a CoRIM with a <tt>uuid-type</tt> tag-id be referenced with URI <tt>urn:uuid:</tt><em>tag-id-uuid-string</em>.
It is RECOMMENDED that a CoRIM with a <tt>tstr</tt> tag-id be referenced with <tt>tag:{{&amp;SELF}}:local,</tt><em>tag-id-tstr</em>.
It is RECOMMENDED for a <tt>corim-locator-map</tt> containing local URIs to afterwards list a nonzero number of reachable URLs as remote references.</t>
          <t>The following example demonstrates these recommendations for bundling CoRIMs with a common signer but have different profiles.</t>
          <sourcecode type="cbor-diag"><![CDATA[
/ cbor-collection / {
  "__cmwc_t": "tag:{{&SELF}}:corim",
  "adee8cd4-4e47-461f-b341-2aba3ae4cbda":
    / cbor-cmw / [TBD1, << / tagged-corim-map / 501({
      / id / 0: h'adee8cd44e47461fb3412aba3ae4cbda',
      / tags / 1: [/ tagged-concise-mid-tag / 506(<<{
        / tag-identity / 1: {
          / tag-id / 0: h'315cfc0208d548ee9c89906df96e7fb8'
        },
        / triples / 4: {
          / reference-triples / 0: [[
            / ref-env / {/ class / 0: {/ class-id / 0: 560(h'c0de')}},
            / ref-claims / {
              / mval / 1: {
                / profile-foo / -404:
                  h'6094685f8bb9b67daaf35707bd2c391f536a1df2ce5152c3cc'
              }}]],
          / coswid-triples / 6: [[
            {/ class / 0: {/ class-id / 0: 560(h'c0de')}},
            [h'369a6688451240b9b74905b1dd5fae9f']]]}}>>)],
      / profile / 3: "tag:example.com,2025/example-profile",
      / dependent-rims / 2: [{
        / href / 0: [
          "urn:uuid:51a5f633-71c0-45f5-855e-43e8254c1806",
          "https://example.com/369a6688451240b9b74905b1dd5fae9f.corim"
        ]}]}) >>],
  "51a5f633-71c0-45f5-855e-43e8254c1806":
    / cbor-cmw / [TBD1, << / tagged-corim-map / 501({
      / id: / 0: h'51a5f63371c045f5855e43e8254c1806',
      / tags / 1: [/ tagged-concise-swid-tag / 505(<<{
          / tag-id / 0: h'369a6688451240b9b74905b1dd5fae9f',
          / tag-version / 12: 2,
          / software-name / 1: "Gadget Firmware",
          / entity / 2: {
            / entity-name / 31: "ACME Firmware",
            / role / 33: / software-creator / 2
          },
          / profile-bar / 4294967295: {
           / profile-baz / 0: 5,
           / profile-qux / 1: h'f76e41f3462a62e8'}}>>)],
      / profile / 3: "tag:example.com,2025/software-profile"})>>]
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-comid">
      <name>Concise Module Identifier (CoMID)</name>
      <t>A CoMID tag contains information about hardware, firmware, or module composition.</t>
      <t>Each CoMID has a unique ID that is used to unambiguously identify CoMID instances when cross referencing CoMID tags, for example in typed link relations, or in a CoTL tag.</t>
      <t>A CoMID defines several types of Claims, using "triples" semantics.</t>
      <t>At a high level, a triple is a statement that links a subject to an object via a predicate.
CoMID triples typically encode assertions made by the CoRIM author about Attesting or Target Environments and their security features, for example measurements, cryptographic key material, etc.</t>
      <t>This specification defines two classes of triples, the Mandatory to Implement (MTI) and the Optional to Implement (OTI).
The MTI triples are essential to basic appraisal processing as illustrated in <xref target="RFC9334"/> and <xref target="I-D.ietf-rats-endorsements"/>.
Every CoRIM Verifier MUST implement the MTI triples.
The OTI class of triples are generally useful across profiles.
A CoRIM Verifier SHOULD implement OTI triples.
Verifiers may be constrained in various ways that may make implementation of the OTI class infeasible or unnecessary.
For example, deployment environments may have constrained resources, limited code size, or limited scope Attesters.</t>
      <t>MTI Triples:</t>
      <ul spacing="normal">
        <li>
          <t>Reference Values triples: containing Reference Values that are expected to match Evidence for a given Target Environment (<xref target="sec-comid-triple-refval"/>).</t>
        </li>
        <li>
          <t>Endorsed Values triples: containing "Endorsed Values", i.e., features about an Environment that do not appear in Evidence. Specific examples include testing or certification data pertaining to a module (<xref target="sec-comid-triple-endval"/>).</t>
        </li>
        <li>
          <t>Conditional Endorsement triples: describing one or more conditions that, once matched, result in augmenting the Attester's actual state with the supplied Endorsed Values (<xref target="sec-comid-triple-cond-endors"/>).</t>
        </li>
      </ul>
      <t>OTI Triples:</t>
      <ul spacing="normal">
        <li>
          <t>Conditional Endorsement Series triples: describing conditional endorsements that are evaluated using a special matching algorithm (<xref target="sec-comid-triple-cond-endors"/>).</t>
        </li>
        <li>
          <t>Device Identity triples: containing cryptographic credentials - for example, an IDevID - uniquely identifying a device (<xref target="sec-comid-triple-identity"/>).</t>
        </li>
        <li>
          <t>Attestation Key triples: containing cryptographic keys that are used to verify the integrity protection on the Evidence received from the Attester (<xref target="sec-comid-triple-attest-key"/>).</t>
        </li>
        <li>
          <t>Domain dependency triples: describing trust relationships between domains, i.e., collection of related environments and their measurements (<xref target="sec-comid-triple-domain-dependency"/>).</t>
        </li>
        <li>
          <t>Domain membership triples: describing topological relationships between (sub-)modules. For example, in a composite Attester comprising multiple sub-Attesters (sub-modules), this triple can be used to define the topological relationship between lead- and sub- Attester environments (<xref target="sec-comid-triple-domain-membership"/>).</t>
        </li>
        <li>
          <t>CoMID-CoSWID linking triples: associating a Target Environment with existing CoSWID Payload tags (<xref target="sec-comid-triple-coswid"/>).</t>
        </li>
      </ul>
      <t>CoMID triples are extensible (<xref target="sec-comid-triples"/>).
Triples added via the extensibility feature MUST be OTI class triples.
This document specifies profiles (see <xref target="sec-extensibility"/>).
OTI triples MAY be reclassified as MTI using a profile.
Conversely, profiles can choose not to <em>use</em> certain MTI triples.
Profiles MUST NOT reclassify MTI triples as OTI.</t>
      <section anchor="structure">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-mid-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoMID
tag:</t>
        <sourcecode type="cddl"><![CDATA[
concise-mid-tag = {
  ? &(language: 0) => text
  &(tag-identity: 1) => tag-identity-map
  ? &(entities: 2) => [ + comid-entity-map ]
  ? &(linked-tags: 3) => [ + linked-tag-map ]
  &(triples: 4) => triples-map
  * $$concise-mid-tag-extension
}
]]></sourcecode>
        <t>The following describes each member of the <tt>concise-mid-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>lang</tt> (index 0): A textual language tag that conforms with IANA "Language
Subtag Registry" <xref target="IANA.language-subtag-registry"/>. The context of the specified language
applies to all sibling and descendant textual values, unless a descendant
object has defined a different language tag. Thus, a new context is
established when a descendant object redefines a new language tag.  All
textual values within a given context MUST be considered expressed in the
specified language.</t>
          </li>
          <li>
            <t><tt>tag-identity</tt> (index 1): A <tt>tag-identity-map</tt> containing unique
identification information for the CoMID.
Described in <xref target="sec-comid-tag-id"/>.</t>
          </li>
          <li>
            <t><tt>entities</tt> (index 2): Provides information about one or more organizations
responsible for producing the CoMID tag.
Described in <xref target="sec-comid-entity"/>.</t>
          </li>
          <li>
            <t><tt>linked-tags</tt> (index 3): A list of one or more <tt>linked-tag-map</tt> providing typed relationships between this and
other CoMIDs.
Described in <xref target="sec-comid-linked-tag"/>).</t>
          </li>
          <li>
            <t><tt>triples</tt> (index 4): One or more triples providing information specific to
the described module, e.g.: reference or endorsed values, cryptographic
material, or structural relationship between the described module and other
modules.
Described in <xref target="sec-comid-triples"/>.</t>
          </li>
        </ul>
        <section anchor="sec-comid-tag-id">
          <name>Tag Identity</name>
          <sourcecode type="cddl"><![CDATA[
tag-identity-map = {
  &(tag-id: 0) => $tag-id-type-choice
  ? &(tag-version: 1) => tag-version-type
}
]]></sourcecode>
          <t>The following describes each member of the <tt>tag-identity-map</tt>.</t>
          <ul spacing="normal">
            <li>
              <t><tt>tag-id</tt> (index 0): A universally unique identifier for the CoMID.
Described in <xref target="sec-tag-id"/>.</t>
            </li>
            <li>
              <t><tt>tag-version</tt> (index 1): Optional versioning information for the <tt>tag-id</tt>.
Described in <xref target="sec-tag-version"/>.</t>
            </li>
          </ul>
          <section anchor="sec-tag-id">
            <name>Tag ID</name>
            <sourcecode type="cddl"><![CDATA[
$tag-id-type-choice /= tstr
$tag-id-type-choice /= uuid-type
]]></sourcecode>
            <t>A Tag ID is either a 16-byte binary string, or a textual identifier, uniquely
referencing the CoMID. The tag identifier MUST be globally unique. Failure to
ensure global uniqueness can create ambiguity in tag use since the tag-id
serves as the global key for matching, lookups and linking. If represented as a
16-byte binary string, the identifier MUST be a valid universally unique
identifier as defined by <xref target="RFC4122"/>. There are no strict guidelines on how the
identifier is structured, but examples include a 16-byte GUID (e.g., class 4
UUID) <xref target="RFC4122"/>, or a URI <xref target="STD66"/>.</t>
          </section>
          <section anchor="sec-tag-version">
            <name>Tag Version</name>
            <sourcecode type="cddl"><![CDATA[
tag-version-type = uint .default 0
]]></sourcecode>
            <t>Tag Version is an integer value that indicates the specific release revision of
the tag.  Typically, the initial value of this field is set to 0 and the value
is increased for subsequent tags produced for the same module release.  This
value allows a CoMID tag producer to correct an incorrect tag previously
released without indicating a change to the underlying module the tag
represents. For example, the tag version could be changed to add new metadata,
to correct a broken link, to add a missing reference value, etc. When producing
a revised tag, the new tag-version value MUST be greater than the old
tag-version value.</t>
          </section>
        </section>
        <section anchor="sec-comid-entity">
          <name>Entities</name>
          <sourcecode type="cddl"><![CDATA[
comid-entity-map =
  entity-map<$comid-role-type-choice, $$comid-entity-map-extension>
]]></sourcecode>
          <t>The CoMID Entity is an instantiation of <tt>entity-map</tt> (<xref target="sec-common-entity"/>) using a <tt>$comid-role-type-choice</tt>.</t>
          <t>The <tt>$$comid-entity-map-extension</tt> extension socket is empty in this
specification.</t>
          <sourcecode type="cddl"><![CDATA[
$comid-role-type-choice /= &(tag-creator: 0)
$comid-role-type-choice /= &(creator: 1)
$comid-role-type-choice /= &(maintainer: 2)
]]></sourcecode>
          <t>The roles defined for a CoMID entity are:</t>
          <ul spacing="normal">
            <li>
              <t><tt>tag-creator</tt> (value 0): creator of the CoMID tag.</t>
            </li>
            <li>
              <t><tt>creator</tt> (value 1): original maker of the module described by the CoMID tag.</t>
            </li>
            <li>
              <t><tt>maintainer</tt> (value 2): an entity making changes to the module described by the CoMID tag.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-comid-linked-tag">
          <name>Linked Tag</name>
          <t>The linked tag map represents a typed relationship between the embedding CoMID
tag (the source) and another CoMID tag (the target).</t>
          <sourcecode type="cddl"><![CDATA[
linked-tag-map = {
  &(linked-tag-id: 0) => $tag-id-type-choice
  &(tag-rel: 1) => $tag-rel-type-choice
}
]]></sourcecode>
          <t>The following describes each member of the <tt>tag-identity-map</tt>.</t>
          <ul spacing="normal">
            <li>
              <t><tt>linked-tag-id</tt> (index 0): Unique identifier for the target tag.
See <xref target="sec-tag-id"/>.</t>
            </li>
            <li>
              <t><tt>tag-rel</tt> (index 1): the kind of relation linking the source tag to the
target identified by <tt>linked-tag-id</tt>.</t>
            </li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
$tag-rel-type-choice /= &(supplements: 0)
$tag-rel-type-choice /= &(replaces: 1)
]]></sourcecode>
          <t>The relations defined in this specification are:</t>
          <ul spacing="normal">
            <li>
              <t><tt>supplements</tt> (value 0): the source tag provides additional information about
the module described in the target tag.</t>
            </li>
            <li>
              <t><tt>replaces</tt> (value 1): the source tag corrects erroneous information
contained in the target tag.  The information in the target MUST be
disregarded.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-comid-triples">
          <name>Triples</name>
          <t>The <tt>triples-map</tt> contains all the CoMID triples broken down per category.  Not
all category need to be present but at least one category MUST be present and
contain at least one entry.</t>
          <t>In most cases, the supply chain entity that is responsible for providing a triple (i.e., Reference Values or Endorsed Values) is by default the CoRIM signer.
The signer of a triple is said to be its <em>authority</em>.
However, multiple authorities may be involved in signing triples.
See <xref target="STD96"/>.
Consequently, authority may differ for search criteria.
See <xref target="sec-measurements"/>.</t>
          <sourcecode type="cddl"><![CDATA[
triples-map = non-empty<{
  ? &(reference-triples: 0) =>
    [ + reference-triple-record ]
  ? &(endorsed-triples: 1) =>
    [ + endorsed-triple-record ]
  ? &(identity-triples: 2) =>
    [ + identity-triple-record ]
  ? &(attest-key-triples: 3) =>
    [ + attest-key-triple-record ]
  ? &(dependency-triples: 4) =>
    [ + domain-dependency-triple-record ]
  ? &(membership-triples: 5) =>
    [ + domain-membership-triple-record ]
  ? &(coswid-triples: 6) =>
    [ + coswid-triple-record ]
  ? &(conditional-endorsement-series-triples: 8) =>
    [ + conditional-endorsement-series-triple-record ]
  ? &(conditional-endorsement-triples: 10) =>
    [ + conditional-endorsement-triple-record ]
  * $$triples-map-extension
}>
]]></sourcecode>
          <t>The following describes each member of the <tt>triples-map</tt>:</t>
          <ul spacing="normal">
            <li>
              <t><tt>reference-triples</tt> (index 0): Triples containing reference values.
Described in <xref target="sec-comid-triple-refval"/>.</t>
            </li>
            <li>
              <t><tt>endorsed-triples</tt> (index 1): Triples containing endorsed values.
Described in <xref target="sec-comid-triple-endval"/>.</t>
            </li>
            <li>
              <t><tt>identity-triples</tt> (index 2): Triples containing identity credentials.
Described in <xref target="sec-comid-triple-identity"/>.</t>
            </li>
            <li>
              <t><tt>attest-key-triples</tt> (index 3): Triples containing verification keys associated with attesting environments.
Described in <xref target="sec-comid-triple-attest-key"/>.</t>
            </li>
            <li>
              <t><tt>dependency-triples</tt> (index 4): Triples describing trust relationships between domains.
Described in <xref target="sec-comid-triple-domain-dependency"/>.</t>
            </li>
            <li>
              <t><tt>membership-triples</tt> (index 5): Triples describing topological relationships between (sub-)modules.
Described in <xref target="sec-comid-triple-domain-membership"/>.</t>
            </li>
            <li>
              <t><tt>coswid-triples</tt> (index 6): Triples associating modules with existing CoSWID tags.
Described in <xref target="sec-comid-triple-coswid"/>.</t>
            </li>
            <li>
              <t><tt>conditional-endorsement-series-triples</tt> (index 8): Triples describing a series of Endorsement that are applicable based on the acceptance of a series of stateful environment records.
Described in <xref target="sec-comid-triple-cond-series"/>.</t>
            </li>
            <li>
              <t><tt>conditional-endorsement-triples</tt> (index 10): Triples describing a series of conditional Endorsements based on the acceptance of a stateful environment.
Described in <xref target="sec-comid-triple-cond-endors"/>.</t>
            </li>
          </ul>
          <section anchor="sec-environments">
            <name>Environments</name>
            <t>An <tt>environment-map</tt> may be used to represent a whole Attester, an Attesting
Environment, or a Target Environment.  The exact semantic depends on the
context (triple) in which the environment is used.</t>
            <t>An environment is named after a class, instance or group identifier (or a
combination thereof).</t>
            <t>An environment MUST be globally unique.
The combination of values within <tt>class-map</tt> MUST combine to form a globally unique identifier.</t>
            <sourcecode type="cddl"><![CDATA[
environment-map = non-empty<{
  ? &(class: 0) => class-map
  ? &(instance: 1) => $instance-id-type-choice
  ? &(group: 2) => $group-id-type-choice
}>
]]></sourcecode>
            <t>The following describes each member of the <tt>environment-map</tt>:</t>
            <ul spacing="normal">
              <li>
                <t><tt>class</tt> (index 0): Contains "class" attributes associated with the module.
Described in <xref target="sec-comid-class"/>.</t>
              </li>
              <li>
                <t><tt>instance</tt> (index 1): Contains a unique identifier of a module's instance.
Described in <xref target="sec-comid-instance"/>.</t>
              </li>
              <li>
                <t><tt>group</tt> (index 2): identifier for a group of instances, e.g., if an
anonymization scheme is used.
Described in <xref target="sec-comid-group"/>.</t>
              </li>
            </ul>
            <section anchor="sec-comid-class">
              <name>Environment Class</name>
              <t>The Class name consists of class attributes that distinguish the class of
environment from other classes. The class attributes include class-id, vendor,
model, layer, and index. The CoMID author determines which attributes are
needed.</t>
              <sourcecode type="cddl"><![CDATA[
class-map = non-empty<{
  ? &(class-id: 0) => $class-id-type-choice
  ? &(vendor: 1) => tstr
  ? &(model: 2) => tstr
  ? &(layer: 3) => uint
  ? &(index: 4) => uint
}>

$class-id-type-choice /= tagged-oid-type
$class-id-type-choice /= tagged-uuid-type
$class-id-type-choice /= tagged-bytes
]]></sourcecode>
              <t>The following describes each member of the <tt>class-map</tt>:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>class-id</tt> (index 0): Identifies the environment via a well-known identifier.
Typically, <tt>class-id</tt> is an object identifier (OID) variable-length opaque byte string (<xref target="sec-common-tagged-bytes"/>) or universally unique identifier (UUID).
Use of this attribute is preferred.</t>
                </li>
                <li>
                  <t><tt>vendor</tt> (index 1): Identifies the entity responsible for choosing values for
the other class attributes that do not already have naming authority.</t>
                </li>
                <li>
                  <t><tt>model</tt> (index 2): Describes a product, generation, and family.  If
populated, vendor MUST also be populated.</t>
                </li>
                <li>
                  <t><tt>layer</tt> (index 3): Is used to capture where in a sequence the environment
exists. For example, the order in which bootstrap code is executed may have
security relevance.</t>
                </li>
                <li>
                  <t><tt>index</tt> (index 4): Is used when there are clones (i.e., multiple instances)
of the same class of environment.  Each clone is given a different index
value to disambiguate it from the other clones. For example, given a chassis
with several network interface controllers (NIC), each NIC can be given a
different index value.</t>
                </li>
              </ul>
            </section>
            <section anchor="sec-comid-instance">
              <name>Environment Instance</name>
              <t>An <tt>instance-id</tt> is a unique value that identifies a Target Environment instance.
The identifier is reliably bound to the Target Environment.
For example, if an X.509 certificate's subject public key is unique for each instance of a target environment, the <tt>instance-id</tt> might be created from that subject public key.
See <xref section="4.1" sectionFormat="of" target="RFC5280"/>.
Alternatively, if the certificate's subject public key is large, the <tt>instance-id</tt> might be a key identifier that is a digest of that public key.
See <xref section="4.2.1.2" sectionFormat="of" target="RFC5280"/>.
The key identifier is reliably bound to the subject public key because the identifier is a digest of the key.</t>
              <t>The types defined for an instance identifier are CBOR tagged expressions of
UEID, UUID, variable-length opaque byte string (<xref target="sec-common-tagged-bytes"/>), cryptographic keys, or cryptographic key identifiers.</t>
              <sourcecode type="cddl"><![CDATA[
$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type
$instance-id-type-choice /= tagged-bytes
$instance-id-type-choice /= tagged-pkix-base64-key-type
$instance-id-type-choice /= tagged-pkix-base64-cert-type
$instance-id-type-choice /= tagged-cose-key-type
$instance-id-type-choice /= tagged-key-thumbprint-type
$instance-id-type-choice /= tagged-cert-thumbprint-type
$instance-id-type-choice /= tagged-pkix-asn1der-cert-type
]]></sourcecode>
            </section>
            <section anchor="sec-comid-group">
              <name> Environment Group</name>
              <t>A group carries a unique identifier that is reliably bound to a group of
Attesters, for example when a number of Attester are hidden in the same
anonymity set.</t>
              <t>The types defined for a group identified are UUID and variable-length opaque byte string (<xref target="sec-common-tagged-bytes"/>).</t>
              <sourcecode type="cddl"><![CDATA[
$group-id-type-choice /= tagged-uuid-type
$group-id-type-choice /= tagged-bytes
]]></sourcecode>
            </section>
            <section anchor="sec-measurements">
              <name>Measurements</name>
              <t>Measurements can be of a variety of things including software, firmware,
configuration files, read-only memory, fuses, IO ring configuration, partial
reconfiguration regions, etc. Measurements comprise raw values, digests, or
status information.</t>
              <t>An environment has one or more measurable elements. Each element can have a
dedicated measurement or multiple elements could be combined into a single
measurement. Measurements can have class, instance or group scope.  This is
typically determined by the triple's environment.</t>
              <t>Class measurements apply generally to all the Attesters in a given class.</t>
              <t>Instance measurements apply to a specific Attester instance.  Environments
identified by a class identifier have measurements that are common to the
class. Environments identified by an instance identifier have measurements that
are specific to that instance.</t>
              <t>An environment may have multiple measured elements.
Measured elements are distinguished from each other by measurement keys.
Measurement keys may be used to disambiguate measurements of the same type originating from different elements.</t>
              <t>Triples that have search conditions may specify authority as matching criteria by populating <tt>authorized-by</tt>.</t>
              <sourcecode type="cddl"><![CDATA[
measurement-map = {
  ? &(mkey: 0) => $measured-element-type-choice
  &(mval: 1) => measurement-values-map
  ? &(authorized-by: 2) => [ + $crypto-key-type-choice ]
}
]]></sourcecode>
              <t>The following describes each member of the <tt>measurement-map</tt>:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>mkey</tt> (index 0): An optional measurement key.
 Described in <xref target="sec-comid-mkey"/>.
 A <tt>measurement-map</tt> without an <tt>mkey</tt> is said to be anonymous.</t>
                </li>
                <li>
                  <t><tt>mval</tt> (index 1): The measurements associated with the environment.
 Described in <xref target="sec-comid-mval"/>.</t>
                </li>
                <li>
                  <t><tt>authorized-by</tt> (index 2): The cryptographic identity of the entity (individual or organization) that is
 the designated authority for measurement Claims.
 For example, the signer of a CoMID triple.
 See <xref target="sec-crypto-keys"/>.
 An entity is authoritative when it makes Claims that are inside its area of
competence.</t>
                </li>
              </ul>
              <section anchor="sec-comid-mkey">
                <name>Measurement Keys</name>
                <t>Measurement keys are locally scoped extensible identifiers.
The initial types defined are OID, UUID, uint, and tstr.
<tt>mkey</tt> may be necessary to disambiguate multiple measurements of the same type or to distinguish multiple measured elements within the same environment.
A single anonymous <tt>measurement-map</tt> is allowed within the same environment.
Two or more measurement-map entries within the same environment MUST populate <tt>mkey</tt>.</t>
                <sourcecode type="cddl"><![CDATA[
$measured-element-type-choice /= tagged-oid-type
$measured-element-type-choice /= tagged-uuid-type
$measured-element-type-choice /= uint
$measured-element-type-choice /= tstr
]]></sourcecode>
              </section>
              <section anchor="sec-comid-mval">
                <name>Measurement Values</name>
                <t>A <tt>measurement-values-map</tt> contains measurements associated with a certain
environment. Depending on the context (triple) in which they are found,
elements in a <tt>measurement-values-map</tt> can represent class or instance
measurements. Note that some of the elements have instance scope only.</t>
                <t>Measurement values may support use cases beyond Verifier appraisal.
Typically, a Relying Party determines if additional processing is desirable
and whether the processing is applied by the Verifier or the Relying Party.</t>
                <sourcecode type="cddl"><![CDATA[
measurement-values-map = non-empty<{
  ? &(version: 0) => version-map
  ? &(svn: 1) => svn-type-choice
  ? &(digests: 2) => digests-type
  ? &(flags: 3) => flags-map
  ? (
      &(raw-value: 4) => $raw-value-type-choice,
      ? &(raw-value-mask-DEPRECATED: 5) => raw-value-mask-type
    )
  ? &(mac-addr: 6) => mac-addr-type-choice
  ? &(ip-addr: 7) =>  ip-addr-type-choice
  ? &(serial-number: 8) => text
  ? &(ueid: 9) => ueid-type
  ? &(uuid: 10) => uuid-type
  ? &(name: 11) => text
  ? &(cryptokeys: 13) => [ + $crypto-key-type-choice ]
  ? &(integrity-registers: 14) => integrity-registers
  ? &(int-range: 15) => int-range-type-choice
  * $$measurement-values-map-extension
}>
]]></sourcecode>
                <t>The following describes each member of the <tt>measurement-values-map</tt>.</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>version</tt> (index 0): Typically changes whenever the measured environment is updated.
Described in <xref target="sec-comid-version"/>.</t>
                  </li>
                  <li>
                    <t><tt>svn</tt> (index 1): The security version number typically changes only when a security relevant change is made to the measured environment.
Described in <xref target="sec-comid-svn"/>.</t>
                  </li>
                  <li>
                    <t><tt>digests</tt> (index 2): Contains the digest(s) of the measured environment
together with the respective hash algorithm used in the process.
It uses the <tt>digests-type</tt>.
Described in <xref target="sec-common-hash-entry"/>.</t>
                  </li>
                  <li>
                    <t><tt>flags</tt> (index 3): Describes security relevant operational modes.
For example, whether the environment is in a debug mode, recovery mode, not fully
configured, not secure, not replay protected or not integrity protected.
The <tt>flags</tt> field indicates which operational modes are currently associated with measured environment.
Described in <xref target="sec-comid-flags"/>.</t>
                  </li>
                  <li>
                    <t><tt>raw-value</tt> (index 4): Contains the actual (not hashed) value of the element.
The vendor determines the encoding of <tt>raw-value</tt>.
When used for comparison, the <tt>tagged-masked-raw-value</tt> variant includes a mask indicating which bits in the value to compare.
Described in <xref target="sec-comid-raw-value-types"/></t>
                  </li>
                  <li>
                    <t><tt>raw-value-mask-DEPRECATED</tt> (index 5): Is an obsolete method of indicating which bits in a raw value to compare. New CoMID files should use the <tt>tagged-masked-raw-value</tt> on index 4 instead of using index 5.</t>
                  </li>
                  <li>
                    <t><tt>mac-addr</tt> (index 6): A EUI-48 or EUI-64 MAC address associated with the measured environment.
Described in <xref target="sec-comid-address-types"/>.</t>
                  </li>
                  <li>
                    <t><tt>ip-addr</tt> (index 7): An IPv4 or IPv6 address associated with the measured environment.
Described in <xref target="sec-comid-address-types"/>.</t>
                  </li>
                  <li>
                    <t><tt>serial-number</tt> (index 8): A text string representing the product serial number.</t>
                  </li>
                  <li>
                    <t><tt>ueid</tt> (index 9): UEID associated with the measured environment.
Described in <xref target="sec-common-ueid"/>.</t>
                  </li>
                  <li>
                    <t><tt>uuid</tt> (index 10): UUID associated with the measured environment.
Described in <xref target="sec-common-uuid"/>.</t>
                  </li>
                  <li>
                    <t><tt>name</tt> (index 11): a name associated with the measured environment.</t>
                  </li>
                  <li>
                    <t><tt>cryptokeys</tt> (index 13): identifies cryptographic keys that are protected by the Target Environment
See <xref target="sec-crypto-keys"/> for the supported formats.
An Attesting Environment determines that keys are protected as part of Claims collection.
Appraisal verifies that, for each value in <tt>cryptokeys</tt>, there is a matching Reference Value entry.
Matching is described in <xref target="sec-cryptokeys-matching"/>.</t>
                  </li>
                  <li>
                    <t><tt>integrity-registers</tt> (index 14): A group of one or more named measurements associated with the environment.  Described in <xref target="sec-comid-integrity-registers"/>.</t>
                  </li>
                </ul>
              </section>
              <section anchor="sec-comid-version">
                <name>Version</name>
                <t>A <tt>version-map</tt> contains details about the versioning of a measured
environment.</t>
                <sourcecode type="cddl"><![CDATA[
version-map = {
  &(version: 0) => text
  ? &(version-scheme: 1) => $version-scheme
}
]]></sourcecode>
                <t>The following describes each member of the <tt>version-map</tt>:</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>version</tt> (index 0): the version string</t>
                  </li>
                  <li>
                    <t><tt>version-scheme</tt> (index 1): an optional indicator of the versioning
convention used in the <tt>version</tt> attribute.
Defined in <xref section="4.1" sectionFormat="of" target="RFC9393"/>.
The CDDL is copied below for convenience.</t>
                  </li>
                </ul>
                <sourcecode type="cddl"><![CDATA[
$version-scheme /= &(multipartnumeric: 1)
$version-scheme /= &(multipartnumeric-suffix: 2)
$version-scheme /= &(alphanumeric: 3)
$version-scheme /= &(decimal: 4)
$version-scheme /= &(semver: 16384)
$version-scheme /= int / text
]]></sourcecode>
              </section>
              <section anchor="sec-comid-svn">
                <name>Security Version Number</name>
                <t>The following details the security version number (<tt>svn</tt>) and the minimum security version number (<tt>min-svn</tt>) statements.
A security version number is used to track changes to an object (e.g., a secure enclave, a boot loader executable, a configuration file, etc.) that are security relevant.
Rollback of a security relevant change is considered to be an attack vector; as such, security version numbers cannot be decremented.
If a security relevant flaw is discovered in the Target Environment and is subsequently fixed, the <tt>svn</tt> value is typically incremented.</t>
                <t>There may be several revisions to a Target Environment that are in use at the same time.
If there are multiple revisions with different <tt>svn</tt> values, the revision with a lower <tt>svn</tt> value may
or may not be in a security critical condition. The Endorser may provide a minimum security version number
using <tt>min-svn</tt> to specify the lowest <tt>svn</tt> value that is acceptable.
<tt>svn</tt> values that are equal to or greater than <tt>min-svn</tt> do not signal a security critical condition.
<tt>svn</tt> values that are below <tt>min-svn</tt> are in a security critical condition that is unsafe for normal use.</t>
                <t>The <tt>svn-type-choice</tt> measurement consists of a <tt>tagged-svn</tt> or <tt>tagged-min-svn</tt> value.
The <tt>tagged-svn</tt> and <tt>tagged-min-svn</tt> tags are CBOR tags with the values <tt>#6.552</tt> and <tt>#6.553</tt> respectively.</t>
                <sourcecode type="cddl"><![CDATA[
svn-type = uint
svn = svn-type
min-svn = svn-type
tagged-svn = #6.552(svn)
tagged-min-svn = #6.553(min-svn)
svn-type-choice = svn / tagged-svn / tagged-min-svn
]]></sourcecode>
              </section>
              <section anchor="sec-comid-flags">
                <name>Flags</name>
                <t>The <tt>flags-map</tt> measurement describes a number of boolean operational modes.
If a <tt>flags-map</tt> value is not specified, then the operational mode is unknown.</t>
                <sourcecode type="cddl"><![CDATA[
flags-map = {
  ? &(is-configured: 0) => bool
  ? &(is-secure: 1) => bool
  ? &(is-recovery: 2) => bool
  ? &(is-debug: 3) => bool
  ? &(is-replay-protected: 4) => bool
  ? &(is-integrity-protected: 5) => bool
  ? &(is-runtime-meas: 6) => bool
  ? &(is-immutable: 7) => bool
  ? &(is-tcb: 8) => bool
  ? &(is-confidentiality-protected: 9) => bool
  * $$flags-map-extension
}
]]></sourcecode>
                <t>The following describes each member of the <tt>flags-map</tt>:</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>is-configured</tt> (index 0): If the flag is true, the measured environment is fully configured for normal operation.</t>
                  </li>
                  <li>
                    <t><tt>is-secure</tt> (index 1): If the flag is true, the measured environment's configurable
security settings are fully enabled.</t>
                  </li>
                  <li>
                    <t><tt>is-recovery</tt> (index 2): If the flag is true, the measured environment is in recovery
mode.</t>
                  </li>
                  <li>
                    <t><tt>is-debug</tt> (index 3): If the flag is true, the measured environment is in a debug enabled
mode.</t>
                  </li>
                  <li>
                    <t><tt>is-replay-protected</tt> (index 4): If the flag is true, the measured environment is
protected from replay by a previous image that differs from the current image.</t>
                  </li>
                  <li>
                    <t><tt>is-integrity-protected</tt> (index 5): If the flag is true, the measured environment is
protected from unauthorized update.</t>
                  </li>
                  <li>
                    <t><tt>is-runtime-meas</tt> (index 6): If the flag is true, the measured environment is measured
after being loaded into memory.</t>
                  </li>
                  <li>
                    <t><tt>is-immutable</tt> (index 7): If the flag is true, the measured environment is immutable.</t>
                  </li>
                  <li>
                    <t><tt>is-tcb</tt> (index 8): If the flag is true, the measured environment is a trusted
computing base.</t>
                  </li>
                  <li>
                    <t><tt>is-confidentiality-protected</tt> (index 9): If the flag is true, the measured environment
is confidentiality protected. For example, if the measured environment consists of memory,
the sensitive values in memory are encrypted.</t>
                  </li>
                </ul>
              </section>
              <section anchor="sec-comid-raw-value-types">
                <name>Raw Values Types</name>
                <t>Raw value measurements are typically vendor defined values that are checked by Verifiers
for consistency only, since the security relevance is opaque to Verifiers.</t>
                <t>A <tt>raw-value</tt> measurement, or an Endorsement, is a tagged value of type <tt>bytes</tt>.
This specification defines tag #6.560.
The default raw value measurement is of type <tt>tagged-bytes</tt> (<xref target="sec-common-tagged-bytes"/>).</t>
                <t>Additional value types can be added to <tt>$raw-value-type-choice</tt>. These additional values MUST be CBOR tagged <tt>bstr</tt>s.
Constraining all raw value types to be <tt>bstr</tt> lets Verifiers compare raw values without understanding their contents.</t>
                <t>A raw value intended for comparison can include a mask value, which selects the bits to compare during appraisal.
The mask is applied by the Verifier as part of appraisal.
Only the raw value bits with corresponding TRUE mask bits are compared during appraisal.</t>
                <t>The <tt>raw-value-mask-DEPRECATED</tt> in <tt>measurement-values-map</tt> is deprecated, but retained for backwards compatibility.
This code point may be removed in a future revision of this specification.</t>
                <sourcecode type="cddl"><![CDATA[
$raw-value-type-choice /= tagged-bytes
$raw-value-type-choice /= tagged-masked-raw-value

raw-value-mask-type = bytes
tagged-masked-raw-value = #6.563([
  value: bytes
  mask : bytes
])
]]></sourcecode>
              </section>
              <section anchor="sec-comid-address-types">
                <name>Address Types</name>
                <t>The types or associating addressing information to a measured environment are:</t>
                <sourcecode type="cddl"><![CDATA[
ip-addr-type-choice = ip4-addr-type / ip6-addr-type
ip4-addr-type = bytes .size 4
ip6-addr-type = bytes .size 16

mac-addr-type-choice = eui48-addr-type / eui64-addr-type
eui48-addr-type = bytes .size 6
eui64-addr-type = bytes .size 8
]]></sourcecode>
              </section>
            </section>
            <section anchor="sec-crypto-keys">
              <name>Crypto Keys</name>
              <t>A cryptographic key can be one of the following formats:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>tagged-pkix-base64-key-type</tt>: PEM encoded SubjectPublicKeyInfo.
Defined in <xref section="13" sectionFormat="of" target="RFC7468"/>.</t>
                </li>
                <li>
                  <t><tt>tagged-pkix-base64-cert-type</tt>: PEM encoded X.509 public key certificate.
Defined in <xref section="5" sectionFormat="of" target="RFC7468"/>.</t>
                </li>
                <li>
                  <t><tt>tagged-pkix-base64-cert-path-type</tt>: X.509 certificate chain created by the
concatenation of as many PEM encoded X.509 certificates as needed.  The
certificates MUST be concatenated in order so that each directly certifies
the one preceding.</t>
                </li>
                <li>
                  <t><tt>tagged-cose-key-type</tt>: CBOR encoded COSE_Key or COSE_KeySet.
Defined in <xref section="7" sectionFormat="of" target="STD96"/>.</t>
                </li>
                <li>
                  <t><tt>tagged-pkix-asn1der-cert-type</tt>: a <tt>bstr</tt> of ASN.1 DER encoded X.509 public key certificate.
Defined in <xref section="4" sectionFormat="of" target="RFC5280"/>.</t>
                </li>
              </ul>
              <t>A cryptographic key digest can be one of the following formats:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>tagged-key-thumbprint-type</tt>: a <tt>digest</tt> of a raw public key.
The digest value may be used to find the public key if contained in a lookup table.</t>
                </li>
                <li>
                  <t><tt>tagged-cert-thumbprint-type</tt>: a <tt>digest</tt> of a certificate.
The digest value may be used to find the certificate if contained in a lookup table.</t>
                </li>
                <li>
                  <t><tt>tagged-cert-path-thumbprint-type</tt>: a <tt>digest</tt> of a certification path.
The digest value may be used to find the certificate path if contained in a lookup table.</t>
                </li>
                <li>
                  <t><tt>tagged-bytes</tt>: a key identifier with no prescribed construction method.</t>
                </li>
              </ul>
              <sourcecode type="cddl"><![CDATA[
$crypto-key-type-choice /= tagged-pkix-base64-key-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-path-type
$crypto-key-type-choice /= tagged-cose-key-type
$crypto-key-type-choice /= tagged-pkix-asn1der-cert-type
$crypto-key-type-choice /= tagged-key-thumbprint-type
$crypto-key-type-choice /= tagged-cert-thumbprint-type
$crypto-key-type-choice /= tagged-cert-path-thumbprint-type
$crypto-key-type-choice /= tagged-bytes
tagged-pkix-base64-key-type = #6.554(tstr)
tagged-pkix-base64-cert-type = #6.555(tstr)
tagged-pkix-base64-cert-path-type = #6.556(tstr)
tagged-key-thumbprint-type = #6.557(digest)
tagged-cose-key-type = #6.558(COSE_Key)
tagged-cert-thumbprint-type = #6.559(digest)
tagged-cert-path-thumbprint-type = #6.561(digest)
tagged-pkix-asn1der-cert-type = #6.562(bstr)
]]></sourcecode>
            </section>
            <section anchor="sec-comid-integrity-registers">
              <name>Integrity Registers</name>
              <t>An Integrity Registers map groups together one or more measured "objects".
Each measured object has a unique identifier and one or more associated digests.
Identifiers are either unsigned integers or text strings and their type matters, e.g., unsigned integer 5 is distinct from the text string "5".
The digests use <tt>digests-type</tt> semantics (<xref target="sec-common-hash-entry"/>).</t>
              <sourcecode type="cddl"><![CDATA[
integrity-register-id-type-choice = uint / text

integrity-registers = {
  + integrity-register-id-type-choice => digests-type
}
]]></sourcecode>
              <t>All the measured objects in an Integrity Registers map are explicitly named and the order in which they appear in the map is irrelevant.
Any digests associated with a measured object represent an acceptable state for the object.
Therefore, if multiple digests are provided, the acceptable state is their cross-product.
For example, given the following Integrity Registers:</t>
              <sourcecode type="cbor-diag"><![CDATA[
{
  0: [ [ 0, h'00' ] ],
  1: [ [ 0, h'11' ], [ 1, h'12' ] ]
}
]]></sourcecode>
              <t>then both</t>
              <sourcecode type="cbor-diag"><![CDATA[
{
  0: [ 0, h'00' ],
  1: [ 0, h'11' ]
}
]]></sourcecode>
              <t>and</t>
              <sourcecode type="cbor-diag"><![CDATA[
{
  0: [ 0, h'00' ],
  1: [ 1, h'12' ]
}
]]></sourcecode>
              <t>are acceptable states.</t>
              <t>Integrity Registers can be used to model the PCRs in a TPM or vTPM, in which case the identifier is the register index, or other kinds of vendor-specific measured objects.</t>
            </section>
            <section anchor="sec-comid-int-range">
              <name>Int Range</name>
              <t>An int range describes an integer value that can be compared with linear order in the target environment.
An int range is represented with either major type 0 or major type 1 ints.</t>
              <sourcecode type="cddl"><![CDATA[
int-range-type-choice = int / tagged-int-range
int-range = [min: int / negative-inf, max: int / positive-inf]
tagged-int-range = #6.564(int-range)
positive-inf = null
negative-inf = null
]]></sourcecode>
              <t>The signed integer range representation is an inclusive range unless either <tt>min</tt> or <tt>max</tt> are infinite as represented by <tt>null</tt>, in which case, each infinity is necessarily exclusive.</t>
            </section>
          </section>
          <section anchor="sec-comid-triple-refval">
            <name>Reference Values Triple</name>
            <t>A Reference Values Triple provides reference measurements or reference claims pertaining to a Target Environment.
For a Reference Value triple, the subject identifies a Target Environment, the object contains reference measurements associated to one or more measured elements of the Environment, and the predicate asserts that these are expected (i.e., reference) measurements for the Target Environment.</t>
            <t>The Reference Values Triple has the following structure:</t>
            <sourcecode type="cddl"><![CDATA[
reference-triple-record = [
  ref-env: environment-map
  ref-claims: [ + measurement-map ]
]
]]></sourcecode>
            <t>The <tt>reference-triple-record</tt> has the following parameters:</t>
            <ul spacing="normal">
              <li>
                <t><tt>ref-env</tt>: Identifies the Target Environment</t>
              </li>
              <li>
                <t><tt>ref-claims</tt>: One or more measurement claims for the Target Environment</t>
              </li>
            </ul>
            <t>To process <tt>reference-triple-record</tt> both the <tt>ref-env</tt> and <tt>ref-claims</tt> criteria are compared with Evidence entries.
First <tt>ref-env</tt> is used as a search criterion to locate the Evidence environment that matches the reference environment.
Subsequently, the <tt>ref-claims</tt> from this triple are used to match against the Evidence measurements for the matched environment.
If the search criteria are satisfied, the matching entry is re-asserted, except with the Reference Value Provider's authority.
By re-asserting Evidence using the RVP's authority, the Verifier can avoid mixing Reference Values (reference state) with Evidence (actual state).
See <xref target="I-D.ietf-rats-endorsements"/>.
Re-asserted Evidence using RVP authority is said to be "corroborated".</t>
          </section>
          <section anchor="sec-comid-triple-endval">
            <name>Endorsed Values Triple</name>
            <t>An Endorsed Values triple provides additional Endorsements - i.e., claims reflecting the actual state - for an existing Target Environment.
For Endorsed Values Claims, the subject is a Target Environment, the object contains Endorsement Claims for the Environment, and the predicate defines semantics for how the object relates to the subject.</t>
            <t>The Endorsed Values Triple has the following structure:</t>
            <sourcecode type="cddl"><![CDATA[
endorsed-triple-record = [
  condition: environment-map
  endorsement: [ + measurement-map ]
]
]]></sourcecode>
            <t>The <tt>endorsed-triple-record</tt> has the following parameters:</t>
            <ul spacing="normal">
              <li>
                <t><tt>condition</tt>: Search criterion that locates an Evidence, corroborated Evidence, or Endorsements environment.</t>
              </li>
              <li>
                <t><tt>endorsement</tt>: Additional Endorsement Claims.</t>
              </li>
            </ul>
            <t>To process a <tt>endorsed-triple-record</tt> the <tt>condition</tt> is compared with existing Evidence, corroborated Evidence, and Endorsements.
If the search criterion is satisfied, the <tt>endorsement</tt> Claims are combined with the <tt>condition</tt> <tt>environment-map</tt> to form a new (actual state) entry.
The new entry is added to the existing set of entries using the Endorser's authority.</t>
          </section>
          <section anchor="sec-comid-triple-cond-endors">
            <name>Conditional Endorsement Triple</name>
            <t>A Conditional Endorsement Triple declares one or more conditions that, once matched, results in augmenting the Attester's actual state with the Endorsement Claims.
The conditions are expressed via <tt>stateful-environment-records</tt>, which match Target Environments from Evidence in certain reference state.</t>
            <t>The Conditional Endorsement Triple has the following structure:</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-triple-record = [
  conditions: [ + stateful-environment-record ]
  endorsements: [ + endorsed-triple-record ]
]

stateful-environment-record = [
  environment: environment-map,
  claims-list: [ + measurement-map ]
]
]]></sourcecode>
            <t>The <tt>conditional-endorsement-triple-record</tt> has the following parameters:</t>
            <ul spacing="normal">
              <li>
                <t><tt>conditions</tt>: Search criteria that locates Evidence, corroborated Evidence, or Endorsements.</t>
              </li>
              <li>
                <t><tt>endorsements</tt>: Additional Endorsements.</t>
              </li>
            </ul>
            <t>To process a <tt>conditional-endorsement-triple-record</tt> the <tt>conditions</tt> are compared with existing Evidence, corroborated Evidence, and Endorsements.
If the search criteria are satisfied, the <tt>endorsements</tt> entries are asserted with the Endorser's authority as new Endorsements.</t>
          </section>
          <section anchor="sec-comid-triple-cond-series">
            <name>Conditional Endorsement Series Triple</name>
            <t>The Conditional Endorsement Series Triple is used to assert endorsed values based on an initial condition match (specified in <tt>condition:</tt>) followed by a series condition match (specified in <tt>selection:</tt> inside <tt>conditional-series-record</tt>).
Every <tt>conditional-series-record</tt> selection MUST select the same mkeys where every selected mkey's corresponding set of code points represented as mval.key MUST be the same across each <tt>conditional-series-record</tt>.
For example, if a selection matches on 3 <tt>measurement-map</tt> statements; <tt>mkey</tt> is the same for all 3 statements and <tt>mval</tt> contains only A= variable-X, B= variable-Y, and C= variable-Z (exactly the set of code points A, B, and C) respectively for every <tt>conditional-series-record</tt> in the series.</t>
            <t>These restrictions ensure that evaluation order does not change the meaning of the triple during the appraisal process.
Series entries are ordered such that the most precise match is evaluated first and least precise match is evaluated last.
The first series condition that matches terminates series matching and the endorsement values are added to the Attester's actual state.</t>
            <t>The Conditional Endorsement Series Triple has the following structure:</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-series-triple-record = [
  condition: stateful-environment-record
  series: [ + conditional-series-record ]
]

conditional-series-record = [
  selection: [ + measurement-map]
  addition: [ + measurement-map ]
]
]]></sourcecode>
            <t>The <tt>conditional-endorsement-series-triple-record</tt> has the following parameters:</t>
            <ul spacing="normal">
              <li>
                <t><tt>condition</tt>: Search criteria that locates Evidence, corroborated Evidence, or Endorsements.</t>
              </li>
              <li>
                <t><tt>series</tt>: A set of selection-addition tuples.</t>
              </li>
            </ul>
            <t>The <tt>conditional-series-record</tt> has the following parameters:</t>
            <ul spacing="normal">
              <li>
                <t><tt>selection</tt>: Search criteria that locates Evidence, corroborated Evidence, or Endorsements from the <tt>condition</tt> result.</t>
              </li>
              <li>
                <t><tt>addition</tt>: Additional Endorsements if the <tt>selection</tt> criteria are satisfied.</t>
              </li>
            </ul>
            <t>To process a <tt>conditional-endorsement-series-record</tt> the <tt>conditions</tt> are compared with existing Evidence, corroborated Evidence, and Endorsements.
If the search criteria are satisfied, the <tt>series</tt> tuples are processed.</t>
            <t>The <tt>series</tt> array contains an ordered list of <tt>conditional-series-record</tt> entries.
Evaluation order begins at list position 0.</t>
            <t>For each <tt>series</tt> entry, if the <tt>selection</tt> criteria matches an entry found in the <tt>condition</tt> result, the <tt>series</tt> <tt>addition</tt> is combined with the <tt>environment-map</tt> from the <tt>condition</tt> result to form a new Endorsement entry.
The new entry is added to the existing set of Endorsements.</t>
            <t>The first <tt>series</tt> entry that successfully matches the <tt>selection</tt> criteria terminates <tt>series</tt> processing.</t>
          </section>
          <section anchor="sec-comid-triple-identity">
            <name>Device Identity Triple</name>
            <t>Device Identity triples (see <tt>identity-triples</tt> in <xref target="sec-comid-triples"/>) endorse that the keys were securely provisioned to the named Target Environment.
A single Target Environment (as identified by <tt>environment</tt> and <tt>mkey</tt>) may contain one or more cryptographic keys.
The existence of these keys is asserted in Evidence, Reference Values, or Endorsements.</t>
            <t>The device identity keys may have been used to authenticate the Attester device or may be held in reserve for later use.</t>
            <t>Device Identity triples instruct a Verifier to perform key validation checks, such as revocation, certificate path construction &amp; verification, or proof of possession.
The Verifier SHOULD verify keys contained in Device Identity triples.</t>
            <t>Additional details about how a key was provisioned or is protected may be asserted using Endorsements such as <tt>endorsed-triples</tt>.</t>
            <t>Depending on key formatting, as defined by <tt>$crypto-key-type-choice</tt>, the Verifier may take different steps to locate and verify the key.</t>
            <t>If a key has usage restrictions that limit its use to device identity challenges, the Verifier SHOULD enforce key use restrictions.</t>
            <t>Each successful verification of a key in <tt>key-list</tt> SHALL produce Endorsement Claims that are added to the Attester's Claim set.
Claims are asserted with the joint authority of the Endorser (CoRIM signer) and the Verifier.
The Verifier MAY report key verification results as part of an error reporting function.</t>
            <sourcecode type="cddl"><![CDATA[
identity-triple-record = [
  environment: environment-map
  key-list: [ + $crypto-key-type-choice ]
  ? conditions: non-empty<{
    ? &(mkey: 0) => $measured-element-type-choice,
    ? &(authorized-by: 1) => [ + $crypto-key-type-choice ] 
  }>
]
]]></sourcecode>
            <ul spacing="normal">
              <li>
                <t><tt>environment</tt>: An <tt>environment-map</tt> condition used to identify the target Evidence or Reference Value.
See <xref target="sec-environments"/>.</t>
              </li>
              <li>
                <t><tt>key-list</tt>: A list of <tt>$crypto-key-type-choice</tt> keys that identifies which keys are to be verified.
See <xref target="sec-crypto-keys"/>.</t>
              </li>
              <li>
                <t><tt>mkey</tt>: An optional <tt>$measured-element-type-choice</tt> condition used to identify the element within the target Evidence or Reference Value.
See <xref target="sec-comid-mkey"/>.</t>
              </li>
              <li>
                <t><tt>authorized-by</tt>: An optional list of <tt>$crypto-key-type-choice</tt> keys that identifies the authorities that asserted the <tt>key-list</tt> in the target Evidence or Reference Values.</t>
              </li>
            </ul>
          </section>
          <section anchor="sec-comid-triple-attest-key">
            <name>Attest Key Triple</name>
            <t>Attest Key triples (see <tt>attest-key-triples</tt> in <xref target="sec-comid-triples"/>) endorse that the keys were securely provisioned to the named Attesting Environment.
An Attesting Environment (as identified by <tt>environment</tt> and <tt>mkey</tt>) may contain one or more cryptographic keys.
The existence of these keys is asserted in Evidence, Reference Values, or Endorsements.</t>
            <t>The attestation keys may have been used to sign Evidence or may be held in reserve for later use.</t>
            <t>Attest Key triples instruct a Verifier to perform key validation checks, such as revocation, certification path construction and validation, or proof of possession.
The Verifier SHOULD verify keys contained in Attest Key triples.</t>
            <t>Additional details about how a key was provisioned or is protected may be asserted using Endorsements such as <tt>endorsed-triples</tt>.</t>
            <t>Depending on key formatting, as defined by <tt>$crypto-key-type-choice</tt>, the Verifier may take different steps to locate and verify the key.
If a key has usage restrictions that limits its use to Evidence signing (e.g., see Section 5.1.5.3 in <xref target="DICE.cert"/>).
The Verifier SHOULD enforce key use restrictions.</t>
            <t>Each successful verification of a key in <tt>key-list</tt> SHALL produce Endorsement Claims that are added to the Attester's Claim set.
Claims are asserted with the joint authority of the Endorser (CoRIM signer) and the Verifier.
The Verifier MAY report key verification results as part of an error reporting function.</t>
            <sourcecode type="cddl"><![CDATA[
attest-key-triple-record = [
  environment: environment-map
  key-list: [ + $crypto-key-type-choice ]
  ? conditions: non-empty< {
    ? &(mkey: 0) => $measured-element-type-choice,
    ? &(authorized-by: 1) => [ + $crypto-key-type-choice ]
  }>
]
]]></sourcecode>
            <t>See <xref target="sec-comid-triple-identity"/> for additional details.</t>
          </section>
          <section anchor="sec-comid-domains">
            <name>Triples for domain definitions</name>
            <t>A domain is a hierarchical description of a Composite Attester in terms of its constituent Environments and their compositional relationships.</t>
            <t>The following CDDL describes domain type.</t>
            <sourcecode type="cddl"><![CDATA[
domain-type = environment-map
]]></sourcecode>
            <t>Domain structure is defined with the following types of triples.</t>
            <section anchor="sec-comid-triple-domain-membership">
              <name>Domain Membership Triple</name>
              <t>A Domain Membership Triple (DMT) links a domain identifier to its member Environments.
The triple's subject is the domain identifier while the triple’s object lists all the member Environments within the domain.</t>
              <t>The Domain Membership Triple allows an Endorser (for example, an Integrator) to issue an authoritative statement about the composition of an Attester as a collection of Environments.
This allows a topological description of an Attester to be expressed by linking a parent Environment (e.g., a lead Attester) to its child Environments (e.g., one or more sub-Attesters).</t>
              <t>If the Verifier Appraisal policy requires Domain Membership, the Domain Membership Triple is used to match an Attester's reference composition with the actual composition represented in Evidence.</t>
              <t>Representing members of a DMT as domains enables the recursive construction of an entity's topology, such as a Composite Device (see <xref section="3.3" sectionFormat="of" target="RFC9334"/>), where multiple lower-level domains can be aggregated into a higher-level domain.</t>
              <sourcecode type="cddl"><![CDATA[
domain-membership-triple-record = [
  domain-id: domain-type
  members: [ +  domain-type ]
]
]]></sourcecode>
            </section>
            <section anchor="sec-comid-triple-domain-dependency">
              <name>Domain Dependency Triple</name>
              <t>A Domain Dependency triple defines trust dependencies between measurement sources.
The subject identifies a domain (<xref target="sec-comid-triple-domain-membership"/>) that has a predicate relationship to the object containing one or more dependent domains.
Dependency means the subject domain’s trustworthiness properties rely on the object domain(s) trustworthiness having been established before the trustworthiness properties of the subject domain exist.</t>
              <sourcecode type="cddl"><![CDATA[
domain-dependency-triple-record = [
  domain-type
  [ + domain-type ]
]
]]></sourcecode>
            </section>
          </section>
          <section anchor="sec-comid-triple-coswid">
            <name>CoMID-CoSWID Linking Triple</name>
            <t>A CoSWID triple relates reference measurements contained in one or more CoSWIDs
to a Target Environment. The subject identifies a Target Environment, the
object one or more unique tag identifiers of existing CoSWIDs, and the
predicate asserts that these contain the expected (i.e., reference)
measurements for the Target Environment.</t>
            <sourcecode type="cddl"><![CDATA[
coswid-triple-record = [
  environment-map
  [ + concise-swid-tag-id ]
]

concise-swid-tag-id = text / bstr .size 16
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sec-extensibility">
        <name>Extensibility</name>
        <t>The base CoRIM document definition is described using CDDL <xref target="RFC8610"/> that can be extended only at specific allowed points known as "extension points".</t>
        <t>The following types of extensions are supported in CoRIM.</t>
        <section anchor="map-extensions">
          <name>Map Extensions</name>
          <t>Map extensions provide extensibility support to CoRIM map structures.
CDDL map extensibility enables a CoRIM profile to extend the base CoRIM CDDL definition.
CDDL map extension points have the form <tt>($$NAME-extension)</tt> where "NAME" is the name of the map and '$$' signifies map extensibility.
Typically, map extension requires a convention for code point naming that avoids code-point reuse.
Well-known code points may be in a registry, such as CoSWID <xref target="IANA.coswid"/>.
Non-negative integers are reserved for IANA to assign meaning globally.</t>
        </section>
        <section anchor="data-type-extensions">
          <name>Data Type Extensions</name>
          <t>Data type extensibility has the form <tt>($NAME-type-choice)</tt> where "NAME" is the type name and '$' signifies type extensibility.</t>
          <t>New data type extensions SHOULD be documented to facilitate interoperability.
CoRIM profiles are best used to document vendor or industry defined extensions.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-cotl">
      <name>CoTL</name>
      <t>A Concise Tag List (CoTL) object represents the signal for the
Verifier to activate the listed tags. Verifier policy determines whether CoTLs are required.</t>
      <t>When CoTLs are required, each tag MUST be activated by a CoTL before being processed.
All the tags listed in the CoTL MUST be activated atomically. If any tag activated by a CoTL is not available to the Verifier, the entire CoTL is rejected.</t>
      <t>The number of CoTLs required in a given supply chain ecosystem is dependent on
Verifier Owner's Appraisal Policy for Evidence. Corresponding policies are often driven by the complexity and nature of the use case.</t>
      <t>If a Verifier Owner has a policy that does not require CoTL, tags within a CoRIM received by a Verifier
are activated immediately and treated valid for appraisal.</t>
      <t>There may be cases when Verifier receives CoRIMs from multiple
Reference Value providers and Endorsers. In such cases, a supplier (or other authorities, such as integrators)
may be designated to issue a single CoTL to activate all the tags submitted to the Verifier
in these CoRIMs.</t>
      <t>In a more complex case, there may be multiple authorities that issue CoTLs at different points in time.
An Appraisal Policy for Evidence may dictate how multiple CoTLs are to be processed within the Verifier.</t>
      <section anchor="structure-1">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-tl-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoTL
tag:</t>
        <sourcecode type="cddl"><![CDATA[
concise-tl-tag = {
  &(tag-identity: 0) => tag-identity-map
  &(tags-list: 1) => [ + tag-identity-map ],
  &(tl-validity: 2) => validity-map
}
]]></sourcecode>
        <t>The following describes each member of the <tt>concise-tl-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>tag-identity</tt> (index 0): A <tt>tag-identity-map</tt> containing unique
identification information for the CoTL.
Described in <xref target="sec-comid-tag-id"/>.</t>
          </li>
          <li>
            <t><tt>tags-list</tt> (index 1): A list of one or more <tt>tag-identity-maps</tt> identifying
the CoMID and CoSWID tags that constitute the "bill of material", i.e.,
a complete set of verification-related information.  The <tt>tags-list</tt> behaves
like a signaling mechanism from the supply chain (e.g., a product vendor) to
a Verifier that activates the tags in <tt>tags-list</tt> for use in the Evidence
appraisal process, and the activation is atomic. All tags listed in <tt>tags-list</tt>
MUST be activated or no tags are activated.</t>
          </li>
          <li>
            <t><tt>tl-validity</tt> (index 2): Specifies the validity period of the CoTL.
Described in <xref target="sec-common-validity"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-common-types">
      <name>Common Types</name>
      <t>The following CDDL types may be shared by CoRIM, CoMID, and CoTL.</t>
      <section anchor="sec-non-empty">
        <name>Non-Empty</name>
        <t>The <tt>non-empty</tt> generic type is used to express that a map with only optional
members MUST at least include one of the members.</t>
        <sourcecode type="cddl"><![CDATA[
non-empty<M> = (M) .and ({ + any => any })
]]></sourcecode>
      </section>
      <section anchor="sec-common-entity">
        <name>Entity</name>
        <t>The <tt>entity-map</tt> is a generic type describing an organization responsible for
the contents of a manifest. It is instantiated by supplying two parameters:</t>
        <ul spacing="normal">
          <li>
            <t>A <tt>role-type-choice</tt>, i.e., a selection of roles that entities of the
instantiated type can claim</t>
          </li>
          <li>
            <t>An <tt>extension-socket</tt>, i.e., a CDDL socket that can be used to extend
the attributes associated with entities of the instantiated type</t>
          </li>
        </ul>
        <sourcecode type="cddl"><![CDATA[
entity-map<role-type-choice, extension-socket> = {
  &(entity-name: 0) => $entity-name-type-choice
  ? &(reg-id: 1) => uri
  &(role: 2) => [ + role-type-choice ]
  * extension-socket
}

$entity-name-type-choice /= text
]]></sourcecode>
        <t>The following describes each member of the <tt>entity-map</tt>.</t>
        <ul spacing="normal">
          <li>
            <t><tt>entity-name</tt> (index 0): The name of entity which is responsible for the action(s) as defined by the role.
<tt>$entity-name-type-choice</tt> can only be text.
Other specifications can extend the <tt>$entity-name-type-choice</tt>.
See <xref target="sec-iana-comid"/>.</t>
          </li>
          <li>
            <t><tt>reg-id</tt> (index 1): A URI associated with the organization that owns the entity name.</t>
          </li>
          <li>
            <t><tt>role</tt> (index 2): A type choice defining the roles that the entity is claiming.
The role is supplied as a parameter at the time the <tt>entity-map</tt> generic is instantiated.</t>
          </li>
          <li>
            <t><tt>extension-socket</tt>: A CDDL socket used to add new information structures to the <tt>entity-map</tt>.</t>
          </li>
        </ul>
        <t>Examples of how the <tt>entity-map</tt> generic is instantiated can be found in
(<xref target="sec-corim-entity"/>) and (<xref target="sec-comid-entity"/>).</t>
      </section>
      <section anchor="sec-common-validity">
        <name>Validity</name>
        <t>A <tt>validity-map</tt> represents the time interval during which the signer
warrants that it will maintain information about the status of the signed
object (e.g., a manifest).</t>
        <t>In a <tt>validity-map</tt>, both ends of the interval are encoded as epoch-based
date/time as per <xref section="3.4.2" sectionFormat="of" target="STD94"/>.</t>
        <sourcecode type="cddl"><![CDATA[
validity-map = {
  ? &(not-before: 0) => time
  &(not-after: 1) => time
}
]]></sourcecode>
        <ul spacing="normal">
          <li>
            <t><tt>not-before</tt> (index 0): the date on which the signed manifest validity period
begins</t>
          </li>
          <li>
            <t><tt>not-after</tt> (index 1): the date on which the signed manifest validity period
ends</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-common-uuid">
        <name>UUID</name>
        <t>Used to tag a byte string as a binary UUID.
Defined in <xref section="4.1.2." sectionFormat="of" target="RFC4122"/>.</t>
        <sourcecode type="cddl"><![CDATA[
uuid-type = bytes .size 16
tagged-uuid-type = #6.37(uuid-type)
]]></sourcecode>
      </section>
      <section anchor="sec-common-ueid">
        <name>UEID</name>
        <t>Used to tag a byte string as Universal Entity ID Claim (UEID).
Defined in <xref section="4.2.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
        <sourcecode type="cddl"><![CDATA[
ueid-type = bytes .size (7..33)
tagged-ueid-type = #6.550(ueid-type)
]]></sourcecode>
      </section>
      <section anchor="sec-common-oid">
        <name>OID</name>
        <t>Used to tag a byte string as the BER encoding <xref target="X.690"/> of an absolute object
identifier <xref target="RFC9090"/>.</t>
        <sourcecode type="cddl"><![CDATA[
oid-type = bytes
tagged-oid-type = #6.111(oid-type)
]]></sourcecode>
      </section>
      <section anchor="sec-common-hash-entry">
        <name>Digest</name>
        <t>A digest represents the value of a hashing operation together with the hash algorithm used.
The type of the digest algorithm identifier can be either <tt>int</tt> or <tt>text</tt> and is interpreted according to the <xref target="IANA.named-information"/> registry.
Specifically, <tt>int</tt> values are matched against "ID" entries, <tt>text</tt> values are matched against "Hash Name String" entries.
Whenever possible, using the <tt>int</tt> encoding is RECOMMENDED.</t>
        <sourcecode type="cddl"><![CDATA[
digest = [
  alg: (int / text),
  val: bytes
]

digests-type = [ + digest ]
]]></sourcecode>
        <t>A measurement can be obtained using different hash algorithms.
A <tt>digests-type</tt> can be used to collect multiple digest values obtained by applying different hash algorithms on the same input.
Each entry in the <tt>digests-type</tt> MUST have a unique <tt>alg</tt> value.</t>
      </section>
      <section anchor="sec-common-tagged-bytes">
        <name>Tagged Bytes Type</name>
        <t>An opaque, variable-length byte string.
It can be used in different contexts: as an instance, class or group identifier in an <tt>environment-map</tt>; as a raw value measurement in a <tt>measurement-values-map</tt>.
Its semantics are defined by the context in which it is found, and by the overarching CoRIM profile.
When used as an identifier the responsible allocator entity SHOULD ensure uniqueness within the context that it is used.</t>
        <sourcecode type="cddl"><![CDATA[
tagged-bytes = #6.560(bytes)
]]></sourcecode>
      </section>
    </section>
    <section anchor="sec-appr-corim-inputs">
      <name>Appraisal of CoRIM-based Inputs</name>
      <t>Inputs to a Verifier are mapped from their external representation to an internal representation.
CoRIM defines CBOR structures and content media types for Conceptual Messages that include Endorsements and Reference Values.
CoRIM data structures may also be used by Evidence and Attestation Results that wish to describe overlapping structure.
CoRIM-based data structures define an external representation of Conceptual Messages that are mapped to an internal representation.
Appraisal processing describes both mapping transformations and Verifier reconciliation (<xref target="sec-verifier-rec"/>).
Non-CoRIM-based data structures require mapping transformation, but these are out of scope for this document.</t>
      <t>If a CoRIM profile is specified, there are a few well-defined points in the procedure where Verifier behaviour depends on the profile.
The CoRIM profile MUST provide a description of the expected Verifier behavior for each of those well-defined points.</t>
      <t>Verifier implementations MUST provide the specified information model of the ACS at the end of phase 4 as described in this specification.
They are not required to use the same internal representation or evaluation order described by this specification.</t>
      <section anchor="sec-appraisal-procedure">
        <name>Appraisal Procedure</name>
        <t>The appraisal procedure is divided into several logical phases for clarity.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Phase 1</strong>: Input Validation and Transformation</t>
          </li>
        </ul>
        <t>During Phase 1, Conceptual Message inputs are cryptographically validated, such as checking digital signatures.
Inputs are transformed from their external representations to an internal representation.
Internal representations are staged for appraisal processing, such as populating an input queue.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Phase 2</strong>: Evidence Augmentation</t>
          </li>
        </ul>
        <t>During Phase 2, Evidence inputs are added to a list that describes the Attester's actual state.
These inputs are added with the Attester's authority.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Phase 3</strong>: Reference Values Corroboration and Augmentation</t>
          </li>
        </ul>
        <t>During Phase 3, Reference Values inputs are compared with Evidence inputs.
Reference Values inputs describe possible states of Attesters.
If the actual state of the Attester is described by the possible Attester states, then the overlapping (corroborated) actual states are added to the Attester's actual state.
These inputs are added with the Reference Value Provider's authority.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Phase 4</strong>: Endorsed Values Augmentation</t>
          </li>
        </ul>
        <t>During Phase 4, Endorsed Values inputs containing conditions that describe expected Attester state are processed.
If the comparison is satisfied, then additional Claims about the Attester are added to the ACS.
These inputs are added with the Endorser's authority.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Phase 5</strong>: Verifier Augmentation</t>
          </li>
        </ul>
        <t>During Phase 5, the Verifier may perform consistency, integrity, or additional validity checks.</t>
        <t>These checks may result in additional Claims about the Attester that are added to the ACS.
These Claims are added with the Verifier's authority.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Phase 6</strong>: Policy Augmentation</t>
          </li>
        </ul>
        <t>During Phase 6, appraisal policies are processed that describe Attester states that are desirable or undesirable.
If these conditions exist, the policy may add additional Claims about the Attester, to the ACS.
These Claims are added with the policy author's authority.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Phase 7</strong>: Attestation Results Production and Transformation</t>
          </li>
        </ul>
        <t>During Phase 7, the outcome of Appraisal and the set of Attester Claims that are interesting to a Relying Party are copied from the Attester state to an output staging area.
The Claims in the output staging area and other Verifier related metadata are transformed into an external representation suitable for consumption by a Relying Party.</t>
      </section>
    </section>
    <section anchor="sec-verifier-abstraction">
      <name>Example Verifier Algorithm</name>
      <t>This document assumes that Verifier implementations may differ.
To facilitate the description of normative Verifier behavior, this document describes the internal representation for an example Verifier and demonstrates how the data is used in the appraisal phases outlined in <xref target="sec-appraisal-procedure"/>.</t>
      <t>The terms
Claim,
Environment-Claim Tuple (ECT),
Authority,
Appraisal Claims Set (ACS),
Appraisal Policy, and
Attestation Results Set (ARS)
are used with the meaning defined in <xref target="sec-glossary"/>.</t>
      <section anchor="sec-ir-cm">
        <name>Internal Representation of Conceptual Messages</name>
        <t>Conceptual Messages are Verifier input and output values such as Evidence, Reference Values, Endorsed Values, Appraisal Policy, and Attestation Results.</t>
        <t>The internal representation of Conceptual Messages, as well as the ACS (<xref target="sec-ir-acs"/>) and ARS (<xref target="sec-ir-ars"/>), are constructed from a common building block structure called Environment-Claims Tuple (ECT).</t>
        <section anchor="sec-ir-ect">
          <name>Internal structure of ECT</name>
          <t>Environment-Claims Tuples (ECT) have six attributes:</t>
          <ol spacing="normal" type="%d."><li>
              <t>Environment : Identifies the Target Environment. Environments are identified using instance, class, or group identifiers. Environments may be composed of elements, each having an element identifier (<tt>mkey</tt>).
If the Conceptual Message Type is <tt>domain-member</tt>, this field contains the domain identifier (<tt>domain-id</tt>) of the domain triple.</t>
            </li>
            <li>
              <t>Elements : Identifies the set of elements contained within a Target Environment and their trustworthiness Claims.</t>
            </li>
            <li>
              <t>Authority : Identifies the entity that issued the tuple. A certain type of key material by which the authority (and corresponding provenance) of the tuple can be determined, such as the public key of an asymmetric key pair that is associated with an authority's PKIX certificate.</t>
            </li>
            <li>
              <t>Members : Identifies the set of Environments that act as members when a Domain Membership is expressed in an ECT</t>
            </li>
            <li>
              <t>Conceptual Message Type : Identifies the type of Conceptual Message that originated the tuple.</t>
            </li>
            <li>
              <t>Profile : The profile that defines this tuple. If no profile is used, this attribute is omitted.</t>
            </li>
          </ol>
          <t>The following CDDL describes the ECT structure in more detail.</t>
          <sourcecode type="cddl"><![CDATA[
ECT = {
  ? environment: environment-map
  ? element-list: [ + element-map ]
  ? authority: [ + $crypto-key-type-choice ]
  ? members: [ + environment-map ]
  cmtype: cm-type
  ? profile: $profile-type-choice
}

element-map = {
  ? element-id: $measured-element-type-choice
  element-claims: measurement-values-map
}

cm-type =  &(
  reference-values: 0
  endorsements: 1
  evidence: 2
  attestation-results: 3
  verifier: 4
  policy: 5
  domain-member: 6
)
]]></sourcecode>
          <t>The Conceptual Message type determines which attributes are mandatory.</t>
        </section>
        <section anchor="sec-ir-ext">
          <name>Internal Representation of Cryptographic Keys</name>
          <t>The internal representation for keys use the extension slot within <tt>measurement-values-map</tt> with the <tt>intrep-keys</tt> claim that consists of a list of <tt>typed-crypto-key</tt>.
<tt>typed-crypto-key</tt> consists of a <tt>key</tt> and an optional <tt>key-type</tt>.
There are two types of keys <tt>attest-key</tt> and <tt>identity-key</tt>.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(intrep-keys: 65534) => [ + typed-crypto-key ]
)

typed-crypto-key = {
  key: $crypto-key-type-choice
  ? key-type: uint .bits key-type
}

key-type = &(
  attest-key: 0
  identity-key: 1
)

]]></sourcecode>
        </section>
        <section anchor="sec-ir-evidence">
          <name>Internal Representation of Evidence</name>
          <t>An internal representation of attestation Evidence uses the <tt>ae</tt> relation.</t>
          <sourcecode type="cddl"><![CDATA[
ae = [
  addition: [ + ECT ]
]
]]></sourcecode>
          <t>The <tt>addition</tt> is a list of ECTs with Evidence to be appraised.</t>
          <t>A Verifier may maintain multiple simultaneous sessions to different Attesters.
Each Attester has a different ACS. The Verifier ensures the Evidence inputs are associated with the correct ACS.
The <tt>addition</tt> is added to the ACS for a specific Attester.</t>
          <t><xref target="tbl-ae-ect-optionality"/> contains the requirements for the ECT fields of the Evidence tuple:</t>
          <table anchor="tbl-ae-ect-optionality">
            <name>Evidence tuple requirements</name>
            <thead>
              <tr>
                <th align="left">ECT type</th>
                <th align="left">ECT Field</th>
                <th align="left">Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">addition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-ir-ref-val">
          <name>Internal Representation of Reference Values</name>
          <t>An internal representation of Reference Values uses the <tt>rv</tt> relation, which is a list of ECTs that contains possible states and a list of ECTs that contain actual states asserted with RVP authority.</t>
          <sourcecode type="cddl"><![CDATA[
rv = [ + {
  condition: ECT
  addition: ECT
} ]
]]></sourcecode>
          <t>The <tt>rv</tt> relation is a list of condition-addition pairings where each pairing is evaluated together.
If the <tt>condition</tt> containing reference ECTs matches Evidence ECTs then the Evidence ECTs are re-asserted, but with RVP authority as contained in the <tt>addition</tt> and <tt>cmtype</tt> set to <tt>reference-values</tt>.</t>
          <t>The reference ECTs define the matching conditions that are applied to Evidence ECTs.
If the matching condition is satisfied, then the re-asserted ECTs are added to the ACS.
Refer to <xref target="sec-phase3"/> for how the <tt>rv</tt> entries are processed.</t>
          <t><xref target="tbl-rv-ect-optionality"/> contains the requirements for the ECT fields of the Reference Values tuple:</t>
          <table anchor="tbl-rv-ect-optionality">
            <name>Reference Values tuple requirements</name>
            <thead>
              <tr>
                <th align="left">ECT type</th>
                <th align="left">ECT Field</th>
                <th align="left">Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">condition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left">addition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-ir-end-val">
          <name>Internal Representation of Endorsed Values</name>
          <t>An internal representation of Endorsed Values uses the <tt>ev</tt> and <tt>evs</tt> relations, which are lists of ECTs that describe matching conditions and the additions that are added if the conditions are satisfied.</t>
          <sourcecode type="cddl"><![CDATA[
ev = [
  condition: [ + ECT ]
  addition: [ + ECT ]
]

evs = [
  condition: [ + ECT ]
  series: [ + {
    selection: [ + ECT ]
    addition: [ + ECT ]
  } ]
]
]]></sourcecode>
          <t>The <tt>ev</tt> relation compares the <tt>condition</tt> ECTs to the ACS and if all of the ECTs are found in the ACS then the <tt>addition</tt> ECTs are added to the ACS.</t>
          <t>The <tt>evs</tt> relation compares the <tt>condition</tt> ECTs to the ACS and if all of the ECTs are found in the ACS then each entry in the series list is evaluated.
The <tt>selection</tt> ECTs are compared with the ACS and if the selection criteria is satisfied, then the <tt>addition</tt> ECTs are added to the ACS and evaluation of the series ends.
If the <tt>selection</tt> criteria is not satisfied, then evaluation procedes to the next series list entry.</t>
          <t><xref target="tbl-ev-ect-optionality"/> contains the requirements for the ECT fields of the Endorsed Values and Endorsed Values Series tuples:</t>
          <table anchor="tbl-ev-ect-optionality">
            <name>Endorsed Values and Endorsed Values Series tuples requirements</name>
            <thead>
              <tr>
                <th align="left">ECT type</th>
                <th align="left">ECT Field</th>
                <th align="left">Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">condition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left">selection</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left">addition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-ir-dm">
          <name>Internal Representation of Domain Membership</name>
          <t>An internal representation of Domain Membership is expressed in a single ECT, where the domain identifier is set in the <tt>environment</tt> field of the ECT, and the domain members are expressed in the <tt>members</tt> field.
The <tt>cmtype</tt> is set to domain-member.</t>
          <sourcecode type="cddl"><![CDATA[
dm = [ + ( domain: ECT ) ]
]]></sourcecode>
          <t><xref target="tbl-dm-ect-optionality"/> contains the requirements for the ECT fields of the Domain Membership tuple:</t>
          <table anchor="tbl-dm-ect-optionality">
            <name>Domain Membership tuple requirements</name>
            <thead>
              <tr>
                <th align="left">ECT type</th>
                <th align="left">ECT Field</th>
                <th align="left">Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">domain</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">Mandatory</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-ir-policy">
          <name>Internal Representation of Policy Statements</name>
          <t>The <tt>policy</tt> relation compares the <tt>condition</tt> ECTs to the ACS.</t>
          <sourcecode type="cddl"><![CDATA[
policy = [
  condition: [ + ECT ]
  addition: [ + ECT ]
]
]]></sourcecode>
          <t>If all of the ECTs are found in the ACS then the <tt>addition</tt> ECTs are added to the ACS with the policy author's authority.</t>
          <t><xref target="tbl-policy-ect-optionality"/> contains the requirements for the ECT fields of the Policy tuple:</t>
          <table anchor="tbl-policy-ect-optionality">
            <name>Policy tuple requirements</name>
            <thead>
              <tr>
                <th align="left">ECT type</th>
                <th align="left">ECT Field</th>
                <th align="left">Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">condition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left">addition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-ir-ar">
          <name>Internal Representation of Attestation Results</name>
          <t>The <tt>ar</tt> relation compares the <tt>acs-condition</tt> to the ACS.</t>
          <sourcecode type="cddl"><![CDATA[
ar = [
  acs-condition: [ + ECT ]
  ars-addition: [ + ECT ]
]
]]></sourcecode>
          <t>If the condition is satisfied, the <tt>ars-additions</tt> are copied from the ACS to the ARS.
If any of the <tt>ars-additions</tt> are not found in the ACS then these ACS entries are not copied to the ARS.</t>
          <t><xref target="tbl-ar-ect-optionality"/> contains the requirements for the ECT fields of the Attestation Results tuple:</t>
          <table anchor="tbl-ar-ect-optionality">
            <name>Attestation Results tuple requirements</name>
            <thead>
              <tr>
                <th align="left">ECT type</th>
                <th align="left">ECT Field</th>
                <th align="left">Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">acs-condition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">n/a</td>
              </tr>
              <tr>
                <td align="left">ars-addition</td>
                <td align="left">
                  <tt>environment</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>element-list</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>authority</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>cmtype</tt></td>
                <td align="left">Mandatory</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>profile</tt></td>
                <td align="left">Optional</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>members</tt></td>
                <td align="left">Optional</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-ir-acs">
          <name>Internal Representation of Appraisal Claims Set (ACS)</name>
          <t>An ACS is a list of ECTs that describe an Attester's actual state.</t>
          <sourcecode type="cddl"><![CDATA[
ACS = [ + ECT ]
]]></sourcecode>
        </section>
        <section anchor="sec-ir-ars">
          <name>Internal Representation of Attestation Results Set (ARS)</name>
          <t>An ARS is a list of ECTs that describe ACS entries that are selected for use as Attestation Results.</t>
          <sourcecode type="cddl"><![CDATA[
ARS = [ + ECT ]
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-phase1">
        <name>Input Validation and Transformation (Phase 1)</name>
        <t>During the initialization phase, the CoRIM Appraisal Context is loaded with various conceptual message inputs such as CoMID tags (<xref target="sec-comid"/>), CoSWID tags <xref target="RFC9393"/>, CoTL tags, and cryptographic validation key material (including raw public keys, root certificates, intermediate CA certificate chains), and Concise Trust Anchor Stores (CoTS) <xref target="I-D.ietf-rats-concise-ta-stores"/>.
These objects will be utilized in the Evidence Appraisal phase that follows.
The primary goal of this phase is to ensure that all necessary information is available for subsequent processing.</t>
        <t>After context initialization, additional inputs are held back until appraisal processing has completed.</t>
        <section anchor="sec-phase1-valid">
          <name>Input Validation</name>
          <section anchor="corim-selection">
            <name>CoRIM Selection</name>
            <t>All available CoRIMs are collected.</t>
            <t>CoRIMs that are not within their validity period, or that cannot be associated with an authenticated and authorized source MUST be discarded.</t>
            <t>Any CoRIM that has been secured by a cryptographic mechanism that fails validation MUST be discarded.
An example of such a mechanism is a digital signature.</t>
            <t>Other selection criteria MAY be applied.
For example, if the Evidence format is known in advance, CoRIMs using a profile that is not understood by a Verifier can be readily discarded.</t>
            <t>Later stages will further select the CoRIMs appropriate to the Evidence Appraisal stage.</t>
          </section>
          <section anchor="tags-extraction-and-validation">
            <name>Tags Extraction and Validation</name>
            <t>The Verifier chooses tags from the selected CoRIMs - including CoMID, CoSWID, CoTL, and CoTS.</t>
            <t>The Verifier MUST discard all tags which are not syntactically and semantically valid.
Cross-referenced triples MUST be successfully resolved. An example of a cross-referenced triple is a CoMID-CoSWID linking triple.</t>
          </section>
          <section anchor="cotl-extraction">
            <name>CoTL Extraction</name>
            <t>This section is not applicable if the Verifier appraisal policy does not require CoTLs.</t>
            <t>CoTLs which are not within their validity period MUST be discarded.</t>
            <t>The Verifier processes all CoTLs that are valid at the point in time of Evidence Appraisal and activates all tags referenced therein.</t>
            <t>The Verifier MAY decide to discard some of the available and valid CoTLs depending on any locally configured authorization policies.
Such policies model the trust relationships between the Verifier Owner and the relevant suppliers, and are out of the scope of the present document.
For example, a composite device (<xref section="3.3" sectionFormat="of" target="RFC9334"/>) is likely to be fully described by multiple CoRIMs, each signed by a different supplier.
In such a case, the Verifier Owner may instruct the Verifier to discard tags activated by supplier CoTLs that are not also activated by the trusted integrator.</t>
            <t>After the Verifier has processed all CoTLs it MUST discard any tags which have not been activated by a CoTL.</t>
          </section>
        </section>
        <section anchor="sec-ev-coll">
          <name>Evidence Collection</name>
          <t>During the Evidence collection phase, the Verifier communicates with Attesters to gather Evidence.
The first part of this phase does not require any cryptographic validation.
This means that Verifiers can use untrusted code to discover Evidence sources.
Attesters are Evidence sources.</t>
          <t>Verifiers may rely on conveyance protocol specific context to identify an Evidence source, which is the Evidence input oracle for appraisal.</t>
          <t>The collected Evidence is then transformed to an internal representation, making it suitable for appraisal processing.</t>
          <section anchor="sec-crypto-validate-evidence">
            <name>Cryptographic Validation of Evidence</name>
            <t>If Evidence is cryptographically signed, its validation is applied before transforming Evidence to an internal representation.</t>
            <t>If Evidence is not cryptographically signed, the security context of the conveyance protocol that collected it is used to cryptographically validate Evidence.</t>
            <t>The way cryptographic signature validation works depends on the specific Evidence collection method used.
For example, in DICE, a proof of liveness is carried out on the final key in the certificate chain (a.k.a., the alias certificate).
If this is successful, a suitable certification path is looked up in the Appraisal Context, based on linking information obtained from the DeviceID certificate.
See Section 9.2.1 of <xref target="DICE.Layer"/>.
If a trusted root certificate is found, X.509 certificate validation is performed.</t>
            <t>As a second example, in PSA <xref target="I-D.tschofenig-rats-psa-token"/> the verification public key is looked up in the appraisal context using the <tt>ueid</tt> claim found in the PSA claims-set.
If found, COSE Sign1 verification is performed accordingly.</t>
            <t>Regardless of the specific integrity protection method used, the Verifier MUST NOT process Evidence which is not successfully validated.</t>
            <ul empty="true">
              <li>
                <t>If a CoRIM profile is supplied, it MUST describe:</t>
                <ul spacing="normal">
                  <li>
                    <t>How cryptographic verification key material is represented (e.g., using Attestation Keys triples, or CoTS tags)</t>
                  </li>
                  <li>
                    <t>How key material is associated with the Attesting Environment</t>
                  </li>
                  <li>
                    <t>How the Attesting Environment is identified in Evidence</t>
                  </li>
                </ul>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="sec-phase1-trans">
          <name>Input Transformation</name>
          <t>Input Conceptual Messages, whether Evidence, Reference Values, Endorsements, or Policies, are transformed to an internal representation that is based on ECTs (<xref target="sec-ir-cm"/>).</t>
          <t>The following mapping conventions apply to all forms of input transformation:</t>
          <ul empty="true">
            <li>
              <ul spacing="normal">
                <li>
                  <t>The <tt>environment</tt> field is populated with a Target Environment identifier.</t>
                </li>
                <li>
                  <t>The <tt>element-list</tt> field is populated with the measurements collected by an Attesting Environment.</t>
                </li>
                <li>
                  <t>The <tt>authority</tt> field is populated with the identity of the entity that asserted (e.g., signed) the Conceptual Message.</t>
                </li>
                <li>
                  <t>The <tt>cmtype</tt> field is set based on the type of Conceptual Message inputted or to be output.</t>
                </li>
                <li>
                  <t>The <tt>profile</tt> field is set based on the <tt>corim-map</tt> <tt>profile</tt> value.</t>
                </li>
              </ul>
            </li>
          </ul>
          <section anchor="appraisal-context-construction">
            <name>Appraisal Context Construction</name>
            <t>All of the extracted and validated tags are loaded into an <em>appraisal context</em>.
The Appraisal Context contains an internal representation of the inputted Conceptual Messages.
The selected tags are mapped to an internal representation, making them suitable for appraisal processing.</t>
          </section>
          <section anchor="evidence-tranformation">
            <name>Evidence Tranformation</name>
            <t>Evidence is transformed from an external representation to an internal representation based on the <tt>ae</tt> relation (<xref target="sec-ir-evidence"/>).
The Evidence is mapped into one or more <tt>addition</tt> ECTs.
If the Evidence does not have a value for the mandatory <tt>ae</tt> fields, the Verifier MUST NOT process the Evidence.</t>
            <t>Evidence transformation algorithms may be well-known, defined by a CoRIM profile (<xref target="sec-corim-profile-types"/>), or supplied dynamically.
The handling of dynamic Evidence transformation algorithms is out of scope for this document.</t>
          </section>
          <section anchor="sec-ref-trans">
            <name>Reference Triples Transformation</name>
            <ol group="foo" spacing="normal" type="Step %d."><li>
                <t>An <tt>rv</tt> list entry (<xref target="sec-ir-ref-val"/>) is allocated.</t>
              </li>
              <li>
                <t>The <tt>cmtype</tt> of the <tt>addition</tt> ECT in the <tt>rv</tt> entry is set to <tt>reference-values</tt>.</t>
              </li>
              <li>
                <t>The Reference Values Triple (RVT) (<xref target="sec-comid-triple-refval"/>) populates the <tt>rv</tt> ECTs.</t>
              </li>
            </ol>
            <ol group="rtt2" spacing="normal" type="%i"><li>
                <t>RVT.<tt>ref-env</tt></t>
              </li>
            </ol>
            <ul empty="true">
              <li>
                <ul empty="true">
                  <li>
                    <t><strong>copy</strong>(<tt>environment-map</tt>, <tt>rv</tt>.<tt>condition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                  </li>
                </ul>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <ul empty="true">
                  <li>
                    <t><strong>copy</strong>(<tt>environment-map</tt>, <tt>rv</tt>.<tt>addition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                  </li>
                </ul>
              </li>
            </ul>
            <ol group="rtt2" spacing="normal" type="%i"><li>
                <t>For each e in RVT.<tt>ref-claims</tt>:</t>
              </li>
            </ol>
            <ul empty="true">
              <li>
                <ul empty="true">
                  <li>
                    <t><strong>copy</strong>(e.<tt>measurement-map</tt>, <tt>rv</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>)</t>
                  </li>
                </ul>
              </li>
            </ul>
            <ol group="foo" spacing="normal" type="Step %d."><li>
                <t>The signer of the Endorsement conceptual message is copied to the <tt>rv</tt>.<tt>addition</tt>.<tt>authority</tt> field.</t>
              </li>
              <li>
                <t>If the Endorsement conceptual message has a profile, the profile identifier is copied to the <tt>rv</tt>.<tt>addition</tt>.<tt>profile</tt> field.</t>
              </li>
            </ol>
          </section>
          <section anchor="sec-end-trans">
            <name>Endorsement Triples Transformations</name>
            <section anchor="sec-end-trans-evt">
              <name>Endorsed Values Triple Transformation</name>
              <ol group="ett" spacing="normal" type="Step %d."><li>
                  <t>An <tt>ev</tt> entry (<xref target="sec-ir-end-val"/>) is allocated.</t>
                </li>
                <li>
                  <t>The <tt>cmtype</tt> of the <tt>ev</tt> entry's <tt>addition</tt> ECT is set to <tt>endorsements</tt>.</t>
                </li>
                <li>
                  <t>The Endorsed Values Triple (EVT) (<xref target="sec-comid-triple-endval"/>) populates the <tt>ev</tt> ECTs.</t>
                </li>
              </ol>
              <ol group="ett2" spacing="normal" type="%i"><li>
                  <t>EVT.<tt>condition</tt></t>
                </li>
              </ol>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(<tt>environment-map</tt>, <tt>ev</tt>.<tt>condition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(<tt>environment-map</tt>, <tt>ev</tt>.<tt>addition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ol group="ett2" spacing="normal" type="%i"><li>
                  <t>For each e in EVT.<tt>endorsement</tt>:</t>
                </li>
              </ol>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(e.<tt>endorsement</tt>.<tt>measurement-map</tt>, <tt>ev</tt>.<tt>addition</tt>.<tt>element-list</tt>.<tt>element-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ol group="ett" spacing="normal" type="Step %d."><li>
                  <t>The signer of the Endorsement conceptual message is copied to the <tt>ev</tt>.<tt>addition</tt>.<tt>authority</tt> field.</t>
                </li>
                <li>
                  <t>If the Endorsement conceptual message has a profile, the profile is copied to the <tt>ev</tt>.<tt>addition</tt>.<tt>profile</tt> field.</t>
                </li>
              </ol>
            </section>
            <section anchor="sec-end-trans-cet">
              <name>Conditional Endorsement Triple Transformation</name>
              <ol group="cett" spacing="normal" type="Step %d."><li>
                  <t>An <tt>ev</tt> entry (<xref target="sec-ir-end-val"/>) is allocated.</t>
                </li>
                <li>
                  <t>The <tt>cmtype</tt> of the <tt>ev</tt> entry's <tt>addition</tt> ECT is set to <tt>endorsements</tt>.</t>
                </li>
                <li>
                  <t>Entries in the Conditional Endorsement Triple (CET) (<xref target="sec-comid-triple-cond-endors"/>) <tt>conditions</tt> list are copied to a suitable ECT in the internal representation.</t>
                </li>
              </ol>
              <ol group="cett2" spacing="normal" type="%i"><li>
                  <t>For each e in CET.<tt>conditions</tt>:</t>
                </li>
              </ol>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(e.<tt>stateful-environment-record</tt>.<tt>environment</tt>.<tt>environment-map</tt>, <tt>ev</tt>.<tt>condition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(e.<tt>stateful-environment-record</tt>.<tt>claims-list</tt>.<tt>measurement-map</tt>, <tt>ev</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ol group="cett2" spacing="normal" type="%i"><li>
                  <t>For each e in CET.<tt>endorsements</tt>:</t>
                </li>
              </ol>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(e.<tt>endorsed-triple-record</tt>.<tt>condition</tt>.<tt>environment-map</tt>, <tt>ev</tt>.<tt>addition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(e.<tt>endorsed-triple-record</tt>.<tt>endorsement</tt>.<tt>measurement-map</tt>, <tt>ev</tt>.<tt>addition</tt>.<tt>element-list</tt>.<tt>element-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ol group="cett" spacing="normal" type="Step %d."><li>
                  <t>The signer of the Conditional Endorsement conceptual message is copied to the <tt>ev</tt>.<tt>addition</tt>.<tt>authority</tt> field.</t>
                </li>
                <li>
                  <t>If the Conditional Endorsement conceptual message has a profile, the profile is copied to the <tt>ev</tt>.<tt>addition</tt>.<tt>profile</tt> field.</t>
                </li>
              </ol>
            </section>
            <section anchor="sec-end-trans-cest">
              <name>Conditional Endorsement Triple Transformation</name>
              <ol group="cestt" spacing="normal" type="Step %d."><li>
                  <t>An <tt>evs</tt> entry (<xref target="sec-ir-end-val"/>) is allocated.</t>
                </li>
                <li>
                  <t>The <tt>cmtype</tt> of the <tt>evs</tt> entry's <tt>addition</tt> ECT is set to <tt>endorsements</tt>.</t>
                </li>
                <li>
                  <t>Populate the <tt>evs</tt> ECTs using the Conditional Endorsement Series Triple (CEST) (<xref target="sec-comid-triple-cond-series"/>).</t>
                </li>
              </ol>
              <ol group="cestt2" spacing="normal" type="%i."><li>
                  <t>CEST.<tt>condition</tt>:</t>
                </li>
              </ol>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(<tt>stateful-environment-record</tt>.<tt>environment</tt>.<tt>environment-map</tt>, <tt>evs</tt>.<tt>condition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(<tt>stateful-environment-record</tt>.<tt>claims-list</tt>.<tt>measurement-map</tt>, <tt>evs</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ol group="cestt2" spacing="normal" type="%i."><li>
                  <t>For each e in CEST.<tt>series</tt>:</t>
                </li>
              </ol>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(<tt>evs</tt>.<tt>condition</tt>.<tt>environment</tt>.<tt>environment-map</tt>, <tt>evs</tt>.<tt>series</tt>.<tt>selection</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(e.<tt>conditional-series-record</tt>.<tt>selection</tt>.<tt>measurement</tt>.<tt>measurement-map</tt>, <tt>evs</tt>.<tt>series</tt>.<tt>selection</tt>.<tt>element-list</tt>.<tt>element-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(<tt>evs</tt>.<tt>condition</tt>.<tt>environment</tt>.<tt>environment-map</tt>, <tt>evs</tt>.<tt>series</tt>.<tt>addition</tt>.<tt>environment</tt>.<tt>environment-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ul empty="true">
                <li>
                  <ul empty="true">
                    <li>
                      <t><strong>copy</strong>(e.<tt>conditional-series-record</tt>.<tt>addition</tt>.<tt>measurement-map</tt>, <tt>evs</tt>.<tt>series</tt>.<tt>addition</tt>.<tt>element-list</tt>.<tt>element-map</tt>)</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <ol group="cestt" spacing="normal" type="Step %d."><li>
                  <t>The signer of the Conditional Endorsement Series conceptual message is copied to the <tt>evs</tt>.<tt>series</tt>.<tt>addition</tt>.<tt>authority</tt> field.</t>
                </li>
                <li>
                  <t>If the Conditional Endorsement Series conceptual message has a profile, the profile is copied to the <tt>evs</tt>.<tt>series</tt>.<tt>addition</tt>.<tt>profile</tt> field.</t>
                </li>
              </ol>
            </section>
            <section anchor="sec-end-trans-kvt">
              <name>Key Verification Triples Transformation</name>
              <t>The following transformation steps are applied for both the <tt>identity-triples</tt> and <tt>attest-key-triples</tt> with noted exceptions:</t>
              <ol group="ckvt" spacing="normal" type="Step %d."><li>
                  <t>An <tt>ev</tt> entry (<xref target="sec-ir-end-val"/>) is allocated.</t>
                </li>
                <li>
                  <t>The <tt>cmtype</tt> of the <tt>ev</tt> entry's <tt>addition</tt> ECT is set to <tt>endorsements</tt>.</t>
                </li>
                <li>
                  <t>Populate the <tt>ev</tt> <tt>condition</tt> ECT using either the <tt>identity-triple-record</tt> or <tt>attest-key-triple-record</tt> (<xref target="sec-comid-triple-identity"/>) as follows:</t>
                </li>
              </ol>
              <ol group="kvt2" spacing="normal" type="%i."><li>
                  <t><strong>copy</strong>(<tt>environment-map</tt>, <tt>ev</tt>.<tt>condition</tt>.<tt>environment</tt>.<tt>environment-map</tt>).</t>
                </li>
                <li>
                  <t>Foreach <em>key</em> in <tt>keylist</tt>.<tt>$crypto-key-type-choice</tt>, <strong>copy</strong>(<em>key</em>, <tt>ev</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-claims</tt>.<tt>measurement-values-map</tt>.<tt>intrep-keys</tt>.<tt>key</tt>).</t>
                </li>
                <li>
                  <t>If <tt>key-list</tt> originated from <tt>attest-key-triples</tt>, <strong>set</strong>(<tt>ev</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-claims</tt>.<tt>measurement-values-map</tt>.<tt>intrep-keys</tt>.<tt>key-type</tt> = <tt>attest-key</tt>).</t>
                </li>
                <li>
                  <t>Else if <tt>key-list</tt> originated from <tt>identity-triples</tt>, <strong>set</strong>(<tt>ev</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-claims</tt>.<tt>measurement-values-map</tt>.<tt>intrep-keys</tt>.<tt>key-type</tt> = <tt>identity-key</tt>).</t>
                </li>
                <li>
                  <t>If populated, <strong>copy</strong>(<tt>mkey</tt>, <tt>ev</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-id</tt>).</t>
                </li>
                <li>
                  <t>If populated, <strong>copy</strong>(<tt>authorized-by</tt>, <tt>ev</tt>.<tt>condition</tt>.<tt>authority</tt>).</t>
                </li>
              </ol>
              <ol group="ckvt" spacing="normal" type="Step %d."><li>
                  <t>The signer of the Identity or Attest Key Endorsement conceptual message is copied to the <tt>ev</tt>.<tt>addition</tt>.<tt>authority</tt> field.</t>
                </li>
                <li>
                  <t>If the Endorsement conceptual message has a profile, the profile is copied to the <tt>ev</tt>.<tt>addition</tt>.<tt>profile</tt> field.</t>
                </li>
              </ol>
            </section>
          </section>
          <section anchor="sec-ir-dm-trans">
            <name>Domain Membership Triples Transformation</name>
            <t>This section describes how the external representation of a Domain Membership Triple (DMT) (<xref target="sec-comid-triple-domain-membership"/>) is transformed into its CoRIM internal representation <tt>dm</tt> (see <xref target="sec-ir-dm"/>).</t>
            <ol group="dmt1" spacing="normal" type="Step %d."><li>
                <t>Allocate a <tt>domain</tt> ECT entry.</t>
              </li>
              <li>
                <t>Set the conceptual message type for the <tt>domain</tt> ECT to 6 (<tt>domain-member</tt>).</t>
              </li>
            </ol>
            <ol group="dmt4" spacing="normal" type="%i"><li>
                <t><strong>copy</strong>(<tt>domain-member</tt>, <tt>domain</tt>.<tt>cmtype</tt>)</t>
              </li>
            </ol>
            <ol group="dmt1" spacing="normal" type="Step %d."><li>
                <t>Set the authority for the domain ECT to the DMT signer (<xref target="sec-corim-signer"/>).</t>
              </li>
            </ol>
            <ol group="dmt5" spacing="normal" type="%i"><li>
                <t><strong>copy</strong>(DMT.<tt>signer</tt>, <tt>domain</tt>.<tt>authority</tt>)</t>
              </li>
            </ol>
            <ol group="dmt1" spacing="normal" type="Step %d."><li>
                <t>Use the DMT to populate the <tt>dm</tt> internal representation.</t>
              </li>
            </ol>
            <ol group="dmt2" spacing="normal" type="%i"><li>
                <t><strong>copy</strong>(DMT.<tt>domain-id</tt>, <tt>domain</tt>.<tt>environment</tt>)</t>
              </li>
            </ol>
            <ol group="dmt2" spacing="normal" type="%i"><li>
                <t>For each <tt>environment</tt> <tt>e</tt> in DMT.<tt>members</tt>:</t>
              </li>
            </ol>
            <ul empty="true">
              <li>
                <ul empty="true">
                  <li>
                    <t><strong>copy</strong>(DMT.<tt>members</tt>[e].<tt>environment</tt>, <tt>domain</tt>.<tt>members</tt>[e].<tt>environment</tt>)</t>
                  </li>
                </ul>
              </li>
            </ul>
            <ol group="dmt1" spacing="normal" type="Step %d."><li>
                <t>If the conceptual message containing the DMT has a profile, it is used to populate the profile for the <tt>domain</tt> ECT.</t>
              </li>
            </ol>
            <ol group="dmt3" spacing="normal" type="%i"><li>
                <t><strong>copy</strong>(DMT.<tt>profile</tt>, <tt>domain</tt>.<tt>profile</tt>)</t>
              </li>
            </ol>
          </section>
        </section>
      </section>
      <section anchor="sec-acs-aug">
        <name>ACS Augmentation - Phases 2, 3, and 4</name>
        <t>In the ACS augmentation phase, a CoRIM Appraisal Context and an Evidence Appraisal Policy are used by the Verifier to find CoMID triples which match the ACS.
Triples that specify an ACS matching condition will augment the ACS with Endorsements if the condition is met.</t>
        <t>Each triple is processed independently of other triples.
However, the ACS state may change as a result of processing a triple.
If a triple condition does not match, then the Verifier continues to process other triples.</t>
        <section anchor="sec-acs-reqs">
          <name>ACS Requirements</name>
          <t>At the end of the Evidence collection process, the Evidence has been converted into an internal representation suitable for appraisal.
See <xref target="sec-ir-cm"/>.</t>
          <t>Verifiers are not required to use this as their internal representation.
For the purposes of this document, appraisal is described in terms of the above cited internal representation.</t>
          <section anchor="acs-processing-requirements">
            <name>ACS Processing Requirements</name>
            <t>The ACS contains the actual state of Attester's Target Environments (TEs).
The ACS contains Evidence ECTs (from Attesters) and Endorsement ECTs
(e.g. from <tt>endorsed-triple-record</tt>).</t>
            <t>CoMID Reference Values will be matched against the ACS following the comparison rules in <xref target="sec-match-condition-ect"/>.
This document describes an example evidence structure which can be
matched against these Reference Values.</t>
            <t>Each Endorsement ECT contains the environment and internal representation of <tt>measurement-map</tt>s as extracted from an <tt>endorsed-triple-record</tt>.
When an <tt>endorsed-triple-record</tt> is transformed to Endorsements ECTs it
indicates that the authority named by <tt>measurement-map</tt>.<tt>authorized-by</tt>
asserts that the actual state of one or more Claims within the
Target Environment, as identified by <tt>environment-map</tt>, have the
measurement values in <tt>measurement-map</tt>.<tt>mval</tt>.</t>
            <t>ECT authority is represented by cryptographic keys. Authority
is asserted by digitally signing a Claim using the key. Hence, Claims are
added to the ACS under the authority of a cryptographic key.</t>
            <t>Each Claim is encoded as an ECT. The <tt>environment-map</tt>, the <tt>mkey</tt> or <tt>element-id</tt>, and a
key within <tt>measurement-values-map</tt> encode the name of the Claim.
The value matching that key within <tt>measurement-values-map</tt> is the actual
state of the Claim.</t>
            <t>This specification does not assign special meanings to any Claim name,
it only specifies rules for determining when two Claim names are the same.</t>
            <t>If two Claims have the same <tt>environment-map</tt> encoding then this does not
trigger special encoding in the Verifier. The Verifier follows instructions
in the CoRIM file which tell it how claims are related.</t>
            <t>If Evidence or Endorsements from different sources has the same <tt>environment-map</tt>
and <tt>authorized-by</tt> then the <tt>measurement-values-map</tt>s are merged.</t>
            <t>The ACS MUST maintain the authority information for each ECT. There can be
multiple entries in <tt>state-triples</tt> which have the same <tt>environment-map</tt>
and a different authority.
See <xref target="sec-authority"/>.</t>
            <t>If the merged <tt>measurement-values-map</tt> contains duplicate codepoints and the
measurement values are equivalent, then duplicate claims SHOULD be omitted.
Equivalence typically means values MUST be binary identical.</t>
            <t>If the merged <tt>measurement-values-map</tt> contains duplicate codepoints and the
measurement values are not equivalent, then the Verifier SHALL report
an error and stop validation processing.</t>
            <section anchor="ordering-of-triple-processing">
              <name>Ordering of triple processing</name>
              <t>Triples interface with the ACS by either adding new ACS entries or by matching existing ACS entries before updating the ACS.
Most triples use an <tt>environment-map</tt> field to select the ACS entries to match or modify.
This field may be contained in an explicit matching condition, such as <tt>stateful-environment-record</tt>.</t>
              <t>The order of triples processing is important.
Processing a triple may result in ACS modifications that affect matching behavior of other triples.</t>
              <t>The Verifier MUST ensure that a triple including a matching condition is processed after any other triple that modifies or adds an ACS entry with an <tt>environment-map</tt> that is in the matching condition.</t>
              <t>This can be acheived by sorting the triples before processing, by repeating processing of some triples after ACS modifications or by other algorithms.</t>
            </section>
          </section>
          <section anchor="sec-acs-aug-req">
            <name>ACS Augmentation Requirements</name>
            <t>The ordering of ECTs in the ACS is not significant.
Logically, the ACS represents the conjunction of all claims, so adding an ECT entry to the existing ACS at the end is equivalent to inserting it anywhere else.
Implementations may optimize ECT order to achieve better performance.
Additions to the ACS MUST be atomic.</t>
          </section>
        </section>
        <section anchor="sec-phase2">
          <name>Evidence Augmentation (Phase 2)</name>
          <section anchor="sec-acs-initialization">
            <name>Appraisal Claims Set Initialization</name>
            <t>The ACS is initialized by copying the internal representation of Evidence claims to the ACS.
See <xref target="sec-acs-aug"/>.</t>
          </section>
          <section anchor="sec-authority">
            <name>The authority field in the ACS</name>
            <t>The <tt>authority</tt> field in an ACS ECT indicates the entity whose authority backs the Claims.</t>
            <t>The Verifier keeps track of authority so that it can satisfy appraisal policy that specifies authority.</t>
            <t>When adding an Evidence entry to the ACS, the Verifier SHALL set the <tt>authority</tt> field using a <tt>$crypto-keys-type-choice</tt> representation of the entity that signed the Evidence.</t>
            <t>If multiple authorities approve the same Claim, for example if multiple key chains are available, then the <tt>authority</tt> field SHALL be set to include the <tt>$crypto-keys-type-choice</tt> representation for each key chain.</t>
            <t>When adding Endorsement or Reference Values Claims to the ACS that resulted from CoRIM processing,
the Verifier SHALL set the <tt>authority</tt> field using a <tt>$crypto-keys-type-choice</tt> representation of the entity that signed the CoRIM.</t>
            <t>When searching the ACS for an entry which matches a triple condition containing an <tt>authorized-by</tt> field, the Verifier SHALL ignore ACS entries if none of the entries present in the condition <tt>authorized-by</tt> field are present in the ACS <tt>authority</tt> field.
The Verifier SHALL match ACS entries if all of the entries present in the condition <tt>authorized-by</tt> field are present in the ACS <tt>authority</tt> field.</t>
          </section>
          <section anchor="acs-augmentation-using-comid-triples">
            <name>ACS augmentation using CoMID triples</name>
            <t>In the ACS augmentation phase, a CoRIM Appraisal Context and an Evidence Appraisal Policy are used by the Verifier to find CoMID triples which match the ACS.
Triples that specify an ACS matching condition will augment the ACS with Endorsements if the condition is met.</t>
            <t>Each triple is processed independently of other triples.
However, the ACS state may change as a result of processing a triple.
If a triple condition does not match, then the Verifier continues to process other triples.</t>
          </section>
        </section>
        <section anchor="sec-phase3">
          <name>Reference Values Corroboration and Augmentation (Phase 3)</name>
          <t>Reference Value Providers (RVP) publish Reference Values using the Reference Values Triple (<xref target="sec-comid-triple-refval"/>) which are transformed (<xref target="sec-ref-trans"/>) into an internal representation (<xref target="sec-ir-ref-val"/>).
Each Reference Value Triple describes a single possible Attester state.</t>
          <t>Corroboration is the process of determining whether actual Attester state (as contained in the ACS) can be satisfied by Reference Values.</t>
          <t>Reference Values are matched with ACS entries by iterating through the <tt>rv</tt> list.
For each <tt>rv</tt> entry, the <tt>condition</tt> ECT is compared with an ACS ECT, where the ACS ECT <tt>cmtype</tt> contains <tt>evidence</tt>.</t>
          <t>If satisfied, for the <tt>rv</tt> entry, the following three steps are performed:</t>
          <ol spacing="normal" type="1"><li>
              <t>The <tt>addition</tt> ECT is moved to the ACS, with <tt>cm-type</tt> set to <tt>reference-values</tt></t>
            </li>
            <li>
              <t>The claims, i.e., the <tt>element-list</tt> from the ACS ECT with <tt>cmtype</tt> set to <tt>evidence</tt> is copied to the <tt>element-list</tt> of the <tt>addition</tt> ECT</t>
            </li>
            <li>
              <t>The <tt>authority</tt> field of the <tt>addition</tt> ECT has been confirmed as being set correctly to the RVP authority</t>
            </li>
          </ol>
        </section>
        <section anchor="sec-phase4">
          <name>Endorsed Values Augmentation (Phase 4)</name>
          <t>Endorsers publish Endorsements using endorsement triples (see <xref target="sec-comid-triple-endval"/>), <xref target="sec-comid-triple-cond-endors"/>, and <xref target="sec-comid-triple-cond-series"/>) which are transformed (<xref target="sec-end-trans"/>) into an internal representation (<xref target="sec-ir-end-val"/>).
Endorsements describe actual Attester state.
Endorsements are added to the ACS if the Endorsement condition is satisifed by the ACS.</t>
          <section anchor="sec-process-end">
            <name>Processing Endorsements</name>
            <t>Endorsements are matched with ACS entries by iterating through the <tt>ev</tt> list.
For each <tt>ev</tt> entry, the <tt>condition</tt> ECT is compared with an ACS ECT, where the ACS ECT <tt>cmtype</tt> contains either <tt>evidence</tt>, <tt>reference-values</tt>, or <tt>endorsements</tt>.
If the ECTs match (<xref target="sec-match-condition-ect"/>), the <tt>ev</tt> <tt>addition</tt> ECT is added to the ACS.</t>
          </section>
          <section anchor="sec-process-cond-end">
            <name>Processing Conditional Endorsements</name>
            <t>Conditional Endorsement Triples are transformed into an internal representation based on <tt>ev</tt>.
Conditional endorsements have the same processing steps as shown in (<xref target="sec-process-end"/>).</t>
          </section>
          <section anchor="sec-process-series">
            <name>Processing Conditional Endorsement Series</name>
            <t>Conditional Endorsement Series Triples are transformed into an internal representation based on <tt>evs</tt>.
Conditional series endorsements are matched with ACS entries first by iterating through the <tt>evs</tt> list,
where for each <tt>evs</tt> entry, the <tt>condition</tt> ECT is compared with an ACS ECT, where the ACS ECT <tt>cmtype</tt> contains either <tt>evidence</tt>, <tt>reference-values</tt>, or <tt>endorsements</tt>.
If the ECTs match (<xref target="sec-match-condition-ect"/>), the <tt>evs</tt> <tt>series</tt> array is iterated,
where for each <tt>series</tt> entry, if the <tt>selection</tt> ECT matches an ACS ECT,
the <tt>addition</tt> ECT is added to the ACS.
Series iteration terminates after the first matching series entry is processed or when no series entries match.</t>
          </section>
          <section anchor="sec-process-keys">
            <name>Processing Key Verification Endorsements</name>
            <t>For each <tt>ev</tt> entry, the <tt>condition</tt> ECT is compared with an ACS ECT, where the ACS ECT <tt>cmtype</tt> contains either <tt>evidence</tt>, <tt>reference-values</tt>, or <tt>endorsements</tt>.
If the ECTs match (<xref target="sec-match-condition-ect"/>), for each <em>key</em> in <tt>ev</tt>.<tt>condition</tt>.<tt>element-claims</tt>.<tt>measurement-values-map</tt>.<tt>intrep-keys</tt>:</t>
            <ul spacing="normal">
              <li>
                <t>Verify the certificate signatures for the certification path.</t>
              </li>
              <li>
                <t>Verify certificate revocation status for the certification path.</t>
              </li>
              <li>
                <t>Verify key usage restrictions appropriate for the type of key.</t>
              </li>
              <li>
                <t>If key verification succeeds, <strong>append</strong>(<em>key</em>, <tt>ev</tt>.<tt>addition</tt>.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-claims</tt>.<tt>measurement-values-map</tt>.<tt>intrep-keys</tt>).</t>
              </li>
            </ul>
            <t>If key verification succeeds for any <em>key</em>:</t>
            <ul spacing="normal">
              <li>
                <t><strong>copy</strong>(<tt>ev</tt>.<tt>condition</tt>.<tt>environment</tt>, <tt>ev</tt>.<tt>addition</tt>.<tt>environment</tt>).</t>
              </li>
              <li>
                <t><strong>copy</strong>(<tt>ev</tt>.<tt>condition</tt>.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-id</tt>, <tt>ev</tt>.<tt>addition</tt>.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-id</tt>).</t>
              </li>
              <li>
                <t>Set <tt>ev</tt>.<tt>addition</tt>.<tt>cmtype</tt> to <tt>endorsements</tt>.</t>
              </li>
              <li>
                <t>Add the Verifier authority <tt>$crypto-key-type-choice</tt> to the <tt>ev</tt>.<tt>addition</tt>.<tt>authority</tt> field.</t>
              </li>
              <li>
                <t>Add the <tt>addition</tt> ECT to the ACS.</t>
              </li>
            </ul>
            <t>Otherwise, do not add the <tt>addition</tt> ECT to the ACS.</t>
          </section>
          <section anchor="sec-process-dm">
            <name>Processing Domain Membership</name>
            <t>This section assumes that each Domain Membership Triple has been transformed into an internal representation following the steps described in <xref target="sec-ir-dm-trans"/>, resulting in the representation specified in <xref target="sec-ir-dm"/>.</t>
            <t>Domain Membership ECTs (cmtype: domain-member) in the staging area are matched with ACS entries (of cmtype: evidence) OR (of cmtype: domain-member) using the following algorithm:</t>
            <t>For every Domain Membership ECT entry (cmtype: domain-member) in staging area, which has not been processed:</t>
            <t>For each i in members, check that there is a corresponding ACS entry with a matching <tt>environment</tt> and (cmtype:evidence OR cmtype: domain-member)</t>
            <ul spacing="normal">
              <li>
                <t>If all members match a corresponding ACS entry, add the Domain Membership ECT to ACS</t>
              </li>
              <li>
                <t>If none of the members match, proceed to next Domain Membership ECT in the staging area</t>
              </li>
              <li>
                <t>If there is a partial match, proceed to the next Domain Membership ECT in the staging area
If the previous execution of the loop added any Domain Membership ECTs to the ACS, then run the loop again
Else STOP processing Domain Membership ECTs</t>
              </li>
            </ul>
            <t>The processing terminates, when all the Domain Membership ECTs which are appropriate to the Evidence have been added to the ACS.</t>
            <t>If expected Domain Membership ECTs have not been added, then this may affect the processing in a later phase.</t>
          </section>
        </section>
        <section anchor="sec-phases567">
          <name>Examples for optional phases 5, 6, and 7</name>
          <t>Phases 5, 6, and 7 are optional depending on implementation design.
Verifier implementations that apply consistency, integrity, or validity checks could be represented as Claims that augment the ACS or could be handled by application specific interfaces.
Processing appraisal policies may result in augmentation or modification of the ACS, but techniques for tracking the application of policies during appraisal need not result in ACS augmentation.
Additionally, the creation of Attestation Results is out-of-scope for this document, nevertheless internal staging may facilitate processing of Attestation Results.</t>
          <t>Phase 5: Verifier Augmentation</t>
          <t>Verifiers may add value to accepted Claims, such as ensuring freshness, consistency, and integrity.
The results of the added value may be asserted as Claims with Verifier authority.
For example, if a Verifier is able to ensure collected Evidence is fresh, it might create a freshness Claim that is included with the Evidence Claims in the ACS.</t>
          <t>Phase 6: Policy Augmentation</t>
          <t>Appraisal policy inputs could result in Claims that augment the ACS.
For example, an Appraisal Policy for Evidence may specify that if all of a collection of subcomponents satisfy a particular quality metric, the top-level component also satisfies the quality metric.
The Verifier might generate an Endorsement ECT for the top-level component that asserts a quality metric.
Details about the applied policy may augment the ACS.
An internal representation of policy details, based on the policy ECT, as described in <xref target="sec-ir-policy"/>, contains the environments affected by the policy with policy identifiers as Claims.</t>
          <t>Phase 7: Attestation Results Production and Transformation</t>
          <t>Attestation Results rely on input from the ACS, but may not bear any similarity to its content.
For example, Attestation Results processing may map the ACS state to a generalized trustworthiness state such as <xref target="I-D.ietf-rats-ar4si"/>.
Generated Attestation Results Claims may be specific to a particular Relying Party.
Hence, the Verifier may need to maintain multiple Attestation Results contexts.
An internal representation of Attestation Results as separate contexts (<xref target="sec-ir-ars"/>) ensures Relying Party–specific processing does not modify the ACS, which is common to all Relying Parties.
Attestation Results contexts are the inputs to Attestation Results procedures that produce external representations.</t>
        </section>
      </section>
      <section anchor="sec-match-condition-ect">
        <name>Comparing a condition ECT against the ACS</name>
        <t>The Verifier SHALL iterate over all ACS entries and SHALL attempt to match the condition ECT against each ACS entry. See <xref target="sec-match-one-condition-ect"/>.
The Verifier SHALL create a "matched entries" set, and SHALL populate it with all ACS entries which matched the condition ECT.</t>
        <t>If the matched entries array is not empty, then the condition ECT matches the ACS.</t>
        <t>If the matched entries array is empty, then the condition ECT does not match the ACS.</t>
        <section anchor="sec-match-one-condition-ect">
          <name>Comparing a condition ECT against a single ACS entry</name>
          <t>If the condition ECT contains a profile and the profile defines an algorithm for a codepoint and <tt>environment-map</tt> then the Verifier MUST use the algorithm defined by the profile, or it MUST use a standard algorithm if the profile defines that.
If the condition ECT contains a profile, but the profile does not define an algorithm for a particular codepoint and <tt>environment-map</tt> then the verifier MUST use the standard algorithm described in this document to compare the data at that codepoint.</t>
          <t>The Verifier SHALL perform all of the comparisons defined in <xref target="sec-compare-environment"/>, <xref target="sec-compare-authority"/>, and <xref target="sec-compare-element-list"/>.</t>
          <t>Each of these comparisons compares one field in the condition ECT against the same field in the ACS entry.</t>
          <t>If all of the fields match, then the condition ECT matches the ACS entry.</t>
          <t>If any of the fields does not match, then the condition ECT does not match the ACS entry.</t>
        </section>
        <section anchor="sec-compare-environment">
          <name>Environment Comparison</name>
          <t>The Verifier SHALL compare each field which is present in the condition ECT <tt>environment-map</tt> against the corresponding field in the ACS entry <tt>environment-map</tt> using binary comparison.
Before performing the binary comparison, the Verifier SHOULD convert both <tt>environment-map</tt> fields into a form which meets CBOR Core Deterministic Encoding Requirements <xref target="STD94"/>.</t>
          <t>If all fields which are present in the condition ECT <tt>environment-map</tt> are present in the ACS entry and are binary identical, then the environments match.</t>
          <t>If any field which is present in the condition ECT <tt>environment-map</tt> is not present in the ACS entry, then the environments do not match.</t>
          <t>If any field which is present in the condition ECT <tt>environment-map</tt> is not binary identical to the corresponding ACS entry field, then the environments do not match.</t>
          <t>If a field is not present in the condition ECT <tt>environment-map</tt> then the presence of, and value of, the corresponding ACS entry field SHALL NOT affect whether the environments match.</t>
        </section>
        <section anchor="sec-compare-authority">
          <name>Authority comparison</name>
          <t>The Verifier SHALL compare the condition ECT's <tt>authority</tt> value to the candidate entry's <tt>authority</tt> value.</t>
          <t>If every entry in the condition ECT <tt>authority</tt> has a matching entry in the ACS entry <tt>authority</tt> field, then the authorities match.
The order of the fields in each <tt>authority</tt> field do not affect the result of the comparison.</t>
          <t>If any entry in the condition ECT <tt>authority</tt> does not have a matching entry in the ACS entry <tt>authority</tt> field then the authorities do not match.</t>
          <t>When comparing two <tt>$crypto-key-type-choice</tt> fields for equality, the Verifier SHALL treat them as equal if their deterministic CBOR encoding is binary equal.</t>
        </section>
        <section anchor="sec-compare-element-list">
          <name>Element list comparison</name>
          <t>The Verifier SHALL iterate over all the entries in the condition ECT <tt>element-list</tt> and compare each one against the corresponding entry in the ACS entry <tt>element-list</tt>.</t>
          <t>If every entry in the condition ECT <tt>element-list</tt> has a matching entry in the ACS entry <tt>element-list</tt> field then the element lists match.</t>
          <t>The order of the fields in each <tt>element-list</tt> field do not affect the result of the comparison.</t>
          <t>If any entry in the condition ECT <tt>element-list</tt> does not have a matching entry in the ACS entry <tt>element-list</tt> field then the <tt>element-list</tt> do not match.</t>
        </section>
        <section anchor="sec-compare-element-map">
          <name>Element map comparison</name>
          <t>The Verifier SHALL compare each <tt>element-map</tt> within the condition ECT <tt>element-list</tt> against the ACS entry <tt>element-list</tt>.</t>
          <t>First, the Verifier SHALL locate the entries in the ACS entry <tt>element-list</tt> which have a matching <tt>element-id</tt> as the condition ECT <tt>element-map</tt>.
Two <tt>element-id</tt> fields are the same if they are either both omitted, or both present with binary identical deterministic encodings.</t>
          <t>Before performing the binary comparison, the Verifier SHOULD convert both fields into a form which meets CBOR Core Deterministic Encoding Requirements <xref target="STD94"/>.</t>
          <t>If any condition ECT entry <tt>element-id</tt> does not have a corresponding <tt>element-id</tt> in the ACS entry then the element map does not match.</t>
          <t>If any condition ECT entry has multiple corresponding <tt>element-id</tt>s then the element map does not match.</t>
          <t>Second, the Verifier SHALL compare the <tt>element-claims</tt> field within the condition ECT <tt>element-list</tt> and the corresponding field from the ACS entry.
See <xref target="sec-compare-mvm"/>.</t>
        </section>
        <section anchor="sec-compare-mvm">
          <name>Measurement values map map Comparison</name>
          <t>The Verifier SHALL iterate over the codepoints which are present in the condition ECT element's <tt>measurement-values-map</tt>.
Each of the codepoints present in the condition ECT <tt>measurement-values-map</tt> is compared against the same codepoint in the candidate entry <tt>measurement-values-map</tt>.</t>
          <t>If any codepoint present in the condition ECT <tt>measurement-values-map</tt> does not have a corresponding codepoint within the candidate entry <tt>measurement-values-map</tt> then Verifier SHALL remove that candidate entry from the candidate entries array.</t>
          <t>If any codepoint present in the condition ECT <tt>measurement-values-map</tt> does not match the same codepoint within the candidate entry <tt>measurement-values-map</tt> then Verifier SHALL remove that candidate entry from the candidate entries array.</t>
          <section anchor="sec-match-one-codepoint">
            <name>Comparison of a single measurement-values-map codepoint</name>
            <t>The Verifier SHALL compare each condition ECT <tt>measurement-values-map</tt> value against the corresponding ACS entry value using the appropriate algorithm.</t>
            <t>Non-negative codepoints represent standard data representations.
The comparison algorithms for these are defined in this document (in the sections below) or in other specifications.
For some non-negative codepoints their behavior is modified by the CBOR tag at the start of the condition ECT <tt>measurement-values-map</tt> value.</t>
            <t>Negative codepoints represent profile defined data representations.
The Verifier SHALL use the codepoint number, the profile associated with the condition ECT, and, if present, the tag value to select the comparison algorithm.</t>
            <t>If the Verifier is unable to determine the comparison algorithm which applies to a codepoint then it SHALL behave as though the candidate entry does not match the condition ECT.</t>
            <t>Profile writers SHOULD use CBOR tags for widely applicable comparison methods to ease Verifier implementation compliance across profiles.</t>
            <t>The following subsections define the comparison algorithms for the <tt>measurement-values-map</tt> codepoints defined by this specification.</t>
            <section anchor="comparison-for-version-entries">
              <name>Comparison for version entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> codepoint 0 is an version label, which MUST have type <tt>version-map</tt>.
Two <tt>version-map</tt> values can only be compared for equality, as they are colloquial versions that cannot specify ordering.</t>
            </section>
            <section anchor="comparison-for-svn-entries">
              <name>Comparison for svn entries</name>
              <t>The ACS entry value stored under <tt>measurement-values-map</tt> codepoint 1 is a security version number, which MUST have type <tt>svn-type</tt>.</t>
              <t>If the entry <tt>svn-type</tt> is a <tt>uint</tt> or a <tt>uint</tt> tagged with #6.552, then comparison with the <tt>uint</tt> named as SVN is as follows.</t>
              <ul spacing="normal">
                <li>
                  <t>If the condition ECT value for <tt>measurement-values-map</tt> codepoint 1 is an untagged <tt>uint</tt> or a <tt>uint</tt> tagged with #6.552 then an equality comparison is performed on the <tt>uint</tt> components.
The comparison MUST return true if the value of SVN is equal to the <tt>uint</tt> value in the condition ECT.</t>
                </li>
                <li>
                  <t>If the condition ECT value for <tt>measurement-values-map</tt> codepoint 1 is a <tt>uint</tt> tagged with #6.553 then a minimum comparison is performed.
The comparison MUST return true if the <tt>uint</tt> value in the condition ECT is less than or equal to the value of SVN.</t>
                </li>
              </ul>
              <t>If the entry <tt>svn-type</tt> is a <tt>uint</tt> tagged with #6.553, then comparison with the <tt>uint</tt> named as MINSVN is as follows.</t>
              <ul spacing="normal">
                <li>
                  <t>If the condition ECT value for <tt>measurement-values-map</tt> codepoint 1 is an untagged <tt>uint</tt> or a <tt>uint</tt> tagged with #6.552 then the comparison MUST return false.</t>
                </li>
                <li>
                  <t>If the condition ECT value for <tt>measurement-values-map</tt> codepoint 1 is a <tt>uint</tt> tagged with #6.553 then an equality comparison is performed.
The comparison MUST return true if the value of MINSVN is equal to the <tt>uint</tt> value in the condition ECT.</t>
                </li>
              </ul>
              <t>The meaning of a minimum SVN as an entry value is only meaningful as an endorsed value that has been added to the ACS.
The condition therefore treats the minimum SVN as an exact state and not one to compare with inequality.</t>
            </section>
            <section anchor="sec-cmp-digests">
              <name>Comparison for digests entries</name>
              <t>A <tt>digests</tt> entry contains one or more digests, each measuring the same object.
When multiple digests are provided, each represents a different algorithm acceptable to the condition ECT author.</t>
              <t>In the simple case, a condition ECT digests entry containing one digest matches matches a candidate entry containing a single entry with the same algorithm and value.</t>
              <t>If there are multiple algorithms in common between the condition ECT and candidate entry, then the bytes paired with common algorithms MUST be equal.
This is to prevent downgrade attacks.
The Verifier SHALL treat two algorithm identifiers as equal if they have the same deterministic binary encoding.
If both an integer and a string representation are defined for an algorithm then entities creating ECTs SHOULD use the integer representation.
If condition ECT and ACS entry use different names for the same algorithm, and the Verifier does not recognize that they are the same, then a downgrade attack is possible.</t>
              <t>The comparison MUST return false if the CBOR encoding of the <tt>digests</tt> entry in the condition ECT or the ACS value with the same codepoint is incorrect. For example, if fields are missing or if they are the wrong type.</t>
              <t>The comparison MUST return false if the condition ECT digests entry does not contain any digests.</t>
              <t>The comparison MUST return false if either digests entry contains multiple values for the same hash algorithm.</t>
              <t>The Verifier MUST iterate over the condition ECT <tt>digests</tt> array, locating the common hash algorithm identifiers which are present in both the condition ECT and in the candidate entry.
If the value associated with any common hash algorithm identifier in the condition ECT differs from the value for the same algorithm identifier in the candidate entry then the comparison MUST return false.</t>
              <t>The comparison MUST return false if there are no hash algorithms from the condition ECT in common with the hash algorithms from the candidate entry ECT.</t>
            </section>
            <section anchor="comparison-for-raw-value-entries">
              <name>Comparison for raw-value entries</name>
              <t>A <tt>raw-value</tt> entry contains binary data.</t>
              <t>The value stored under <tt>measurement-values-map</tt> codepoint 4 in an ACS entry MUST be a <tt>raw-value</tt> entry, which MUST be tagged and have type <tt>bytes</tt>.</t>
              <t>The value stored under the condition ECT <tt>measurement-values-map</tt> codepoint 4 may additionally be a <tt>tagged-masked-raw-value</tt> entry, which specifies an expected value and a mask.</t>
              <t>If the condition ECT <tt>measurement-value-map</tt> codepoint 4 is of <tt>tagged-bytes</tt>, and there is no value stored under codepoint 5, then the Verifier treats it in the same way as a <tt>tagged-masked-raw-value</tt> with the <tt>value</tt> field holding the same contents and a <tt>mask</tt> of the same length as the value with all bits set.
The standard comparison function defined in this document removes the tag before performing the comparison.</t>
              <t>For backwards compatibility, if the condition ECT <tt>measurement-value-map</tt> codepoint 4 is of type <tt>tagged-bytes</tt>, and there is a mask stored under codepoint 5, then the Verifier treats it in the same way as a <tt>tagged-masked-raw-value</tt> with the <tt>value</tt> field holding the same contents and a <tt>mask</tt> holding the contents of codepoint 5.</t>
              <t>The comparison MUST return false if the lengths of the candidate entry value and the condition ECT value are different.</t>
              <t>The comparison MUST return false if the lengths of the condition ECT mask and value are different.</t>
              <t>The comparison MUST use the mask to determine which bits to compare.
If a bit in the mask is 0 then this indicates that the corresponding bit in the ACS Entry value may have either value.
If, for every bit position in the mask whose value is 1, the corresponding bits in both values are equal then the comparison MUST return true.</t>
            </section>
            <section anchor="sec-cryptokeys-matching">
              <name>Comparison for cryptokeys entries</name>
              <t>The CBOR tag of the first entry of the condition ECT <tt>cryptokeys</tt> array is compared with the CBOR tag of the first entry of the candidate entry <tt>cryptokeys</tt> value.
If the CBOR tags match, then the bytes following the CBOR tag from the condition ECT entry are compared with the bytes following the CBOR tag from the candidate entry.
If the byte strings match, and there is another array entry, then the next entry from the condition ECTs array is likewise compared with the next entry of the ACS array.
If all entries of the condition ECTs array match a corresponding entry in the ACS array, then the <tt>cryptokeys</tt> condition ECT matches.
Otherwise, <tt>cryptokeys</tt> does not match.</t>
            </section>
            <section anchor="sec-cmp-integrity-registers">
              <name>Comparison for Integrity Registers</name>
              <t>For each Integrity Register entry in the condition ECT, the Verifier will use the associated identifier (i.e., <tt>integrity-register-id-type-choice</tt>) to look up the matching Integrity Register entry in the candidate entry.
If no entry is found, the comparison MUST return false.
Instead, if an entry is found, the digest comparison proceeds as defined in <xref target="sec-cmp-digests"/> after equivalence has been found according to <xref target="sec-comid-integrity-registers"/>.
Note that it is not required for all the entries in the candidate entry to be used during matching: the condition ECT could consist of a subset of the device's register space. In TPM parlance, a TPM "quote" may report all PCRs in Evidence, while a condition ECT could describe a subset of PCRs.</t>
            </section>
            <section anchor="comparison-for-int-range-entries">
              <name>Comparison for int-range entries</name>
              <t>The ACS entry value stored under <tt>measurement-values-map</tt> codepoint 15 is an int range value, which MUST have type <tt>int-range-type-choice</tt>.</t>
              <t>Consider an <tt>int</tt> ACS entry value named ENTRY in a <tt>measurement-values-map</tt> codepoint (e.g., 15) that allows comparing <tt>int</tt> against a either another <tt>int</tt> or an <tt>int-range</tt> named CONDITION.</t>
              <ul spacing="normal">
                <li>
                  <t>If CONDITION is an <tt>int</tt> then an equality comparison is performed with ENTRY.</t>
                </li>
                <li>
                  <t>If CONDITION is an <tt>int-range</tt> (CBOR tag 564), then a range inclusion comparison is performed.
The comparison MUST return true if and only if all the following conditions are true:  </t>
                  <ul spacing="normal">
                    <li>
                      <t>CONDITION.min is <tt>null</tt> or ENTRY is greater than or equal to CONDITION.min.</t>
                    </li>
                    <li>
                      <t>CONDITION.max is <tt>null</tt> or ENTRY is less than or equal to CONDITION.max.</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <t>Consider an <tt>int-range</tt> or <tt>int-range</tt> (CBOR tag 564) value named ENTRY in a <tt>measurement-values-map</tt> codepoint (e.g., 15) that allows comparing an <tt>int-range</tt> against either another <tt>int-range</tt> or an <tt>int</tt> named CONDITION.</t>
              <ul spacing="normal">
                <li>
                  <t>If CONDITION is an <tt>int</tt>, then the comparison MUST return true if and only if ENTRY.min and ENTRY.max are both equal to CONDITION.</t>
                </li>
                <li>
                  <t>If CONDITION is an <tt>int-range</tt> (CBOR tag 564), then a range subsumption comparison is performed (i.e., the condition range includes all values of the entry range).
The comparison MUST return true if and only if all the following conditions are true:  </t>
                  <ul spacing="normal">
                    <li>
                      <t>CONDITION.min is <tt>null</tt> or ENTRY.min is an <tt>int</tt> that is greater than or equal to CONDITION.min</t>
                    </li>
                    <li>
                      <t>CONDITION.max is <tt>null</tt> or ENTRY.max is an <tt>int</tt> that is less than or equal to CONDITION.max.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </section>
          </section>
        </section>
        <section anchor="sec-compare-profile">
          <name>Profile-directed Comparison</name>
          <t>A profile MUST specify comparison algorithms for its additions to <tt>$</tt>-prefixed CoRIM CDDL codepoints when this specification does not prescribe binary comparison.
The profile MUST specify how to compare the CBOR tagged Reference Value against the ACS.</t>
          <t>Note that the Verifier may compare Reference Values in any order, so the comparison SHOULD NOT be stateful.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol
defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>. The description of
implementations in this section is intended to assist the IETF in its decision
processes in progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalogue of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to
assign due consideration to documents that have the benefit of running code,
which may serve as Evidence of valuable experimentation and feedback that have
made the implemented protocols more mature.  It is up to the individual working
groups to use this information as they see fit".</t>
      <section anchor="veraison">
        <name>Veraison</name>
        <ul spacing="normal">
          <li>
            <t>Organization responsible for the implementation: Veraison Project, Linux
Foundation</t>
          </li>
          <li>
            <t>Implementation's web page:
<eref target="https://github.com/veraison/corim/blob/main/README.md">https://github.com/veraison/corim/README.md</eref></t>
          </li>
          <li>
            <t>Brief general description: The <tt>corim/corim</tt> and <tt>corim/comid</tt> packages
provide a golang API for low-level manipulation of Concise Reference
Integrity Manifest (CoRIM) and Concise Module Identifier (CoMID) tags
respectively.  The <tt>corim/cocli</tt> package uses the API above (as well as the
API from the <tt>veraison/swid</tt> package) to provide a user command line
interface for working with CoRIM, CoMID and CoSWID. Specifically, it allows
creating, signing, verifying, displaying, uploading, and more. See
<eref target="https://github.com/veraison/corim/blob/main/cocli/README.md">https://github.com/cocli/README.md</eref> for
further details.</t>
          </li>
          <li>
            <t>Implementation's level of maturity: alpha.</t>
          </li>
          <li>
            <t>Coverage: the whole protocol is implemented, including PSA-specific
extensions <xref target="I-D.fdb-rats-psa-endorsements"/>.</t>
          </li>
          <li>
            <t>Version compatibility: Version -02 of the draft</t>
          </li>
          <li>
            <t>Licensing: Apache 2.0
<eref target="https://github.com/veraison/corim/blob/main/LICENSE">https://github.com/veraison/corim/blob/main/LICENSE</eref></t>
          </li>
          <li>
            <t>Implementation experience: n/a</t>
          </li>
          <li>
            <t>Contact information:
<eref target="https://veraison.zulipchat.com">https://veraison.zulipchat.com</eref></t>
          </li>
          <li>
            <t>Last updated:
<eref target="https://github.com/veraison/corim/commits/main">https://github.com/veraison/corim/commits/main</eref></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-sec">
      <name>Security and Privacy Considerations</name>
      <t>Evidence appraisal is at the core of any RATS protocol flow, mediating all interactions between Attesters and their Relying Parties.
The Verifier is effectively part of the Attesters' and Relying Parties' trusted computing base (TCB).
Any mistake in the appraisal procedure conducted by the Verifier could have security implications.
For instance, it could lead to the subversion of an access control function, which creates a chance for privilege escalation.</t>
      <t>Therefore, the Verifier’s code and configuration, especially those of the CoRIM processor, are primary security assets that must be built and maintained as securely as possible.</t>
      <t>The protection of the Verifier system should be considered throughout its entire lifecycle, from design to operation.
This includes the following aspects:</t>
      <ul spacing="normal">
        <li>
          <t>Minimizing implementation complexity (see also <xref section="6.1" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>);</t>
        </li>
        <li>
          <t>Using memory-safe programming languages;</t>
        </li>
        <li>
          <t>Using secure defaults;</t>
        </li>
        <li>
          <t>Minimizing the attack surface by avoiding unnecessary features that could be exploited by attackers;</t>
        </li>
        <li>
          <t>Applying the principle of least privilege to the system's users;</t>
        </li>
        <li>
          <t>Minimizing the potential impact of security breaches by implementing separation of duties in both the software and operational architecture;</t>
        </li>
        <li>
          <t>Conducting regular, automated audits and reviews of the system, such as ensuring that users' privileges are correctly configured and that any new code has been audited and approved by independent parties;</t>
        </li>
        <li>
          <t>Failing securely in the event of errors to avoid compromising the security of the system.</t>
        </li>
      </ul>
      <t>It is critical that appraisal procedures are auditable and reproducible.
The integrity of code and data during execution is an explicit objective, for example, ensuring that the appraisal functions are executed in an attestable trusted execution environment (TEE).</t>
      <t>The integrity of public and private key material and the secrecy of private key material must be ensured at all times.
This includes key material carried in attestation key triples and key material used to verify the authority of triples (such as public keys that identify trusted supply chain actors).
For more detailed information on protecting Trust Anchors, refer to <xref section="12.4" sectionFormat="of" target="RFC9334"/>.
Utilizing the public part of an asymmetric key pair that is used for Evidence generation to identify an Attesting Environment raises privacy considerations that must be carefully considered.</t>
      <t>The Verifier should use cryptographically protected, mutually authenticated secure channels to all its trusted input sources (Endorsers, RVPs, Verifier Owners).
These links must reach as deep as possible - possibly terminating within the appraisal session context - to avoid man-in-the-middle attacks.
Minimizing the use of intermediaries is also vital: each intermediary becomes another party that might need to be trusted and therefore factored in the Attesters and Relying Parties' TCBs.
Refer to <xref section="12.2" sectionFormat="of" target="RFC9334"/> for information on Conceptual Messages protection.</t>
    </section>
    <section anchor="sec-iana-cons">
      <name>IANA Considerations</name>
      <section anchor="new-cose-header-parameters">
        <name>New COSE Header Parameters</name>
      </section>
      <section anchor="sec-iana-cbor-tags">
        <name>New CBOR Tags</name>
        <t>IANA is requested to allocate the following tags in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably with the specific CBOR tag value requested:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">500</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">Reserved for backward compatibility</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">501</td>
              <td align="left">
                <tt>map</tt></td>
              <td align="left">A tagged-unsigned-corim-map, see <xref target="sec-corim-map"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">502-504</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">505</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-swid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">506</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-mid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">507</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">508</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-tl-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">509-549</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">550</td>
              <td align="left">
                <tt>bytes .size (7..33)</tt></td>
              <td align="left">tagged-ueid-type, see <xref target="sec-common-ueid"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">552</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">553</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-min-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">554</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">555</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">556</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-path-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">557</td>
              <td align="left">
                <tt>[int/text, bytes]</tt></td>
              <td align="left">tagged-key-thumbprint-type, see <xref target="sec-common-hash-entry"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">558</td>
              <td align="left">
                <tt>COSE_Key</tt></td>
              <td align="left">tagged-cose-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">559</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-thumbprint-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">560</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">tagged-bytes, see <xref target="sec-common-tagged-bytes"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">561</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-path-thumbprint-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">562</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">tagged-pkix-asn1der-cert-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">563</td>
              <td align="left">
                <tt>tagged-masked-raw-value</tt></td>
              <td align="left">tagged-masked-raw-value, see <xref target="sec-comid-raw-value-types"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">564</td>
              <td align="left">
                <tt>array</tt></td>
              <td align="left">tagged-int-range, see <xref target="sec-comid-int-range"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">565-599</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
        <t>Tags designated as "Earmarked for CoRIM" can be reassigned by IANA based on advice from the designated expert for the CBOR Tags registry.</t>
      </section>
      <section anchor="sec-iana-corim">
        <name>CoRIM Map Registry</name>
        <t>This document defines a new registry titled "CoRIM Map".
The registry uses integer values as index values for items in <tt>corim-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-corim-map-items-reg-procedures">
          <name>CoRIM Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoRIM Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-corim-map-items">
          <name>CoRIM Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">id</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">tags</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">dependent-rims</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">profile</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">rim-validity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">entities</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-corim-entity-map">
        <name>CoRIM Entity Map Registry</name>
        <t>This document defines a new registry titled "CoRIM Entity Map".
The registry uses integer values as index values for items in <tt>corim-entity-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-corim-entity-map-items-reg-procedures">
          <name>CoRIM Entity Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoRIM Entity Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-corim-entity-map-items">
          <name>CoRIM Entity Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Value Type</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">entity-name</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">Name of the entity responsible for the actions of the role.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">reg-id</td>
              <td align="left">
                <tt>uri</tt></td>
              <td align="left">A URI associated with the organization that owns the entity name.</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">role</td>
              <td align="left">
                <tt>[ + role-type-choice ]</tt></td>
              <td align="left">A type choice defining the roles that the entity is claiming.</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-corim-signer-map">
        <name>CoRIM Signer Map Registry</name>
        <t>This document defines a new registry titled "CoRIM Signer Map".
The registry uses integer values as index values for items in <tt>corim-signer-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-corim-signer-map-items-reg-procedures">
          <name>CoRIM Signer Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoRIM Signer Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-corim-signer-map-items">
          <name>CoRIM Signer Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">signer-name</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">signer-uri</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid">
        <name>CoMID Map Registry</name>
        <t>This document defines a new registry titled "CoMID Map".
The registry uses integer values as index values for items in <tt>concise-mid-tag</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-map-items-reg-procedures">
          <name>CoMID Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-map-items">
          <name>CoMID Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">language</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">tag-identity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">entity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">linked-tags</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid-entity-map">
        <name>CoMID Entity Map Registry</name>
        <t>This document defines a new registry titled "CoRIM Entity Map".
The registry uses integer values as index values for items in <tt>corim-entity-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-entity-map-items-reg-procedures">
          <name>CoMID Entity Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Entity Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-entity-map-items">
          <name>CoMID Entity Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Value Type</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">entity-name</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">Name of the entity responsible for the actions of the role.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">reg-id</td>
              <td align="left">
                <tt>uri</tt></td>
              <td align="left">A URI associated with the organization that owns the entity name.</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">role</td>
              <td align="left">
                <tt>[ + role-type-choice ]</tt></td>
              <td align="left">A type choice defining the roles that the entity is claiming.</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-triples-map">
        <name>CoMID Triples Map Registry</name>
        <t>This document defines a new registry titled "CoMID Triples Map".
The registry uses integer values as index values for items in the <tt>triples-map</tt> CBOR maps in <tt>concise-mid-tag</tt> codepoint 4.</t>
        <artwork><![CDATA[
Future registrations for this registry are to be made based on {{RFC8126}} as follows:
]]></artwork>
        <table anchor="tbl-iana-comid-triples-map-items-reg-procedures">
          <name>CoMID Triples Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-1023</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">1024-65535</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">65536-18446744073709551616</td>
              <td align="left">First come first served</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Triples Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-triples-map-items">
          <name>CoMID Triples Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">reference-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">endorsed-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">identity-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">attest-key-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">dependency-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">membership-trples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">coswid-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">(reserved)</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">conditional-endorsment-series-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">(reserved)</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">conditional-endorsement-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">11-18446744073709551616</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid-measurement-values-map">
        <name>CoMID Measurement Values Map Registry</name>
        <t>This document defines a new registry titled "CoMID Measurement Values Map".
The registry uses integer values as index values for items in multiple triples' representations.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-measurement-values-map-items-reg-procedures">
          <name>CoMID Measurement Values Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-1023</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">1024-65535</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">65536-18446744073709551616</td>
              <td align="left">First come first served</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Measurement Values Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-measurement-values-map-items">
          <name>Measurement Values Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">version</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">svn</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">digests</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">flags</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">raw-value</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">raw-value-mask-DEPRECATED</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">mac-addr</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">ip-addr</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">serial-number</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">ueid</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">uuid</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">name</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">(reserved)</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">13</td>
              <td align="left">cryptokeys</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">14</td>
              <td align="left">integrity-registers</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">15</td>
              <td align="left">int-range</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">16-18446744073709551616</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid-flags-map">
        <name>CoMID Flags Map Registry</name>
        <t>This document defines a new registry titled "CoMID Flags Map".
The registry uses integer values as index values for items in <tt>measurement-values-map</tt> codepoint 3.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-flags-map-items-reg-procedures">
          <name>CoMID Flags Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-1023</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">1024-65535</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">65536-18446744073709551616</td>
              <td align="left">First come first served</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Measurement Values Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-flags-map-items">
          <name>Flags Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">is-configured</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">is-secure</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">is-recovery</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">is-debug</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">is-replay-protected</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">is-integrity-protected</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">is-runtime-meas</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">is-immutable</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">is-tcb</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">is-confidentiality-protected</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">10-18446744073709551616</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-cotl">
        <name>CoTL Map Registry</name>
        <t>This document defines a new registry titled "CoTL Map".
The registry uses integer values as index values for items in 'concise-tl-tag' CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-cotl-map-items-reg-procedures">
          <name>CoTL Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoTL Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-tl-map-items">
          <name>CoTL Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">tag-identity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">tags-list</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">tl-validity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-media-types">
        <name>New Media Types</name>
        <t>IANA is requested to add the following media types to the "Media Types"
registry <xref target="IANA.media-types"/>.</t>
        <table align="left" anchor="tbl-media-type">
          <name>New Media Types</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Template</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">rim+cbor</td>
              <td align="left">application/rim+cbor</td>
              <td align="left">RFCthis, (<xref target="sec-mt-rim-cbor"/>)</td>
            </tr>
            <tr>
              <td align="left">rim+cose</td>
              <td align="left">application/rim+cose</td>
              <td align="left">RFCthis, (<xref target="sec-mt-rim-cose"/>)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sec-mt-rim-cbor">
          <name>rim+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>rim+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer unprotected CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F5</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>.corim</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person and email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-mt-rim-cose">
          <name>rim+cose</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>rim+cose</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a (cose-type is explicitly not supported, as it is understood to be "cose-sign1")</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer CoRIM payloads protected using COSE Sign1 over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D2 84</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>.corim</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person and email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="coap-content-formats-registration">
        <name>CoAP Content-Formats Registration</name>
        <t>IANA is requested to register the two following Content-Format numbers in the
"CoAP Content-Formats" sub-registry, within the "Constrained RESTful
Environments (CoRE) Parameters" Registry <xref target="IANA.core-parameters"/>:</t>
        <table align="left">
          <name>New Content-Formats</name>
          <thead>
            <tr>
              <th align="left">Content-Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/rim+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD1</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">application/rim+cose</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9090">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR), defined in RFC 8949, is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.</t>
              <t>This document defines CBOR tags for object identifiers (OIDs) and is the reference document for the IANA registration of the CBOR tags so defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9090"/>
          <seriesInfo name="DOI" value="10.17487/RFC9090"/>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="STD66">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC9393">
          <front>
            <title>Concise Software Identification Tags</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay"/>
            <author fullname="C. Schmidt" initials="C." surname="Schmidt"/>
            <author fullname="D. Waltermire" initials="D." surname="Waltermire"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles. SWID tag representations can be too large for devices with network and storage constraints. This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags. CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9393"/>
          <seriesInfo name="DOI" value="10.17487/RFC9393"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="IANA.language-subtag-registry" target="https://www.iana.org/assignments/language-subtag-registry">
          <front>
            <title>Language Subtag Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology — ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="ITU-T" value="Recommendation X.690"/>
        </reference>
        <reference anchor="IANA.named-information" target="https://www.iana.org/assignments/named-information">
          <front>
            <title>Named Information</title>
            <author>
              <organization>IANA</organization>
            </author>
          </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>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC9562">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author fullname="K. Davis" initials="K." surname="Davis"/>
            <author fullname="B. Peabody" initials="B." surname="Peabody"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
        </reference>
        <reference anchor="I-D.fdb-rats-psa-endorsements">
          <front>
            <title>A CoRIM Profile for Arm's Platform Security Architecture (PSA) Endorsements</title>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="4" month="July" year="2025"/>
            <abstract>
              <t>   PSA Endorsements comprise reference values, endorsed values,
   cryptographic key material and certification status information that
   a Verifier needs in order to appraise Attestation Evidence produced
   by a PSA device.  This memo defines PSA Endorsements as a profile of
   the CoRIM data model.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-fdb-rats-psa-endorsements-08"/>
        </reference>
        <reference anchor="I-D.tschofenig-rats-psa-token">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>HP Labs</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="23" month="September" year="2024"/>
            <abstract>
              <t>   The Arm Platform Security Architecture (PSA) is a family of hardware
   and firmware security specifications, as well as open-source
   reference implementations, to help device makers and chip
   manufacturers build best-practice security into products.  Devices
   that are PSA compliant can produce attestation tokens as described in
   this memo, which are the basis for many different protocols,
   including secure provisioning and network access control.  This
   document specifies the PSA attestation token structure and semantics.

   The PSA attestation token is a profile of the Entity Attestation
   Token (EAT).  This specification describes what claims are used in an
   attestation token generated by PSA compliant systems, how these
   claims get serialized to the wire, and how they are cryptographically
   protected.

   This informational document is published as an independent submission
   to improve interoperability with Arm's architecture.  It is not a
   standard nor a product of the IETF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-24"/>
        </reference>
        <reference anchor="I-D.ietf-rats-endorsements">
          <front>
            <title>RATS Endorsements</title>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Armidale Consulting</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture, a
   Verifier accepts Evidence and, using Appraisal Policy typically with
   additional input from Endorsements and Reference Values, generates
   Attestation Results in formats that are useful for Relying Parties.
   This document illustrates the purpose and role of Endorsements and
   discusses some considerations in the choice of message format for
   Endorsements in the scope of the RATS architecture.

   This document does not aim to define a conceptual message format for
   Endorsements and Reference Values.  Instead, it extends RFC9334 to
   provide further details on Reference Values and Endorsements, as
   these topics were outside the scope of the RATS charter when RFC9334
   was developed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-06"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="3" month="July" year="2025"/>
            <abstract>
              <t>   The Remote Attestation Procedures architecture (RFC 9334) defines
   several types of conceptual messages, such as Evidence, Attestation
   Results, Endorsements, and Reference Values.  These messages can
   appear in different formats and be transported via various protocols.

   This document introduces the Conceptual Message Wrapper (CMW) that
   provides a common structure to encapsulate these messages.  It
   defines a dedicated CBOR tag, corresponding JSON Web Token (JWT) and
   CBOR Web Token (CWT) claims, and an X.509 extension.

   This allows CMWs to be used in CBOR-based protocols, web APIs using
   JWTs and CWTs, and PKIX artifacts like X.509 certificates.
   Additionally, the draft defines a media type and a CoAP content
   format to transport CMWs over protocols like HTTP, MIME, and CoAP.

   The goal is to improve the interoperability and flexibility of remote
   attestation protocols.  By introducing a shared message format like
   the CMW, we can consistently support different attestation message
   types, evolve message serialization formats without breaking
   compatibility, and avoid having to redefine how messages are handled
   in each protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-16"/>
        </reference>
        <reference anchor="DICE.Layer" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Layering-Architecture-r19_pub.pdf">
          <front>
            <title>DICE Layering Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.19" value=""/>
        </reference>
        <reference anchor="IANA.coswid" target="https://www.iana.org/assignments/coswid">
          <front>
            <title>Concise Software Identifier (CoSWID)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Mediatek USA</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="6" month="September" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine the type
   and degree of trust placed in the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-31"/>
        </reference>
        <reference anchor="I-D.ietf-rats-concise-ta-stores">
          <front>
            <title>Concise TA Stores (CoTS)</title>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software</organization>
            </author>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>arm</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>arm</organization>
            </author>
            <date day="5" month="December" year="2023"/>
            <abstract>
              <t>   Trust anchor (TA) stores may be used for several purposes in the
   Remote Attestation Procedures (RATS) architecture including verifying
   endorsements, reference values, digital letters of approval,
   attestations, or public key certificates.  This document describes a
   Concise Reference Integrity Manifest (CoRIM) extension that may be
   used to convey optionally constrained trust anchor stores containing
   optionally constrained trust anchors in support of these purposes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-concise-ta-stores-02"/>
        </reference>
        <reference anchor="I-D.ietf-rats-ar4si">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="6" month="February" year="2025"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

   This document also defines two serialisations of the proposed
   information model, utilising CBOR and JSON.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-08"/>
        </reference>
        <reference anchor="DICE.cert" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Certificate-Profiles-r01_pub.pdf">
          <front>
            <title>DICE Certificate Profiles</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.01" value=""/>
        </reference>
        <reference anchor="TNC.Arch" target="https://trustedcomputinggroup.org/wp-content/uploads/TNC_Architecture_v1_1_r2.pdf">
          <front>
            <title>TCG Trusted Network Connect TNC Architecture for Interoperability</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2006" month="May"/>
          </front>
          <seriesInfo name="Specification Version 1.1 Revision 2" value=""/>
        </reference>
        <reference anchor="TPM2.Part1" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
          <front>
            <title>Trusted Platform Module Library, Part 1: Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="Family &quot;2.0&quot;, Level 00, Revision 01.83" value=""/>
        </reference>
        <reference anchor="W3C.rdf11-primer" target="https://www.w3.org/TR/rdf11-primer/">
          <front>
            <title>RDF 1.1 Primer</title>
            <author/>
          </front>
          <seriesInfo name="W3C NOTE" value="rdf11-primer"/>
          <seriesInfo name="W3C" value="rdf11-primer"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
    </references>
    <?line 3657?>

<section anchor="sec-corim-cddl">
      <name>Base CoRIM CDDL</name>
      <sourcecode type="cddl"><![CDATA[
corim = concise-rim-type-choice

concise-rim-type-choice /= tagged-unsigned-corim-map
concise-rim-type-choice /= signed-corim

concise-tl-tag = {
  &(tag-identity: 0) => tag-identity-map
  &(tags-list: 1) => [ + tag-identity-map ],
  &(tl-validity: 2) => validity-map
}

$concise-tag-type-choice /= tagged-concise-swid-tag
$concise-tag-type-choice /= tagged-concise-mid-tag
$concise-tag-type-choice /= tagged-concise-tl-tag

corim-entity-map =
  entity-map<$corim-role-type-choice, $$corim-entity-map-extension>

$corim-id-type-choice /= tstr
$corim-id-type-choice /= uuid-type

corim-locator-map = {
  &(href: 0) => uri / [ + uri ]
  ? &(thumbprint: 1) => digest
}

corim-map = {
  &(id: 0) => $corim-id-type-choice
  &(tags: 1) => [ + $concise-tag-type-choice ]
  ? &(dependent-rims: 2) => [ + corim-locator-map ]
  ? &(profile: 3) => $profile-type-choice
  ? &(rim-validity: 4) => validity-map
  ? &(entities: 5) => [ + corim-entity-map ]
  * $$corim-map-extension
}
unsigned-corim-map = corim-map

corim-meta-map = {
  &(signer: 0) => corim-signer-map
  ? &(signature-validity: 1) => validity-map
}

$corim-role-type-choice /= &(manifest-creator: 1)
$corim-role-type-choice /= &(manifest-signer: 2)

corim-signer-map = {
  &(signer-name: 0) => $entity-name-type-choice
  ? &(signer-uri: 1) => uri
  * $$corim-signer-map-extension
}

COSE-Sign1-corim = [
  protected: bstr .cbor protected-corim-header-map
  unprotected: unprotected-corim-header-map
  payload: bstr .cbor tagged-unsigned-corim-map
  signature: bstr
]

$profile-type-choice /= uri 
$profile-type-choice /= tagged-oid-type

protected-corim-header-map = {
  &(alg: 1) => int
  &(content-type: 3) => "application/rim+cbor"
  &(kid: 4) => bstr
  &(corim-meta: 8) => bstr .cbor corim-meta-map
  * cose-label => cose-value
}

signed-corim = #6.18(COSE-Sign1-corim)

tagged-concise-swid-tag = #6.505(bytes .cbor concise-swid-tag)

tagged-concise-mid-tag = #6.506(bytes .cbor concise-mid-tag)

tagged-concise-tl-tag = #6.508(bytes .cbor concise-tl-tag)

tagged-unsigned-corim-map = #6.501(unsigned-corim-map)

unprotected-corim-header-map = {
  * cose-label => cose-value
}

validity-map = {
  ? &(not-before: 0) => time
  &(not-after: 1) => time
}

concise-mid-tag = {
  ? &(language: 0) => text
  &(tag-identity: 1) => tag-identity-map
  ? &(entities: 2) => [ + comid-entity-map ]
  ? &(linked-tags: 3) => [ + linked-tag-map ]
  &(triples: 4) => triples-map
  * $$concise-mid-tag-extension
}

attest-key-triple-record = [
  environment: environment-map
  key-list: [ + $crypto-key-type-choice ]
  ? conditions: non-empty< {
    ? &(mkey: 0) => $measured-element-type-choice,
    ? &(authorized-by: 1) => [ + $crypto-key-type-choice ]
  }>
]

$class-id-type-choice /= tagged-oid-type
$class-id-type-choice /= tagged-uuid-type
$class-id-type-choice /= tagged-bytes

class-map = non-empty<{
  ? &(class-id: 0) => $class-id-type-choice
  ? &(vendor: 1) => tstr
  ? &(model: 2) => tstr
  ? &(layer: 3) => uint
  ? &(index: 4) => uint
}>

comid-entity-map =
  entity-map<$comid-role-type-choice, $$comid-entity-map-extension>

$comid-role-type-choice /= &(tag-creator: 0)
$comid-role-type-choice /= &(creator: 1)
$comid-role-type-choice /= &(maintainer: 2)

conditional-endorsement-series-triple-record = [
  condition: stateful-environment-record
  series: [ + conditional-series-record ]
]

conditional-series-record = [
  selection: [ + measurement-map]
  addition: [ + measurement-map ]
]

COSE_Key = {
    1 => tstr / int
    ? 2 => bstr 
    ? 3 => tstr / int 
    ? 4 => [+ (tstr / int) ]
    ? 5 => bstr
    * cose-label => cose-value
}

cose-label = int / tstr
cose-value = any

coswid-triple-record = [
  environment-map
  [ + concise-swid-tag-id ]
]

concise-swid-tag-id = text / bstr .size 16

$crypto-key-type-choice /= tagged-pkix-base64-key-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-path-type
$crypto-key-type-choice /= tagged-cose-key-type
$crypto-key-type-choice /= tagged-pkix-asn1der-cert-type
$crypto-key-type-choice /= tagged-key-thumbprint-type
$crypto-key-type-choice /= tagged-cert-thumbprint-type
$crypto-key-type-choice /= tagged-cert-path-thumbprint-type
$crypto-key-type-choice /= tagged-bytes
tagged-pkix-base64-key-type = #6.554(tstr)
tagged-pkix-base64-cert-type = #6.555(tstr)
tagged-pkix-base64-cert-path-type = #6.556(tstr)
tagged-key-thumbprint-type = #6.557(digest)
tagged-cose-key-type = #6.558(COSE_Key)
tagged-cert-thumbprint-type = #6.559(digest)
tagged-cert-path-thumbprint-type = #6.561(digest)
tagged-pkix-asn1der-cert-type = #6.562(bstr)

domain-dependency-triple-record = [
  domain-type
  [ + domain-type ]
]

domain-membership-triple-record = [
  domain-id: domain-type
  members: [ +  domain-type ]
]

conditional-endorsement-triple-record = [
  conditions: [ + stateful-environment-record ]
  endorsements: [ + endorsed-triple-record ]
]

domain-type = environment-map

endorsed-triple-record = [
  condition: environment-map
  endorsement: [ + measurement-map ]
]

entity-map<role-type-choice, extension-socket> = {
  &(entity-name: 0) => $entity-name-type-choice
  ? &(reg-id: 1) => uri
  &(role: 2) => [ + role-type-choice ]
  * extension-socket
}

$entity-name-type-choice /= text

environment-map = non-empty<{
  ? &(class: 0) => class-map
  ? &(instance: 1) => $instance-id-type-choice
  ? &(group: 2) => $group-id-type-choice
}>

flags-map = {
  ? &(is-configured: 0) => bool
  ? &(is-secure: 1) => bool
  ? &(is-recovery: 2) => bool
  ? &(is-debug: 3) => bool
  ? &(is-replay-protected: 4) => bool
  ? &(is-integrity-protected: 5) => bool
  ? &(is-runtime-meas: 6) => bool
  ? &(is-immutable: 7) => bool
  ? &(is-tcb: 8) => bool
  ? &(is-confidentiality-protected: 9) => bool
  * $$flags-map-extension
}

$group-id-type-choice /= tagged-uuid-type
$group-id-type-choice /= tagged-bytes

identity-triple-record = [
  environment: environment-map
  key-list: [ + $crypto-key-type-choice ]
  ? conditions: non-empty<{
    ? &(mkey: 0) => $measured-element-type-choice,
    ? &(authorized-by: 1) => [ + $crypto-key-type-choice ] 
  }>
]

$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type
$instance-id-type-choice /= tagged-bytes
$instance-id-type-choice /= tagged-pkix-base64-key-type
$instance-id-type-choice /= tagged-pkix-base64-cert-type
$instance-id-type-choice /= tagged-cose-key-type
$instance-id-type-choice /= tagged-key-thumbprint-type
$instance-id-type-choice /= tagged-cert-thumbprint-type
$instance-id-type-choice /= tagged-pkix-asn1der-cert-type

ip-addr-type-choice = ip4-addr-type / ip6-addr-type
ip4-addr-type = bytes .size 4
ip6-addr-type = bytes .size 16

int-range-type-choice = int / tagged-int-range
int-range = [min: int / negative-inf, max: int / positive-inf]
tagged-int-range = #6.564(int-range)
positive-inf = null
negative-inf = null

linked-tag-map = {
  &(linked-tag-id: 0) => $tag-id-type-choice
  &(tag-rel: 1) => $tag-rel-type-choice
}

mac-addr-type-choice = eui48-addr-type / eui64-addr-type
eui48-addr-type = bytes .size 6
eui64-addr-type = bytes .size 8

$measured-element-type-choice /= tagged-oid-type
$measured-element-type-choice /= tagged-uuid-type
$measured-element-type-choice /= uint
$measured-element-type-choice /= tstr

measurement-map = {
  ? &(mkey: 0) => $measured-element-type-choice
  &(mval: 1) => measurement-values-map
  ? &(authorized-by: 2) => [ + $crypto-key-type-choice ]
}

measurement-values-map = non-empty<{
  ? &(version: 0) => version-map
  ? &(svn: 1) => svn-type-choice
  ? &(digests: 2) => digests-type
  ? &(flags: 3) => flags-map
  ? (
      &(raw-value: 4) => $raw-value-type-choice,
      ? &(raw-value-mask-DEPRECATED: 5) => raw-value-mask-type
    )
  ? &(mac-addr: 6) => mac-addr-type-choice
  ? &(ip-addr: 7) =>  ip-addr-type-choice
  ? &(serial-number: 8) => text
  ? &(ueid: 9) => ueid-type
  ? &(uuid: 10) => uuid-type
  ? &(name: 11) => text
  ? &(cryptokeys: 13) => [ + $crypto-key-type-choice ]
  ? &(integrity-registers: 14) => integrity-registers
  ? &(int-range: 15) => int-range-type-choice
  * $$measurement-values-map-extension
}>

non-empty<M> = (M) .and ({ + any => any })

oid-type = bytes
tagged-oid-type = #6.111(oid-type)

$raw-value-type-choice /= tagged-bytes
$raw-value-type-choice /= tagged-masked-raw-value

raw-value-mask-type = bytes

tagged-masked-raw-value = #6.563([
  value: bytes
  mask : bytes
])

reference-triple-record = [
  ref-env: environment-map
  ref-claims: [ + measurement-map ]
]

stateful-environment-record = [
  environment: environment-map,
  claims-list: [ + measurement-map ]
]

svn-type = uint
svn = svn-type
min-svn = svn-type
tagged-svn = #6.552(svn)
tagged-min-svn = #6.553(min-svn)
svn-type-choice = svn / tagged-svn / tagged-min-svn

$tag-id-type-choice /= tstr
$tag-id-type-choice /= uuid-type

tag-identity-map = {
  &(tag-id: 0) => $tag-id-type-choice
  ? &(tag-version: 1) => tag-version-type
}

$tag-rel-type-choice /= &(supplements: 0)
$tag-rel-type-choice /= &(replaces: 1)

tag-version-type = uint .default 0

tagged-bytes = #6.560(bytes)

triples-map = non-empty<{
  ? &(reference-triples: 0) =>
    [ + reference-triple-record ]
  ? &(endorsed-triples: 1) =>
    [ + endorsed-triple-record ]
  ? &(identity-triples: 2) =>
    [ + identity-triple-record ]
  ? &(attest-key-triples: 3) =>
    [ + attest-key-triple-record ]
  ? &(dependency-triples: 4) =>
    [ + domain-dependency-triple-record ]
  ? &(membership-triples: 5) =>
    [ + domain-membership-triple-record ]
  ? &(coswid-triples: 6) =>
    [ + coswid-triple-record ]
  ? &(conditional-endorsement-series-triples: 8) =>
    [ + conditional-endorsement-series-triple-record ]
  ? &(conditional-endorsement-triples: 10) =>
    [ + conditional-endorsement-triple-record ]
  * $$triples-map-extension
}>

ueid-type = bytes .size (7..33)
tagged-ueid-type = #6.550(ueid-type)

uuid-type = bytes .size 16
tagged-uuid-type = #6.37(uuid-type)

version-map = {
  &(version: 0) => text
  ? &(version-scheme: 1) => $version-scheme
}

digest = [
  alg: (int / text),
  val: bytes
]

digests-type = [ + digest ]

integrity-register-id-type-choice = uint / text

integrity-registers = {
  + integrity-register-id-type-choice => digests-type
}

concise-swid-tag = {
  tag-id => text / bstr .size 16,
  tag-version => integer,
  ? corpus => bool,
  ? patch => bool,
  ? supplemental => bool,
  software-name => text,
  ? software-version => text,
  ? version-scheme => $version-scheme,
  ? media => text,
  ? software-meta => one-or-more<software-meta-entry>,
  entity => one-or-more<entity-entry>,
  ? link => one-or-more<link-entry>,
  ? payload-or-evidence,
  * $$coswid-extension,
  global-attributes,
}

payload-or-evidence //= ( payload => payload-entry )
payload-or-evidence //= ( evidence => evidence-entry )

any-uri = uri
label = text / int

$version-scheme /= multipartnumeric
$version-scheme /= multipartnumeric-suffix
$version-scheme /= alphanumeric
$version-scheme /= decimal
$version-scheme /= semver
$version-scheme /= int / text

any-attribute = (
  label => one-or-more<text> / one-or-more<int>
)

one-or-more<T> = T / [ 2* T ]

global-attributes = (
  ? lang => text,
  * any-attribute,
)

hash-entry = [
  hash-alg-id: int,
  hash-value: bytes,
]

entity-entry = {
  entity-name => text,
  ? reg-id => any-uri,
  role => one-or-more<$role>,
  ? thumbprint => hash-entry,
  * $$entity-extension,
  global-attributes,
}

$role /= tag-creator
$role /= software-creator
$role /= aggregator
$role /= distributor
$role /= licensor
$role /= maintainer
$role /= int / text

link-entry = {
  ? artifact => text,
  href => any-uri,
  ? media => text,
  ? ownership => $ownership,
  rel => $rel,
  ? media-type => text,
  ? use => $use,
  * $$link-extension,
  global-attributes,
}

$ownership /= shared
$ownership /= private
$ownership /= abandon
$ownership /= int / text

$rel /= ancestor
$rel /= component
$rel /= feature
$rel /= installationmedia
$rel /= packageinstaller
$rel /= parent
$rel /= patches
$rel /= requires
$rel /= see-also
$rel /= supersedes
$rel /= supplemental
$rel /= -256..64436 / text

$use /= optional
$use /= required
$use /= recommended
$use /= int / text

software-meta-entry = {
  ? activation-status => text,
  ? channel-type => text,
  ? colloquial-version => text,
  ? description => text,
  ? edition => text,
  ? entitlement-data-required => bool,
  ? entitlement-key => text,
  ? generator =>  text / bstr .size 16,
  ? persistent-id => text,
  ? product => text,
  ? product-family => text,
  ? revision => text,
  ? summary => text,
  ? unspsc-code => text,
  ? unspsc-version => text,
  * $$software-meta-extension,
  global-attributes,
}

path-elements-group = ( ? directory => one-or-more<directory-entry>,
                        ? file => one-or-more<file-entry>,
                      )

resource-collection = (
  path-elements-group,
  ? process => one-or-more<process-entry>,
  ? resource => one-or-more<resource-entry>,
  * $$resource-collection-extension,
)

file-entry = {
  filesystem-item,
  ? size => uint,
  ? file-version => text,
  ? hash => hash-entry,
  * $$file-extension,
  global-attributes,
}

directory-entry = {
  filesystem-item,
  ? path-elements => { path-elements-group },
  * $$directory-extension,
  global-attributes,
}

process-entry = {
  process-name => text,
  ? pid => integer,
  * $$process-extension,
  global-attributes,
}

resource-entry = {
  type => text,
  * $$resource-extension,
  global-attributes,
}

filesystem-item = (
  ? key => bool,
  ? location => text,
  fs-name => text,
  ? root => text,
)

payload-entry = {
  resource-collection,
  * $$payload-extension,
  global-attributes,
}

evidence-entry = {
  resource-collection,
  ? date => integer-time,
  ? device-id => text,
  ? location => text,
  * $$evidence-extension,
  global-attributes,
}

integer-time = #6.1(int)

tag-id = 0
software-name = 1
entity = 2
evidence = 3
link = 4
software-meta = 5
payload = 6
hash = 7
corpus = 8
patch = 9
media = 10
supplemental = 11
tag-version = 12
software-version = 13
version-scheme = 14
lang = 15
directory = 16
file = 17
process = 18
resource = 19
size = 20
file-version = 21
key = 22
location = 23
fs-name = 24
root = 25
path-elements = 26
process-name = 27
pid = 28
type = 29
entity-name = 31
reg-id = 32
role = 33
thumbprint = 34
date = 35
device-id = 36
artifact = 37
href = 38
ownership = 39
rel = 40
media-type = 41
use = 42
activation-status = 43
channel-type = 44
colloquial-version = 45
description = 46
edition = 47
entitlement-data-required = 48
entitlement-key = 49
generator = 50
persistent-id = 51
product = 52
product-family = 53
revision = 54
summary = 55
unspsc-code = 56
unspsc-version = 57

multipartnumeric = 1
multipartnumeric-suffix = 2
alphanumeric = 3
decimal = 4
semver = 16384

tag-creator=1
software-creator=2
aggregator=3
distributor=4
licensor=5
maintainer=6

abandon=1
private=2
shared=3

ancestor=1
component=2
feature=3
installationmedia=4
packageinstaller=5
parent=6
patches=7
requires=8
see-also=9
supersedes=10

optional=1
required=2
recommended=3

]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t><contact fullname="Carl Wallace"/> for review and comments on this document.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="C." surname="Bormann" fullname="Carsten Bormann">
        <organization>Universität Bremen TZI</organization>
        <address>
          <postal>
            <street>Postfach 330440</street>
            <city>Bremen</city>
            <code>D-28359</code>
            <country>Germany</country>
          </postal>
          <phone>+49-421-218-63921</phone>
          <email>cabo@tzi.org</email>
        </address>
      </contact>
      <t>Carsten Bormann contributed to the CDDL specifications and the IANA considerations.</t>
      <contact initials="A." surname="Draper" fullname="Andrew Draper">
        <organization>Altera</organization>
        <address>
          <email>andrew.draper@altera.com</email>
        </address>
      </contact>
      <t>Andrew contributed the concept, description, and semantics of conditional endorsements as well as consistent contribution to weekly reviews of others' edits.</t>
      <contact initials="D." surname="Glaze" fullname="Dionna Glaze">
        <organization>Google LLC</organization>
        <address>
          <email>dionnaglaze@google.com</email>
        </address>
      </contact>
      <t>Dionna contributed many clarifying questions and disambiguations to the semantics of attestation appraisal as well as consistent contribution to weekly reviews of others' edits.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
dnABf1stzM/Rz/1+H5o6pPNz/FL4TfdImLef47NQpUd0a4ncRE36jkkPN7f1
ndlqOmzv9+mEIphGmwn0M2m9sjNKvP+IqJuNTKWGn7GTtmQqhuvz07ASvEhg
tEYPMYXjZQc06QDN+wk7OTkQrsbCb7oNbli7mvucN3sbe860tRLcefvRis6b
h+EcesPDOKeAol+yPIZIiUgi4xWGmxK+9XoHdmNwC71vgaQtmzpTBUUvSKfe
fYPM5HptG5uSOLfTh+/DIPZ+koD70vkEPQHu7mh/3HV87Jnrh310JWUa/ase
++r+myt2SwhPXtxdHrsu/uyftapVvTfXJJMnhUFjXV3I+LGLdK26OvukBQPX
cRt8tWYE4t7p83fnDSBNyooA9ONR/ES5Cw5H/Gqjg61o8H2Wx9m4Izr/X5aY
s+AnJElnrOhiCv8Pfp7eRd//X6L36if1Dy5a8BJOYznCzApPfbztzeXTzlw5
TwnVVk9393dR7wsky9uZkcReI4FBiouEkN0baRLIFWGs5rWEQtEr4lsylakb
jA0TWGb+58mMuAzTf4tzxj2sdTq3xPz8zCQVBZIaDvtUXM5/bkzbd+tprHUF
xz7GV0VGFHeYkQ2anN+exoPBYIgPPxu+Pn51OpRlUtshgfI4L4jnXtUHfr3i
U3Yp8B9txjvxV1/H9O3TeBf/plls8Qx0CvRZR0dBD73m9+Zb/qhmZgSnGs5x
SG+Ty0tdFjR6cjjY2d3bhLY8GX7dHza+Qo0yvP3YOY07HaY/hHY8iWmeXOI1
Hf5mM06O4p1ePDqCT7Z8U2oxNNfIg4BeJoKBC4QBJngrYZbu0YPCPjTqQ4Cb
bsYdKpqcdjhRjwxV5OJCcHR1sAHOOCEhOOPYLx50RfzHwHUtznShB57a6pOm
9zC+TNj9/BinwDNzYgmQ3lmCBssUBEeYDUI7zUlMLyouspMCuu2IVqznlJo9
MRXMEUex/wGH6TW1PaSHQRUAboSsAt5Msilts0Q0ASv8hTsBCcE+e4Hb/ers
xRbv4iajUBghm6BHmThw+B0lg43V8iIK8d508LbhzISuWX7Y82Ja00se+Pwv
duQ+JzrAca1TZ3tj7L5U2qPflWBE2BOmWzDcxcvmMuvcrtISHtoVcb3HafKH
ztzluAYRqDR7EUqjGDSQXacbHNCFjmDYeTOiS0ySjIgRo6OKjUPPFKbZ24vZ
bnS959CwMIlSQ2nolk0eCMfzMRo8zykDBO0ACFy405oLAleP1vllWZJ6Tixl
KvSKpA27ACcst0SwN+mcTllOp8ujrj6J+t0YHx3ya3VZW5xUQhpiimbkB5Xb
FlLBkwdRUpZNobBYCA+rUEmQjZ5nsCdF6Xw1eGthYFJ1kVgjdqFbhypkVPx8
wXkgzLx77XAyFz4jekwf2Sob4DXXgGCEQMFZIpLQARJPfNE8KpvRoNpy+GM4
RriMP/HoUzSZe7chJ0Gient5OTNyP3dMXeK1Nf1ekyYhNapBd6Ia0lpQj07f
SH0SYApc2MVonFPMQR73rOrzyud/crvLGn8xUmAvYpDHU0NfI/yJngCM5Nk7
q3IOQgimNacQk+RGKBh1KnT4rpDD6wRAJ8s1QMgRmr4si+gqKwi/YPetbIJE
agHXvpj4mbODgzj9oLcTN6D7zG28IC3ZNJjzpR6pd5tbyaPUICjO+e+z2pNZ
JzWgum4Dqd07LhitNcWnD6ImwRMyt2n3gZ8hemCTMxG/c3i4Y4NcURisC5QJ
vX+E5nsL1jyI/oLsvSPh3L36iRQ1SwZXQCgxXhLuPK52uiwJNygBYG1v126J
ihU7RYexXNI8scE1WKt6mhBmA9bqYHuHGIO+cF2L5BZBLtwM4JmIKGl0pziZ
UnBnomkwEHLnaS6aeI+t5AZYH4y6WPRzSkgiLhXRf/tv/42zi9GA8VfKtPRx
eMO9UqbBrhfx06+Ecewv57y7fvLrPrJtcRok7vCWvQKW0jBhtA1Gwgit7wqO
Q9d2yEEPTthgkERl/lI8P4BrjKxVg3DJSDcPOS+SCUmnzyiBrk2iITWi2lq0
NhCHh038GMXxbzYxhdL2FvLCn/HLbBJsKbZBFA08MLX6Pv4tttT8SZfBjv0A
zX8PH0zSBUA9OutCj/DprvuUxxBaRBPRbwS3HMV7PBuLa/xksCX2oDjnKN6n
5vqbDpSbKV44ig8aw7Nlyo3+RfzZZ25j+g7fR3dRG1gI+BRwCCBCePagTFp6
YHFzPMl05qwFfCJfgHwzGcYguEzSD3AA6Bd3mRcj4qw7WQRnF5ajHYiKdpRi
jjungNdDFOyMAlHlxtmBcdBBGFBIctuOckCeDoVnz9IN4nWjYAsdJzxyN+Iu
jPjGDFKlJUdQMAonUHVqN8wp5HgQ1yGKChrzTv5pzJtQVirM+PjCBuna6Rko
01kKULnp7W2Rw7Tjmdpcjru6xHNaNgbz1+KBymlQCFRA9+GuUgQZ8CjFJPS1
ExV8UcJ33wKp5Wxt4rR1OceQ/Np0Z6ZDPYvB3KUt+LsR966wJ2xeOp+02Oh/
Ogk57Y29Vm6D9rdcTi1Bzw1qHxDWlceBkemucz0MvaBusAO6Bk4lpnSdo3S4
Q8VrOQBEf3w7RqfzNSDAN10H7LzmQwxew2MkrF2M36e1ZWlRyYiyhyGtUewF
WaddNJh9xYwyEMlEYKdAwCYxUGTTU+yvug4KNMs4dwEmqmVZCeFykZSVwfbA
sBWSIYryIjp1SBuPwSQdUVjZCJAdMwGb7XdbSg6fxGdq6rfkEDCQZ6XOPPw2
JXrOlSGsj8QdsDnSMOmePxfp4LvvRPwkBY6/HoAQ3hBX5ERF88678xsJDt0l
kWf329FJB4mDgFNf/RYTp9IzvzGkcbCbQgiTjn4VCWW2QE+elDLKdLFblHB/
GjwXMdZuaCYospKxeKA50AgCkPUbUn5jA7rJu+eitAWlXsT8qI/4Zvb4T+qc
vnAb+5Ixe4sHsxifKbM8IQWgE8LpAqUueQdGzRW0q2xfd5THE55e5CPWUk44
xZK5c9IKhF1J34ZhTul1Ox6izZFZhkg5s6synSpvBsJD/JQ4GPxLWab6CqS9
RQmLUe6Mc04B5/JQ1kRSkjnuBM+BkSUOHzAoSfzduzMCIOUeEi9K4LsqkEVo
SZz1jna1YWFT33vdrGmKNtiJMC1uYQHr4owkklrLuepLVyZFAOw4r0Cpn6FD
mKWmT5hUHBWeaLpO0tqHVzaklFHELUnYkqRQKco2WTXjC/qrqy+IVCgjoF68
LD3L+j33kpSq9RQ517gU2SAd6O4qG2VkyppPNA6+qejAlumHtByT3yb5YBU3
ndoNAgSWzG/hjn1AKAkyWUtoglWTtOwuwUJfHf/Nq1iU71hqlh8M+5+bTjlo
FP36UgcV3H7Q6JMWOREjcb2iN+9HrnNt7Y1gTzXWUO4BQqOnbsNa34gvB1nT
ymsNKqvd9VOncbQs6uY5nZ8swvUySkP3tSReLEd5NkZ35mvgKFmlbrc26Ieu
HeU8cm7/Fl6BeUBFGG5Gy8VnRiy+Ggqce67nrQEMgfugAKe0ds54C4yQLFHV
wkfT0kQA+OMJ8XhisWAlFjFD6ErupxUAi2GPTVz5PH4D9E9MGpSIHKZL9O+7
d5T7BFCpJLnp5LS7ORXd0nSi3wxQpLoVDV8VyXrlZc+7nleUGwbxFuYq1FwC
lVOO4x0zVgnpICKsQjeN8mLYJn6yAfnukJyJQQHKsfKlENwi4GG+ZQ82TZgV
IKGM588awlbmbIdYT5WJtzhVuHLrlXnKHCRzucwH1lkQjCAtyLoP6HEzEC2U
z99y6SOGwqihVi9gsOTAKUMTeaA28VFbc5M0JxkNlTPok/6lKLVbJ2N4HYMR
NQxO8JJGOlvUtzp6FIzeZhSM6uIrkfP45+9WrLcXr5vR11G04jsEit9sNpeJ
fMYDv2B9I+p+PDMybM5kaDTkama6Kbzo57FLo98hnR27GZ6zhpbPyMKZqGnN
JlophqWbnWebqL3tk/aWX8iEzzmHnbfHGLeAhU82bMCH2PU3HBfovp5PolOX
BM9bSH06KrSOqr4A870vnKQL8/qRtcpO3rTZ/vQj0VAHCgY5r259a3dkEPnh
Y2A+8XOemJJym5XPkUPtYuxzeo7KW3ZaGmusEHSJKM7wf9E6VbUJeEyclJzW
CUNMqHyGxw3xpXmccM7fo2JJp3UUYxrpeIBkwT+V/njKokVczs1H5kdXW5HS
gs5Xq5xjbyDnL6IffgWW3U1wSFlXEBpPZStbh+Jsd/6NAhDsn53gAM2mLDgF
h1YJ4wSfvXV9/Il7R8FslObILuLEzN7x1DxIxZqPAO1bwVyokfEjoBXyLvv1
KaiowCwWA2jqvvQjukfxCKST934PiDy7l2S5CCAZtoOySIokHroY6MdmeBEp
WntioHQ1MDkBMMkvVa4DNpEeicWoz8XAWFO+QVERkkMduvotwt4GNX+P2n1W
kBOQcRd6b47iZ+6VQGx410g3juiqD+xkmmNb+kX8mxUyHWsZwhguhjKqVcUs
1fyU9uwNOuG0G3MrIpqbb5jKwS/XuMOGBvLkMXvnXzootIyehwf4DD0Er2bc
iz2DUJGMaNrlvXKO4AxeG6/OXp3STVKXkw1R5jjEKbvIQMZjvTdGgn0aAhME
6jgOfikFlQ+5WbBThaSc9l2fSbgor8LvrQzwjAbAQ9MIPL713r2lkaEjacD9
GkUs42nk2v35Up8ud2IY2GahBGeEKf8aOZ44dyAR0y25c69glLZhDoe2cIoP
qNPuPCvoMKL8B2+ExjBPTNaxzmhvDkMC+YA9wiWdq7PcYHI5Djo1+mXjGk9y
jtppW0Y7uZQOPSiDxRoiw/GUxgjmoNhYzHbaFrOHK4yCm8XlHRy6RbbMKIy6
bfepyWbDyYHuNx/4pakqv72u4Gb/uWGkcPHUPMwDbRRPnih32VY1ynRax+RP
oHFQfa5CJrZWYYHxWYeFU74AiU1Pi0tdeUulHyYwWNIputOg7oMjeY3p3Zyy
wee/4+OAzcIT8/SQqscho207hamEWJT0glb1R5/TSGaIwALTNX2g06ehyoSO
Tfy60g+LhF85I5ecDKN3PKrvPJshV92wI/bwLC/HSMYe5DpOTw71frLoISeI
HGF3iPzWR9Aqd9iQX/itBzOgVa7lJltlxCtjy5n6byXbobApnFUshZ7ygvIV
yOdeK+RxYtWcK3JFyXtg71yCliCIx+AyhSd7sUWRpc4/cu1U4iGxmxSwDUqz
WtJzkoYLs2nLkpgLi1hJRDW4151RekF0IdKCKzZiToCvvkyci5hsCI0tNGmM
+jFW8s6bxxZky5T0aj5vOB36JM6z+XuRab0SB/heDRRzO0ypwKAZLsR4Eflk
UQKgrCJ44nxSvOdvBfKrhAKz8yCBByWI9NdT1ijZiqmeoPMctkBkZiuLlhhh
9vpBNSJq+/P8ts+5VYnyOW082VmIhJDNpMcpP0SppPqaVVG2fyGJGCZ58uov
WyQ+z24QOTPouunCW1ZXkvsUZ74kpbBT7M2Jut6w5cJJunraV8nCIUbsy+/E
6qGsasjsHKUuR1BF6+vRx4+/wVpGd3dHBK9DVsU6yb4fQFFjFInllOWYaD/R
dwfM14UALfuASmZ+vjYuAaOxUxPjZ5gtUTQMm4ixxXkHHZgsTDblTeo9X/Xu
+JXRqkySuoljeS6U8etwepu7VSSdh4GkDqVGr7sfAqSMf6yH6mbH7bxy2vlk
tcWqoeU/Ea1MpV82+uk2C2pNxWtdUuF4hEqQ7TCqU9eo2h6rDxvnZMJSmrJ2
TOnauYgj+q9OJm5Z3fgRrxj58YonAHup6u1q62SAAS8uMSGQR6V0pG3Gk9Tn
5vyYAm78+CPv7wbJoB2gvoHuPL/F4oWeTn5/8c0LjKWgLOeBksTpRn4ACmq+
0XgXlICNvBkAAJoNEAlhelf+DM8Wr7s6TnO0lSZRCNKxmmzLVlYKh+h5AwnT
LeZPvC2GhkWPi+2h0wTCHIYb+M0GPftP529eD4RCmTIFOCxPWnGJVAkj/49+
RihYBD6GM40DHzqXg2HYIPZabAafjx+l5CViTqEHroJS6FjTsbWTFKvYpuIx
S6ZzNZGP07bnF02f6IG3zIovcIEOGh07IHmi/eqTYHGyD6PAwkvtkPMcLsv5
EbY+Gv7ILfv0LW/Jjw8eEN071o3VQOe0wp4bEr/uHIupxLBl5x/aPKW8XWRD
R9Q+hS2+SbBiBjlDJcAkzH9Ky8Ik3ywRxxKd/e7dS/IklaJ1nuy2lL9KcyfQ
cs4hbMRzVVROypRp5ZCL0XI+IUu3QIxslOhxhHnAkj9kmGpZripGJYQ+sF5A
9DRuopKnDVRytBqRbADaSp+NJ/v9/XT/y/7+4c60P9rb3+nvJqNkL0n3x6NJ
ssG1EHWg2Q06TTDK+d3vMO6tgWvgEXo3fZQKioBlJvB/20fx1ec6HI6Gg+FY
dqjPe+4j8gx8iiUav3+6wtmFBjrc/N3vdCj5ru90NvS9f+vf64T2dg7G0/H2
7vazycH+szR9Pn72/Pn24WT6/DD9cjp69rn79q5nB5F0gE/j/Wb/DlL6vhEM
9f33ppW0A/bzGk/rKYY3VdJQf7lJHhxub159Pt6epJ9v3ZlZ+G4kOOppMBN+
PQPxqb0L+lbNltOigF/9/e39o1arGHbpcPv5/uGzg+mz0ej56PDLSZJM9w6+
3P5yNNkd7z3fmR7sHSY7k+nuOD3YOYBH4/HnjX7u7n74oRfsk1SY9Zt02Nqk
T9iY7+FoD58nh4fPnu0f7Ozub8PEv9x/vn0w2plMDqZJ+nz6+Q8//HB39/XX
Wz94oFO+9mm8J7dGbjeG0/Z2t3cPnsoDdWHZ8B+HKBse7MKKLGii64xAg5ns
hsO0BzvJwfRwb6//5c54u79/MD3oPzs4SPv7e+mz3YP98c6z7cMNu84Njfk1
s3x637oHfP1dNz/c/XC3FX/9NW3DxoPm8OkI4UgvoI6Hw+FoOJgd64EYQV3m
aKiDACV0XPr7IKPX+vhaat7C8HCqu2EDjQckzRDPcOOPyQQze34rkYkb4RcO
Pe02L6a+0772sLPjk1en3V0RCigYYveO7FzEVoljmPZ34TwUAYwSbLi/+3z/
+eGXu88PGrOyDX+Sy9frbvCP5QfegavPp18epvs70739w93kcDd99vkvuG1u
OXrd7rYAUp06qBVb6h1NNMZUVT8z5zv7it3wvYKkbTXV6NKeCy3tsbM9jWKK
AviAROyVRUsJNDh74axwPvA2mY2yyyVICCb6Vj52ZSQ0BAVLDio1YYZBZl6F
wj4Kg7cL0YT4FLs0Y+FBL17idwO/fjVPa2Yz59mriflYxtkQ9LwR+E4dU022
7BIYUowoQr9Yn2fXJhGm9bN+xmcL5jSjkui3ldtXFtlKt8smyQfl2uUj/LQ8
u3Z/TZ1GeLM60W4vTuvxYEU+XN5udMMgIiYRt7xMloNeYcgr5XyEHTrTdFnx
5quLsy2dbPxGvRLDNm+gDUv60NrtHrkaVpUoFNE7Mqkw5VZHzqLO5GUddVW6
E1GfehnZRymzksTNsQ4nx7OFeQuJ97tB0+Z0IxS2U6XTZW5KcAoXfNwcT8RG
P+IbO5qrwWeSLbIfJK9WM/lSVSyCW2w3S96njdRlqs/yUwf0ARBCAZKU63ye
4qYmZTO5IvAHeXEreh0DiDgQMft2SirkAXDk2YycSukCVNlPjIv0Ketjbb0U
3GXODM7x9+3qmvLSykodJTilwIVNPEw5nUwxaZLC2GGho+iD9Z8XRq8PCI1S
+QC4ftFKlNQ1sY1Gow0tTKaX1ad+bRVkWF1fxZW01+Op4ocVVAmtwImShK6l
wi3xSz3x5VOCypFuyWIXdEmjJbSrVRkMlbmSW2vSMzFLjWDsVeVYfE2ipaR9
bB5C11JwFnLr2S78pgFjq5Ynyay6VmkKysRpq+AwQR7afhJbvoqwKkbha2J+
50XwoGl/obWQXHBNF8SFGN6al/uWLmBEERD59BroVb+dU4MnPHG1l1qTUyFV
ZmazDv3n9CEzA9rTUY+MkrPfOjfopmUjLlh1vKLktQWdzllz9uo+jK07yhWZ
nO7qtvOwuTpFUD/JZVflmk6u4GCYaEUDE9Nu0m1pc+d8ufO+n1447VlKkf1Y
jqBz2sWi0OJC3ZPfBLamv6V5R0Ldc6ZlwBt1qChxc0Ygbargjvq+bjT1Kp1u
iRJbWCzRZetxi2O3hHh3TtbNNU+TSZ89LqB7P59gb9dsot8sh9SAWetLTBTy
eXzUso/q2MI3oYM+cJbaD5ylQ0Or3mpgVjM3jL/UEndFXvyWW2Rq5RI9dXzM
aOBC25PVU5NTBFEHSl2cfcGTe8PAdBepdkEFmz7TQzukwXAnpA8m3SiNwApm
LPIATYytgdzioxNOUEzO/W4kBIrxVYEpEpHgAVz8CADyo0sEEzBeb/Ur5yXs
Br4N+ccKly3uwKrQf0g0fqClG7JXUGdcfmTj8oNsw4+OywdAwJjLo8DSEqoL
2caCriC5lFJWzxE0h2hQvkPM6iVin3VGwttAfByrEQlPA8LlSGkWlXoYYnv/
2LWGOegFYh9D+elcBz/7rLGutq/KWo8jvsXKxnaeFnsD4SY1gulxn5CX0P0j
OdpllicvF7rUlBplwxWsjuPz5QibvuNsKbcbKEpoJ/2KXlKxWk0u8sFF73iT
S+67kzK6xILlwNrAfdcyrLha1LgjbyWzvZZ6Sst5jnVFEtMG+hJJ9MrUU7a2
ebtUnOASix9Q8LJOFMA4jpF2j8S0SKBqR/GlcbxbOPYQ9h0f5znGqwezdpXs
hM3WQfV+mDiXoDI9O/O0N8/lL3Ag3XA7GjbBPTCpMJuDSQtE0yKX36pQvFsY
3MnVwesCvD6pQityHdMcvNUa820ljWWTrU8UHkczaw1nbve1n0WTsnZ2YZi7
ucEN/1QNrbfzGYY3eyjpazSt0WQFN0GEHoMbYpejCma6OiEDTtOPxDQRj5dR
RuDkavNFKIL3k7K764Il64KyMaQOg0xE3OnF6NxyZLL/kntnUAyzoSmBnrye
BAMZhZ6s4lW6huVk4bgv2JumelsHX0r0By50vB1XbwAxCsL3g1vg/A75hXM5
VENly9vQaI0tIZFHHA/2C9B163baC93A1nBZqZZBd/aTh1zT8IKa+QdIwyml
5GUToBxnILNcM5j04B1F6cheaNbR1jF17L9PKtD9rpFS4FiHsMVzdw775BKO
tWvLW/EDkDh/xc82Z5tKf5HV1/rNJbpG+RobKUcAgTfy0ww0cwnePnb/kSbS
gAouEr8nDtSkUc4k2A3GQJ8NYBrHIhTQHkQUG1tp0UnpEJWXUwrjZ2m6F+dF
8X65YP5M+PkBJtV1bveSxipasUEkdbbXmDCz1gGQkWltCDB5V5DDgXAFGDBA
RWFidjGLYcmTNJfiS1RGDCleGLNqE2OiRb2l6vEH/UdMfSEue8zm70eYDmPL
z6OnYa5nNszVAemfxULkIVVhuYFVLAYArLJEl5cBLDxBRc62YATToUZvckgF
p1mXopw2FZzD2pg8ISHng+tMXHsjgQTMpxNWjaeQU2U2nFcnbGBORfIk1Hjb
6Z/ZGzejLSxTKrSGEERxbVRuheU2KZTiXcTJM1KwuEyQkvsA7yR1SkUwMPYZ
VxeKqqxTERneCf3BjVIsAVfR3ct5RurkKRsklaglVyC7I1EKIc6UJLOSLYp8
hEnLk4zvsJoCXd4T7jnIa6PBHb3Izj0elQU6/+LN6mnzJJ5lrIJv5NJnc0JM
Sewc+xIlfK4cnMWToiSexkbJG+rwC6EJisVhqlrkk6jVfFVgseGDAsGqIea0
o2axQXfUbPipjZo1nmgIA+ujl4eWQ31I3HLXjIIA41UT+6QA4xUDc1gvHoOL
Ad7eWt+4ESy8uiHqaiifViNOmFIxOhSrfra408IRAYY9coReQ7DjTYYnZCnU
puyyUzk2moKfGl8ga+ByL6AlxX0oV87zd86MF3ToF+L6RJEgmeuEoVNSi3KS
AL3bD+md8t0Q40zI24K74acl2w23w7uPsG5C0JIOZj7gYJF3YydTp6DgOkxs
3NmS0qmG149dk5oUZkEQbkNdoCypeXwfZ8owB/NVnvQz+R20+/X40mBqAXv6
3UqGlBeu4plPstZmRmHeASOKXwNETJziGK+s00u6bWetRSEysgxnPKcxzU04
8UGT5WzsGF88MqmwLpqv88qWAEN5Mk4p/6O5oApG92RPcPfUDBjc08ZSFypD
mzDQljgtol7r8mh9XHMolNdOVhDc9sa4QvgAYMoShGMulGoTvrXyF5tROPWf
nWbYRugb9DLJKi6vS4mOiB8T+TYQ8UQWFIRvtGpD7wmCyiSDKqQbIdsTTJay
IL954MWK8hbm+LqoIyp0KY8o85kkItL6wMh6oh8EMCestHCNlUa7SsIg+WvG
huALco+mqvRwQFVNQTPiNtDO2nvr/E46tCAi7zuPjU02urTMv9C6YRikrN0j
TCHJrGrola+RBuLASimAvFMIlXHlXUFFb1Cj9U/FDTqh9LwtRN8iIyLWeput
UIMAnEKbUYSmgGjU/vOhAlxyEPV6zLOm6Nngak9pN5SMx1iVCN94Bt6DDaDf
OTIbyAf8ThXLLe9PQcfk84Qa32YDrKGMtYdVUaxaFP/9TvB9433zc4eC3ee7
weeN983PvXXPd7AXdNBq0ezCW9r6oSLbddEyya3oyZubfE8HXT21GjZ7Cn1N
j+LDoJfgbftTZ6W2bi99Lobku3zW6PIBXz10KA8J2w8apN07Gg0M5FqDwde/
gNQb1HkkxKAB9QGlV2xs1MgNUechWjznOaLK4vCeBHxAx4gN7eRDBlT/DU0s
HN6sQEvdMaDzQTcOBA8Z1bsFSHqF1pUM1M8dI3N5duEVyEmglWLA+cZZ0+9D
ZmfN/2GK4nF7fvtmfo/zBXjIVDos+yI2tPBGkAu3a0aPNPM/fHbWZK4pIiwu
cjM7NDOzhnOtwdJpK6+pysP9k1GTuUu18QCUFiSw6NgzW2cucGhShxRJoIK8
x4jUMuJ5kowxGjUhq8E0LFeHHkro7GegMmY09sBlzieyivvW2sIa2/evctzt
41Tds7yORT14Meq7JIrGJ6EHK7O39gpzSPvQPGIGV7godRpxIizM7+YK3cfV
F6TnS6ijtskMJ+rPthuHcOrpBywpqm7C4g9Uya5EarYU4/YWLtoXq7DnLe7S
A1pJ4wXnX6ZALtTooZ625/ymcX5cGsvIlJs4adRXoaJacjIA5SmmW+0BVmnk
I7ZK+y7gXEPj7JADU3zqNW5N2kbKM52sSUNv2cvGwXWymDSWS1CiAyv/J5vh
xHt90G2kov1SB4bPuNRYo+Ev4RCa8MdcAs014AxcCqwNeofViyR6sk2zvHC6
9vZQR45my+ID5sAN2lU1iK4sD/N5ZVJnrxlRG+mgUnTNcAcNHUciYIp5tNXn
ny2qUoCdEmMV89uZ5hGpxleAavzVWDMb6robYaBvfxUKxbxbonSltxR2ItXJ
GevRY3Mw7FlrSitRJLo4cVsItrWWxOldPDyaXao9RuO7esDDIObrRVRSvBfn
yS3jJlwvbCv3I/Wy2Ot/guHnM5PH18JSmUbtlOTu7qy+Zlafpg86rhHP1pl5
OSkYiTA4fb1f5jmtRx2BlpyHjK8vLE4df+j5HSWT7Bi6K7/ofQ296fO+lhRL
/guciRweNFe+qflzQTpVC/lzOMhNmuf993NUt1g0GRivTNdsIBAXG4v736D9
Dh37kQnp5+n8EvBIsUjwztuMX6H1wO4A2hDIp3+dIX2TDIU4v+8qb0Nz4Mfp
AFHgKTUTN8NLgJVam0KyQ1OBQz5+xOMz/YFnorcz16x9WcUNPseqgBJrICU4
fcldZp0RXgPc9cKddyJWKOAEpBgs5aql+nvQWY7qsLNphMVGFsuca1LzQpkm
Um01VHbpa/UyuzUZrlCkOfMBU+NkQV6YHJpPblCs2hHrtoEdtEAhe9xltgMG
Mi09yzEqCryLlLx+QueTfkjHFLOvsRjoO6VRQZKNfpwqUYGJBjKOTvhGylqL
sXqcF4iNRMPmtFsO52+hl8/Um0ddIEwaMFcUX0Z94UzZCyzIV4zzgK7EMkxl
79gpgJOfecduhRGcVmOXtNvxFfqBogcVEV0ND5uDGFSU7zlNwTQZs5deiZ7a
6K38+uxkq8cIAf5UF2XpkzS0wWStybFBos6UmbNUylFY5m4NSyOFHeROWtu4
TTrY4XocFsUI3QbgvBFjAMdcLOeuXH0H4xuG9xDpjv86ONh+bgJHkI3QyDfO
Jc5ZBSudNEUUJFTZrTJig2i5U8uAE4oNVj/D5NdkgyYrr3PixyxwrUFVw6m5
/vYHO5Ttb/E++9DHGSPb0EwfzvD5kPXkOOO1k7QJFbkAk+ipk6D2QLJ+0ruD
ncFue+J4jo3uV55lxwJG6ThZVmnTg6U1uZQnRcOFmfennNfbHaP1bCmlFKwk
VBVPTclQFX13evaiR9VXep9MrjoCFDkStB23GBR4MfatFSKD5SNSx0c8oPHy
EY2Z73hAQzp7FLwP91k39sAB7HcIOg/+kJLRPWYkautKbjx8HJrU47+jhSXV
fAdz6vmVaXWXJ0/+5/+wCPCPJIJYLMuSAzrESaVqKYrTWVzVGZia18sLN5EL
ZwnDacU72iddcXEoeE2usgkMo7Y+pIuRyEJAiau0Xn31msL/hPpzNY0+9WIF
V6RLUu4G+XtaGj6bieErG9DExxNYo6IoaOErLye0wpQTIqJW4lLlKkpSKHH0
JqAddTJT4BIkpxmFhGBAYQICBabxB9a+KIEETJdkazx7E5cStue/6lF1lCzJ
I1TT2e6wygQFoZMTUzhnDn9K4zK5cc7CjGMJVUWoMgttxW1lDbrrW4dr3iTS
Nkoqb2BxiHXSzN64VVzsIZpIuPnExo9RV8qkaR/Gy4tVOpQvkPPEzS/zNDId
NJep463UU1HorrjBYRSBj3Z3wqxzXmG92edVqEaMWGgPouASsgf7AGqJkbCR
fVVsIwqwC7Ity/w6euMVt2oAOy4qDhSTUehLkWictMcftC/BOE5tLImQxD2D
JxeqPRu9d5Pc7hGixBSz5jESyww2ocyFZjvAkC4nHsr0QvpHtA6jIVG+zGdr
xIlb0EMqPbA3m+02DbVtwNgHa7NiBPmVaqpQSl+GY3sW3E/cBcLRLtA61Sju
o44pw6Vm9nS29KTyMbhqQcdFiXCHj4fS+idCc4ELjZm7cWQihQms22lcdK/7
MuWWLxNmN1Kti+2TkYpRiwZTsQFbnzFb5Ai7r7n6C3ygGssSHQguKXTMn9ty
4sGRD6LVmr2ZGN0wRqc5knN5hdsgA4ZeF0xDi2Ulcj7sUGgxvWre+w71a2jB
WD1RYzUNYSAwmaJYEfCkzmIapr7Fb7LrbII+9+h7aCJ9tpQRiTRehBJYI+l3
kEoO7maXOcEJzL+lJbCuK9YBCNqaSp8OXio+DOd0g6KCjMrF24jRyWpyfaxk
XI/nMorbIncY+Jkgw4SEERA/Y6InLX4Aw8JD9S2BRNTGG9i/5I5lIjOxcbEB
339hnMBDpgo7eeMFE9RGsrYHdSeDSMBMUJTLedHGUw3MuRJhyZdOrbwa5arZ
xfUQAOaxkGYP8x33JavY41zAe2VnFzdFg8XwWAudsrJ07WxY86UaL7maASe5
Dsd1qngf+IFhQe/7gvTM9/eL2mvPqIaQKU5jAWwiFqCqnN2Y2XjdrUU8iQYx
R4Fa7AXZFzlbBqso1lkYybcZUAEIKb3IgRFXwlk5vWRuDKWinPM8jyViwKG8
xiyRrHgpfDZ4NxQRV8enSA5t4LIH4e0VtS7R3OUCa75TOA+5+8E1uwWy7BPe
uDw+AKZeMZ7E71IObHgLrPmttYughsp7gJrkPxnZvDNinyOuXZgSm4JrCNsl
kjWkUXwzFt/dYOxVJN/vcqflxUXNMRug8TKm/MK1C6mDPzvsMSJMKKGXn3wd
uMU0N5HY9MP1vyn5yX6zCfIJz1UtMp+5J0FYg3zwe/sJdFe97784ffvu9OT4
4vSF1ktvNJApxfGWMkDJuA+HVIqTWqy/O1aZLaTll9Qylt9dlQ8o7rLPIrcW
qJGYd3yP+pyj+DlbnZxuR95hZkJxPTOxc/ySqy/s7DQ7ZCqJtAje7j2A21Lz
lyQs6WuRQvx+X4v1NN/5r/olRgBA2wNty08ae4F+cN2A+IkucStwiFp7wpBJ
cjVxop4GLyC3kGqNJE/yGp4RiwlbTtZYgG0IJfqIX89bnJ4zbWgMkChj6tas
SBMgGpumQaTWmKpMkrFp/EXH5NfOGKbovMn4qgac4oktZMANNqstF0vSMRra
xIpLRmGOe0VbWspl2LBWrUkd1KizhtgO53tWc50lOmGLQ1YFsHZXwoVVEYIJ
bFzerNbeVZdnHuWDYsL+ZgG3atFzA0K4skA6WpLrWNoj/ylKz8Y/0RA4XcIR
s/s9aWzQUofPuaIC/03+/bcmxTmMj89bOYUYGsmnXpYp0YMuOlHK6jZXxdL+
skShFOurNuj+o6GIRtcdd2g2MNQFkCRpsTZxVXhkWPPDhEE64q3LE1umoae8
/eOC2ZCpHRU/osi9pYZIInOflFmFSjONmEFGDckA/GMmTJpKslGRVwRqYLGR
DWcUO2bGTIwLzORISRxnvctKSMZg08I9a9KuwH3yTKztVZGnpIbQUh8rp5d4
RZ+dYPw6vRE5i9PRVFeka1MrzOoNolgQOlNiqdKExudYP5moBpAx8Qy8LI/j
0+/O+vvPKMQB/jrcj18dnyBnVFJ2kC6/o8fConSm2yuG40U4mS9ZF3D29nof
5wL/Hv47zCLgBRpVyoiBFmW4Y301dkqs/zF3ICRDKhGmxsXjOQZ3naLW/ZPX
gNgU+9a5I/sRumyyev/XGWjpBwpKPO3sUJ128ox6+FAcEalskO9szzqEVWtT
urWKSLZt0EGAXKCb8KHXLEgwGsKCGrgNx8bLMzCMB+gtMfoEPxmsGgfsvc8W
G9R1gb5dflH2RE81daEzdTMuIMdJv0M9cZ3IGOGJcrERmKSRUHH8SltkVRit
ZvcCO+5rX94rsMVJ+uPheoDOQc+aGNj79FFasrVug61ZeLe9J410AiFnR1K1
EYuMKA3Hl2R5ZSrDmZwc7Nwo0BqF0OoENdOvCzBtSGSG0dfW7KHovE7Dx79E
l2qXd7SSjTYLFLxlm8rwAfubGOWrq5/hqtu7vWLu6BqvaTEPGEQ/D+dmxXjF
FHRvelh4/3tmJSh7GhW3WpAsjTVdhUnAMTNRAXotUbggCfMm/RhcxDmWRszG
HBj+kJb9ajmdZh8oOrzzgyRfAGev3e6taDVJx9kMFfD7KxpU6ewa5c2dw71n
3W0w98VThierWjpXnlhvwWuWT+xlQKGhDVIM/fUaGWeTJCKfURlwXTZbzta0
hxZ9/sZltqb8w6u+MAm/6zIZv7fx6d5RUeuDCdeNjGSeXGNWUfJPizEJIuZm
JM80VMz0KJlk02TLBtYtTzRa8sQgegcbNMKJSLzFajHOZBNTuwGCOX57DZMu
yn9D7F8tx1e9Vcsnwyfy1CNUyI8ZU6KQcNY9OLDtN4TDs4oEFX/TOty2yAG4
MulGQHAASEYBhu4mCbtCXWz2cMpWohNBoEF1Lmuu1cVN06XwMXUNblT3XBip
NjrsbJaagkjYyumvfc+NInVmuhLM63K2iOoTNdRlsCyYdUQpe25j2eQskM3R
GEdxTM6Ex77SErDCX0pAOOUeWQv9ETPV7grYMn84X5xfFSzE+3RxHMwI7Sd2
oX4b4QQ5LTkZxE2WEj+ceK6SWSe/Z5krRmHk6rtMyvu3zC1iOa+SKfvozZF5
yvHgNWdIQ/c4DMxM1oU+cbIMzQArWKlso7MSj8gLI/fwbAHgW40pxY71Kas8
9yHLH2Ixy4Nd6YB+7A2NCiQPlLO6EklHhL/hT30aycD2kZ8jPOWxUC27FYVz
1Zd7m/JgK2rsGnfqi4YEP+SjgDZ8i2J+QAlY8JdDcbrc8Dgmxo3Zex4Bos1T
4ghaGhfCVrY3h1UIIDWvIl1byavT6IThh9zY7V67Lo3VO6v6XhejXBZOzr9n
KqEMVvhOVTyq7w7fkjJIVd3ND1HJ03esvStrHrTynKppeNDV3XKOeJAcllR/
3ehqNmNipkrr8HU9Hrny6cEL2h2Jom1M5Lltjgpet8GflhfVHz2zn8EZhfEM
/AV+QFSnXIpBeZUWl/RvRvtm8YuDooGOyicfBgs8ZsTPK882oH3H4b0qrWty
EyPb2JKrbGCTiRtbISvQxz56vdncaSEpoMd1T6AZ+v7/gr5V3ymTD4dognjo
uP/I0SIvBJNTjShJycdJE5HFwBNfpholhaS+8h74ou7kNm6OHRcsVLl94jSX
c++GISYEvz/mzgZqskefhBMsOT5zlHIJvmSiPnPsUOhXrbggUIg9HgC0G9cx
YJFAr/XoLhMOUU8n5JGxJB0JugwPAkTQhY4CJdijxo0yuaa+W6Nhj5uRBiun
b/kO8eCMWByaY8Wia8chcPJ7zEKTsPSBChPNoIOE9h3w5WLXvyDHEEtzmxrk
KHrndLyhhqRMDR/udOgsLDd5NZALx+9Z3eXqtUQiF+OqqLwAmqR6JsNlO06H
qlWzey+AneuJyh9Zy4CZKEc3z21cd09AgV32vWUA+aQh+e0OB2tr/cCxI/Nz
uM18nebNKbs2iqasnVvf4GZuu7ZX8rE36QsHTqelNW9dZe9u4/WQxIMqtZ4B
ciwaD20jF4YjrOdZcZIdytXOVThyq+On8Vl+5PZxngIo+BI8YgIwDsDOgY0S
M6KbhJbmzUotNcwH6MdBtDmftMwrjbLGZDqRhIpsl6jSnLJSIfCQjcIbJeLJ
kpTf1rUCbxqZX1Y7PxiNqPnyDdpOSapzU6bhiFen3FgY3EfrvHj33SmPMhKH
MJ3RpGNKzOmuMdegZnWVWwupS4FYjTlCD5NTlalk4aL6pCDsc5VUmkEtNQsE
1Clgjsv0ivyMBVIlMVMCXASF65nUo3E7f1mg2eoEynZAyH3NmkaiKOpwtACO
m7tb8ZFIK4d7m99rPN2RfBHz6ejPH7YCmeRYrDZtPBmaYGzsAuIbWyCDGzZT
J3ONoS5Ez0ng3EZ2OH/AcrLFvn+MhRcXh/53FL79SgtIY4mpeD8K2jbe7hxG
UZdnCjRLl9n+s2BQeHJoBoqaLcKuD6NG+8b7ZzZa4oS0/IFjpLGBILpohz1p
yMTcGXq9SCAWEpcFc1Wk0fAofnv6SorSTbC6Aer03lI4GUzmDE5wpVJ4Z88H
r6Hm0yQ0XBmg1BiPgwxN9JqJz1s57sHjhoWrf6Vjt4IaJd2cRh0yPmSdOb72
eTLIT3x+2zF70xvlpZb4fFKQY0/2tSl2IN3z4jiutxI3fpLiJhmmHMzdltDd
JfF8Tnn2xiki3GDpQWQXrJbonU4WS9b/iPWY4L7q3+dpvXKXv1SFf9q1wa34
rCFaFoVIYijU+evBTvzi9N2nHfV+Ozyy8ypIYONjb0RHZBuvg/sbss4LqZ6N
42TThwzplJk2vmGaiU7eBpZOwyyRieQojw3PvyZyrmNejQ188KQs+D92VnyZ
HjE1PEX86BfPED9+zDSZ2Txqx+gStzIvKEelWDK5Ts+SYY0dQMKUx91efvcF
bz7qMxO7+fjvHG57wMeNuM+HDdaOw7z/w8540fun1xku+rDPuqDyAd8GPFTX
UarWd38Tnca3upq6jdG2B/e0dUemHxyGH3Tsnrb8UvyBXdvgSLXVs01F775d
x95q8+etTlftqHKVO80vuiFFm+9ujmh9hts5c75379RloJEnoe1SQCFtXR+i
BprcHCrvK9kOqITbvsEGy2pjwKWO3QtTOKkrRpiKtZgOja+EOFMOIl+vWaq3
cQGO5ZxicSZa9YC4ZeOcZCsA0p7NMC9h6bIoNb8H3octjMBqj01CDOvvtHGw
IXI6T45MfKHbpy+C3BDKrcdnECjcPpFmKLAUgBAjeMcHldgJftvhAd3qrOHr
LmrvYwn/bJwcK09XQ4cUfwVKnCFDJcnXhNY0UqpwjIWrs0qjcdW3rPSG6OP5
rdvedpxHE7BMlrq5MSdKIVN1b+LGAzbqwkPWjznjqxuOXZjQ7CnG4laPWaX6
Biw13Bd/t0aWD46ZDXmkjg1k0Ww8Ksr+JEsuIzzB7aP4e/jfdi+++nx7+/P4
h5hqoe+Yxzs78LgHv3bo1y410mMkS9OoqK8EwNqd+65dx75b7QaTTK+YXMf3
fiLu+7K9dxw/3AajRrFKSi9Em/f25J3o7i/evqJqfvBvz8MTRrxQwzAXB9vI
uXd29STFHcfUYuZ30qKxlrHv4nybcA+T9Rg1fkfODw08yuEDjD3xftJPa0Xs
rMgiy3WqGwJsLFKTlP7CEOJpZXcZhCNRbgVfc4ezfzJynCV/LwTtbRNy9b93
sIeqgYDakRCxc7xhQuQa+ebQ5PtZNj+ShvP0kmIaoem0ByN+0BdU2lRe/BA1
+1Natu9jNLYi+wnG/yzzPLL96zNnsWvgcu7Z7Y7khpcjGefLCpXc3EgK/snG
oQ8AW99hAeoIMMXgRyROwX5jBQCcxLABkj1N1UOfUcynRj5maD77IONrYaBW
WnWOuO5ITK/pjVFQW/WVy+Pv0yeHQZWleTNm18xmvepVaYySlqclz0uTzDey
q3WnVeoZjOx9ElfM1hAA9AHpYj1c+JyIpcFQSong1DjSAHuE1Yo9oWatti1g
Lpm43Hy2wgkpRenaIgLEVedyJWW1PEVwlaesim5V6ne4ahFWLJwCC3F9ZJGC
xKThKz7OIwqjagai/hD94G9LKxm3DDPsmCZgKSDqQq84jzfOYdhKR9fheCzN
eV7DsL5g4AjDcLh6c2HahYbdrJk9Ej62zOss2bfFTMJnIggU6IQ8Xb1ridoF
qM9KdF1yvanbHrGzYXEAVsRiRHXNVMn01vAP48rsSqkUXgJEf26813p+SboI
4U59xWdb3Zu6j5NLvFh1OJVOWJZC8eEExDDZKIDA3oOATivn2OLdsIm5ZarU
52uGTQDfARvgnY+aKESKd1IRep9o8Jtb3wu5n+sK2NmMOvrzW/tNLzS3IJlN
rotsEs+yDx1O4sCe+60n/mSrAQSbEvzDL10FiTIBztnWokfN2Tu/4uZUYZom
00CYcWEDLTwF8FiI4TaUIDRqaqyhB5J9njiQ5ld1gx4Y212QmLqvJdX5DsKm
kJu+bLLdAyltj6WVNMf4KkrRnAzHADToxGPog80efhJii3sQvppavVyGH0ox
QC9G5FwkL8j9Jih9xXk8EKOvKMbBCN15E3ahdANkD8Hp3QM9BKW7WQCKPm8h
NcRYjNaIf1Lw7sUWeM1jf/wMYAFa8VUZ8DeMd9wJli4Dh8X7yeo1EoL0y2A3
ZYvaHcTeO32EIDv/FaiQ+ckGKgzWpnAqdIYTQzk0aGfbzsXuc4Jj4b4QE2l4
Cx46vnVo15nxsX+3YCzPSPlCORGFx5/q7RsiXkZBJ91p7NegIpuKHvnTe3qY
YDX5Mg3zc5mMQhwMVBDNYvKEPFkFEjuLhMvLmQk702RTuBSLsNxud4EW7p8Z
UbhAqY6NSYaHmpa/b89Hag0M1VOAqW0bj4lHl6MGaApjPjtuEJ6BFjRcu2MP
RDcPK/jSwD7CM65ZL4XfW6p3tL7S0A9RtK43Ht+8aOE/VC4wSepj7eyHIMAH
Lf1R+LBqIcQkxIePRYZNBFitxIBt3PfA5YXIpRp28Lm/OjLs5AvDdToElJQq
hFl02IWM2OJ709yVtQjqnCtx3IOnpP7H+nsXdmUCdnj2zWpBvsIHKRk4W5KP
FmA0semcwjmy0ZH/4ZbAYyrp8KSkyD0dsJsSdaDJogI4kXItAhvAxJ5SmP+a
NrHrki3q/NMHscwo2JNzbafUGbfAqEd4RY7E1mtJyI/3CQqVKGj7h/0boEFR
LfhurISUrKxOWTPljhzLZhUqbMGfex1Jnny41r+ZrGhuCsTw5jl86huyTMnp
0RyDSkkwjr/yKUT/2ou/MT//xpfpxDz6r/EmFUQRD7COnTqGPuS7rSAwg8Nk
7z1LzTiVsjQbsRcfdET1sYnsSflwdo5ASBa3DNJEToqUYxm0MDIbCDRQlLSU
Qs/ZAY1EBhfa6/JkyFWyKIAGAADAODGnjOHCheiBgak/GeIx8zrPC53PSB6n
yuNU93BN0xzeM5Hnj1oXKhTFKaCZcLo0dGKtihQGnemVJ1xmua4VjAgqkx+O
aj6R0nfWj2uJG2uoM+W1xz6OWiXkAvhiMr/6NY/pUVQXCUe2QiXTT6HxXYv+
NNHn16D0PCuk8Xq73W70ddVxveQKle0FNm7z/atxvf/aq/HmUCu3MENOK9XV
rOZn1CPdTHIF+/BgzqexP/9xOB85dzlatSuOSbRwkYHSJinL5NZUl5071Ih8
L6WMWQMTTlN52sTdo/SS+qu5H7aowNttmMC3mmTBzYKEyN7aM1JUyaW1y1tO
ledC3ltw0dgLDyIinTcF4pYQvAbmGgKyxaW/SDpuMt6OaoQbFEvVhDEeJUdD
WV1u57YZyuI68+nylJ99kV6j0e1M05uuZmBd7ccoan6ktYg3qzTtKkbZWUSO
6tfIrfKEmLm8VGPFkeUgTSJ6bPttZHN/lxLQJdjsiJHeTJr5me3Zi8qeWLEt
cmPTaseBqqCVEoWPnA42lQoZbN6hpWSVFzoyq8RqqoU7ELlEZtBeu/yzLvcy
ZW0cpZrGCeWDJVrh68xZAlwubOlEYrOB1b3iLFgI1Wl5zexmTkHOHEO86oQz
ca4D+Hcabxh5kZZ0K5CbBnyQTRghUMgMrIx4LbJiXhdjyc3e8gcMHPd+ExQK
pb0BMMCcJ1PEKBUXqOCtdxM5/9Ob716+4C9lowIPwxWLCsNUwiQlqK5lr8Mb
jKMwkFiUXDtJg9lkY91hs74rIES6De36sLTjJmcoDsjOrYgseviRhiUh1K5w
gxs2TBE4pTp5n5qofoAG8qlSexEVH+D9ktuHzhJTWTMS/mWVXDZYd6bo2Syr
KUMw5cQqWoAKrHuO5Qw0fUDzmFKMJBhzXZRlQzqASZA7l8d4YeHYQmeIsiju
ApKaIfR8/PKl5ILq0r35YK5VzDO141IORovaVhv8naJMvMbA2YAlkcGmLT7u
83noHjQA99Xx31A4xYyqdIPsUlX5aMN45lS0vpRvyBN6OR83w1dWlNO+XwUG
r3VPjx6QGtNq88KEqY9Mm95znzRSou/cn6Qzhm/vvlaW/YsQs1Mqszad9yKZ
YlChDrfWD8YpUmHDG0h7EGS4Cmqdin+9g01kxR1fter+mhRbxpmB1b0u1xVb
8CR71SScQiMBuMvwHuZ1H649hXv3RWtWmNTSj92qMGl8Oxd7ON9fuG+kE5Ab
qnm+/FUmvsmjjgcvxGkCGWtgeM8apsmUpI4i80XIMXWV0f4n8UydidXIv6s7
5dr/ljwT76epMd7NLyF2Do76gcxRxzn+M/giDbMIOSMuF6Rd/UqcUXtF/2KK
Qqbo4TxRZZkiB10Ia1TGiZ3A8dq72LfBzuBgsMc3/sXZyemA46K2ug/xX3zT
P5lvamHjf2fOKf53Zp0CzqlJo5vCP6fuTFqoQamiVu3BVpNihqSALqkYuy2J
5NdstZem5JpzBUeLqi5Ke8VezQsPvSfFjFRKqa30RMoO8sTMak4UB5NFJ7bQ
MO4DM8bSC6+BvHBwflfZwqlhnLKTEiJ672qZKm6hhRp+rFEyTbigvX3BXzql
Ooe7T0N1lB9XQrGnBiWzY7j084pyAuGc1zAgMq2Za0vbvbKHzRevLrbQK/w9
1ZaUUzG19QraYUlHZDeXr6arBGacrXBV7Z6Aq81TY8n5X//9/6nUKyqnJCGJ
iwxpDWZ5T+5aTm3lwqigSmWyaACumVrrnYs1wZybW7TQqlpyksGgco6zx5k8
pgacBNH4uoEVpUbUHLSs9Au3Teu9UEaPYlHkxWUn7JteWQjwbiNAAPHQyGyE
+K4B+j6hY44JqbWbLT1PuGz5JNxh+cLycXCmfVelbYsVBQFt9cl1YRHZGF0p
/7HM0NumdS5MlVcel7F6i1fp3JIb40ludt7dITGB2XfW9mt4SljEO5tLWu4J
oxq4C8RkMJ6SFE7qPQuMNjnzB8yZEBlClZ9Xepi3ntOz+EvUUSQC+PDovQGH
4JO7J6JBqpvKdm8XOESpF/t5ep3mbnqaU+XyssSABU1shPj08qrRugNxeQzR
SfWkFZbbMJgOU0/wd0zu7DtvQAuwFrN0lCznXqw1cW0t1jI9qBFYs9pgZqTY
fZVRXZr6Bnl+6/VdFUtgoARjdUYPCLra7KCEbYR6JwlOOdbQO4BaqqIsU+he
yoytv2A681oPdRCZxaIBvAo8WbkVYU5a+g1wNVe4E8SDY3RFRgEZ+a0WIirs
h1ioovkdSEmUUQr3DGWoUc41AkcUvib4euVQWjkrmB/LeR0g5493HcgJnCF4
rYQuTtXfPynO/3L2In4pmHCdMw7lPGZ/QfpGIEn9cVeEhQRCkz057qWKVoWx
xCtBbYUjciQnZQeRMFbM3WTKpJGTpZqVZB7OHzlaG4CiwjpbplYFokQPD0Qx
PgK4wffxz8Iyi7EfHSr6/FlyCZjGmflbL77i4NinMUYh+6wvAg7xqZSTo9xA
cvypfSYOWOg4FbPAMSnGS8INnlkNc7ez5Eqs4MePfVwjsMI2ro4GmJAjFhYM
qX0lT63lJr41lHQTacGGSwEprzZarKdjAV1TFqx82nw4PVoBM4fxq2Shy4e2
UYS/zbeaWzfYDVfNC4CXdwPdHxyXivm0cNkz35V8pwQxkc+g9ykxdYXsBgGK
2WXhpHWH2x27rWBtDfPD5Swebn722evjV6c+a+bWUGjiBj7fUD6T6iBo8R0M
E4ZJfP7ZZ5+z/D1l/5rGOoIKZeFkHP+S2IzrnNLL5ZqCMdkFCWVkjPzgTFR9
flumpDT6S5rnfT5662glChIuREKxo6XhFgQ3IcDxfYImqDB9DbKiRiX6MHRK
WsYqK86WdXb8+lj8BlHTpQ5Ul3kxwsUKyLxI6oSSQwWAQ08J0YZn7n1B+Fjo
VIw4ueJcqCcuUkEnYg+kPQrMDOuvTJpzQBAWLQgm8JY7K4lGkjF+S7HS8Ixo
UqLdBfBZSerlqvbFa/X6Sw5AKqU3WeJpOAnNzwE3Ds7m4qUjLXWuvufkFXYB
GPolKq03sdVWK2ZcqDgnjhaEGlm9YYLudmrFRWkIp5lcVgPPawuHbUpiaOEl
HFOhgcAXXT+o3k/7jcSMIklRL0gdW/xBaZ1C/TltpvEo0eB9SvMs8xR6Qt+1
+wTpasZ3bYA5KDH9Eg7eNaikM06ukyynaG7hoXQLeuIdV2dl6r4o079L3Sf2
xHDplHntum5bYxrRH1cVQ14FbtotrGMmueiEHyvm/nze3MxJCPHSzls+CzxJ
J1jAgNYdlY7L+SBOAZTiSUnDS74+FFZyoOPofgxXZJ6QhkBQmdZZVONsOBfl
PHkWnNxVHShlwbT8nk/HTcvnW4Fpp7Jr3XntWSLp9VSy2Qz4CPgz5+nVklyL
NNGsEgpTAPoc9lwfksq0uWnLmBVPQby8VLqJmpF6QrXKyjpHlXAZzuaMKmkI
KlewpCSIINu7wHtjAfKINXOSfgXsDc/TFOj1wr96kxB42YuZWMgHxm6W1bXX
jLpd5MugBJAzEWA2iaJ0Jy6x27XdMyfotexXPC+5yLVRYgtBwQEp3T9adNYB
KA0FrCFhTNTouzE9lmAtg7vvVuviNbLIcZ0rsyDupkjWw8SjyjYOlZ+rc+Tm
hpqJI6mE7VEtXVZF5TJneuGUepjTs/Yp15znOkEXJXwjkap0FhLSh+CCMPy/
4cRqpuGKyTCDyQK8qyhjngnHSg01QMSrWJstOVUFNM77NCHqlNOg62/q8Bdk
AO/YRpcyy80hrOwdvgtq8+B4LF3AfFW2kJOzGR/1FHFH11b34pFMlrlKTA0m
Ubg3iFshpzVJtIWK+Zlr3/AEsDQbOaiL/Ib3kPlx0f4K9dwAHiCnhMMJ+cXl
Gz0OPEUHYLmDtXOCtyaEPguDE7sDA6kmaFY0SpFXxUx+efaeUQbSddYmof96
Vs28S2FAbJxWTsuXMfuBajmanWcJiLcU3FN5xINmHDMVPB4kFXJH9apjX03f
eB+xKt2KxMP0eRATZQ+puhkJS1y1SDvliff1H9wLgQF/B4KE7ecSV8Kr0iZo
Oc24dN/98IZZjvRDLlOFWjZ42sx5SjmKTbLTho6fpS0tvXJF3rtAFAl19xjk
JCiCpoOIDznxU7TayCDOiqMlH9yDYXyZzrFmEXO0RsEpWlw5ZEKIpMkkQVKd
ICLVTNK+o62R4hA0lbBJjygNWRoXbOeNS6++Bly3+WorHuBCNj8C1kIeDDAS
/nNHKb1EimY3rmDznAfoBTvOekRClptghYK/OJIBgOMSbsJPzja3KKTgO8Bs
xPwP51GWQmDQeAoc+gALnWaVVKeuM2UR+RqR2HVTNN3RMZF2kacNKzCrNWyE
DoyE7WTnaTVeiYWI0A5Ka0JZn4IDaRj0KVKhoF8V4/dpbcZhIkhPA0WBP3YU
kQWfuXJd7dxTjXm1Z8UJkzjkWw/kd80N6MXNqX7tiJ58xvWSxdhonnXUbAY5
lFTBTPqWZUb94JhK35AcNudApsYvWhMB8hetGo8y+7kKXI8hkAY4B+IQ5kYI
qx0btYG4LrLHFUkTAaA6fFmQ7jR0QCCzQJGTp9Nw1Xq4cjvd7BGneMPmb4hT
DRgm1ucbNcrqLkPXqiyZJ0yEXblZOqwG6f3u3VlngcDgnhLYFjdzrSZLm4Pj
S8eFqY+wy0U66Zbw0bGiR4KzzEUzfaFDPl4nckhn0ooNuYyW5DNn2UZvuBa2
Qia3ddAOATUwhgBA867ihO0tdX7Ukwm58FvOx6vDlMdvQNgpGxLpmmqSh4fM
TdGCBjVEzuhQZjNFuHfsChHYI9wrpkR/VsoZIGxHFrkso2E6h011BO0oqU6u
0fbIcXUugZ64ZEQ3GDYyVzVyhl6AwCmgWp40yXbLvHkUTaZLbx2glFlRs9Sc
ovwtFZLC6fY4yU4qadQYE8pkpUgE5SQGcEkXxfiKEnROIqwn8pSWllC+qcDS
tj/Y5YzIo6Kk2+ILTZqhTS0kkKj7rAtxwgF0TcgPX1FxEcWK9ObO+aP6T1tF
InGOaKBpbPbEbUmTLYIBOcrG9UwjB1f8l3aMG0wARdVrA2CiIrRR9J3WD0S9
DaU/1zSVdFWB4iflLX2O5qvuypOD3QHtvKtr63Yen6zI6i4Z3GyLJ4eDvS83
3ROXkZSL/IazT++f/XfzDGvMUQQZISjohF2bNrHDrZUL2pVimiCBNpaTdi9n
88vBYG/PpVu1zSiF6/ame+QX9aa5puL+JeGpf6M5u/HZx49/HRw+3767E2t1
gtWyUVriCxkZHw1UPGMiRtRph8sqGqvSdRTBMnZ2djaL1ipecLroYCEmSSm5
A3GTBoZyZU4SqolOor5WpPJ5Yh0pwzZxkl+i/uRqRth94GocKA6RkXwzs3y1
7EiGvgz9Xak+HlCSoZZ7JCQE0yTl5hjtXJLODnuHDSS3W0wdWMCOq4p/EJ0r
sSerA/dtgns1NZYm09o4e7GhMXc9ncG69n/Cxb9GtuacQMF9PSBVMIZwk7to
RsU7fXIWnokDFljgu9OTN69enb5+cfoisOHyxrFND7bvCJGP5ord6nGNCleS
Iops7lf8Cs253IXYcY/DzGyS9n0k9laeoVd3hYdLJU8b+XAb7La44DSTr+om
uoFGlCqWZYuVw6k5nUL1s/liWUv+YYn6k9DEcEIkuZFdy2UkHkKXrr4i3o0L
rmTzDWEKMsqEwqstsEPZt7iUUM8H92PIDVwAgwUG0VkofKBPnlsZyV0fMK9K
ImkqkTehANUcGESuf4kFp22yU8o10Qqo+DcmACtqCBFJX1H4BadoM2VRtZuQ
tZZ5+pSXGZerQ7aJpXJpiKXcyH2QzOHG7sOQ7/PohY5t5NTjuX002nL5ZWFV
nfctpS3g8yP3B6MU1TkqbyRCvr029gQ1A+n2Jv1UDGn0tmS3gCUwMxOfIaSp
PgNVOsIlEgQiQEgD8kLwBYAIPywW6cSpobKSRIuSnR+DZKVcB5iwWvutWtLU
4YaqURjWGI9BBPmYDAaiU0HZCY1j6YIcs15hUtJLp9IWHUbgFo49tSMvZHS0
C5pRUWOT5FXhABwgwam5saNjEw/wTvyCaeibDK41xa6xKEnAk8NeBckPZFw5
hObovBexSGtdW0qnuGLx5nDu2fnjpgovlIGJO57J1Gvg0SvHifNuWuMLKo/z
jGcnQoUEFJXorEFCBaq21q1bLUvdY3LxptrlOUVRANMQjIFiiyiNBjaxu6pd
K/Qj8LWZJMBdihcn8RSksxu0qCuSMNaPK7FYTPCesi3aLZ10tVmxLMW05xC5
QxFkvghmQWjbFyVuOGUGrjPNcUpOl4KEgZoWsBkd04bVuy8zFCJneupVODqR
HJOHx8tanLxa5nN8ch47OZt0qIsrdMLYZ42FUaF21b+6oGzpsGvGfEjAuaxS
S/RWwHrZkc3FDUkouqPk1hOL9N660/OIjt703bmKBrKh1Z6oT3VGmdTZ/1FL
aKtTLW0FYyTMBMfeBr+Nv/jiLe3RzhdfHDGeZYk6cUE3FwF8R9ELlpDls17H
FWfOQBLx2RgoLjfI3SNoq1mS4oKY8bjMakziQhZJdsI58525q/YglF7dh1nO
ul+IqxFQrLRh4jUYyE9+USyWuZjc5rz0GGgkcTZ+f3dxfx1yPuZ0el07utuz
Kezc0l0ASsLWI7Z2OyxYX63JhXNB2KjVmRMY7IcmMaGf/B5OvpXP9cQl8lBQ
WbOsvXYUWwAm3XmBucWgaRl3nzr6pSy9ZL6nsk3qse0yiQSpChVnuGCKqnlf
Ta+uFXdvC0wbwrlpU5tsBcM9JnXRfcf1sIS+5vj2CfYaSVXXnNV+r9VaZmPM
po3ckf4oHFUIN62ZlEXOxJSIbKX3nNt4Gw2vcso1H2nQ2tmT8/t3cUU2Tr9r
B7hr3sV/9XYddETaaQCkqZHa87VCuLBpUNuTtVEcIOkSh/FP6lDSsGQP3JMV
gWt+Y2y0Wrgxuo6VG3OIGyOeFWu25bBnEad1A/KOFSHkNG6ZXwS6qFCdbNw3
LEYqPxWKqiCxKDkF9+QC0yyJUZ5MHrR1vUdtlgzAG7Vyx77EHetixt+y/ftB
pPZLSdS8rOHOEP7yrIPatMWa7zayGcZIpFCinYmWvEtZ4n+blPWtYOJFZshr
8xYzSYVJIJlDGkl0r0wTYSF5QOFHO5pxBSJSLBnGnP0NZmmdELfdpPUc0LFa
0KiWGdc90bLEyxkzquTaFayRrORiszC326nBmPVyQkGCntZs+SLey/DuaEaC
P2R3VzKy7G6EWocBZtky7pqkhgu56jmf/XWbdSevPzt6SPtXsaUuf3hjwXgK
k3TGvkV419R0Q/uvRno5RnONmYmEc829NngVr3qnWfgoSJHjY3uRcZzvs4r5
YkkReKcnF1u96NillzeCn0DVOUD3JlzLLfuOERFpQqKuK8YfvTvfilzKfnd7
1TN4YpXbuJzLvMDyIeJVIVW+aH/fPUjEZSjKyv54BmDT1SKx4hkzjXQz+MaI
ck5ZzHWZABqUutfyfuutUgWIq+hKiaZzaRR+jrKc6thR6BJRGtabjCs12sGe
2xdlRQFdjGIkdEzxDPkjod/KaJnlpH8d5cX4vYkYRdEhDSL1+gIUBnqaZ+U/
x+DDkwt/LMCgwLms6q3i7lhnWWUfjJfCURR9PIKv++l8OcOkjrd5+tUGo+z4
/5wMNu6wQawt7qIvgnDEB9TwGDRCd8vU5qFYSjHiQFfZ61JWVo2O1CuVwvBS
ko61kos4Q0sIFKILyXRi9ISbkuzCMW4dYt+FOPgMg1ixoWAu6Caf+Lx7hGxa
0bGbQxdwN9xytgqJPKagGrJpn2oNmtaGavb1vBW55Nx/OzKkmcp1jSAvlxf/
i9ihpvaooiv1nqpMjikd4SA+donI1QKDUfvql4dEyhsqfYqATVYqBs7UwOmn
84Sq5Gg6WAJ/0XI7p3gjWxOX4ku3iu2rup0BtS3l4SLJSp18uwacDwTG2M63
//nsr2G5VtgaCWRdeRwBJKpTH+Uilg/JkTXpiIvFFLMu2pf173A3ccxVANia
g256xwfs6FFml5k4QLtDwxHeiiaMfWVclA/zrBJ5SSVh+JjPplyS1SnxkNgI
8DsMgs8Ldpq+L+CepBTAWiZufq7xkph7wKrXsZ2a6+9J1PB7vRwmXYM+4fyv
2MYd+UPyOQSxsI0Rqcl4hh8dwb8a1vh73aij+DP5K/C3AjxqJ+XWJs/QCWtt
Ygi06MtTrdLUbYPBkWRaMEr8m02u7ST1jrjdUbzdysa/g0+ELh/Fu2gM9CS2
L1k4juI9NAgKnT+K9+EXiwxH8YEP9eT9O4oPoy3v8NUFruxfaCJfEG1YHzrS
S88naMC5fQDrEiQoMgXbkUR+qO/WMwjIW1JKHVWQ+vixKi9cnqxVti+TiRRG
gL4pfdeQHaNi59JMKRHI9u3SYeE2TEzOr+Egaj9rfDykZ4hSE5sRzFUYl1qV
LHrcFD4CkVZoMlVJ6ifnqc3jm0LLn3Wv14fwxU+ffhVvkvOMWTic/sHB3r73
qW8sCO7RVhS1nvLFoHQpK+4o3Rt9dsSVTQcjDC1wBZThoE3lXboCfsEM/Ha9
CPxbkYtCXgdhTpPn4UqeuDKOq5hPm8zKlHjS1K9JOnSR5kEWm1Rt80GWa0SQ
YWbrID2uhy5oWDW0kBwOIiIO4e3jUNvj3MCckb3K8M9knhZLtO9WleqjvQHa
6CfJhO4EbY5qMg1PzjmO2o3JxlihEF3K4g4HR+IkxrVTazQ3oKEnYsnRB/Pq
7GDxHz/Wo7yfpMhF9/UqcY6cgLsTG0oYPo3nQJygrx/othnJKDDYP1MjAsaY
//6WWEf+72eAMtdv/HP0c7/fh09cdm9oEGZqwyevFCfiL2jt/8PWhhwO723t
CONQnqxtzYRv6J+sbS2EcOievFFE1dVaqK5vPX+a+PcohjzpPqgYLjKKLeHO
B+eFcsw9V7ulk3dXHAvnuTJpa254qwd/u8trf7t73i+5cU2VSDDMNW0AhOxX
f9DUzwc5u4Iicha9lNfixPMxTO+PTKnFOfj7Lg5KQJolhWtx3fgc9ciRU01t
KfyBCEKehVUX1P3LyWU2d7dR1/vEDrQRmkXbgYBsTxpG0PBjDpw1JQbRxN3e
JrLk2UQRdYhliG7qhUDBALDNsMlqDYUrbsxXnA1IaaN1IpoWCMJ84jxtU9Bh
B2572l932R0YfZkSg7oNbXU6ATE+YVUHacj2JF2Y84fGs09NMQ6bnJ7RaXn9
K6HT1qX6JLTqd+nfG62uRX0ttBqivvvQ6trW96DVf5Ga1aSmDcRKarqh8rEk
p2mV9EzlfPIgitPswBOcVEvXpteVx9OV0h68tLlKE56UONNVF1JygYaTNpoi
NJKpCTSoiWfLcviiltftijKerV3F7MJn1frvbN0ZTr/YKB+jDbuHiOO7ZlFM
S+XEql+1CBPvoGc2yad4SsHlyhUqxg2KXmBbh6ANaVmDn3Va1b/LvNKWM6xU
NyJabyn3QKuSuAoWruvQGaIxF+5TQ/lc1YsVROwhe0Q9W+elqZ04eot55qKr
4Ibkq2gOb3pkm5APIZqjs6jdmJRriAgtTH8tWti87iaNgnsmpaC4csy/yOSv
RyY9kP5rT7T1v1iHVaxD+847KfWxl/ixXEXb6OD4isnsXpbiASYLTaYCyEQz
WnZbvxCJp7UTnQIAYfOZp0I+kYH0o6aUsK6u9uWOgfoR4qPnLuNSQiijkA7C
XmYi925KGxJx4y0VcRlzT2a/EuZu7+oniTGyRfGvce/WQvt/4HsX9q33rn1i
eu9WHMFjb5c4ip37ap7udrElRLMq8K9fwKVZMBV/rF/AKxMUn/0zeNCHeYvx
BeIWv9Ilkq3/JyoA1kLgJ96cf1Hx/8jYpJuKd4OvYhQLj49FI12uXQ6RJKUi
kaRciUCScdU3SKQbfySlWo9s6wb+KKv+ehwSSPVt0Qyn6btwdTMbfpeIZmSO
7865EMfcFY7o6gGFsJWYquKfVglJdYZ5VDuQ2nfKXwkLdQahdaAkhquHmnvs
8TwSNa26ivd+8QgUtepKrkY8q67lvV/cj64MqDwWZa3aq3u/eATqWrVX937x
CBS2aq/CL5zJrAX7isJWAvOj8dlK51aD1sYS7Iw3d4X1y2kgw0IBjWLYDr9h
T18ZnPUQG/5ar1qLhHW27+6frcVFTivqCttrPrekWuG36tfzrnM9D4lkizcl
hE3XQKabnTvnds9+1XBtoBdJDERNeuL/iMGS5hg1TruK8yJxQQIYn44+AGPv
zTMLo+R80uNXms/P5rshr1mb7M9lRb6760l+TnjM4mBYccxU3gocDjc58pjM
gsmN8Q6EXsoCqYJ376s4bKWUNKjxyXFQwZTy+VVbmh5O0gBTOYLj+RgwADD+
BZJgzAiM0PKxXyf9Cp+hb/UFESZOwFFxSh2MZa6zHAv5NPP52TobdHQEOZI+
k0XaRZnNMAvLZZEIG491uahxRjKDxLEzzMFw8xQNcQnpaz1oIPi69LsIjdVy
VKX/oMo6QS3hY8w/Y2L0LbT0bLyJ8c6gMmujZPw+XoLgn3eGF5ITiCZpnDhP
rgZQW7jllEd3ri4AQue5quAiyljslyTpZ5nvyHPNHCyP3YWcF7baYVY20+aQ
47HmeMPGo7bvibiPplKfd8JmeVesSYpSuLSKk6waJ+WEvWzmkoQwdnUmqD4D
V/uTxL0hyPvMkwwbVL3N3IOOYY59eAQGatNtNP1k7Izz/7f3rdtxHMmZ/+sp
aimtBWi6m7iThE1pObxYPBZFHgKyd4+ObBS6C0CZ3V2Yrm5AMIk5fof9ta/n
J9m4ZkZmZXU3SI0kz2jOsUV05T0jIyIjI76I4lJhdAJe1jbFY3auU/cUPeDk
35pup4qcXsR1vFJ8fArwumLnbtkO9vkuQgdUMbpjMNQMjlMdwRirR/CsLEbV
+CZY1m8LCefBOAQ6c2eLmZmMZ28N0WYNh0pCfzpOI7XlMmEhk3r+k4bNcAy+
24EszGQGLKKmNzis5MFCVRDIKPq551gCR8kcsSf4zgJOqc89PlEabrfMnaGL
CQjaPenRu8UNyLrhXKKTsSXF4/DhyoPs6axuMAu8PGOOXAZEpaggSTlwvHp8
Baudh9SF5Jpsh8ksyOaheY2c27scbGD4fnUlJqkRGlTocCS9IZ30KkpVVMSp
ipKI2Q0xA4RDDtdqGTNIHuFgN9TrgVNccfuO1zCitoTvcwoBwXQO/AjDmDcP
Des21y4tmlpdiqwge96oHBKwQO2oo6l9BgXPKF3WSRnuyCZmxPsYoqXgjoMI
OKvOiS0pcxOVQSIfB9kRshYXCMnIBeRwTuIyyMXm0vcEe8eg52r2hQolMIq5
A/8WHcCgTtBZIuQJ+UNUO4M/ETCnwqWOcvnXN5ZnaCJ1p3qH8OjsJcn0H0RS
G4BtPM0SbSKIbMS1TEpKmQsG5ysvdjjh8Uqg66VLQBp8N/vKuLwWZt+BpUcU
SCcH4VSC0m6HOA5R4NOd6A+6veC0oBLc6om8mkeciNH/9XRRnBGLz3KaSgkg
8t8dgqc+rZpkebnqoxwPdVdX3GRhMwqs58H1ZLKYsrbHMtu5puJCnhckG3zm
MDxMZxVIHZdg0mhZLXaCc+1SSyUJnCZ4MmGUDAOKdwDQkWT1KX+I7CyG3Zsk
o5rYyg8cN7T9PfPtc1A1Z4iiHCc3KHQph2sNC+Y9Xx24kUkHXUzjxo2TYtsr
F9SkYiiaZJQvwOtfpo564pkQ2KVQFpi+hWRFNQ9jYVOqpZMkwaYYrbLtti2O
5YrcYX24X54F427DffA57xGWvVHEqsb56mmKLZ0tpco1vtfLIDzi/smm1TkG
1i1AeaRYe9nX2tnrWjQg7qK6QR7ZioDVOpFNbJY93OLrIj4CTo+0S3Jdz941
MUCPI8PUaZ6UIGlGgrUVqpnTHDPqCsY6Z0keY9oNjGnDfSpmM1x7EhTc01mF
CyxJcmlF4ntevlEM3g2KAS8kDBzvKL6QxgZWDePYqj7ECSqEKhNpnunGXL/D
6MZLZ7qM79W9nNGYoJIqRvbC5mDsnA7JWQZBjwpi1Y5M/uFHil4p2Ye/LW5K
gkMlSCblOvGF2ICv/e/B/taj4FtI4AICwXeZhiC40WYZ7NKboyd4Kb5siv4c
1mBK2bXKMKWvCd9LrZU/5ErSBtYQ0TQ1piYwDmPHHBnVp/TFMGmZ1tPXR8/z
I6DQ7XAYdkYe8pHyKb0tz0GujZG4VO1QunWgF5oeOyLcSBiRnPzu9bEyLE/3
jr+S0m61bYcoBCP5Ku8A1BJY5Z4XxqKjHGZfQa0v82/q61hQ2dkHFhSCyPaJ
NQXLl5fdWqwopEpuCnRZxksKif5N12fccCp4I5mj3rXQWYJwOn3wsMn/aQ0K
kVksMCoQU1aAvXQ8uKZfWiNIXaKNYR3eiBrca2E9LGX47u7rmAHZFn2Y+XDC
wNCko7jASoVq87nMWPqQ0opqGvbNaZRpniGk22FGK33c4ZJROQgoZ/JIhRh7
N4+BaS6wq3e1h/sbpWNUkXR64w2/0eabbowxflkfGuPl8N1MVLNzhddE7iRS
N8VWEJOF6VvN+q5j9DRx20fadXd8Lm2H5Njg+wUDJJj23SNAdwcnjBZJQYe+
vEcfDVDY1I771OS3ZfOZQ72jy7dYshzv8QlAxPyroCVftvjzl6xDt/t0z2tL
ToDDAJeVSZxJSfCqRhQ3sHXwFp0qCZ1M1lcmHZdGZmIQbAKdNkZvW4LospwL
hLtrIwENK3BKKjKE40Anb3QpaI+CLDyhP4dzfHV13f1GAG0Z8FVfP13sLY+K
H0JXSTjb/sAsWciFLAqvYDlcu9yKPYsaG0u/AFjfxlozIgdZt0UVH91gUkdO
U0drdgETopQ+QHbyMV9jgFWzGviS6MaLimOxpyWlEUaUqSh6fzibK/7GEDQW
IBFE4KjvRWgcR/Py0kByaKVbyWCCITne99jQjUavsXFD8HAll0LA0dxTvCUZ
53CnIT83xrsuGe3ErbYCJDQx/dt/Pt5MJmSGtmSYyspN7BwTL6/VTrxY+Fu8
Wv+z8uu04xYKOh/goOGHqxMUg8B2v4Qdvfnyy40WDHKPuh4YT61BIC8HrRqb
6zbplniNFuM5vFAoUsJPcDNi3ffkMBpCOQji1TvnZQW3/zMYghsBcWNKIxE5
pjPid+JlsIkcM1qrEEt0oqOXazWu6bqJDwhMmurJgSvqiiGEgtcJAtN5+kir
3w7G7OiZ/szWHUVHIMkRXG3g83Oi3LLNFeCnFVyhjLhC6U6tESQSXLQ2Q3CN
fNG0uIPnBRZOwvOBjjXYeN7FBqCZNBsoLRsoE2ygXMYGSnuEnuOh8eS/xqkt
f35GUH4EIyi7GQHNyexBihPYz0m+0BrTKrZQ/rxsIe7/L8QWVvab5AX4WDV1
D+BtxrDqYA9LPtjDxMkerj7aw9/U2X4uzi4uS/DSldl4+rzjuOOZ6nPzOGh/
xhpRZ4wvISE8OhXeKCfd5lRe7RarGC7lFUNzzLI8PmgwlYEdZuKckZvS2WLc
t6cY4dpno5UH/dOZzcoBiJlMDnUXG7iTejBcwplowQIK6mZNRhvUwabX4aO5
6Nod//zMcricW3adoZ+dc96ho98iF22UjTYpPtqswUibFidtfhZW2nwcL30j
io5phsyA3uzdtWQSJ+a57NEyNssRqmxQlPVLcMYmyRqDxfMnHXu0ZzQ+2Z/O
CptPU7w+mRO2+l99yptlvBDXizeivVh3na0boDQ4MPHMH8EKh57KhFb8StmG
zTotW7X0oJYu38+9HJ8iGJathml39fTvJiKaj5IRwgjWFBVdw/sYodHd8x1l
R9egOqTIP5U3YoOUB62lBjcvP95dKQ6gf0+JDH8NyIsmgN9Bex8l5qGxOuw4
eQkTpA0PMec/0FvEtEazdfkTLhCqjAS6C+No8V74bYXs0lq/iTtALLdO4qhG
kWCSeC+1dnqkKB9fawHd15RI05YIn7lRt2ld25Zgw9+6xZqrgQv7s1oCaKVA
CJAM+DeY279RDnb4hzCBDphD6MuNg6rdUS/3f4llMGRVNmlbgFc5OBFcZD76
hCjJz3kGV5aeO1IEj4MGgmHu/QsNVtLyPQ5QLTcFV7khl9Fls2id5l93DgEQ
p9sG97ppqIIRrD+aLBCRemnz3qm9f5rux8sLVikD9tQWXi/de+xMnniJi/91
WYkSof5LJROhMjjDceD97KGTFXhtSWa6FNi03gueveq4FgTwCFhFhEYrWQV6
u/ErXNcb5sloAny68fnLCW1C7hqjSUvYwU/bK4Sd1iJhJ2IMoW951CxhSkHa
+ZJCuMTxLd5lepHXN82gOkztwIO0C8C7G/NeYtB7nWYjVyGUITF4vPY/UDm8
2ZqsTsVDEergBfhBhk5+Ya+O9ZgFD6P8m9mA/cRk9pdNZr89GegMlDRqOZiJ
YQStyXwvaMo4UBjzZaA0INEss95BQy1Jjr8tG3dCkNO4PRK/HboV35vtJtz1
LXSVOUGUkWlO7WoQZnydCz7+UP4Y9mXH0FmovZo+GjsmcgOOqcsdcbfQ3zPY
CGV6qUOiG7Gb2IjdZRux27ERyjftEuhvm5xE8OlRkIop73PSoAbTye1yXMCe
phUcNv1icU5OXew6hhBgtrI4iasfQdtPRWC0E0EZEuLvUq2IA711zD+rKFiH
gh2F0bNrH2Ho6YgGmUoBcj9id0J2doLhJlA8KZBJpuGmxTjONr9qjLlHziDo
/8ggzD4ax/vxY2559MmF+mPyjeL0RTL4QfZNfY25FnuuV86UhE4aGER2Xkp6
YM7ghVkpfZhf4cJ7xOmUuvejc+4mNGMD7Ga890FHmC4YXE1dSqIRkrMfjuyt
Ddn35DAr/0Sxu0HuzM4QAu6jFxZwwXnkYzebGweoLgmYdi5iH93AoS/w2+/O
0Em+kxKb1MkjX8iBvVzMLinyTMMX1DPFZi2r4rShpbgJkrA5ra9gYSoNDEmz
5M906d/4Tbe7wFdrLBBgK8SpCk1od9u3sMk3jp834uUUNBXi+G6QAu9iJDYt
lBYdGyyVkYOf6Podxv5NCg/DE9xyW9EY3jgxu54NY0S4CLL/zRZjfh7jraf6
HuKBMvbcDqIMXF7hMzmuSheY4fJmMH/hkMgsMbKm7X+jDCFannCXjOhheMZu
n72W3YuI1fsSqkNc5/sKJ/FeUiLWQxEC2XI+IoFqngE7k1gf4qyh3jQtJsy1
W+MdRPebjD1CbSsRzVq/OgE58PGDWZuMKbWUcVfGUbQNCuR3hw3YJOtXmqUy
Ne4JfEUDDG6fn2nkwn0ah2jgXXPgc/5klYEIP73RiGAJLmFWzunM/CsENDHI
v2GfaJ9CMGvhQ1EQb7QREiwajUipkntCoLkpRkVpXndUPlp+yrJupKXQDZhs
R+ZWK2GDmAJiZc4O7o8aQ1JxZlYcD/Mfdoh0ApqoY52WK8v4siBHq7Qulz2b
QtnLR9gb2Af+SkoeZXaTFMA3smA45F5WYcgLbpxklG6E96AY0uQqOHTKSYS5
QHxlSUN8wcmgOfzIlWgcbXKq6NYm8OoJdUxV7PAEMjjM5+cYgy0zcGWrUOBH
qSDEjOfiINFemjknA1TfSE+VBFOYtw2mj9fjoc9pKfkXo2gqWI2AfxCHMpGa
HFNHgr97yhlbegPO4ZWYLmIQd+USOIQGEeM5Ic9Zl2sjPC82GMglH9fzMCsd
89dY1NL7Y/Cbl7FB+6DMFROzkasGy80rMO5HUmIUgp7m1X0SnIgZLSiMG8Ov
4NBJqncJ/02xP0J+BNUC/iR2SutsGhGgmW9ef//tM/Kl1zxUz7XSkO7+Es7G
YZnStgZ3n1ZTAssgNj2kKMZfYlp4xFtTC/Tgo2+efPstsvR6Ns9QHZjNag6W
bub1pY3Manmvf5a/xnzt4uYsOrgvlbmrCMn3swKDkSwyM4gDMdmjsQtamZbX
AcINvobceJ5ICWopVMiUkSjIxeWIc4m7e9CrGpUUGQGh4kwTrIWjHyjvu8Nw
CEB2arlfkUQGsr0RZYoruuyAJn0D6VS4VdU8ceHyGeaWvxnz8a1xgf3qNvYO
hEFKE9y2Av3C37QvR1ECZLoA4hRECGgIN5zEoRmpJk5N3NgSIBEBLoy7BjrU
iaIjcYSJ9qZwcIJoM51xgzxaJgQgkUavsfwSpTAp7U3VaCfhdu0hqFAUtA/g
eWV1JVHusKBKR7roQmM2i/0pruxlyTRnNgVd9xERQavy9NpLz6TNU/YBAPbi
E9glOi6gcG/HS+itIRYZBGut3lCh8X+odOEokGS+rc+ZZfkruFPtGr3u//ti
OnS2XxCDzA2Bims9taxAyaaIehYc1cLfj1H1cuyIQsOnqBtKDDZQgeRtGTd4
tU+kBEZssQlIROqSTweqKrC/Jcid03KOyy3hlgUFhjzxaQS86qhsuZgDMx/G
OAHB0gvc1U4Ad7Vz2w6A8nhkL0P0K79fIdDRrRfRRKzyTbTq+vLGo2l1Z2Zw
lgZJWW3gGY08FdvVrQObCa2+HALmqUVG7KSwokS24uGmeiTZS9LfkFwU3PVF
3di+EMCp8eppi6u8K/FRHK9374jkXMWmlnNNqEkCDXnTBmYxdi9CbDRYsXwV
9FSraxeQLsymlxKRjRjL26ugQEP2ibUJ3lg7gtFKEygouB7WOMQ6glO9tF+a
1SXlNPWKFmeJZhVOLvSVqYs3CcYcY38DBWoJUh7E8+J5n5b6NM9sXSzqa8/V
aZVuDNFOWFMBlG2ZRp7GlM0LxoJNTQAudEs5dParbiENR+fZlIj6YpQTl16c
5Zi34uLOto2ZxuKO4i66FdAEkhQLw0GxZdWZCnOtTkszevpZ8W0UwcB1nexM
UjEFVbCTxAPpcXtUrE5FgzLo0X/xMXkRG1jvmQQCA/vvpv6/LVN/m/XUcBs6
rWceCzOlGuwGqsHubZZFDaERGwlh1mBc4ptNRqZoLlKZ/JRNdAY2Lg1p9LBj
1qQpdXw0KL6+r3hlSAV2SsbNeHYyMmNV1swNLrWgS9KpyKrhyooRy+3NWWxQ
Yj2ZDaVhW/lGKn0eAcKKdu9ApPGoJezVrZXmmG+2djOuk71vwiUeOtfL5qxe
nIu7nkbGCqQMPea6aFYxJEZ+a1UTJS3y2pTNeKEKlvOoczaBE7Xan7CyYACz
3RNrNAb7kjArS+OF6FBKDrNsWwyiLTe9SX0VWGF7PPATyQW9JENhtsNt6g2i
GpQCiRPjOVgsb+xWewg7cFNPudAEDSYjjrPdQQfKQzpA2b7UnVUM5oK/4Eri
kCRR7NgpkkGSR7lhRFGKKW6yF3CTvdtMKgHzULYRsGvxfTRKlMoM4yWTDn3s
pb4GkVJs417p6L+c7/iI1TvxHe9fOsiCGXvs5hRDiAonM0tUSaetCHe+OvPS
meHuSXEwhpagI9k0/oqDBznQGslHsJUywVbKvzBbEbOcP2K9xHnu8YNI6K6r
7nAuWapuaPJhcrPn59hmNYmkdPEOdHiLx7uhNH2LgmdZVFDTouFV9OowNcht
L2jeLk1kFzf6jfBfILoLAbKVFbOkRO5Va05eXeXDJZCz2r0AQYzPp61DEy2E
T4m35mlgmMRlZ0LCNnsZk/OZORrNX9vZgAlpxAIs26ygR1heGRD0rRXQorII
VTsFIU7M3Tf99LOE1EseQyEV2ZyaHTzI2VkNnqRo0Ca6e4gjAsH28LcHGDm9
GU5rW4jAXrFygvJbQRlLzj7e5IHs/yqZp9t07/Df6aR9N2/xQ3R1pSVmAWjR
+hwKo09f0oYnHJgGbOVZeVUPNf4FWlm3DbQeLcgBEfoF6uAn2wBoWxtSYCx+
+CdfRqwdwNIREF6JIENfItAUbEQc/7BeONXHru8m6+ud4xIT0Q3vLO2GDVhb
EhuyIliZffGXtbWmU//HrpOLB0BLeasJPU3pSKAno1F4tffm4c74lru582sP
ERsMlBBCsL+u0AA0qtmLYo1aMQ/rSp+ofItyKAZ++kXTLCZq7qFj3+mK7y4r
dxHhoY8Z6yWBH5/xuFeFvidGG+NxEbsriik+boEeI7L2DNjljungMEysuOmS
A8+Lc7INzcpiuSaxAXxA21KGvJm/fht8iDrxRhi/Iu6N7lBECZzam8T6+5ew
JVOww+85v4nGY1k72XhoBFeV+2yVvRymO3yXqxPZTJDw6RLaXNaMtR6/lXph
HHqZ4x1Ph+vcAGGN0jMQloomW82dycKqs/ueOyDpBQOyhLLcrDVPB833eFVY
FaFMyOnGEiTi/Nl1mRCAm9ydWg1j1Ts2/tJhxF9Rypryp3K4sG8E47q+FC0K
OXoHyUfPT+jZOTXV0esyozizo+PXb+wFIt1eJnldXDGvo/VY3SLo/649sRkM
liWzoGsN46+3b2uwMuVPl4ym2NFLhOGObTgTbsVPvuKgMA+nQwlix5SSgwwl
+obLj18sPzURFZdo8v1efsAWjQfWxtLsHzwAXvumXYhyAmgjQQ6DKnibRjYJ
StHA+VtH39XVgrBTQdg2ICBh+W56HuaXFEKXGoJONyqiC8x5UwYul4V/EqNG
I4N+PfPVCIZQ0A05t4VlyUPvmNOEDiThmypr4taVJHgLUc8YbV3z1yEhnyIq
bDm8mFZ/Wqi6iE+7ymDtqNDsr92NGI7fD2SK55P9160/ix2If+r3Pg3DWbk0
HxcDLvbrs34H4GIPeka//IuSUJqd6FQOgOsCC1iNKzJGh54g6SRcbObbP/Ra
jDUDxlj7yDnZN5T8HDAaB9FL1QtDfInIDQd7PYP1uZhSnEFAZ+pmfc5P4cck
p3kN1C+fzq+6od5ITiJ23PUkR4KkrX61s/WYnDrIcvERwKeRSoP309gpfGhS
nV/MefMwEs9NSlxKvX8PPUgbKF6f6oGH658D3MIfHOoTXLjsT2JHAkk9xYfJ
k92SsxenBZm2n/2QwNwgcZn12Y7n5F5CCxs6QvmVTinHyJRuuM75gSXZcDEu
ZvmfFpxyb1Li9Yjpf15f9sdAwOPc1eZcHfpQwA8vYdXo2ZY347ycksGBXjUj
53538Ur0ZlCQUfLGPT0r55RrqjhF4FPHEmBPZRfoDMTLvDy1uGbo4aZ7Ieyt
fORM4F36rWRYvu11xi00Ipa8iVgaJlJUCnK4kI0/Qo4QHxwmWRLw4dHCp4AK
g3mzLFVF83EwCrd9PmEOjGvIMrbgS2VTTSogGfJc4KBbglhuJbZJdWZYHLYL
l7voVZfg05hc2JuJUgJc1zN0ZMdDzMWUdb1/3y9me02F94F/FCIbJXuWkyfM
yQkx6s+cg7ewGji6N/ATMCYJJAiujbQgovE5x2jnLJPqWyCom1W0l6qLtt0S
Bsiuu9yOeecoGJKOWWMTDv+//vP/unmahfdv3uSSat7iFOwfk9MIHvR4HLRZ
+YQv6Sk6X31hgKidd9HBaDHTC+kl0W1n7Di/sedPOXKJ3vX9kwuFmEQRT6yg
pSxfWcqtROyhOWW4wTkHaXun6s2E0A2Ty7n36w1dHexA6NLl7jCD3LvT8aCA
v6UCrVojc2Lsnt5SZVj38N2wZwbnQmWrudzYonlYV6FRe+jGqTzsyZuNySEc
FuDGOEqE01fDcKDGL21zeXuhf0ZoEFmDHJwvgb/MWspob0Iik3QQgOYTAmpG
MP2bscDJJO6u+2yH8x73DMGT8DiOnU7Iw3QhMem+OYM3brom5V8TbJCvOjLJ
6YjT72nd6iw5XDx9g3UnLSq5bUb3h9tLzd4w17UX4iq5EIlZhZGiQZwiZgti
UzxVHhXzgp2JKb2QDCR2IJWjxL4M1rHMB002bhuc0Jd+rCs+iv/wowlLiR7G
ua4xf5J1i7xluPcm7N+lWEdrR+B+280U6eGw5apbCjDFy8CJTlKJxy5RS096
0JRPmS5NdbpZrXPaXdPsBOGjP5/6QFZJmZXYh+QGK2EQl+ZVccKv03WQHmxa
NGsXObRgpVc70QSbDCXIx2/0IPujhA4wOeq1t1Ww5b9JsUYSE86QYB2xK42Y
dSkXiwqIskR16Y+v36IHG+Z0EmeqZo55CDRCLgwqeN8fntYzDbii7C7cvjcE
3XVd0y6ZvIaacjEOjDKUFajb+hQoxPlpOy6CsGtwXWMQa/9fYijxMqghrcug
671+1xunT/OSmPiqMbpeuB4GOZ71NI3Lgv9aOVg5t5jBQyx66tfXudfkp+te
eIZdvCKOU+jgFK2ZEgydfwRyVhYqCLPjpHSlQ6yLioqBkx4C5FU7uZymHgOl
+IA2W8uwl/hlyuyzDQKQZcIp+zgxz7GhXX7wbjm46auVN6x6z9tQUnoqX3OG
cZ6XO881PdWIosmtfuh0Rwwl7n7/k+Wgt3IxPyTd5eeop+OHCVnUsKioXJUJ
cCYWSqzVRxo3enypkoo51gYYXbyTdgOdYb2LDR+XABY9PsCB9yMluLfSEnWO
bpnXtVHh4+6atB+OZE3yT2X38ozOLKvnFCvPQKrNn/sYhH3c+SQsnXar8eA8
WHpDg8xKcoNCa6hVwQu+AaFYQW/RRb6Dfl6ge1DyIAoCW4LOO1fLxJ4Hr5ze
50AwbrqGTj4K2TEyEltJyMiiFwhP4AgO8fUhBU3CwukuRz+olKWrfEvAhxxF
mQmaSX4+nfEvqiFOb6LFjHYG1y8+BCGrCYq2trh15JGyw/vF8pEgu3FGve6e
mzV7OqIspEmKtSpG7BCk+uG6p2c6SjBlbiNwjJcr1ZH18aYzPrmaaKBn/qoN
C4Bzw//rvHph/dWSiMfocAjWvCTIXFGd6nKTsrdm28NynXUJPIrz5mtdpr0x
QxsNtb4lg/R0p0183PiWHxDfuiWfNQfJZN0Cephw3GgxbzXkyCv84Gx9f4FZ
eytBtCG/kfl+ZoyUjQKgikEyPQwzh7adUr6sIXrXXEi+s3Qrc56bcknv2mSd
OpwxDmb8XT3tT8vzYl5dBcfPWfO9DY/scS0r/3GgOdnshvJMiObNWWlNcKHV
b0OdbErx8Twtx/X1JplIpxK3F6AZNfxqRbgL047hsxbvsC0okGnk8LKwOxKG
8+Jc4QpgmjOb5Xzt7cBFXLqAoQF32TpGFKJWVE9i0wW604SAwqlEyMH46epO
j/TSpbwVw9zdHdjAoaQ2078K2Ff+xVTf+VW5KTtbUIlBr72MN2XmRUe5mrsQ
dOaOuI0uCCA+zQmeEj+OvJEVup6hKHOQPrisuvtMpdegpo2dzwzlX/dT4CTc
NOQS33E7fH6oyrhCEIq8GM7qptEdUswD713YLE4dtYsZvmvdvL/0EsQgR3TB
c0OMAmYy5bh+sHEQ7w1OQJhhZvDJmnmNkpSR11YPIN8i54+pa3JcwGHWZ0p6
GeC4GPTYPpFCVhe3P6kCg2GdBER2WnrZHt7uWde/kaResMqgxoLKLa01ThwQ
JIo4YCh6SteqNFfRisS89a5rs82+iLDxC7Jv6RrpmU4vEgyDAy39ERSx6L5w
uyeLako49P7fQN/nyhU+Oxjs7++IZckQmmMZUoeRDWFBj/75O06zrthp5C+d
J9+dfHbftddhCgsn41tr5DxwBFFQlxIzCTTDajCry3fMLXkvmpaooqWelfPF
DP2mF3rTc0ZOXQI2DalbOTfLZVJa0M+7TJ0LsisLkuMtbrKYdC3H2rNeOTFs
dsyJmAvyAgzWxS7amqTantMdyPPVy+9+kxQ6717ts4Jgjn5R8lh9Xu5+LPzS
3/lkYFeCOcm6tVIvNsjgnJbForvmVCD2oMrZYuwKSWC1KDDI310MRNsz+TgY
CmqUbHIhEzDbiRID+akYzsV5CW/pKDzQlGpeqWm9QeDKEneJklF1XqL1Um8b
cv+eXPblC4JK5yfyh2becY/5FiBWyvT41sBk4iI4CGn09N9BsxAYXGcN0RHw
hZ3AKUbShoEAC3AaneLGTqiq6bXJlu32Awee0pBeBOKWEVOi92KzFG6K7GOt
o3Tv1B4iJ9b9LEKOXs9KH/jgFsNMQh+vHG+a8bXEwy2ZtOxT9ac6LefXZfLh
m6zs4bDMs83pDcZGXhaViyqUBk0vikkmjwgU+lMJZkl5hXswqq+n57NihLhl
c8TRSt4S5B3jurauI6Enon3cuIlCk0O7pD5siEWQ/EzItChxROclg0WiwwoR
XuQSZ296gnrkR0XLgwOjNx721cawegwMMLo5Dk37ioHCYTjtffCaGVb3NMxQ
tKo/hxTRc5Y3t5zuRoGYjOdTRJ3TeJubwCTcU9kbbxAxVsFAEW63TBYoZw2f
lxSOImIHSZEsU8MFYE4Y0r8xeJH3NENWDPLYeduYvSeVuLPPAsM3Nnk9q5HT
gBy/w9yWHX+34HKeydYkRdbsQgzySbZirMFylQhIAeTFRXDDDc4W9ZawgAZ2
AbdFZD/q8UuGAW3HEx92E5zMpBHV5YNr03naQOZ8wcQ4FJkD2H63fChp4uKD
1Hi7mVdQEhw20VrEtdfVj9YkLWHg0zqalxlwpL86tu5OSXfNaOysviSl+6y4
Zh3NXxdBmLtfW+JcWCxagQafctfeM3CM3IVDuWx3H1wvT0tVGJGqzGWTxNZJ
96juYBqz45S4FherI2PkMUDx5h38p2vEBtpx6sPLhNZJEmEDgw430Pb4EstI
MTE6HF4DJx44hBCILLEcvpH9FA6ZaJeVs5bTibnGxWiWzt9feuQHfg66qMej
QNcTJ/5G1uEEW3LoR1RiXE7P5xf6FmpEBDoWnGIgQINIb8cXxlXTHL0zBYPt
NN6yvb1xBsXT5Ftm8LKOwgdRQa+hM3mtmVenFVtyklJj/U1kMl62k0wu/x32
0RZzJTCK2Y/2DnKYKcFFf8X8zZ+nrnspaXaqWn1Cx5FLKuyFdyxbpw/VEKlq
YHpmfkFU7e9oAiN46nePKgIlbOlWk27USvYRPqyY+oQEYhYNuRvxUNFF5Jrx
8kzwOshpBuuDZiiIU2YgjJfrrrvbKc86mpKqBiGIfTFeKVbxDt8lu9iHChEq
4sup+9BX9wp5xXLvJs7zBmFfmIrSrye+LYNnE2KuzNdsOH4atE27dQ9aaztF
890sBD9wfXeoDtwdm5fjca/ZXofShrXlLuWGGjKsqaCG08rFF02KXY+fN+3Q
TdzGuHpXIoxFYg6mGR/Oq6+i4h6sBJLaZO0lDQzQ8oASddnNItjHpNP6wKJw
BMVbfhtJQn+psbD52/K8orxOxgzjImX7M/1qIYTalZfcySKHEQJhdXEhXjc3
6vIGIyOetEfRRwA+49u4iYxtXNfv8sWlsBBxfVo5xAT5TWuPznRWL9TXZbl2
/nIKjRf8nOisdWEDYsYx7QjgQsMRmHEohrGD3QqeVGkybTi7HnWB5qh6xoKx
DpAKU5t4O8i+q+dyj+c8hUFSNDJRdPhYxreXGtVWgvCVaHVd/MMEw+AoYgnJ
FjcCfPRzL8yj8gp29At8J5b9ai6LYTmAncyP37zCGJxxQZGMBf19708LmMg9
CczHNBA08DdP39KINcaYtOZx2bK78Xg8kqIZDTbRdWwqzFBBgL0/71PYvljY
8Q9unwp2PYK5YQSngWBlYYFHZJOiUietofGDwfPvjt/+H8aQWGN4lNqtB6Pc
ZMIpOHeQd0DmrnzImqY1EVZ94l4Lpmbs+njx9PV3z14ev3z9nXsKcL/IqnD9
+boPXgzpjDNc2qKOYsMJp/2DvU1ny+JtoBD7Rp+zP/a5AAUYGe4lwJ3EuROQ
jjIVdXBRHmY5/O8PZm1Ao8N+T6aL8ZjWUrawyc8pvhIvo9EzVFB50G6x+Kmj
xfSrVlAzQWu6nvVsyfL+JakwGoeLY20ToxmqI687EWMQ/7X21jNNTiqObJe/
YBcoDgh12cRafzIFI2NbTC7nS2hYJW7Its0BGKGCDXQrunZtHzOp2Oavewz0
Z8MrGCFjvbOx5tHQn1u9rHdeBP8MPWBAvs/YbtPphSq+MvQSpp5NtKbqr9Ht
HIO3o8JmfTn5/ATaAz3jJ+oREfufPnv2rXWUuXZXv45EeWiRZVmZiPLDvU8O
khKqh1GsSqtobouR1CPXeXLHm/tXhxDAQBtt4ZeL4ZwcWnqcNyUgTXlawUis
0zLXLFS4Q3mYcic/IoTGCIaOM1RJ9jqGcESwxSmh10awR7ULWZ7Xw3qcLfVH
Us+7ecUZEuF+PHcPIFD4JcEulPP+sxlohT1KJYexNwrvQUHOUImc6wNYj7cv
nj54tLcD6h9BfvPXS8FsyOJBq1FLJ1wx7s9UXpExZaLs0cvnxy+weEWuVsMK
BWWm4G3UEPwBZ1BQG3DYRJAwnmaQ52/G5EA2DfZ4XLlZwy5S2lHQ5ei9Ltwc
uhA6+sSPN7mFARe/RhzjIHuxQAyjGb4Z90jRPztDldHp0rARHHB95TE/bW5A
Dz+F3WY02msEtlgIXAv0RquBlilY+QVogDhFfcWkIeoiFg3faScLWEdM4sgp
1DATIy/xKb8UF/NiXJ+zk4FLWdOmMbJDV7P8rGRU0kH2Fm4kmvS4GF1Vkorc
LzSLwrglPFWUuQrOwpPwWuEoqJffI+LgZBrIuxHStCqvqT+Y1HU9I3ir81m9
wExGdSY5NkcLniXqDAKbWzvDqRia3FPsaTmFo0L6+GwxnaozOKL9MgTEDWLl
slOkTz15RhKKVgkt47PKUwsO7QzuXGhp9X1lk0IS+ri1QOgdOa4N+xhMaFlh
M19yYvdLffc3tCmzztysfXJpS0bqmIfI9DC9ewwKAmytQM6Esv717LyYauYs
thlwCgl9Zgo37dBVRtmCrg69/NtquvgJZNoLvB8KbM6XEWuDi9Z1eQq3qnMS
sj9czOeXzeH9++cgRhanA+CW96+k4ftACNXk/tvnT569ej6YjH7cWF34dFyf
3kdkGV+NcBP/CHemMwXHsXzokHMRcG36/xwK4n6ZYIwM3AjfwYgbGLF4bSDU
Tg0Xw/P8yZuXtEZAkQLCNIGFJEARwaYBhXVY2ZzN0Iy3E7yC0md4T98gCclZ
rrXKq3q0gD14aYwUlJ9mk0xq0A7uFLJL6PeGjr2ZzHBcuaEjWQjiAIyXc4Fj
Bo9rTLHK1AGt0VzUfHXi1ra5NouwKdlcZBWg3Rk95+GwxyBkoBmfd5KceuVg
0vWI5tiTJDs806N/eflskB+pRCIMuUrVbGhN/RN6mrq4J8yS/jmqmstxwf9e
XI7rYkT/JDZX4+k5KssOQqMV+lj6iipv4lShnzPm9wqCNUieACYToAw64UAE
hzDby4uCSj/FR248HrQJ1xf12MtxyT2pDKOX+4yPb46e9FWqwzgQDWjKTrfv
3/cvm6JvUX0pTokgnv0VU99+Dt3P/a0dZyVBEYpVvoUL/7QhY8uTS8zfmO8M
ttY7yH7tvn359Pl3R8/vtuBSabO9osJz8WQd5tP7Ba8ifBzOLRMM+I12M/iP
xbi6HCKUC/TuR5T+Tp1/W8BhpbyniBO71tTxfICuQhNZZ9a2/Cbqh0fqrIx0
/WZWXRXDm/ypFWpqRoX/wwQYKpo8kiNeINyLSilqTv72yfGRJ68zOHK9HG5m
FbtP4GWJDnPhQkLYD0tTf7hEuFWI/0VgV8cXYZhCSQG/xKoI2saZuLWxL6i1
qJ0vGMes5AfRBY0LVc984/jpHzcRF+wGnWXmxTvn7WhwNBUsi255C4sbZ9JU
oUmONADnE46HLIxywfsB2wExESJVAS3SuTfCbVf9yGllyVuvYXCvGa6svOCq
ZY3Bqcin7oJCFZBTXsLGwlUGrXwNMEINFjhWP8nQpP1f//n/GlJOJNJ8elad
L5gYenkpebkxLQ69bGlucpuvr4ZrCnu9VBO8WrnpI26gqkakLOL1a1GNGX1I
kdvYAZgqUdRGy+cK6cpDKQaL3tzAlk4w94ZApqqGRvhalHICgQkr9iWCWyvI
FqCemyF6SnFqb4J+xfWvL+UMqPOemg7Ce35BkrI5zLJ+/gq9TKv/IBSBRPQI
KKOwCpTHh1Ab378/knkcDLZxLn3osIlY6ubfQ8PfM0BfCbLnpt8UZyXfRIoJ
vcGjwrBARcIX5eVDa3yB8G5/Hw6OqJld2poFi1TElL2qK2L6oKGWuJG4eaqF
5wLTJOuKKZHrSuiemwI6xW6eICqudgIkABoHumjB7PB6NDfUqDROe/YFZXWe
pUZ6WePjeMVXJuS+CKCpNHU6wzccSbmja84rQBh9QiWjxVyM/84Bq6nP5td0
pUA7jm429ELpHZHCYN44nKd8xtkd8hxxs3roFVtP6KWnAEEpb/t8c3DXZJ5Y
AtWVlpJm+4VfjkbeHzXtlJ48ceNhG+H0hrJq0/H0DtE4AikmmURpW0waP8b8
YgJ5ARqEJ5Gxe0Nip1QYO+UM5xgupAiiXTgalQs2dIsfTBR9dOhGMUSUDwK9
EZTkmGvKTQ6HTZcbXjtGHORzfnxRenxb9YqgchRdJy80Hpq7UvchztPNXtIg
EoIUqr1oB0KerqxU3t6p6VJz4haMmEhO0iI2fOcG7Aakx/Pnm8KngglQsq8h
TQG3HB+eMFsE0tAMSVt9M2BtgQC4Sqqc8k3GlxzlbDkmI0sTM6qg4rCYzQS2
vzD4j1jGZbeGMQR1FnLTNlYEn6LBpDHfUBKXWZLHAZsT+Ypx45aNLAySORYz
fgGlbbIoZAd4UnBpmP6ayU+MxPNh746xpfzJdAjjaDBhwRmn2fTcdHtnsOfZ
KR5n1Ey/nwPde6bCI1WFAfe4uZkwji0tAnp3O5MoLUQA9isAunLvd9MsVIkh
z2dDGEhllAaVlaxhqGQFIhF2Ci144xsjvWL/VZFweCvn13IQBpcXfM/RxUJN
frLAnGooRhdoRp+TG8xIxQMqCdNy3CiwKPnWyEYx+mxTL2ZD3GGXtq6HmfDg
/7uhvL6GlWjYZN6gQJ2+a3guxJr5Ubi8tII87+s/bxyQvd7lWspWg/a2mvPm
oh9D33MmuB32q2kfyvfhQj0aG0/6SIYsWFchrZMUUX4LblgQXwEjGh9KXgZf
BD0ZgfmV3ksDyUXAnRlHWWFnTz1jcO4d5Cp3RjReeti5QMVtKaWgfJLBK0XT
OzFNyxtucFDwil9eUiK9VyjCz4noVGHCHB2f5S+ffPckreZXxbRAAM6GEqLn
34Gsefr66Hn+DVngcJjFBB2ymsx/RwP4MXri2CZO61kfbQmI34m9VQ29ype0
QkxtHhbGONdgO7JS91zL9+QVHcFC3/8PbG/gO7jFhA+4XgVSk3eQV5xd95jE
T3VuFKCwfcCHEuwh/5A/Q7nyEpVH/78PcEECEoND0+Qf878Pxpj/QXrr9/vw
e1//F5RO/XqX3nx97W1/awt+RxfGk8TYyOTIfE09NsNLe7KX9+//7uj5ty+A
/Hwv29gLPXDGpZ/I40h/MeWE2n26i+JraC+3GS3lR2h2SW/7Wzv9/a097A10
oXZvzws4CrN3Mim+ldxlBVNz28fe2Nm0a25Dtqv10aKFVNmeGZPqGr0drN/b
5A6ddfT24BddyYfrz20+/vip7W896u/vPfolp7a/5aaWDxoMLdp4MBjs7m6e
wO96AEpx9wpnhREL9C2e1tL+drA/jsiMSktvzdU06qeiHzt6Wd7b7qreQIJ/
TI/p3uh4o6jv6u3yXfVTH401B3sOHzDo2kEHBrSS7m3/Lr1hUrs1u0v3dnDn
3jBz3uou073R8f4B9u0+dtljX9YfDU3S6l0sJqd4UU/MjKkTw2j65B4h80v3
Rscb1YV/+6fSHrsP/nDDyb7Dhi1dSTrf7Fh4EpbW3mivlkzuDlRy4M93uHGu
N/qWWDv7ed25HWyvNTemjLtMMN3bzqq5EU0WzXQbdMA7HIF0b7uikKRjKjxH
iT61WYv7RKPBftMdsraALskd03OuR+0+3KckE2sJnoP9/v6jX0bwZKRys7Wy
kKQ+9xId3COAFco5xQ/X8riPSrl3tRiht6p/ozPN0iPI3D3Xem1fVXJNBIGT
eVVcioOyw/WXGwXIbs1/6IKLHEA/2bScij+v5mgAuOeavKcJjqTAgp0xOIJY
4yUoyKP8yYaCVqDN023ixGmXJzwB+Be+ob1YoIlPG5aLkMsZ5fojVx+64tHz
ulu19++/fvvi6cPtnQN0bHYwFXSxeEveZuH2vTX9cOpIMoZlH0Bjhypb/e2d
B1zySIK1mvwJXdvg6/bOw/4OCCv8GnjZCKjjKHt/mH82Px2bFccZ92kV0Ge6
b1N84Bo/9ktMN5+ma4T30G1rjFm7BAfLBKnM7C3ijVisvqdAz5fTiqy2qfUt
7f6GS60ABgwUNsieENmyV4X1uPYR62bn+S0D50wekD2JuXIJe9XoTLRHVtAI
QulD/pJa+8CXwe8wgCtacrdh8KEa2XOJ+8R8pYl+Rh7rrLH9GSa+CQsgW1Sf
s/AL8i/cTJdNLvyM+osLuo/aJIr5kH8/1aO/lEi6qEL30VIH0YQ798+x/5vl
x79Pg7xxWLV35gS+k5+LIfgR/Y3xBT/xNdiD2dxfjUuYvf/tMwt2/jzG0IZO
zsH7Kfsw5XpyL/jA7XivZJx5ynVKX8+l5KwelwPSQ7aledxVYFDy18liVp3w
Zfv7ty+TuIK19dZiz7prlyyNxoFD5U52tBP0JHG0fPJD/gf6yYZy5HTleMLR
HvKTW1MduonNlL7wKQlBdxGohLpcj5/FxL2CmldztyPsaraCu9F4Zh/P3Xwn
Pxd38yP6G+NufuJrcDezub8adzN7/9vnbp2qkCw7MbM8b2tF8h24UN76vsO7
HBDO8lMeb/KKXe085XzM0W2w+3zDTfDuh1qa/DlOc2Du/Rs6zDjj1adY9+5X
Ob66y/+Nz616D6UvMn1+2m5dO3ac+pK4yOAbcEnUGl9J8DKjXgPRPWalcA/I
oWv/l4tzLLvysoL9/H5Z+c1wgLUvK9Hm/mr84PfLyu+XlXUuKyniXkHNq7nb
sTDXLvYmzPfjOFvUwSezNooHMSMynC2t+hhIKKBo3MVflP2twweRBW7t7HZU
SzHFrZ29/sH+/u5+qnyaTX7IscJBf/vh3t7Bg729rQe7D7Ye7e9vH2zjCyMl
Y0JXDoXZYYaWIkCz+muwV0tdvxp/tRT4W2ew3Xv5IeavriPdkw4S8q9A9Ldh
oQqbvLSBZAvKH1XZu3sLu/KFfUv5lbe7jVQLe/JFzeTDO7ewL18mJULuNxfV
JbRwp5U8kC/Dml15lq1CuoUH8mVDqXyzq3ZXCw/dGKaKqSghAYQm0WBMUtNP
KNGuhUefPIbtra4xMKRFuDDJFra7mJMXiPDHh5AntbjRKvazWiDanFkSUb9c
9U9Dd3ykASDZ+SfLTQd8K+v1RTvfzC97LzDE9NciGNNksI4tIk1wv555Ik2D
/30kZ3rLW/JTA+XW5HDyBfPAdJFyt5xUQOr1aqlsPBujQWTdvlQeegDidWrt
x7XIk6b/7Pmbt8+fPjl+/myp3JsUw34xGs3WG6HKOpCz6UpL5VtDMSZ9zo+z
spbKNPSUTC7hUjm2WNyp1jZ/mabosLvWDn/plrrJWrv8xUB1rlNrj78kQPGW
1dp3tQT2ba2+OrnpMkm+mokq11zKL1fL9xd0qJaLdDp4Hy/FXRefbstbjQu2
+7vs/mTZ7fZ7DXHt6ed3Cf1pEjqxty0hXTV9E9i6DvfxFSVoLdntkistbv+w
JpjmtSru+oqj8nRx3kH03QKbekT0kL4LxFtecd9X9Aw9rrtMbGOPiynGgBLH
XT3UB6bHyWTBka3rzPGhrzgfniaXZrn8VgIYcUh3ONO0CP948RPxAT348ZFf
LmSOv10iXebju4sUbvCTZckXYazMF387r0Iw4dW8XbbtV2HqssO/dQa+5FF4
ycuverhShvPoG74Kw+50uKquehKx+9qxkcuOKkajvsLAXXrOCuJRKZ5X4gS6
IlJHoygYlSrRO1Cjy3vPtH8va0Wl2m5uadFlnY/LCQiEeZnHIaGzavIHjGVF
y+mlA4e5b352C9jLNzg0YUIOxBRje3u76ZtBPJZEM/xzdzPwnZvRvfCzyGEf
z6eP743Ls/k93ZFomXnxP/MzkTzZZpAZNE1xpcP5bUZPjUjDh9lhfmJGe5Jl
R4vTefBZG4VvygwwBluCkLEIATO9vhTojvDbPXGovicgaM7BGrin5Dfj2OlB
nr9++awJM1CM6jmQRh+BICfFOMsRb5BP02aWPdd0XmEgP/bKgKIwGUXJaBfh
DUBMpVs88v6MZASKSWAkEoHbrkwzfoPwBc0FhvLbI8yNu9ae+NVtHOoIiwBP
3FjniUGE0MD+ppe7oH8JVtcHCn40FoY2k6YlFB4WCs7ltMEI9sXUy3bZgeIG
wdQazrn1zfHxm42jTQRue8L/ICwWjJ7XZhAKnQTarDgn8WqQ9TvW5lVxXg0l
7+5Gs0mE9OxRvrWdv9gHQnpREZ6iAJlJgQE5WWDdIXDfurnIiVD4ERjuZlKM
1x6mLBCM5aSoxsg6ZoSZW3MaqCHHyyhoWwAWdsjYWP/yj4h3RDgsxEY3MKz/
f1Xl/GxQz843mRAIXXPREKjhYf709atXr7/Dg4C0q8/pU19gWk9L2HMC6Lj/
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
+5HFJcIdOMii8tH3h3DClzGRpPVkzQrmqK+qQfaJ1e3iVTKLNRsvV9dmjbQx
k6vC7Uo6NCNLss+dNSxSt+EwfZNJtUSi13To8qd9Q7ma6kjhnwllRGLSdHDy
p6rHWILEpKoFTmbSx42MXXlBQdPAMdUMPg+BlgPJIppeV6yZ6gxRARlSnm/q
pgnhqwaROgiqGVxKSVYm8gQz0wWz8WWqY4iJF7+jyFJdwosv+bYgzVWeHhfh
R9aBt7fjBn0IF3zdXYNCVOdsxXBB/T19+Ii/+VrMyqDsvpZtM1lRkDrisIy2
BGqqJ8pXqPdvvNrMB+i3svEeZoGpx6AT/M8t3PqUESgrySIGIc8h29sb+gtU
SlNSW9avKhZjg2dZgsDcyLKOWioWdjdQexOS5ypwm4TCuf75I4w9RmcIdT/4
ipfDlN6HnwgZpllyKVt2w1ytXeJZ5C6Mhpnu58pdPIndYvTrY8dPMknjYH/y
6STUtLCDrMhZCXwV+ri7IT9sZhGX4ka9uA/+kEpAIm0J6p0J0t+MK0HLcyN0
CFkupr+Wco4T+3cf5cbUy62MMhLgbJCm9GZqCUAzd2dJuogNS3I24JHbXmSD
8oFkcMy3HB2z6Bbi3eL3O2zBPxAlBUwLXkRWgxgx3cQ7KFz5VIwuIgvk6nfa
PIRhRdAiIqdc9Y67lVZv44qIIHMNdD55xZ4aQ9PEXtDEKluWttSyUanjRdxS
pzFLWwqBRkT+uVaSBnJfdY23jkYEn2nyDi8kq7rylLC1Vift1lE4WdCPUCI5
sRxprJJcxz1Pl4HU2d/f2nA/4WP0It0K3ExiLZUb2H2w4X6B+kYXcwwlUteM
FqClm+FFOfGGpPBnZCKsoAl7J2eHDbkPQWObPZZJTgRp+UbHSVTGTfxIN6xI
UYg5pTCU+2IqS0WO8+T+kNA6Wo1F+uVt+wlGWtPHmK+SrzE9KaHYDarylLOe
GEJml4tGrT3822UxH16EP3muW4ztF03xyqB1Mgapop9M1/5ruFuJDeRi7COd
bhe9SPBTPS376P5Vz8p/CD5yRp2veu7xNS4t/NAX+5o8BeJi+FtQSJx8sEAp
6Sp7zmeAtsedMvz9fFyfwjkF9jmrTheYxQa3M9FIfh8E14Y2j8PQQtQ7aPPd
ldyfUEv/7aploFUSLjB5EWX6digEg3pKFi0/ilAGwSlmc9DwgXkN1ynTbxZn
Z9VPqaLF+PKiWNKUuvknPgF3gx9TX+yJw0m6RUb9GtbePaHaDcXiX0E1+xs0
9FWGerf57Ri19GPyitz5Ev4BbKC1l9LP14Tyain1yzwYTw8b93mehCvRD8Ca
SHeCIfT0N6st98yrglZ+7z0K2kdPkB75NoH7jj8TMmO0EJ/jj0LU3v6FpfxI
lbJ1AKspm1qV24S6JPgf3RFtfQFRMUMDkf1thP7h2Lb9cQwcctrYX7ybgv/N
koY/ws6SgQlBMXeoXTr0h42WLcmDasrICkoHMS73Fy0zk9vn8F9TXWSKbQPj
QLAg/FeXmEe5xgL7/nFBLwoM4Q1/lNTG0a/FKVw3QfSHv9qFwnFTSWAfDS86
/4DRSEA6aEGSXyRxufub7KXjMfkJ0qTdl8ti+K44L6VAOTMfZrZFEjx0P+W/
ZxzA5H9oyrKP+WT9D4vLElViW8aIKvdjf2f/YDA42NvbPfBTxR2Ab7WELrkf
ZhoV7X/AXGMUAOJ+s4uWkDqezDBNNq1JH++gLGs9FUiC4AR9DDFQAwYC25+U
oDDnIeh189aHkjXD6McphSeQkogZvvs6yVDO22KYozloQzIy1zOyC3VpGyAe
cbgN+ZF6xUQ+UQryefLH/lkxqcY3MSvj4JhIB1hMJpg9ODxQ0+aywTCKUXzS
+ENiFfHQRZu3juCeX6i9s+nTuxYKAdySClPL17OWouE+GDUi/b+vOdIpqk8e
v8urkgWFk0n3kXQkqzFLp8SQ3dIPMVYq6k9+DpQebT0u63r1hXFZE4OxiwvD
9ZOSw4I/cKZ7ilCXrUbKEuc6/oXqJY8ECq208OK+Vu9ttFHLBhasKfb6PrXM
+a0OwTS9Bo3ZDZBR6G9teX/Jx8wo9tiha2N1d+Ee6sUiYknBrq7RaLRqTlES
vuKZDgVwRJt5lprnrK4N69j0OrQddoLw3Ipo8dWDj1TopU3DwUfkAb8DfXyx
Vy6Nif9afDA1ZVKyXLerh2g7E2sw3m831UoHv21l0QUt3870KpTvZP7OkO9m
fPPJ97LogpXvZ+5Ckh9kfMbyB5neHPOHmVwY80eZ6Er5NvQcXBnz7e0suIfm
2ztZ+4qYb+9m8dUw397LWLnOt/czw2PRvsDcMt9+kDlWlm8/zDyzyrcfZcxD
8p2tLOQd+c52RtSY7+xkfkvynd3M0V++s5cx3eU7+1l06POdgyw8lvkOjITW
fudhJoaEnUdZoKrnu9uZquj57k7Gmnm+u5tZHTzf3cuYrvJdmLano3z3IPPK
a777IGO1Nd99mBnFNN99lJEymu9tZVYJzfe2M1I+872dLKGe5Hu7WaiW5Ht7
WUodyfdwYEYNyfcOMqd+5HsPsiVqR773MGupG/neo8yoGfn+VhZpE/n+dua0
iHx/J4u1h3x/N/NaQ74PBK3aQr6/nwVaQr5/kMXaQb7/IMviay2dnI67Lh0l
e7ml4yS3WT5RdH0lgt19uMfnU24/j7ez+EL0GFpzN6HH0JK/Aj2GkyB3n8f7
mb/0PD6A2y/r9o9xeUj3h3b4agBtZKrPw2enyUMB0eGhREt7h75ivf0xHgDU
2KE/0dUfP8hUS3/8MFP9/PGjzGvmj4EZZKpkP97W8iPo3ijWOMg///nPGB77
ZPhuWl+PyxHFlzfZ+8PFlB8ZS0wT9P79+6fFbJz/Cw53WN7e3lJ8N+55eU1x
4NzonOKx5xY6apBl2Q//StRR/niYbxCulMQ8UfR8I+gGXGQ0wEheimiHXyb1
leAV5DA87IhUMX5mwC+UOAHRhZpmUSJEwQ//Oq9HNXb0HbRdjlxXEyhCeQxc
8+iODk1obZQkDIgzn8EmlDNqjT5Bc0/jZo6p0Cgv5ofUK/8JAgMK22//H+on
Q2mA4QIA

-->

</rfc>
