<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-asdf-sdf-mapping-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SDF Supplements">Semantic Definition Format (SDF): Supplements</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-mapping-01"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann" role="editor">
      <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>
    </author>
    <author initials="J." surname="Romann" fullname="Jan Romann">
      <organization>Universität Bremen</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>jan.romann@uni-bremen.de</email>
      </address>
    </author>
    <date year="2026" month="February" day="18"/>
    <area>Applications</area>
    <workgroup>ASDF</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 54?>

<t>The Semantic Definition Format (SDF) is a format for domain experts to
use in the creation and maintenance of data and interaction models
that describe Things, i.e., physical objects that are available
for interaction over a network.
It was created as a common language for use
in the development of the One Data Model liaison organization (OneDM)
models.  Tools convert this format to database formats and other
serializations as needed.</t>
      <t>An SDF specification often needs to be augmented by additional
information that is specific to its use in a particular ecosystem or
application.
SDF Supplements provide a mechanism to represent this
augmentation.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-asdf-sdf-mapping/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        A Semantic Definition Format for Data and Interactions of Things (asdf) Working Group mailing list (<eref target="mailto:asdf@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/asdf/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/asdf/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/sdf-mapping"/>.</t>
    </note>
  </front>
  <middle>
    <?line 74?>

<section anchor="introduction">
      <name>Introduction</name>
      <!-- Just copying the abstract, for now... -->

<t>The Semantic Definition Format (SDF) is a format for domain experts to
use in the creation and maintenance of data and interaction models
that describe Things, i.e., physical objects that are available
for interaction over a network.
It was created as a common language for use
in the development of the One Data Model liaison organization (OneDM)
models.  Tools convert this format to database formats and other
serializations as needed.</t>
      <t>An SDF specification often needs to be augmented by additional
information that is specific to its use in a particular ecosystem or
application.
SDF Supplements provide a mechanism to represent this
augmentation.</t>
      <t><cref anchor="naming-note">In this revision, we have renamed the <tt>map</tt> quality to <tt>amend</tt> since
the underlying data structure changed from an object to an array.
For this reason, we also change the term "Mapping File"
to "Supplement" to also reflect the fact that the file
does not actually contain a <em>map</em> for describing the augmentation anymore.</cref></t>
      <section anchor="terminology-and-conventions">
        <name>Terminology and Conventions</name>
        <t>The definitions of <xref target="I-D.ietf-asdf-sdf"/> apply.</t>
        <!-- XXX -->

<t>The term "byte" is used in its now-customary sense as a synonym for
"octet".</t>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>An SDF Supplement provides augmentation information for one or more
SDF models.
Its main contents are an array of <tt>patches</tt> that are applied using SDF name references (<xref section="4.3" sectionFormat="of" target="I-D.ietf-asdf-sdf"/>) as the respective target.</t>
      <t>When processing the Supplement together with one or more SDF
models, the qualities from the array elements are added to the SDF model at the
referenced name, as in a merge-patch operation <xref target="RFC7396"/>.
Note that this is somewhat similar to the way <tt>sdfRef</tt> (<xref section="4.4" sectionFormat="of" target="I-D.ietf-asdf-sdf"/>) works, but in a
Supplement the arrows point in the inverse direction (from the
augmenter to the augmented).</t>
      <t>The order of the application of patches is that of the elements within the array (which is deterministic in contrast to the order of entries of an object).</t>
      <section anchor="example1">
        <name>Example Model 1 (ecosystem: IPSO/OMA)</name>
        <t>An example for an SDF Supplement is given in <xref target="code-example1"/>.
This Supplement is meant to attach to an SDF specification published
by OneDM, and to add qualities relevant to the IPSO/OMA ecosystem.
<cref anchor="namespace-note"><br/>
Note that this example uses namespaces to identify elements of the
referenced specification(s), but has un-namespaced quality names.
These two kinds of namespaces are unrelated in SDF, and a more
robust example may need to make use of Quality Name Prefixes
as defined in <xref section="2.3.3-3" sectionFormat="of" target="I-D.ietf-asdf-sdf"/> (independent of a potential
feature to add namespace references to definitions that are not
intended to go into the default namespace — these are SDF
definition namespaces and not quality namespaces, which are one
meta-level higher).</cref></t>
        <ul spacing="normal">
          <li>
            <t>Start of a Supplement for certain OneDM playground models:</t>
          </li>
        </ul>
        <figure anchor="code-example1">
          <name>A simple example of an SDF Supplement</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "IPSO ID mapping"
  },
  "namespace": {
    "onedm": "https://onedm.org/models"
  },
  "defaultNamespace": "onedm",
  "amend": [
    {
      "#/sdfObject/Digital_Input": {
        "id": 3200
      }
    },
    {
      "#/sdfObject/Digital_Input/sdfProperty/Digital_Input_State": {
        "id": 5500
      }
    },
    {
      "#/sdfObject/Digital_Input/sdfProperty/Digital_Input_Counter": {
        "id": 5501
      }
    }
  ]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="example2">
        <name>Example Model 2 (ecosystem: W3C WoT)</name>
        <t>This example shows a translation of a hypothetical W3C WoT Thing Model
(as defined in Section 10 of <xref target="W3C.wot-thing-description11"/>)
into an SDF model plus a Supplement to catch Thing Model attributes
that don't currently have SDF qualities defined (namely, <tt>titles</tt> and
<tt>descriptions</tt> members used for internationalization).</t>
        <t>A second Supplement is more experimental in that it captures
information that is actually instance-specific,
in this case a <tt>forms</tt> member that binds the <tt>status</tt> property to an
instance-specific CoAP resource.
<cref anchor="td-note"><br/>
Namespaces are all wrong in this example.</cref></t>
        <t>The form really should be part of the class level; defining the entire
form instead of just the link in the instance information is a
symptom of not yet getting the class/instance boundary right.</t>
        <ul spacing="normal">
          <li>
            <t>The input: WoT Thing Model</t>
          </li>
        </ul>
        <figure anchor="code-wot-input">
          <name>Input: WoT Thing Model</name>
          <sourcecode type="json"><![CDATA[
{
    "@context": "https://www.w3.org/2022/wot/td/v1.1",
    "@type" : "tm:ThingModel",
    "title": "Lamp Thing Model",
    "titles": {
      "en": "Lamp Thing Model",
      "de": "Thing Model für eine Lampe"
    },
    "properties": {
        "status": {
            "description": "Current status of the lamp",
            "descriptions": {
              "en": "Current status of the lamp",
              "de": "Aktueller Status der Lampe"
            },
            "type": "string",
            "readOnly": true,
            "forms": [
              {
                "href": "coap://example.org/status"
              }
            ]
        }
    }
}
]]></sourcecode>
        </figure>
        <ul spacing="normal">
          <li>
            <t>The output: SDF model</t>
          </li>
        </ul>
        <figure anchor="code-wot-output1">
          <name>Output 1: SDF Model</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "sdfObject": {
    "LampThingModel": {
      "label": "Lamp Thing Model",
      "sdfProperty": {
        "status": {
          "description": "Current status of the lamp",
          "writable": false,
          "type": "string"
        }
      }
    }
  }
}
]]></sourcecode>
        </figure>
        <ul spacing="normal">
          <li>
            <t>The other output: SDF Supplement for class information</t>
          </li>
        </ul>
        <figure anchor="code-wot-output2">
          <name>Output 2: SDF Supplement</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model: WoT TM mapping"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "amend": [
    {
      "#/sdfObject/LampThingModel": {
        "titles": {
          "en": "Lamp Thing Model",
          "de": "Thing Model für eine Lampe"
        }
      }
    },
    {
      "#/sdfObject/LampThingModel/sdfProperty/status": {
        "descriptions": {
          "en": "Current status of the lamp",
          "de": "Aktueller Status der Lampe"
        }
      }
    }
  ]
}
]]></sourcecode>
        </figure>
        <ul spacing="normal">
          <li>
            <t>A third output: SDF Supplement for Protocol Bindings</t>
          </li>
        </ul>
        <figure anchor="code-wot-output3">
          <name>Output 3: SDF Supplement for Protocol Bindings</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model: WoT TM Protocol Binding"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "amend": [
    {
      "#/sdfObject/LampThingModel/sdfProperty/status": {
        "descriptions": [
          {
            "href": "coap://example.org/status"
          }
        ]
      }
    }
  ]
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="syntax">
      <name>Formal Syntax of SDF Supplements</name>
      <t>An SDF Supplement has three optional components that are taken
unchanged from SDF: The info block, the namespace declaration, and the
default namespace.
The mandatory fourth component, the <tt>amend</tt> block, contains the list of amendments that are supposed to be applied to the target model,
using an SDF name reference (usually a namespace and a JSON pointer) as the target to which a specified quality is applied to.</t>
      <t><xref target="mapping-cddl"/> describes the syntax of SDF Supplements using CDDL <xref target="RFC8610"/>.</t>
      <figure anchor="mapping-cddl">
        <name>CDDL definition of SDF Supplements</name>
        <sourcecode type="cddl"><![CDATA[
start = sdf-mapping

sdf-mapping = {
 ; info will be required in most process policies
 ? info: sdfinfo
 ? namespace: named<text>
 ? defaultNamespace: text
 amend: [ * amendments ]
}

amendments = {
  + global-sdf-pointer => additionalqualities,
}

; we can't really be much more specific here:
additionalqualities = named<any>

; --------------------------------- import from SDF-base:

sdfinfo = {
 ? title: text
 ? description: text
 ? version: text
 ? copyright: text
 ? license: text
 ? modified: modified-date-time
 ? features: [
               * (any .feature "feature-name") ; EXTENSION-POINT
             ]
 optional-comment
 EXTENSION-POINT<"info-ext">
}

; Shortcut for a map that gives names to instances of X
; (has keys of type text and values of type X)
named<X> = { * text => X }

; EXTENSION-POINT is only used in framework syntax
EXTENSION-POINT<f> = ( * (quality-name .feature f) => any )
quality-name = text .regexp "([a-z][a-z0-9]*:)?[a-z$][A-Za-z$0-9]*"

; rough CURIE or JSON Pointer syntax:
global-sdf-pointer = text .regexp ".*[:#].*"

optional-comment = (
 ? $comment: text       ; source code comments only, no semantics
)

modified-date-time = text .abnf modified-dt-abnf
modified-dt-abnf = "modified-dt" .det rfc3339z

; RFC 3339 sans time-numoffset, slightly condensed
rfc3339z = '
   date-fullyear   = 4DIGIT
   date-month      = 2DIGIT  ; 01-12
   date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                             ; month/year
   time-hour       = 2DIGIT  ; 00-23
   time-minute     = 2DIGIT  ; 00-59
   time-second     = 2DIGIT  ; 00-58, 00-59, 00-60 based on leap sec
                             ; rules
   time-secfrac    = "." 1*DIGIT
   DIGIT           =  %x30-39 ; 0-9

   partial-time    = time-hour ":" time-minute ":" time-second
                     [time-secfrac]
   full-date       = date-fullyear "-" date-month "-" date-mday

   modified-dt     = full-date ["T" partial-time "Z"]
'
]]></sourcecode>
      </figure>
      <t>The JSON pointer that is used a the <tt>target</tt> can
point to a JSON map in the SDF model to be augmented by adding or
replacing map entries.
If necessary, the JSON map is created at the position indicated with
the contents of the <tt>patch</tt> <cref anchor="example">(add examples)</cref>.
Alternatively, the JSON pointer can point to an array (also possibly
created if not existing before) and add an element to that array by
using the "<tt>‑</tt>" syntax introduced in the penultimate paragraph of
<xref section="4" sectionFormat="of" target="RFC6901"/>.</t>
    </section>
    <section anchor="augmentation-mechanism">
      <name>Augmentation Mechanism</name>
      <!-- TODO: Discuss used terminology -->
<t>An SDF model and a compatible Supplement can be combined to create
an <em>augmented</em> SDF model.
(This process can be repeated with multiple Supplements by using the
outcome of one augmentation as the input of the next one.)
As augmentation is not equal to instantiation, augmented SDF models
are still abstract in nature, but are enriched with ecosystem-specific
information.</t>
      <aside>
        <t>Note that it might be necessary to specify an augmentation mechanism for instance descriptions as well at a later point in time, once it has been decided what the instance description format might look like and whether such a format is needed.</t>
      </aside>
      <t>The augmentation mechanism is related to the resolution mechanism
defined in <xref section="4.4" sectionFormat="of" target="I-D.ietf-asdf-sdf"/>, but fundamentally different:</t>
      <t>Instead of a model file reaching out to other model files and
integrating aspects into itself via <tt>sdfRef</tt> (<em>pull</em> approach), the
Supplement <em>pushes</em> information into a new copy of a specific given
SDF model.
The original SDF model does not need to know which Supplements it
will be used with and can be used with several such Supplements
independently of each other.</t>
      <t>An augmented SDF model is produced from two inputs: An SDF model and a compatible Supplement, i.e. every JSON pointer key within elements of the  <tt>amend</tt> array points to a location that already exists within the SDF model or has been created by a previous augmentation step.
To perform the augmentation, a processor needs to create a copy of the original SDF model.
It then iterates over all entries within the Supplement's <tt>amend</tt> array elements.
During each iteration, the processor first obtains a reference to the target referred to by the JSON pointer in the respective key.
This reference is then used as the <tt>Target</tt> argument of the JSON Merge Patch algorithm <xref target="RFC7396"/> and the entry's value as the <tt>Patch</tt> argument; the target is replaced with the result of the merge-patch.</t>
      <t>Once the iteration has finished, the processor returns the resulting augmented SDF model.
Should the resolution of a JSON pointer or an application of the JSON Merge Patch algorithm fail, an error is thrown instead.</t>
      <t>An example for an augmented SDF model can be seen in <xref target="code-augmented-sdf-model"/>.
This is the result of applying the WoT-specific Supplement from <xref target="code-wot-output2"/> to the SDF model shown in <xref target="code-wot-output1"/>.
This augmented SDF model is one step away from being converted to a WoT Thing Model or Thing Description,
which requires some information that cannot be provided in an SDF
model that is limited to the vocabulary defined in the SDF base specification.</t>
      <!-- TODO: Prefix WoT-specific qualities with wot:? -->
<figure anchor="code-augmented-sdf-model">
        <name>An SDF model that has been augmented with WoT-specific vocabulary.</name>
        <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Lamp Thing Model"
  },
  "namespace": {
    "wot": "http://www.w3.org/ns/td"
  },
  "defaultNamespace": "wot",
  "sdfObject": {
    "LampThingModel": {
      "label": "Lamp Thing Model",
      "titles": {
        "en": "Lamp Thing Model",
        "de": "Thing Model für eine Lampe"
      },
      "sdfProperty": {
        "status": {
          "description": "Current status of the lamp",
          "descriptions": {
            "en": "Current status of the lamp",
            "de": "Aktueller Status der Lampe"
          },
          "writable": false,
          "type": "string"
        }
      }
    }
  }
}
]]></sourcecode>
      </figure>
      <aside>
        <t>Since the pair of an SDF model and a Supplement is equivalent in
semantics to the augmented model created from the two, there is no
fundamental difference between specifying aspects in the SDF model or
leaving them in a Supplement.
Also, parts of an ecosystem-specific vocabulary may in fact be
mappable to the SDF base vocabulary.
Therefore, developing the mapping between SDF and an ecosystem
requires careful consideration which of the features should be available
to other ecosystems and therefore should best be part of the common
SDF model, and which are best handled in a Supplement specific to the
ecosystem.</t>
      </aside>
      <!-- TODO: Also needs to take NIPC into account somewhere -->

<section anchor="logging-augmentation">
        <name>Logging Augmentation</name>
        <t>Since an augmented model is not fundamentally different from any other
SDF model, it may be necessary to trace the provenance of the
information that flowed into it, e.g., in the info block.
For this purpose, a new quality called <tt>augmentationLog</tt> is introduced
that contains an array of URIs pointing to the Supplements that have been
used to augment the original SDF file (which can also be indicated via
the <tt>originalSdfModel</tt> quality).
These additional qualities allow for reproducing the augmentation process.</t>
        <t>For logging while performing an augmentation, the processor has to perform
the following steps:</t>
        <!-- TODO: This algorithm probably needs to be reworked or at least reformatted. -->
<ol spacing="normal" type="1"><li>
            <t>If the <tt>info</tt> block is not present in the model that is being augmented,
  the processor creates it.</t>
          </li>
          <li>
            <t>If the <tt>info</tt> block does not contain an <tt>augmentationLog</tt> quality, the processor
  performs the following steps:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>If the <tt>originalSdfModel</tt> quality is not present in the <tt>info</tt>
block, the processor adds it with a URI that can be used to
access the SDF model that is currently being augmented as its
value.</t>
              </li>
              <li>
                <t>The processor creates the <tt>augmentationLog</tt> quality with an
array containing URIs that can be used to access the current
Supplement as its sole item.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Otherwise, if <tt>augmentationLog</tt> does not contain an array, stop and
throw an error.</t>
          </li>
          <li>
            <t>Otherwise, the processor adds a URI that can be used to access the
current Supplement to the array of the <tt>augmentationLog</tt> quality.</t>
          </li>
        </ol>
        <!-- [^logging] -->

<figure anchor="augmentation-log">
          <name>An augmented SDF model with an augmentation log and information regarding the original SDF model.</name>
          <sourcecode type="sdf"><![CDATA[{
  "info": {
    "title": "Augmented SDF model with augmentation log.",
    "augmentationLog": [
      "https://example.org/sdf-mapping-file-1",
      "https://example.org/sdf-mapping-file-2"
    ],
    "originalSdfModel": "https://example.org/original-sdf-model"
  }
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>IANA is requested to add the following Media-Type to the "Media Types" registry.</t>
        <table align="left" anchor="new-media-types">
          <name>A media type for SDF Supplements</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">sdf-mapping+json</td>
              <td align="left">application/sdf-supplement+json</td>
              <td align="left">RFC XXXX, <xref target="media-type"/></td>
            </tr>
          </tbody>
        </table>
        <t><cref anchor="to-be-removed">RFC Editor: please replace RFC XXXX with this RFC number and remove this note.</cref></t>
        <dl spacing="compact">
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>sdf-mapping+json</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary (JSON is UTF-8-encoded text)</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t><xref target="seccons"/> of RFC XXXX</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t><xref target="media-type"/> of RFC XXXX</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Tools for data and interaction modeling that describes Things, i.e.,
 physical objects that are available for interaction over a network</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>A JSON Pointer fragment identifier may be used, as defined in
<xref section="6" sectionFormat="of" target="RFC6901"/>.</t>
          </dd>
          <dt>Person &amp; email address to contact for further information:</dt>
          <dd>
            <t>ASDF WG mailing list (asdf@ietf.org),
or IETF Applications and Real-Time Area (art@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>no</t>
          </dd>
        </dl>
      </section>
      <section anchor="registries">
        <name>Registries</name>
        <t>(TBD: After any future additions, check if we need any.)</t>
      </section>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>Some wider issues are discussed in <xref target="RFC8576"/>.</t>
      <t>(Specifics: TBD.)</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6901">
          <front>
            <title>JavaScript Object Notation (JSON) Pointer</title>
            <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
            <author fullname="K. Zyp" initials="K." surname="Zyp"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6901"/>
          <seriesInfo name="DOI" value="10.17487/RFC6901"/>
        </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="RFC7396">
          <front>
            <title>JSON Merge Patch</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Snell" initials="J." surname="Snell"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This specification defines the JSON merge patch format and processing rules. The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7396"/>
          <seriesInfo name="DOI" value="10.17487/RFC7396"/>
        </reference>
        <reference anchor="I-D.ietf-asdf-sdf">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>KTC Control AB</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="13" month="October" year="2025"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) is concerned with Things, namely
   physical objects that are available for interaction over a network.
   SDF is a format for domain experts to use in the creation and
   maintenance of data and interaction models that describe Things.  An
   SDF specification describes definitions of SDF Objects/SDF Things and
   their associated interactions (Events, Actions, Properties), as well
   as the Data types for the information exchanged in those
   interactions.  Tools convert this format to database formats and
   other serializations as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-25"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8576">
          <front>
            <title>Internet of Things (IoT) Security: State of the Art and Challenges</title>
            <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
            <author fullname="S. Kumar" initials="S." surname="Kumar"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>The Internet of Things (IoT) concept refers to the usage of standard Internet protocols to allow for human-to-thing and thing-to-thing communication. The security needs for IoT systems are well recognized, and many standardization steps to provide security have been taken -- for example, the specification of the Constrained Application Protocol (CoAP) secured with Datagram Transport Layer Security (DTLS). However, security challenges still exist, not only because there are some use cases that lack a suitable solution, but also because many IoT devices and systems have been designed and deployed with very limited security capabilities. In this document, we first discuss the various stages in the lifecycle of a thing. Next, we document the security threats to a thing and the challenges that one might face to protect against these threats. Lastly, we discuss the next steps needed to facilitate the deployment of secure IoT systems. This document can be used by implementers and authors of IoT specifications as a reference for details about security considerations while documenting their specific security challenges, threat models, and mitigations.</t>
              <t>This document is a product of the IRTF Thing-to-Thing Research Group (T2TRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8576"/>
          <seriesInfo name="DOI" value="10.17487/RFC8576"/>
        </reference>
        <reference anchor="W3C.wot-thing-description11" target="https://www.w3.org/TR/wot-thing-description11/">
          <front>
            <title>Web of Things (WoT) Thing Description 1.1</title>
            <author/>
          </front>
          <seriesInfo name="W3C REC" value="wot-thing-description11"/>
          <seriesInfo name="W3C" value="wot-thing-description11"/>
        </reference>
      </references>
    </references>
    <?line 589?>

<section numbered="false" anchor="list-of-figures">
      <name>List of Figures</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="code-example1"/>:</dt>
        <dd>
          <t><xref format="title" target="code-example1"/></t>
        </dd>
        <dt><xref target="code-wot-input"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-input"/></t>
        </dd>
        <dt><xref target="code-wot-output1"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-output1"/></t>
        </dd>
        <dt><xref target="code-wot-output2"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-output2"/></t>
        </dd>
        <dt><xref target="code-wot-output3"/>:</dt>
        <dd>
          <t><xref format="title" target="code-wot-output3"/></t>
        </dd>
        <dt><xref target="mapping-cddl"/>:</dt>
        <dd>
          <t><xref format="title" target="mapping-cddl"/></t>
        </dd>
        <dt><xref target="code-augmented-sdf-model"/>:</dt>
        <dd>
          <t><xref format="title" target="code-augmented-sdf-model"/></t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="list-of-tables">
      <name>List of Tables</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="new-media-types"/>:</dt>
        <dd>
          <t><xref format="title" target="new-media-types"/></t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This draft is based on discussions in the Thing-to-Thing Research
Group (T2TRG) and the SDF working group.  Input for <xref target="example1"/> was provided by <contact fullname="Ari Keränen"/>.</t>
      <!--  LocalWords:  SDF namespace defaultNamespace instantiation OMA
 -->
<!--  LocalWords:  affordances ZigBee LWM OCF sdfObject sdfThing
 -->
<!--  LocalWords:  idempotency Thingness sdfProperty sdfEvent sdfRef
 -->
<!--  LocalWords:  namespaces sdfRequired Optionality sdfAction
 -->
<!--  LocalWords:  sdfProduct dereferenced dereferencing atomicity
 -->
<!--  LocalWords:  interworking
 -->

</section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9Vc/XIbx5H/f55iAuViUuFCBCk7EqwPQ6TkMCeJjAiVHCuK
ucAOgLUWu8h+EIJpuvIKV3WPkMe4//ImeZLrX/fM7iwAWvKl7qqOVbaws7M9
PT393b0bBIG67OtDNc6iOJ32dVVOgntKlXGZmL5+pLQ+N/MwLeOxPjaTOI3L
OEv1syyfh6XeOT9+ttvX59VikZi5SctChaNRbggi3WmNR9k4DecEMsrDSRnE
htYJi2gS4L95uFjQ6sF+T6lxWJpplq/6uigjVVSjeVwUtGa5WtDTJ0+HzwjX
tDBpURV9XeaVUSrMTdjXA1otpsdpcqGWWf5+mmfVgsYJF/XerGgoIghpafLU
lMExEKFnq3KW5X3aaKAFw6MwL0qT6ifYZJrSHa2znGjzOo0vTV7E5T/+Xuon
OXamh9+e8ISizI0p+/osK8pJOJ7pw8P9u3f3+d44Lmk78oAMZBGtcxwc3Dv8
/L4dqdISm/7aYNEVDy5mWUrzfnv3fnD3oBcc9O4FXxzeP+jxTTqVOOnrcTjK
vip/iLuEIY/nGQ7ORHGZ5d6m/hCm+lX20f34oL8P027Oj3xVpXEw4gndyGxH
WF2atDKgoyP7z3HOJMv1cViGOkwjOZJwzAens4kezogZCr0D/tglgIIOrr4C
39itTuNyVo2EAnc8LlIq5TVob8Dm1bOjL+7v9/p6kcVYR4bufdHbp0ejKJHr
3x3e/6Kv5yafmmARluOZusXjh/fv0XiVx7h+c3jUfXk6fBqMacAEB/u9/d5B
j+7ztX1if/9gH8iO45hAnwTH3RavE1tHExWnkzUc733+OwJUmDGYW8lay6wM
StAiiEwxzuMFKNSjrfCNSCmSLLAWHwj+zp8+f9bXnbcEL/iG/t51VLfbVSoI
Ah2OiEWJyEq9/QsRIs+Cd95PgTGcmY+Ku44LHepJc4wRsUicavNhYfKy0GXG
oKrCaBotCeKYpJPB4Kwxl4QrTMcGRx05HogbHtBzEo+kYDDljFaR3Y+MZYw9
HXdNd4/EY1WQvCc6G31vxlgak0kX6PCSOCYcJcKqQNIHnxHT0xZIB0BJdHnO
SamXYSGomoiOjyaMs/mcpidhOq3CqWE4tC2eb7cWmUuTZAuoOOwGQ6epEc5+
gV3oJA7jAovm0zCNfxBC7NCk4xe7DEk22yXiZ1lCGGQpoVcSKKKzpXKZMZ1G
YWHsUME0y2i9XLSPyeMwseALoJ8aE5mIzh63Bynr42JhxvHEqkjCF0oO83Bo
msgbVlPshPY/Wukwivjww8Ru2HJslgqdCT0HD4/HhJM981Avwpw4qErCXJtx
VqxInc51JqiGjZYW0q9ZCr3Is8s4ImxIHMczIloxxwK5WeSmAKFBGgEl+FpY
zOXzmESaLAIJ4wk4O6r4zJV68Cu6+4eqKInCixWxER+WE4o9Ptw0W5K46CB4
tCYkpEIhhWlWmo1rkZyTVE6MbF8Ma7Wnl0bPwktDI1DAES93QSrqQv+1oqMq
V9jUBd1KowtdxCQPluGNrtLI5AkjyfJBONI2KmJs0GNKwCakl4kFLOcDEl2E
eR6uhKYksA6fsLDYhEmRWQC8CgnEXHdeiNLUz+LEdASDTHea8+gwcDyam0nC
i9GzZOFKYQO+iq2kRZkhzstICAndMElWYOcyZJ74jvb+nSgMEef6DLxTpG2s
5llu6DRv3dJDwjBOsySbrpjfjyAbqdh3NWTxcyqK7cbVFTTs9TXzGFFCDp30
oBzpsN70aFWaDjiYOBaqh7mXTp8Ue1GSOstXGg6GET1QrNKM0ALuqpONS1N2
ugKNnAoNr6IgOr4+H3b25F9NRgK/Xz394+uTV0+P8fv894Pnz+sfys44//3p
6+fHza/myaPTFy+evjyWh2lUt4ZU58XgT3QHVOmcng1PTl8OnndEK9G2yNmq
WCdBGYpsswIkCRLtppxK5d1fXf3qydFZ7y5RbufqiozHQa93//p6117d6/3u
Lq6WM5PKkllKRyuXdIIrRfQ2Yc6ynyRkkBdxSSyzB/IVs2yZatJTONPbb0Ge
d339YDRe9O4+sgPYdWvQEa41yITbHNl4WCi5ZWjLMjVJW+Nr5G7jO/hT69oR
3xt88DiJyQgEvXuPH7EmOiWNfhmbpVJWETfi5bRd0RYDX9tCZMgPJP2pIRoK
AKzRUCfEt2x9IWesPdn8WV0Ambhgb8YUF551hAamk68KiCDAQUNBvumUSA8V
OPdzI8bybveQwCgRrF2cKGSWNPECE0i/lSH5TCUd7hviB2yHABROtr2NlhlN
Iz7QS/Lb/A0BAyUbYnay+jEmPFjNsY7g7RhnIngXUQStmsk6jiZaVJKqNxPx
5pgVWQ15Lp7OyGMRGpPm8G5cX3fVS9LtTsORRMHaZXOzxEARz2OYNrv2kjC7
IPK8MpOLNuXu4gAc5eBr0AZHVcmIKJ80ssNsWYiT6ryLGK4AaaEozi3MHUcR
5Wx1jUZtvHetciK9RHetV+JZXQxZpsC2eI92Vk1gnJFFQki/s5zFRDHoFlOy
Wo4LOImW9fKwKB0i9boEKccp0s/aVO2KZn/6IZzT7q2P1NM7tZtAAdrZ+emd
0xeDXX11y8i83jWLjr1iiQg3JIlwmxJDpqLREGIF9eN0oEMcY3v63ISpGM+y
RMgmZnTTU1pUoyQuZiZS5Bex6yZqEPOjyOPXnAh4aWGCFG4rjRfUFe+BxCcc
m5ZD4Q/19Z//zAZ1jQsdAchsFbp+ht030iFkGSeekMiZSkzYSENrZzvFrnDk
jMSjSoMaZFQ7KTzUddEBMSM5zfp9nEa8gIcDZLJKiQLsQMdMRyFTKHpLgtMR
XDC3jzlxFhxQbGAevueNAewf7eIvoZfOCPv4g7EuXyFG3xkuJ2wH3cPuYXDY
CJzeIRzNgrwr65uTV5pBRcbWoZ2Qp1+JecQh1jvx9SAcb8/FqDUoHZJ1ikss
wPhPM1xmNiyYhFVSekD/+bf/xB24FFbjsb/UhFg+JYlmcKJaR8C3yI9jMQQM
0qASP5gyDBLEIXoWT0nBQsRu63PSy3bfHtNDcsYUXsBkMCPrRRKuELAjNGMd
3Ffqp59+qqNUuLc2GQRu1ifH2sXZNV6YQ+hEJLyzslwU/Tt3+BKB+h0bzFmS
vKyfkScUO8CSfencQhh/ynriznE8hRPx3Um6qMqOC3HjqK8PD/b3PzIf42c5
1Hu5at/5juhCvp8P7/PP/xV4R8iDmHwdYg9EVFd9fauliMj/NuP3Dzvfk1Pe
IWNpHnZW4Tw5kGum88POABYG4uHERBRoW911rrco0oOWIn1zeKTfZENPjx5c
K9GDDjK8M7i4pMDTIqnNQ6hnqwWiy5LjawtIwm9ZSu20JdHJYW/fOuKSoiDD
p1gqLP5ioxdJVbT5kmaM2SR7S0Ark4talST6kgbI0s9K5FpIOktyQDm8AtRG
ATuMdsCbyWpPXzBNyfshoVIXXhqFhuZmPiL7KkFAnSRIQ4l6bTANaRogL5OR
hKyZDzgvnPaI2XNLxG4jNi7hBEO9FGpb4FyHR3FalEiFBE4t7ynnw48R7Yf6
Ak/XyAqEEatfDijp8bKi2wvLnWLD1AZcip0GZ3DbsiofG1ihMnLmB84CVkGw
CKSIKaokQtCwsDqEszhJWBSaFc2XVnFZJw9KlfQ7g8DCJozw0PfQ9LhP3vD7
xqURxFoeLiiiitV8QbEXWxVSfitTanIYS7cIL3+nfnwEjYU4LSedB++z2VBj
PNvGCaHJMs8IniOxlQLWl0NGjiS6v8HqrA8hoeqK4Xa+Ym/7A6kl3XEKb7lc
dpeHrPEO9g8O7hD/3ymjO5e9bo/CNXkMKeyOpofKeZ8XYPjuNnMqQD4nrHwE
WhMKmnFldU3HpD8zn+5HDM+Xqck//ivXBuEJnrIR/7VdwDJR3FqExoXJWmMW
fC1OWOdIJFPLdMc3Ca1TY7T54CbYel+fDK/e6eB9WZkkITk5l2fgiXobdX/X
a/jwwfSx0ZxItY4tiUV0ShFvR8oNa3dZPunW2zWU1jdFU2fkWmCZcRYuiGUc
+4FnLInXnrluXb9T7fFrdd22MtC5zMPOkpxsZWiYDmH4rCp5Qq2ab7T96zzW
Nv60sJj+tiCkBYnAFstP01VtafE8oDcCIaY0CUf0c3Nh3PPMsbO7QsAmFe6x
WF/fzEn1/GVORn2ErU7CxCZ58SdlJ2GMTWoLAT/NrJ/yXN0Tcq+fBIfG/nms
e22sfj2teeNRfbZOMssAL5zj9tm/fHg3OW3tc6x9IlFczdmY9IZzlYPr65/R
WB9btOWqOcWlNnhiDZtPYBDgdbN+uYk1Dn4Jaxysn7zwxwDWKo9+jjtox2U2
zhL9hFwD1Ej+B9yxDuP/ik1+6YkFGnq0r2/UojedxeEvOYvDT6MzTkjdkgJZ
os9X5AZ+APusFzWubhV873pbDnDGWbXckBpYiPOJ2tOCAqTUr2qVFCGnqkpb
RQAC1bfOyyTToyQbv5csWhN7RoaUhyS6bN5iZtRGiNplP3BO98MyI8dqQp5i
OWsQEaiuYGEXsun9wvp5hUScmDJv417QbrNCIuVRk4K08bLkEMUE7SnJS9qI
oZ2a1DtVIZ5z6G1Qkgx/OD996Yq8daLSQqZ1bOTsEiBeigPuZ40POYNXV64f
AfXh6+u6/iggixsPWRA/Oj5+jghIHu6KJHKlueCY/KFuFau9C7pFXsOXcpTL
mPzVEfb+14rca46y5llRuhQrbTWJxzHyIo/5Ca4s4wcGGtHln9ED+KuPcGdT
VHFLyamRG6Nv+wf4jnwM5V0zhvq3eppkozDh5g1Lcv3wkVczrEOyPQD4EvWn
cYjwzcYYtLF5RefBMVQdpKBM0FdboNC6so0wXT0CvOBjf5pC6Iyo7YQkQPW0
z+Rm8vJGHjutKCR43PYa3CD3SPgDqCBy3NEM0VGgYNQMEC8zl/XrXwEJlglK
ihVx36afik3HkQ5gh7apuy5D1bE/OD3X2SUGefrN8OnL85PTl8HZ6cnLYRsA
uYlOjQQoYdO5qfUnHnRAhAAxzCM5oPMZUWtciZoL4SqI8CKlanONnGa0ARjb
yG/ouR0or/dmJUaTnCWmAIvkZZhUphn/ZlfJGX7zCNSnbfJMYptvNKOwhiPk
kgtNrkg3yelxpNGtCKr1TU0AeAf0s6LNFGsIOdllJiXa7qrWjIeCSjc3U4rn
dWfnbRj88A7/2w/uv7vd332M379+93YQfIsfPNoBznlWTWf66PWrk6eoZ7AO
OrMCIVj21TZZWVuwe/tt/9a7LmCunx22BIb5tb0WFrNn/aWWgJ47irSdIWTb
ozBaF7aZo1C7Sm0yYo1HOEonHqOWAQbU+gBN73hjHd2NSLfmk/Hh4eH9H0CO
V8+ONC50EcIo0BJBWs2zyaQwZECKBEIjVeEI4hIp9zCB/gxszKhNKlIRKChq
Gr57fPL1ybC+NyeLM5PNP9QHfA9k2O8FvYNmUhSu9NZJB/f2+J/7/M/hvvzT
09AOqGtuBG2tvy81L38HyCl2bGmDMzqBbYvtBweH9aR5nFal2TZJGsB4ks0y
bZsEtDGX//liv8ZXJ4YklR78GOJ5lUgK3a1E0jSWlTrdju7drsls163/Hmr9
bx8O9wM6VcIluM8tJdzhQUzKXMSTGlp0+p3Wputr2d92TN/6eHGkCy5gVq3x
aDNHJ+j4LNFc0uEzjh6rWgANyLedYae9ic63nXfqs9p39F0A5xqyZfdy9psu
QOda0mm+L1Jn/ViPheJGiV9yAaOopOaHxJ08B91r02VNzvSGDh1yGrJc5WaR
hGNc4Flbd+uqk4lODXyFMF+J+9bA93qdJEtH7llsa88RykN0B1VAxck3V122
gZEUlS/0279Y7/tdVw0Smzy95MRruU4F2qluduoq1DvcWkJrF/EoWSmHUyxJ
QPMBVUba1siQWTK74ulFEZ43TerYepmAN1pZ9xHrdy7++bf/uOg4jy22DUFi
TXjPJiVXKJ6DI4gZwmkeLmYod3tVXC4p2U2wO9dsuk/oEzL2sthFJDDwy/gv
XAOTbUUZnh6f9vVxXIyrwvJD6fW4oEtl4CfKxbGFC07wRkmrng56jljnjzjl
jRQ6U0/Rje9qRvmuAddVO5z8dw6khUDMY+rjJq+MCLJoLVWA2WqqKgqmaFGu
SqCK327fKWyWFyGUZZYUFoZmdnfVYL3NQbqFDIxx412QTNpYpeb2pudBcTRR
wjl2zVs4zZQtvBQzMcOkObn7blN1UaTOh/tpebj8/bCII3OtHnmF/5giEhgs
EKmWI6ApQFbMxf52mn41qSbYXLUfxIJCS5Nwn0KoUSvNvZp/jE6FjNPjEhWO
jEkRv8UoMi5dv9U2yK5XUDBOsuw9+aTvJTZazqTzoqg4ArIzY69JcLjeh9Vs
hZvIpKhrozVUEZKqPU1trcq2WiDkcCbI20u5hBwBUtAc2ZXkmZ80pYPQ8j8a
yxAxjDldkVUs7ZIqayZwwRRVJjNFkIvQkZtTCqnHxmVhkom+jEOvS+P2gizB
bYR9eUbQd1lf+S0ZNKGYmeJ2u07BlSyi2pJDAMG0Dl64+UB50iZNGPE0RkDf
CHXdJOcq3+/TbGnDU1/o4lK5GJA1BXMyjtPKbTNYGApRaA0+X7/p3iuBJ4wu
SCkE7HIiYouEadEQoiel3WSZiURTsPKp6kl6dDUQW7XtAPfMSXvJWquCrrML
osv5iUIMY5KNvRJamCAnvxL70OpWaZAjCawlyJkVGE3kfS7jrFpTRcR7Czoy
skUm50rWemviHj/KmhOtoq5tVkAzGYQjyq2njlYt3EKrIZqOEBdxGzIdsOuT
8bdRE/KzYo0qjmhddVwhKS1nKlAZTTZsNaKTOEdWZiRpmtBLpbRzLzye2wTN
atN8W8S8xi86SNtV08DkfiLapLg6tkY5tL4O/VP5ndIM/wXarvQZF3/DZEqU
K2fzjX4sl7ZiWq2IJhxb1iuciTviFvjS3xjjB/fISYvdBpJfFhFvKRKLUyYO
1KyjKTMSvD70AK0TODdkedLCA8sqaFOwuupcCqtrOpS1SIvW0t601rL1EYpN
wjjZY78oz2F8OKOI1ktbke1u66DaJv5WuxSm1UlVz5T3dTCzbqqKizWacvut
c8LeZMOmCu2nU6FaLHQvX05nvdHTJz2kDTJe5aVG4gZNBg8Foq1DtOnxmiMD
1GyfvTB8uF4iwxHI5XFjYveUKGmbkZOOwM3GeCIgtPvIuN5ONoqSzlTWmbcR
QRLPY8+wXpKSG6FrfuW3VjhacPt/q32r23IrpU+qTe8mgcasjxz+Y3Yz/1+U
+dp1o5+pGn28ZvS/UjPcXk/65IrSR2tKbtovr01uEddPaz3yzTtzaW1DGwFj
VmqxWcO4XUTAnjd9Hjttugjj3Otk8j2IdlsNpIvUO1+lqs5gbfS5On1lbXvd
K0zuCuvo3Eh8oTyXs3Y40UJiyiU2Zr35tuO44UyoxISXVqfNpZW4QRvRb0Gr
IqHg+l03Yw5fvtH5iJQmwpeRUcg24IR93cfy7lEW/mTOcfCee+/I6VhXP3Bb
wuNMWg8NVautMQVIkwo1phTHZG2c6DbLpy477fUCNe9U1T54Dbtw9lnwa54q
yo02In6pqnGT92yE4toa+RmKKaLE6k2fO/wXjuCwe221vibEYTQeGspm+uXJ
2ZH138f86qJt5waX8Msht27p59l0Cir6IbyyHNwylrV1gZ6/IaBxr+is7Fta
3oYRV4arjagSsaxxzsVl84ocNrphZCZJtmQCcYSzp0132t1rmqxcKbCr6jeB
FlWOCtyeDWBc8WtMaBOgC9/VJUJcYHtNwkQa8Opqn/+CwetXJ7ZtnbkxW/Nf
C6dGLg3rEVXZKqBdcNNf5qDP9pvDGeEMEb/B4vJSFMtxWurCPXceTVjx1+9W
7bK0FMarSHm2kLZMEdeEnTcJdba+i2R9POItEDGx3EGIJcZFCbZQ2Y4T2v4h
F3frsILxnmRAAM/CNUHHrce84s3Ufh0BGpHUrVov6uVcBkECOEcigVRTwR48
8whRSN5h63X1ic3XgSNs0dbxrXubzvJM2zERH6nmeLQ8tXclWhdBalcdbF+n
jnPrd8DSLWxmD2yNarSeJZj4lhsUg/nz9ncjI9ywW0HUGVKvat7skDgH27Nh
N9i8du/q6Nu+60p/pFWQUlvL2VpqNi2ra3Tlt1LKwgHhoEZ67Ymmw60ElyL8
DVR0OYIaKxZSS3+szMK6ZRs+/hZbB8NTv4Itac6Eg6M5H/0p1NsyhmaJJ1tQ
28YGjNcenWW24OQNfBlEK3X80lWHLchbjubGI/H2AsB2O2vdxs2bLS6lfRNN
nWl5+xerAd6JwbjBgx5siUPkVHzVQqBwzmtrClsHdRN9q7XF+0wCNGTQ+yWT
URpbl5H+1kfdrMZxVLdc3jpDGZ+zVly2940SDOnj2gf19xXQXj/V99wWxFmW
3qCffWu8QSE30zCPnCbfkoKBa9qcIj5QMK5fKGVr0LH3Opu2gNUOcxuTfSm6
xFYy1hwDX1NP0ERDrtKEAhmkoylsFQHfGTgbumG0halz8g249u5MmH0dLqzf
vwAYNpabFY9FqwTt3I1QT7MsYsiLMhxLHsC+IITFYu6NbigajpByrSsCPkGK
7q5SJ4OXA7yU23iRaHSKwzS8Vg83/5R6YaI41EMKW5TXqmEBcaLmrxX5f6Z+
taqt+/nxYMhNBiLCnQZi0QEHxBQNQWR/lHeH/L8f9dAQmzcFRb12+1WdxmqN
qx83u0u2DH3KbYLlN//8FvxPC3uZHhbdolZVbgbq6vigw56+upozFRD7XV8T
dpA3cuiCZrhoXiThQWm/AIOvVyvJz4in6cNOYialSEeZBSMT5GZOHmj0bnOk
z6g85a+L9PUCnodx+bUaS5dnoxPFUFrxqwuQVwEjt9Csz6UXTiCPy2vFJ8uf
K1F9nyjkhFej0r+5TkSlXrk2KdTx5nhHscDEFK9JqVPXVrft5tNUvn3Tjod4
wog0CDnnO5x3I5RfD58F9wKDB7h096EkKTg3+PxHudry/NWV/aAHnRTZGUcf
1DoIB379dBQn258V5M7cq4ftzI8Ab3FCC77/KRxRJ3izjsnesASAyEcn+K38
G7/EIcrF+w5H0f4QB/cDfPxbHB/5Dgd52XkoIYF9lzFG1XiDLoN2k81ky0NW
3cEf2Gu/MUioNtWpLyzN8HkYruyeEV/Q+G/kAzhQQDk7Epn4LmNpjnIq3dOU
jBeE683X/LEaUIy7IXdaH63Z3WMzzB8xan2tiOn+ypDVHaIVYUC+Hj2al82T
wjL8rmFVhFM+O7ygfvoSrI8UkPt8TtpMEBYa8AeO7hzJlx/4bd0M+SbM4M8p
qTPkKQuREKtD622lmVJYgkfRbejr7Z3hk2Pa+aRk8V4RabjPqrZYe2L44Rg6
z4GmwXQ0UrNhP5zIbDMhYkbOkXdd4iESyqKy7/dEUlZ3NcigFj062Z1zKz0F
sfyTY8YATYKjcPyeG3if297VZ/GU39q66lep6C0TXXtKCqmJacwVtYedXo+U
5sarxiKbDx6sDSvlZa+5nLY21Rtvza0z3Ruz6ztb5h/cOP9g6/zDG+cfyvx2
T6yb2x6t4W4tF7Tgb53ROoohlMYvO4k1O9gsuXGDVxqMUXpNTDS19VKypW6p
h5004+Zujsf5o2UcGLu+K8ttzLPWg2OlGJC9lFQ0iaUJ8/FMfY3vYemd4cHw
1de7dSUL6gJ6D1P5i1ldfEVmYTswr64azuEvE9W1hNGKbl4N8lj/u8n/8ffU
pNfM4hyk6OcZKeE3+CRJX9f9064NvJ2gb3db6NMXA8WRzRZA4YRwiqTv89t4
+sQY/fzNC3169EzXCX784o3fCIXQn/M72OOV0CqFdvXy8vj99JITfVyovxGS
97I0z7Sm35n5WEAN5NM/NwGRhfGBIKTcmzfkmwuO1ctsHuMDbjdvC3bInqRM
Uv8NWysYBVZPAAA=

-->

</rfc>
