<?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.6.11 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-problem-details-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title abbrev="CoRE Problem Details">Concise Problem Details For CoAP APIs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-problem-details-05"/>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>arm</organization>
      <address>
        <email>thomas.fossati@arm.com</email>
      </address>
    </author>
    <author 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>
    </author>
    <date year="2022" month="June" day="13"/>
    <area>ART</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>CoAP, API, Problem Details</keyword>
    <abstract>
      <t>This document defines a concise "problem detail" as a way to carry
machine-readable details of errors in a REST response to avoid the
need to define new error response formats for REST APIs for
constrained environments.
The format
is inspired by, but intended to be more concise than, the Problem
Details for HTTP APIs defined in RFC 7807.</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-core-problem-details/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Constrained RESTful Environments Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/core-problem-details"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>REST response status information such as CoAP response
codes (<xref section="5.9" sectionFormat="of" target="RFC7252"/>) is sometimes not sufficient to convey enough information about
an error to be helpful.  This specification defines a simple and extensible
framework to define CBOR <xref target="STD94"/> data items to suit this purpose.
It is designed to be reused by REST APIs, which can identify distinct
shapes of these data items specific to their needs.
Thus, API clients can be informed of both the high-level error class
(using the response code) and the finer-grained details of the problem
(using the vocabulary defined here).
This pattern of communication is illustrated in <xref target="fig-problem-details"/>.</t>
      <figure anchor="fig-problem-details">
        <name>Problem Details: Example with CoAP</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="288" viewBox="0 0 288 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 48,80 L 48,240" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,80" fill="none" stroke="black"/>
              <path d="M 200,80 L 200,240" fill="none" stroke="black"/>
              <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 168,32 L 240,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 168,80 L 240,80" fill="none" stroke="black"/>
              <path d="M 56,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 56,160 L 192,160" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="200,128 188,122.4 188,133.6 " fill="black" transform="rotate(0,192,128)"/>
              <polygon class="arrowhead" points="64,160 52,154.4 52,165.6 " fill="black" transform="rotate(180,56,160)"/>
              <circle cx="48" cy="128" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="200" cy="160" r="6" class="opendot" fill="white" stroke="black"/>
              <g class="text">
                <text x="44" y="52">CoAP</text>
                <text x="204" y="52">CoAP</text>
                <text x="44" y="68">Client</text>
                <text x="204" y="68">Server</text>
                <text x="88" y="116">Request</text>
                <text x="248" y="148">(failure)</text>
                <text x="96" y="180">Error</text>
                <text x="156" y="180">Response</text>
                <text x="116" y="196">with</text>
                <text x="144" y="196">a</text>
                <text x="172" y="196">CBOR</text>
                <text x="76" y="212">data</text>
                <text x="116" y="212">item</text>
                <text x="164" y="212">giving</text>
                <text x="96" y="228">Problem</text>
                <text x="160" y="228">Details</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
.--------.          .--------.
|  CoAP  |          |  CoAP  |
| Client |          | Server |
'----+---'          '---+----'
     |                  |
     | Request          |
     o----------------->|
     |                  | (failure)
     |<-----------------o
     |   Error Response |
     |      with a CBOR |
     | data item giving |
     |  Problem Details |
     |                  |
]]></artwork>
        </artset>
      </figure>
      <t>The framework presented is largely inspired by the Problem Details for HTTP APIs defined in <xref target="RFC7807"/>.
<xref target="comp7807"/> discusses applications where interworking with <xref target="RFC7807"/> is required.</t>
      <section anchor="terminology-and-requirements-language">
        <name>Terminology and Requirements Language</name>
        <t>The terminology from <xref target="RFC7252"/>, <xref target="STD94"/>, and <xref target="RFC8610"/> applies; in particular CBOR
diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>.
Readers are also expected to be familiar with the terminology from <xref target="RFC7807"/>.</t>
        <t>In this document, the structure of data is specified in CDDL <xref target="RFC8610"/> <xref target="RFC9165"/>.</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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="basic">
      <name>Basic Problem Details</name>
      <t>A Concise Problem Details data item is a CBOR data item with the following
structure (rules named starting with <tt>tag38</tt> are defined in <xref target="tag38"/>):</t>
      <figure anchor="cddl">
        <name>Structure of Concise Problem Details Data Item</name>
        <sourcecode type="cddl"><![CDATA[
problem-details = non-empty<{
  ? &(title: -1) => oltext
  ? &(detail: -2) => oltext
  ? &(instance: -3) => ~uri
  ? &(response-code: -4) => uint .size 1
  ? &(base-uri: -5) => ~uri
  ? &(base-lang: -6) => tag38-ltag
  ? &(base-rtl: -7) => tag38-direction
  standard-problem-detail-entries
  custom-problem-detail-entries
}>

standard-problem-detail-entries = (
  * nint => any
)

custom-problem-detail-entries = (
  * (uint/~uri) => { + any => any }
)

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

oltext = text / tag38

]]></sourcecode>
      </figure>
      <t>A number of problem detail entries, the Standard Problem Detail
entries, are predefined (more predefined details can be registered,
see <xref target="new-spdk"/>).</t>
      <t>Note that, unlike <xref target="RFC7807"/>, Concise Problem Details data items have
no explicit "problem type".
Instead, the category (or, one could say, Gestalt) of the problem can
be understood from the shape of the problem details offered. We talk of
a "problem shape" for short.</t>
      <dl newline="true">
        <dt>The title (key -1):</dt>
        <dd>
          <t>A short, human-readable summary of the problem shape.
Beyond the shape of the problem, it is not intended to summarize all
the specific information given with the problem details.
For instance, the summary might include that an account does not
have enough money for a transaction to succeed, but not the detail
information such as the account number, how much money that account
has, and how much would be needed.</t>
        </dd>
        <dt>The detail (key -2):</dt>
        <dd>
          <t>A human-readable explanation specific to this occurrence of the problem.</t>
        </dd>
        <dt>The instance (key -3):</dt>
        <dd>
          <t>A URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.</t>
        </dd>
        <dt>The response-code (key -4):</dt>
        <dd>
          <t>The CoAP response code (Sections <xref target="RFC7252" section="5.9" sectionFormat="bare"/> and <xref target="RFC7252" section="12.1.2" sectionFormat="bare"/> of <xref target="RFC7252"/>) generated by the origin
server for this occurrence of the problem.</t>
        </dd>
        <dt>The base-uri (key -5):</dt>
        <dd>
          <t>The base URI (<xref section="5.1" sectionFormat="of" target="STD66"/>) that should be used to resolve
relative URI references embedded in this Concise Problem Details
data item.</t>
        </dd>
        <dt>The base-lang (key -6):</dt>
        <dd>
          <t>The language-tag (tag38-ltag) that applies to the presentation of
unadorned text strings in this Concise Problem Details data item,
see <xref target="tag38"/>.</t>
        </dd>
        <dt>The base-rtl (key -7):</dt>
        <dd>
          <t>The writing-direction (tag38-direction) that applies to the
presentation of unadorned text strings in this Concise Problem
Details data item, see <xref target="tag38"/>.</t>
        </dd>
      </dl>
      <t>Both "title" and "detail" can use either an unadorned CBOR text string
(<tt>text</tt>) or a language-tagged text string (<tt>tag38</tt>); see <xref target="tag38"/> for
the definition of the latter.
Language tag and writing direction information for unadorned text
strings are intended to be obtained from context; if that context
needs to be saved or forwarded with a Concise Problem Details data
item, "base-lang" and "base-rtl" can be used for that.
If no such (explicitly saved or implicit) context information is
available, unadorned text is interpreted with language-tag "en" and
writing-direction "false" (ltr).</t>
      <t>The "title" string is advisory and included to give
consumers a shorthand for the category (problem shape) of the error encountered.</t>
      <t>The "detail" member, if present, ought to focus on helping the client correct the problem, rather than giving debugging information.  Consumers <bcp14>SHOULD NOT</bcp14> parse the "detail" member for information; extensions (see <xref target="sec-new-attributes"/>) are more suitable and less error-prone ways to obtain such information.</t>
      <t>Note that the "instance" URI reference may be relative; this means
that it must be resolved relative to the representation's base URI, as
per <xref section="5" sectionFormat="of" target="STD66"/>.</t>
      <t>The "response-code" member, if present, is only advisory; it conveys
the CoAP response code used for the convenience of the consumer.
Generators <bcp14>MUST</bcp14> use the same response code here as in the actual CoAP
response; the latter is needed to assure that generic CoAP software that
does not understand the problem-details format still behaves
correctly.
Consumers can use the response-code member to determine what the
original response code used by the generator was, in cases where it
has been changed (e.g., by an intermediary or cache), and when message
bodies persist without CoAP information (e.g., in an events log or analytics
database).
Generic CoAP software will still use the CoAP response code.
To support the use case of message body persistence without support by
the problem-details generator, the entity that persists the Concise
Problem Details data item can copy over the CoAP response code
that it received on the CoAP level.
Note that the "response-code" value is a numeric representation of the
actual code (see <xref section="3" sectionFormat="of" target="RFC7252"/>), so it does not take the usual
presentation form that resembles an
HTTP status code -- <tt>4.04 Not found</tt> is represented by the number 132.</t>
      <t>The "base-uri" member is usually not present in the initial
request-response communication as it can be inferred as per <xref section="5.1.3" sectionFormat="of" target="STD66"/>.
An entity that stores a Concise Problem Details data item or otherwise
makes it available for consumers without this context might add in a
base-uri member to allow those consumers to perform resolution of any
relative URI references embedded in the data item.</t>
    </section>
    <section anchor="sec-new-attributes">
      <name>Extending Concise Problem Details</name>
      <t>This specification defines a generic problem details container with only a
minimal set of attributes to make it usable.</t>
      <t>It is expected that applications will extend the base format by defining new
attributes.</t>
      <t>These new attributes fall into two categories: generic and application
specific.</t>
      <t>Generic attributes will be allocated in the <tt>standard-problem-detail-entries</tt>
slot according to the registration procedure defined in <xref target="new-spdk"/>.</t>
      <t>Application-specific attributes will be allocated in the
<tt>custom-problem-detail-entries</tt> slot according to the procedure described in
<xref target="new-cpdk"/>.</t>
      <t>Consumers of a Concise Problem Details data item <bcp14>MUST</bcp14> ignore any
Standard or Custom Problem Detail entries, or keys inside the Custom
Problem Detail entries, that they do not recognize ("ignore-unknown
rule"); this allows problem details to evolve.
When storing the data item for future use or forwarding it to other
consumers, it is strongly <bcp14>RECOMMENDED</bcp14> to retain the unrecognized
entries; exceptions might be when storage/forwarding occurs in a
different format/protocol that cannot accommodate them, or when the
storage/forwarding function needs to filter out privacy-sensitive
information and for that needs to assume unrecognized entries might be
privacy-sensitive.</t>
      <section anchor="new-spdk">
        <name>Standard Problem Detail Entries</name>
        <t>Beyond the Standard Problem Detail keys defined in <xref target="cddl"/>, additional
Standard Problem Detail keys can be registered for use in the
<tt>standard-problem-detail-entries</tt> slot (see <xref target="iana-spdk"/>).</t>
        <t>Standard Problem Detail keys are negative integers, so they can never
conflict with Custom Problem Detail keys defined for a specific
application domain
(which are unsigned integers or URIs.)</t>
        <t>In summary, the keys for Standard Problem Detail entries are in a
global namespace that is not specific to a particular application domain.</t>
        <section anchor="uco">
          <name>Standard Problem Detail Entry: Unprocessed CoAP Option</name>
          <t><xref target="basic"/> provides a number of generally applicable Standard Problem
Detail Entries.  The present section both registers another useful
Standard Problem Detail entry and serves as an example of a Standard
Problem Detail Entry registration, in the registration template format
that would be ready for registration.</t>
          <blockquote>
            <dl>
              <dt>Key Value:</dt>
              <dd>
                <t>TBD (assigned at registration)</t>
              </dd>
              <dt>Name:</dt>
              <dd>
                <t>unprocessed-coap-option</t>
              </dd>
              <dt>CDDL type:</dt>
              <dd>
                <t><tt>one-or-more&lt;uint&gt;</tt>, where
</t>
                <artwork><![CDATA[
one-or-more<T> = T / [ 2* T ]
]]></artwork>
              </dd>
              <dt>Brief description:</dt>
              <dd>
                <t>Option number(s) of CoAP option(s) that were not understood</t>
              </dd>
              <dt>Specification reference:</dt>
              <dd>
                <t><xref target="uco"/> of RFC XXXX</t>
              </dd>
            </dl>
          </blockquote>
          <t>The specification of the Standard Problem Detail entry referenced by
the above registration template follows:</t>
          <t>The Standard Problem Detail entry <tt>unprocessed-coap-option</tt> provides
the option number(s) of CoAP option(s) present in the request that
could not be processed by the server.</t>
          <t>This may be a critical option that the server is unaware of, or an
option the server is aware of but could not process (and chose not
to, or was not allowed to, ignore it).</t>
          <t>The Concise Problem Details data item including this Standard
Problem Detail Entry can be used in fulfillment of the "<bcp14>SHOULD</bcp14>"
requirement in <xref section="5.4.1" sectionFormat="of" target="RFC7252"/>.</t>
          <t>Several option numbers may be given in a list (in no particular order),
without any guarantee that the list is a complete representation of
all the problems in the request (as the server might
have stopped processing already at one of the problematic options).
If an option with the given number was repeated, there is no
indication which of the values caused the error.</t>
          <t>Clients need to expect seeing options in the list they did not send
in the request; this can happen if the request traversed a proxy
that added the option but did not act on the problem details
response being returned by the origin server.</t>
          <t>Note that for a few special values of unprocessed CoAP
options (such as Accept or Proxy-Uri), there are special response
codes (4.06 Not Acceptable, 5.05 Proxying Not Supported,
respectively) to be sent instead of 4.02 Bad Option.</t>
        </section>
      </section>
      <section anchor="new-cpdk">
        <name>Custom Problem Detail Entries</name>
        <t>Applications may extend the Problem Details data item with
additional entries to convey additional, application-specific information.</t>
        <t>Such new entries are allocated in the <tt>custom-problem-detail-entries</tt> slot, and
carry a nested map specific to that application.  The map key can either be
an (absolute!) URI (under control of the entity defining this extension),
or an unsigned integer.
Only the latter needs to be registered (<xref target="iana-cpdk"/>).</t>
        <t>Within the nested map, any number of attributes can be given for a
single extension.
The semantics of each custom attribute <bcp14>MUST</bcp14> be described in the
documentation for the extension; for extensions that are registered
(i.e., are identified by an unsigned int) that documentation goes
along with the registration.</t>
        <t>The unsigned integer form allows a more compact representation.
In
exchange, authors are expected to comply with the required
registration and documentation process.
In comparison, the URI form is less space-efficient but requires no
registration.  It is therefore useful for experimenting during the development
cycle and for applications deployed in environments where producers and
consumers of Concise Problem Details are more tightly integrated.
(The URI form thus covers the potential need we might otherwise have for a "private use" range for the unsigned integers.)</t>
        <t>Note that the URI given for the extension is for identification
purposes only and, even if dereferenceable in principle, it <bcp14>MUST NOT</bcp14> be
dereferenced in the normal course of handling problem details (i.e., outside
diagnostic/debugging procedures involving humans).</t>
        <t><xref target="fig-example-custom-with-uri"/> shows an example (in CBOR diagnostic notation)
of a custom extension using a (made-up) URI as <tt>custom-problem-detail-entries</tt> key.</t>
        <figure anchor="fig-example-custom-with-uri">
          <name>Example Extension with URI key</name>
          <artwork type="cbor-diag" align="center"><![CDATA[
{
  / title /         -1: "title of the error",
  / detail /        -2: "detailed information about the error",
  / instance /      -3: "coaps://pd.example/FA317434",
  / response-code / -4: 128, / 4.00 /

  "tag:3gpp.org,2022-03:TS29112": {
    / cause /  0: "machine readable error cause",
    / invalidParams / 1: [
      [
        / param / "first parameter name",
        / reason / "must be a positive integer"
      ],
      [
        / param / "second parameter name"
      ]
    ],
    / supportedFeatures / 2: "d34db33f"
  }
}
]]></artwork>
        </figure>
        <t>Obviously, an SDO like 3GPP can also easily register such a custom
problem detail entry to receive a more efficient unsigned integer key;
<xref target="fig-example-custom-with-uint"/> shows how
the same example would look like using a (made-up) registered unsigned int as
<tt>custom-problem-detail-entries</tt> key:</t>
        <figure anchor="fig-example-custom-with-uint">
          <name>Example Extension with unsigned int (registered) key</name>
          <artwork type="cbor-diag" align="center"><![CDATA[
{
  / title /         -1: "title of the error",
  / detail /        -2: "detailed information about the error",
  / instance /      -3: "coaps://pd.example/FA317434",
  / response-code / -4: 128, / 4.00 /

  /4711 is made-up example key that is not actually registered:/
  4711: {
    / cause /  0: "machine readable error cause",
    / invalidParams / 1: [
      [
        / param / "first parameter name",
        / reason / "must be a positive integer"
      ],
      [
        / param / "second parameter name"
      ]
    ],
    / supportedFeatures / 2: "d34db33f"
  }
}
]]></artwork>
        </figure>
        <t>In summary, the keys for the maps used inside Custom Problem Detail
entries are defined specifically to the identifier of that Custom Problem Detail
entry, the documentation of which defines these internal entries,
typically chosen to address a given application domain.</t>
        <t>When there is a need to evolve a Custom Problem Detail entry definition, the
"ignore-unknown rule" discussed in the introduction to
<xref target="sec-new-attributes"/> provides an easy way to include additional information.
The assumption is that this is done in a backward and forward
compatible way.
Sometimes, Custom Problem Detail entries may need to evolve in a way where
forward compatibility by applying the "ignore-unknown rule" would not
be appropriate: e.g., when adding a "must-understand" member,
which can only
be ignored at the peril of misunderstanding the Concise Problem
Details data item ("false interoperability").
In this case, a new Custom Problem Detail key can simply be
registered for this case, keeping the old key backward and
forward compatible.</t>
      </section>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>The security and privacy considerations outlined in Section 5 of <xref target="RFC7807"/> apply in full.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t><cref anchor="to-be-removed">RFC Editor: please replace RFC XXXX with this RFC number and remove this note.</cref></t>
      <section anchor="iana-spdk">
        <name>Standard Problem Detail Key registry</name>
        <!-- {{content-formats (CoAP Content-Formats)<IANA.core-parameters}} -->

<t>This specification defines a new sub-registry for Standard Problem
Detail Keys in the CoRE Parameters registry <xref target="IANA.core-parameters"/>,
with the policy "specification required" <xref target="RFC8126"/>.</t>
        <t>Each entry in the registry must include:</t>
        <dl newline="true">
          <dt>Key value:</dt>
          <dd>
            <t>a negative integer to be used as the value of the key</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>a name that could be used in implementations for the key</t>
          </dd>
          <dt>CDDL type:</dt>
          <dd>
            <t>type of the data associated with the key in CDDL notation</t>
          </dd>
          <dt>Brief description:</dt>
          <dd>
            <t>a brief description</t>
          </dd>
          <dt>reference:</dt>
          <dd>
            <t>a reference document</t>
          </dd>
        </dl>
        <t>Initial entries in this sub-registry are as follows:</t>
        <table anchor="spdk">
          <name>Initial Entries in the Standard Problem Detail Key registry</name>
          <thead>
            <tr>
              <th align="left">Key value</th>
              <th align="left">Name</th>
              <th align="left">CDDL Type</th>
              <th align="left">Brief description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-1</td>
              <td align="left">title</td>
              <td align="left">
                <tt>text / tag38</tt></td>
              <td align="left">short, human-readable summary of the problem shape</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">-2</td>
              <td align="left">detail</td>
              <td align="left">
                <tt>text / tag38</tt></td>
              <td align="left">human-readable explanation specific to this occurrence of the problem</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">-3</td>
              <td align="left">instance</td>
              <td align="left">
                <tt>~uri</tt></td>
              <td align="left">URI reference identifying specific occurrence of the problem</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">-4</td>
              <td align="left">response-code</td>
              <td align="left">
                <tt>uint .size 1</tt></td>
              <td align="left">CoAP response code</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">-5</td>
              <td align="left">base-uri</td>
              <td align="left">
                <tt>~uri</tt></td>
              <td align="left">Base URI</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">-6</td>
              <td align="left">base-lang</td>
              <td align="left">
                <tt>tag38-ltag</tt></td>
              <td align="left">Base language tag (see <xref target="tag38"/>)</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">-7</td>
              <td align="left">base-rtl</td>
              <td align="left">
                <tt>tag38-direction</tt></td>
              <td align="left">Base writing direction (see <xref target="tag38"/>)</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">TBD</td>
              <td align="left">unprocessed-coap-option</td>
              <td align="left">
                <tt>one-or-more&lt;uint&gt;</tt></td>
              <td align="left">Option number(s) of CoAP option(s) that were not understood</td>
              <td align="left">RFC XXXX, <xref target="uco"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-cpdk">
        <name>Custom Problem Detail Key registry</name>
        <t>This specification defines a new sub-registry for Custom Problem
Detail Keys in the CoRE Parameters registry <xref target="IANA.core-parameters"/>,
with the policy "first come first served" <xref target="RFC8126"/>.</t>
        <t>Each entry in the registry must include:</t>
        <dl newline="true">
          <dt>Key value:</dt>
          <dd>
            <t>an unsigned integer to be used as the value of the key</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>a name that could be used in implementations for the key</t>
          </dd>
          <dt>Brief description:</dt>
          <dd>
            <t>a brief description</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>a reference document that provides a description of the map,
including a CDDL description, that describes all inside keys and
values</t>
          </dd>
        </dl>
        <t>Initial entries in this sub-registry are as follows:</t>
        <table anchor="cpdk">
          <name>Initial Entries in the Custom Problem Detail Key registry</name>
          <thead>
            <tr>
              <th align="left">Key value</th>
              <th align="left">Name</th>
              <th align="left">Brief description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">7807</td>
              <td align="left">tunnel-7807</td>
              <td align="left">Carry RFC 7807 problem details in a Concise Problem Details data item</td>
              <td align="left">RFC XXXX, <xref target="comp7807"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>IANA is requested to add the following Media-Type to the "Media Types"
registry <xref target="IANA.media-types"/>.</t>
        <table align="left" anchor="new-media-type">
          <name>New Media Type application/concise-problem-details+cbor</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">concise-problem-details+cbor</td>
              <td align="left">application/concise-problem-details+cbor</td>
              <td align="left">RFC XXXX, <xref target="media-type"/></td>
            </tr>
          </tbody>
        </table>
        <dl spacing="compact">
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>concise-problem-details+cbor</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 (CBOR data item)</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>Clients and servers in the Internet of Things</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>The syntax and semantics of fragment identifiers is as specified for
"application/cbor".  (At publication of RFC XXXX, there is no
fragment identification syntax defined for "application/cbor".)</t>
          </dd>
          <dt>Person &amp; email address to contact for further information:</dt>
          <dd>
            <t>CoRE WG mailing list (core@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="content-format">
        <name>Content-Format</name>
        <t>IANA is requested to register a Content-Format number in the
<xref section="&quot;CoAP Content-Formats&quot;" relative="#content-formats" sectionFormat="bare" target="IANA.core-parameters"/>
sub-registry, within the "Constrained RESTful Environments (CoRE)
Parameters" Registry <xref target="IANA.core-parameters"/>, as follows:</t>
        <table align="left">
          <name>New Content-Format</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/concise-problem-details+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD1</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>TBD1 is to be assigned from the space 256..999.</t>
        <t>In the registry as defined by <xref section="12.3" sectionFormat="of" target="RFC7252"/> at the time of
writing, the column "Content-Type" is called "Media type" and the
column "Content Coding" is called "Encoding". <cref anchor="remove">This paragraph to be removed by RFC editor.</cref></t>
      </section>
      <section anchor="iana-tag38">
        <name>CBOR Tag 38</name>
        <t>In the registry "<xref section="CBOR Tags" relative="#cbor-tags" sectionFormat="bare" target="IANA.cbor-tags"/>" <xref target="IANA.cbor-tags"/>,
IANA has registered CBOR Tag 38.
IANA is requested to replace the reference for this registration with
<xref target="tag38"/>, RFC XXXX.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="STD94" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <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="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7807" target="https://www.rfc-editor.org/info/rfc7807">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="E. Wilde" initials="E." surname="Wilde">
              <organization/>
            </author>
            <date month="March" year="2016"/>
            <abstract>
              <t>This document defines a "problem detail" as a way to carry machine- readable details of errors in a HTTP response to avoid the need to define new error response formats for HTTP APIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7807"/>
          <seriesInfo name="DOI" value="10.17487/RFC7807"/>
        </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>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC5646" target="https://www.rfc-editor.org/info/rfc5646">
          <front>
            <title>Tags for Identifying Languages</title>
            <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips">
              <organization/>
            </author>
            <author fullname="M. Davis" initials="M." role="editor" surname="Davis">
              <organization/>
            </author>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object.  It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange.  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="47"/>
          <seriesInfo name="RFC" value="5646"/>
          <seriesInfo name="DOI" value="10.17487/RFC5646"/>
        </reference>
        <reference anchor="RFC4647" target="https://www.rfc-editor.org/info/rfc4647">
          <front>
            <title>Matching of Language Tags</title>
            <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips">
              <organization/>
            </author>
            <author fullname="M. Davis" initials="M." role="editor" surname="Davis">
              <organization/>
            </author>
            <date month="September" year="2006"/>
            <abstract>
              <t>This document describes a syntax, called a "language-range", for specifying items in a user's list of language preferences.  It also describes different mechanisms for comparing and matching these to language tags.  Two kinds of matching mechanisms, filtering and lookup, are defined.  Filtering produces a (potentially empty) set of language tags, whereas lookup produces a single language tag. Possible applications include language negotiation or content selection.  This document, in combination with RFC 4646, replaces RFC 3066, which replaced RFC 1766.  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="47"/>
          <seriesInfo name="RFC" value="4647"/>
          <seriesInfo name="DOI" value="10.17487/RFC4647"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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="RFC9165" target="https://www.rfc-editor.org/info/rfc9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point.</t>
              <t>The present document defines a number of control operators that were not yet ready at the time RFC 8610 was completed: , , and  for the construction of constants; / for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and for indicating the use of a non-basic feature in an instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9165"/>
          <seriesInfo name="DOI" value="10.17487/RFC9165"/>
        </reference>
        <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <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>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="I-D.ietf-httpapi-rfc7807bis" target="https://www.ietf.org/archive/id/draft-ietf-httpapi-rfc7807bis-03.txt">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="Mark Nottingham">
	 </author>
            <author fullname="Erik Wilde">
	 </author>
            <author fullname="Sanjay Dalal">
	 </author>
            <date day="25" month="May" year="2022"/>
            <abstract>
              <t>   This document defines a "problem detail" to carry machine-readable
   details of errors in HTTP response content and/or fields to avoid the
   need to define new error response formats for HTTP APIs.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/ietf-wg-httpapi/rfc7807bis.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-rfc7807bis-03"/>
        </reference>
        <reference anchor="RDF" target="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/">
          <front>
            <title>RDF 1.1 Concepts and Abstract Syntax</title>
            <author initials="R." surname="Cyganiak" fullname="Richard Cyganiak">
              <organization/>
            </author>
            <author initials="D." surname="Wood" fullname="David Wood">
              <organization/>
            </author>
            <author initials="M." surname="Lanthaler" fullname="Markus Lanthaler">
              <organization/>
            </author>
            <date year="2014" month="February" day="25"/>
          </front>
          <refcontent>W3C Recommendation</refcontent>
        </reference>
        <reference anchor="STRING-META" target="https://www.w3.org/TR/string-meta/">
          <front>
            <title>Strings on the Web: Language and Direction Metadata</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
          <refcontent>W3C group draft note</refcontent>
        </reference>
        <reference anchor="Unicode-14.0.0" target="https://www.unicode.org/versions/Unicode14.0.0/">
          <front>
            <title>The Unicode Standard, Version 14.0.0</title>
            <author>
              <organization>The Unicode Consortium</organization>
            </author>
            <date year="2021" month="September"/>
          </front>
          <seriesInfo name="ISBN" value="978-1-936213-29-0"/>
          <annotation>Note that while this document references a version that was recent at the time of writing, the statements made based on this version are expected to remain valid for future versions.</annotation>
          <refcontent>Mountain View: The Unicode Consortium</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="tag38">
      <name>Language-Tagged Strings</name>
      <t>This appendix serves as the archival documentation for CBOR Tag 38, a
tag for serializing language-tagged text strings in CBOR.
The text of this appendix is adapted from the specification text
supplied for its initial registration.
It has been extended to allow supplementing the language tag by a
direction indication.</t>
      <section anchor="introduction-1">
        <name>Introduction</name>
        <t>In some cases it is useful to specify the natural language of a text
string.  This specification defines a tag that does just that.  One
technology that supports language-tagged strings is the Resource
Description Framework (RDF) <xref target="RDF"/>.</t>
      </section>
      <section anchor="detailed-semantics">
        <name>Detailed Semantics</name>
        <t>A language-tagged string in CBOR has the tag 38 and consists of an array
with a length of 2 or 3.</t>
        <t>The first element is a well-formed language tag under Best Current
Practice 47 (<xref target="RFC5646"/> and <xref target="RFC4647"/>), represented as a UTF-8 text
string (major type 3).</t>
        <t>The second element is an arbitrary UTF-8 text string (major type
3). Both the language tag and the arbitrary string can optionally be
annotated with CBOR tags; this is not shown in the CDDL below.</t>
        <t>The optional third element, if present, is a Boolean value that
indicates a direction: <tt>false</tt> for "ltr" direction, <tt>true</tt> for "rtl"
direction.  If the third element is absent, no indication is made
about the direction; it can be explicitly given as <tt>null</tt> to express
the same while overriding any context that might be considered
applying to this element.
Note that the proper processing of Language and Direction Metadata is
an active area of investigation; the reader is advised to consult
ongoing standardization activities such as <xref target="STRING-META"/> when
processing the information represented in this tag.</t>
        <t>In CDDL:</t>
        <sourcecode type="cddl"><![CDATA[
tag38 = #6.38([tag38-ltag, text, ?tag38-direction])
tag38-ltag = text  .abnf ("Language-Tag" .det RFC5646)
tag38-direction = &(ltr: false, rtl: true, auto: null)

RFC5646 = '
 Language-Tag  = langtag             ; normal language tags
               / privateuse          ; private use tag
               / legacy              ; legacy tags

 langtag       = language
                 ["-" script]
                 ["-" region]
                 *("-" variant)
                 *("-" extension)
                 ["-" privateuse]

 language      = 2*3ALPHA            ; shortest ISO 639 code
                 ["-" extlang]       ; sometimes followed by
                                     ; extended language subtags
               / 4ALPHA              ; or reserved for future use
               / 5*8ALPHA            ; or registered language subtag

 extlang       = 3ALPHA              ; selected ISO 639 codes
                 *2("-" 3ALPHA)      ; permanently reserved

 script        = 4ALPHA              ; ISO 15924 code

 region        = 2ALPHA              ; ISO 3166-1 code
               / 3DIGIT              ; UN M.49 code

 variant       = 5*8alphanum         ; registered variants
               / (DIGIT 3alphanum)

 extension     = singleton 1*("-" (2*8alphanum))

                                     ; Single alphanumerics
                                     ; "x" reserved for private use
 singleton     = DIGIT               ; 0 - 9
               / %x41-57             ; A - W
               / %x59-5A             ; Y - Z
               / %x61-77             ; a - w
               / %x79-7A             ; y - z

 privateuse    = "x" 1*("-" (1*8alphanum))

 legacy        = irregular / regular ; different word in RFC

 irregular     = "en-GB-oed" / "i-ami" / "i-bnn" / "i-default" /
               "i-enochian" / "i-hak" / "i-klingon" / "i-lux" /
               "i-mingo" / "i-navajo" / "i-pwn" / "i-tao" / "i-tay" /
               "i-tsu" / "sgn-BE-FR" / "sgn-BE-NL" / "sgn-CH-DE"

 regular       = "art-lojban" / "cel-gaulish" / "no-bok" / "no-nyn" /
               "zh-guoyu" / "zh-hakka" / "zh-min" / "zh-min-nan" /
               "zh-xiang"

 alphanum      = (ALPHA / DIGIT)     ; letters and numbers

 ALPHA         =  %x41-5A / %x61-7A  ; A-Z / a-z
 DIGIT         =  %x30-39            ; 0-9
'
]]></sourcecode>
        <!-- RUBY_THREAD_VM_STACK_SIZE=5000000 cddl ... -->

<t>NOTE: Language tags of any combination of case are allowed. But
section 2.1.1 of <xref target="RFC5646"/>, part of Best Current Practice 47,
recommends a case combination for language tags, that encoders that
support tag 38 may wish to follow when generating language tags.</t>
        <t>Data items with tag 38 that do not meet the criteria above are invalid
(see <xref section="5.3.2" sectionFormat="of" target="STD94"/>).</t>
        <t>NOTE: The Unicode Standard <xref target="Unicode-14.0.0"/> includes a set of characters
designed for tagging text (including language tagging), in the range
U+E0000 to U+E007F. Although many applications, including RDF,
do not disallow these characters in text strings, the Unicode Consortium
has deprecated these characters and recommends annotating language via a
higher-level protocol instead. See the section "Deprecated Tag
Characters" in Section 23.9 of <xref target="Unicode-14.0.0"/>.</t>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <t>Examples in this section are given in CBOR diagnostic notation first and then
as a pretty-printed hexadecimal representation of the encoded item.</t>
        <t>The following example shows how the English-language string "Hello" is
represented.</t>
        <sourcecode type="cbor-diag"><![CDATA[
38(["en", "Hello"])
]]></sourcecode>
        <sourcecode type="cbor-pretty"><![CDATA[
D8 26               # tag(38)
   82               # array(2)
      62            # text(2)
         656E       # "en"
      65            # text(5)
         48656C6C6F # "Hello"
]]></sourcecode>
        <t>The following example shows how the French-language string "Bonjour" is
represented.</t>
        <sourcecode type="cbor-diag"><![CDATA[
38(["fr", "Bonjour"])
]]></sourcecode>
        <sourcecode type="cbor-pretty"><![CDATA[
D8 26                   # tag(38)
   82                   # array(2)
      62                # text(2)
         6672           # "fr"
      67                # text(7)
         426F6E6A6F7572 # "Bonjour"
]]></sourcecode>
        <t>The following example shows how the Hebrew-language string
<u>שלום</u> is represented.
Note the <tt>rtl</tt> direction expressed by setting the third element in the array to "true".</t>
        <sourcecode type="cbor-diag"><![CDATA[
38(["he", "שלום", true])
]]></sourcecode>
        <sourcecode type="cbor-pretty"><![CDATA[
D8 26                     # tag(38)
   83                     # array(3)
      62                  # text(2)
         6865             # "he"
      68                  # text(8)
         D7A9D79CD795D79D # "שלום"
      F5                  # primitive(21)
]]></sourcecode>
      </section>
    </section>
    <section anchor="comp7807">
      <name>Interworking with RFC 7807</name>
      <t>On certain occasions, it will be necessary to carry ("tunnel")
<xref target="RFC7807"/> problem details in a Concise Problem Details data item.</t>
      <t>This appendix defines a Custom Problem Details entry for that purpose.
This is assigned Custom Problem Detail key 7807 in <xref target="iana-cpdk"/>.
Its structure is:</t>
      <sourcecode type="cddl"><![CDATA[
tunnel-7807 = {
  ? &(type: 0) => ~uri
  ? &(status: 1) => 0..999
  * text => any
}
]]></sourcecode>
      <t>To carry an <xref target="RFC7807"/> problem details JSON object in a Concise Problem
Details data item, first convert the JSON object to CBOR as per <xref section="6.2" sectionFormat="of" target="STD94"/>.  Create an empty Concise Problem Details data item.</t>
      <t>Move the values for "title", "detail", and "instance", if present,
from the <xref target="RFC7807"/> problem details to the equivalent Standard Problem
Detail entries.
Create a Custom Problem Details entry with key 7807.
Move the values for "type" and "status", if present, to the equivalent
keys 0 and 1 of the Custom Problem Details entry.
Move all remaining key/value pairs (additional members as per <xref section="3.2" sectionFormat="of" target="RFC7807"/>) in the converted <xref target="RFC7807"/> problem
details object to the Custom Problem Details map unchanged.</t>
      <t>The inverse direction, carrying Concise Problem Details in a Problem
Details JSON object requires the additional support provided by
<xref target="I-D.ietf-httpapi-rfc7807bis"/>, which is planned to create the HTTP Problem Types
Registry.  An HTTP Problem Type can then be registered that extracts
top-level items from the Concise Problem Details data item in a similar way
to the conversion described above, and which carries the rest of the
Concise Problem Details data item in an additional member via base64url
encoding without padding (<xref section="5" sectionFormat="of" target="RFC4648"/>).  Details can be defined
in a separate document when the work on <xref target="I-D.ietf-httpapi-rfc7807bis"/> is completed.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t><contact fullname="Mark Nottingham"/> and <contact fullname="Erik Wilde"/>, authors of RFC 7807.  <contact fullname="Klaus Hartke"/> and <contact fullname="Jaime Jiménez"/>, co-authors of an earlier generation of this
specification.  <contact fullname="Christian Amsüss"/>, <contact fullname="Marco Tiloca"/>, <contact fullname="Ari Keränen"/>
and <contact fullname="Michael Richardson"/> for review and comments on this document.</t>
      <t>For <xref target="tag38"/>, John Cowan and Doug Ewell are also to be acknowledged.
The content of an earlier version of this appendix was also discussed
in the "apps-discuss at ietf.org" and "ltru at ietf.org" mailing
lists.
More recently, the authors initiated a discussion about the handling
of writing direction information in conjunction with language tags.
That led to discussions within the W3C Internationalization Core
Working Group.
The authors would like to acknowledge that cross-organization
cooperation and particular contributions from John Klensin and
Addison Phillips.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="P." surname="Occil" fullname="Peter Occil">
        <organization/>
        <address>
          <email>poccil14 at gmail dot com</email>
          <uri>http://peteroupc.github.io/CBOR/</uri>
        </address>
      </contact>
      <t>Peter defined CBOR tag 38, basis of <xref target="tag38"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19y3Yjx5XgPr4ijDpjgRISJAA+Uapqs4qsUtmqx5CUNbaO
WkwAATDNRCY6H2RBFH3mI7p3M+d40Zv+h1nZH+H9fMncV0RGJgCy5LZnMWfo
IxeZGY8bN27cd9wMgkDdDPVAqSIqYjPUL9NkHOVGf8jSUWzm+sQUYRTn+lWa
wbvjD/r4w5tchaNRZm6w9dlps6mapOMknMNYkyycFkFkimkwTjMTLLhhMOGG
QRwWJi/UGP6ZpdlyqPNiosZpkpskL/OhLrLSqLwczaM8j9KkWC5g0DenF6+U
ihYZvc+L/s7O0U5fhZkJh/r47ELdptn1LEvLhYD3LfwdJTP9Gp+pa7OEBpMh
LaaDq+msLEDlRZhMfgjjNIEJlyZXi2iovyvScUfnaVZkZprDb8s5/vK9UmFZ
XKXZUOlAa175xVU6DxFpeR4WkdLwk2azMIl+hD/TZKhbYTZv0XMzhzlhLdSj
O+Uev4LX3XE694Z8GWZ5YRL9Is3mYZLYMYf6myS6MVkeFX/590K/yMwcGl38
/g01yAFWUwz1hzQvpuH4Sg8GO7u7O/RuHBWAcu7AD9IJzHMS9A8He0fypEwK
3JjXBidd0sPFFaHli92jYLffC/q9w2B/cNTv+asZh6P0V8WPURcgxB0tsmhU
FnUcfTCFyfT78TiK/a6LFJ/0dnVY6Bk+0pO00IQL+Ckz2ImrolgMt7cXOADs
6bg7i4qrctSN0u2XL96fbQvsMivhmyebmGmUmInGVroIZ3pw2NGjMI9ynU71
3R08Ghze33eVujFJaQBa7SgpAVyG1Pvs9PxiWsb6NLmJsjQB9BU5tJSVA6H/
Ckmelg79CTR+HtzOttcdBKUS3NQC9hGnPL84Odod0iIC6DhKM/r92VCfvXp5
eLR7xG32910bwIrXZHB0uA9/wm8H/b0+Th0u5O/DnQNGnwUBnr85fnfcxVkC
WD6eOvh/br63v7s/1KPxItg9CAb8bHd/98A92+Vnh/u9HZhmMon576Pe/h7/
vYjLXEXJtFreE62/Hbzsnp2+DLIJ8oVkbBZFHsAx3t3p4zjw2E11OMTtMQhl
cNIlToLQh4soyKZjXM4oApDlF+x28mqon+i+xQwPpmFR2QwPgpDO7e1t93aA
W7R9cbbd3+ntbgtEvZ4PUw9g6u8xQblTTj+BUPFZNL4KMyCpJR7v8Lrx+iS8
iSbAgtJJ48XbMLsuc/11mBRXYWx4i4UHwyJ0r9sjXoyAaOBG+niEBDgu9Pky
KcKP1D4bDxGb+szA+QA6nBB3oVfwK4yEKwh2+kF/j2jm7M2718Hb04vjoT/d
cwHtHM5LMoOjkAA3MvpbA2QL8M3KcGYIhJMoM2OcQb8FwoUZwhXc5ivIzWnU
YA49tmtA08liGaGTtDAe2NMwpk0H1oZMKejtdne6OxW58+ONk8t7goBYIxze
bRmLh9r2138Bi5W3gANYKOxnR/+WO2rusEIBATNfvy/yCJAOUTmv7QDwyB1m
p7nJIpPjcbBU9Ob8xbuhPjo4DHrB0WC/3xsE/aOAZwPhgjwMuIud8bO3yI+B
CenfRuZ20+SfMaxJUu3sO0Av7Clw1NurKMZfgeOBmC6Rd+FEJjNAakBoWvAl
rUGGwZZDIxkIniFpFNHcIMe8zaICNrdDD0FoFoaYIbBCgAgP7oSJiY4m/tjR
QVpr83EB1ARNihQmmeOybsIYTgtwCz0tixLa2N0DjhwEgQ7lDCh1UVsB83UE
fyzqS0v4m2YW29Ihvr0NlzjbOMyypZqDPIReASgOkxDaSlMSBSbL0izXAFJI
7B4AzBeomGD38CYFKGHJKjEMPs+vE3PLPavmzPlyWhMNhOoT/kV6jpUoxpMk
XYXbyv1UhDDkCzh3Ez1agqwqC3gANDHhiUdGz0GguGXDriW8G6LTKKu/IQBf
XVyw/uYEISwQGC3xT0HxPAK2bRTw6TcgP9NJSQdeqToWcK9LhE04O2xpXoJ6
AVgmJdE2VEibuW7f3Z0L59jrHiGCAxRK9/dbGlaYp8AcgKJyZAMwznQajSPc
VtyqNLkxS0BQWs6uavOBhlEWKkwE44yMKxMvQDR3tSYCyYHCIhiNe1RUkkfz
Rcw8zXwEbOYR4EpNM+DMqD16W0qawt1dgPLx/h7PdKgjIPMc2+RlVPBZWpTZ
Is1NV70pcEWw5miWuC3KTJnTBlYk0MGTCAgbwwKiCSw2mi71JMrhOAF551fh
whAhwlYCur1p7ZJwaHgZZRqJkKimzEmf1eM4olOIY8PsjDQ8ilM9SosrIo+r
aHYVxObGxIK/cRzmuWqXOarK2MLtNW7hFuEKHyNWsmAmhOsdGXxplQpvmJsU
dMEyDrOlI7or4DZbXT7Ci7AAxSzBAVCEIefmzULKj0F7gCNSMKHe3U2jWVN1
ImXtj3/8ow7D/GamuoH8dLX7qZ6pnzSTp/6pel09g9cvCXX11+cmAzYErz/D
Qb6A/z6rXn8mjwLmun5PN4J9c2b+pQR7Z+VNGjR/nv+0eTTdnsLCgTluSZsv
V7qnVe9T2twzu5f1cW9BN4XTQDTu3jhaA9X1Bnex6tO0CR+AEvdE3YEqtmbP
gPsXeMwC4Paz5FkL5YvJyBoiifys1ZhoqE8/hnRiCWLcrta9Yj7pzuwCCBYH
miDpxKgVxEufefpcUT/KFe/uRF1GAru7A9pc8F94SMdlniMfWSxiIdccjjNQ
NfHm7FYMTgLWGwgBy4AGECCg2idP9AWYVVGSxulsSQfsjN+yELWqFy+08JpO
s3ROTIl4aKfiTx0aBf8EJg4TEoQmf4orWgDWozGeRNpwNYnCWQJmIbASYLvu
0NVwYJn2IbNs5oE8hX31WtErmq+rzkCWgsgm+Q46XFoT8sCLpuE8iiMAgXBT
bFiXb6DQAX+T1FUWq3BkIJ1QTQAQmGwdf+QVvDw5+dpDh/yGRgkNi3i9BumC
DoFct95+c37R6vC/+t17+v3s9L9+8+bs9AR/P//q+Ouv3S9KWpx/9f6br0+q
36qeL9+/fXv67oQ7w1Nde6Rab49/1+Ida73/cPHm/bvjr1sIdV07Q1Qy8oi4
gMwRnWGuQMiMwcDllb54+eHPfwKj+e7uF0Bv/V7viNaLfxz2DnbhDyDQhGdL
EzgZ/CegcamASgxsCSo7cQxSYxEVsHcdFOb5VXqbEMMGdH3+HWLm+6H+Esy/
3u5zeYALrj20OKs9JJytPlnpzEhc82jNNA6btecNTNfhPf5d7W+Ld+8hqj4v
whyORZNZ3D1BV8EYOM/xRjdZxT2j3LLW6pmj+mkax+ktMAlVEXE7K2PUgUKU
1aBgZYVjIpfkmLgkWqgdUHFYbA1ZCJIJ3uS2z+B8J4GZL4rll3fAZP9J/7It
lk/Q29LPnus0LkANklfcDd71V98BOwX7aIw9B/T2j+x5wHdWXwjYjRTsUoMS
iFZ38+hHo3vSEO2CgPw4wV5zEHoXA+ODl/v0klYYxPCP3yQrEMIDr8XE2qYK
vV5sxDUET2DQI2TQFgEOXqTzTe/vn4sLcPMYgNU2jPO5TnCBAAV6x7aUenBg
16mNaNnGddMK7vQX2F+G0fc4ULVnb59jv7dbuouHt91sDG15j6AV/bPNGFFO
BCNVWMl67vPMTUR8ggT7Bgi2RbSelPMRKEDQoW5UaVkWc2NrOTdGU64REi9w
L0u/bTJcvAeWXkVtzcwM1GHgPJOOyo0BYgfzKsgXk2ugd+BGzqbt6DKJo2vj
i9rO4wc011fhDZhwJKNAjoMq74xG9DS3QJkHcgeBxuuzXmrdTrMO8FBUjMsY
TmoIdtlr0OvCuNhqKMK4FgVrKROUikWaTljGkfRCHb/ZvtKn0SSfdPW3sMYw
voYHKqzgo74t0l6AQ2cFoONueJMvwrG5Z20Bd1u3UbjBGR+qoT7mlh19Vc7D
pDJ683I+R+W8AQjN0AVifWGWqaj+6yDuAC6R1aHl5humPCwee5ApMAz1t6aL
b8aBkmmSijE2EIEQYOTBMh4R/ALzHIwYnHYclxPxbwDthGNyW4MEZYsShsCd
tjbkHLZuSagLNRgXSR6yIkNAj8dgTLGZjSvCyRgSGGSdsYsN7Hx8TADB6a2e
43ueicHiNgRKzlLYNbslMhoZMuRIM7xw08oW9mULG3uHhBsmAlHNLkSH9nhc
ZuTWaWyZTGBRKlMMZIpvzt5UDiEGXuxTZGC1bXxgBg3sQ89DIKuM/kFkLiMD
65yWGbTMatiMQH0zblKLgZpAESh3CUp8W3MzaG7itNKc3AyI5V6/2+v2ax6H
mQELloxKMQrSLJpFJDfY0kPa+CQUWkkmwO054PAFYbLm+OgRGNAeoSDMwpGU
vScHATnC8jS+QddmZmJymdd3JNcGqGwyYQWAoNzA6ZSueJ0PL0pXAXjfARyL
rYEhAN2uZK7AKXaE+BysqcWbl6KDvUzCSZqRxwNFUC6e5EdArADsEPZNLQTj
IAZhLwAfOIDF81iJfQu1e7AWdJimAfzPBB0GWAV+BfQX6GZpERNusYJv3ZAo
3GCvtYnoFOBfbn6OSlVAqPYl/nW5pYlZ+Xs0q4Or26Ihbj2tw0KeRuZiIGQj
u+aCthw9L13lPPy49QiroFZXqPXPKh6OOsqURVkoBrDnnExHBTuKSOyRO/tj
8RQPPG2OPCA/ai5dcuDVE1wxzHQL+gT8Yf0UD1CR4o1oORIXvFsCalm1gg4a
n/AQ5OabKfAmZudtqweAdeSAQEchPtuysNYZV67CG4ABuXGnSUnku60sNlpE
7Zy1TEJQqlViblEEpKXbcZFtyVmw9CRbjvbF5CbKUSXBpYoYJMyjUCUHM5iQ
GTk8UfZfYTNeuq/O1ES+02DYKwgsB+WWyRxXdpQ8Nyzuoqk9UqAVlSiQAYAp
WK8USEKHrHUFsl8SI6G4zLoWAQwZzwPCaP1OEzMqZzNaaoXyrqZIB6+rMgzR
u0Hu7xUAacHeAE+txxelRJsPS27GASqXcCIoYmxy5NBIzqSjopuX5C3iD0y0
nJGDSj5ogbfhkkiXSZ1JyQfY01QZPit4Ww1Zi3KS9F7m+0+Z/8wNqCiK5TCI
VDAvuBGJiUklJYQ1Z8bnb5/lThShOa8WgA9PIlXyyG5uTeau32OUi+hAsMT3
FOFiN31OrGaNZPYOneG2SeSLVUuqXfWahTMGX8i3UMqu5mAVNwYlh1sonBrV
sKIMY5pd2YZPPU5HWippWBTDyXM0ggivpBCAPkOA5+m0uA3llbI6pNXgrRe8
aWPzdsPRjOIY9gf1zVwJocfLrqpo1gqAYkXDEXql2AN7xYC4hGoU6yiwvjWI
FTVmZlGHYbsOomUcoptSPJOFAtUTYANtewynDCVI23Rn3Q72xygEHvO5mURk
DWTQeXxltlhXRWcRwJfn6I4cpRMUqAsMzQE1Il9LQV8m7PnMUUZHt1KizQ35
NON0RsIMVrIsonGukHcjiW7J1q9swy1ilPFq0bZKYF11gUx8sQAuR02wKa4e
CUzg1gD30kJNxGchtx1HS7Vubx1e2fhAXbgQtV5GywUsEk9qs0sI936cLgC9
NybbsBR31DHuGt3YCKo0pYhNt8lRGqf2JoxLw/6nBIkOcFpnC3LslBwZVp6Z
FVreMPBVZsx6QpDcaSjCayN4hgFUbWwkAIYNn85H6NMCK5i87BI2pAn/93//
V325293Zxeg09IITdske8sqTL5QtDojeoG/5lNW8HZeHjgRLzLaGDGF5A6k+
AGjGEZjAw7gfc0JmUnhhM2Dz5GrVNb6pQJPvDnzeeZzUqAIM/YzCjI87CeEs
pCj4bpFw5oBVgsDpFMQzKzluCZYEg9VH2AgOJ2QQhMrZJBU7CdHXiAlmufEG
gxewLNotkialpQz0ZH2a8WFqFsYTfYqSdYISe5NNgu6oNdJW4vmbwrWWQTe9
JIgCVC8lnMBiSQHjjOZA1rkpaDluGlwy4hhRXOaIXwwtkKJWhSmczeACO8h6
SGdg1k8CVfj9SIKauGRYkqrmYkLNOSfAA2GKLnZgtSCtb1OrhAE7HbpFIr/1
AFAWKTCi5ZDeeLcscGiPxzZSimBePuLAvFR5nLJjIqMtcwoEut0y3gLoCvZ4
2fQ6V444AOq4gjVwroFPgFBdPugrvdTr4fNBquIfioEaW6AqeYsU8AkHkZSN
aJagvocHwHkzMe2V4Gx0rpyf0AKMU0rUiCYioaiH2tTDcm6gnpTYFfD6dJag
t6zdYiCCMrlO0ttEYVCgtSXKIJ3kfOUcAGrMDeqDXfUtSmpkQFbprpbopdWg
eKwsLFKxSW0nXlQZDta5B/SQJrN46YdV2FlBKi8JgsStYWJdvqhqY/4aHSNm
UyPDugRCCDJ524OAnC2ccqMmEfk/k0IO2jasuEjHaSxmY5gkQhvzeYp5VgjD
nLaChkfyWjPFtExYujl7cxrFqBoiU11k0U04XgaYfBwh71O1bJOkshqr7qhF
zuuLt7vsFqxWBubY7wZ/uT6V/ndP3DFTyvPCbupHNFg7phz17KBsIMsfBOCD
nVcc72zs58ad2Md4Cp9ZUSUi0PI8f/2DU6Oml5gZyxzURGdEfnnKxwQhS0D1
IdqcArspJBNg7cmsYYIdvZYxKY+zwuHDpDPV5kwcBKFMJG/HgoAUBSIw725R
EFocz6wI0jQ4/KaVWUpgvwiQ9SxORyCYMMJHvnpxr0rek+fADf1o/SrIREAP
U9AS88KJV+ZoIpDy+J6OIhBWOU6Bpu7uOJx5j/zkJpoYURgl1sNqLypUAgDq
I80pVZ1oKe/K+QdBAvNxo6wjS1aoDRKfQcqalptpEtHHrg3yy+aUwgealqSC
EGO3fZusllBQk2UdKxhrAg744gJvIdh8O856tE5ZdLRzqMDvRMGWfylBBb9X
z/VvgDx/iwr3EP4Y6osXJ7oNbIHJiJTgqueWeg6N3mH+LzUuqx0iVTtIaYeo
FaUu0I0HanqZJiZIswAdEl9i9PD5ZYctO2rNP36bC4waXuht/Z3ufw6/fE/t
XsAuTUVy0lw8ulAGb3473+LgIJAMA4RPGDNoSXrmMKY147DnNcXN6Ys8+N0d
0ts9jom5hv8NfliLr6t74gp4mBqqIIG11sIRGFMbN5Xk5ZCne3jkyw2bcelO
B02XPo6phu0hNgf7EzhkiBgciSqTexY8xx+6og2LPyjUY3QPjoFxyOTO8JN4
Bdo+SUjWcjrtsH2tXFu/mW1EAa4KFgEECBcO25jsBIybFSlL1JAZFCkf5D3p
WE0pKqxz8hPyIcg/yWoJgPLwyfWdtYBHYBMgqWPKhxE6sXk3KqtypupJS3vd
XQm5sBmLMghlSIVI3kWHaQ5FUs5vjJ6NNvyapD4rBlXUZFsdZQ0xDMDPyjAL
QVx4Bjn1jjgdGXlV0fTLUTg3jn1XUt6kl7aEF2X3SJ1QFMiEc7dYAGJk2xCl
Ycy8CgBAn2Q9WhVijhcvOd8ilzdgV1DgAq+8eGH/nPe9MKiuk7DLDIsp0Ikm
9sCy2JSpyOeAKgQHsqwDGVVxyUa1udJsamGYgrQ+UQ9l8YQ51owjpk3A2UTV
USPKMNLIFeYuJRxP8I5aFmLiODJgxMHHJfP1kCxX7xTjKbDz4M0KOS8N9dp5
E4FGEGTQekvy8tfCh9XhrZwzrHtMwQIkVgeEJ2iisFNdOiuLibaNLR+PUXnG
E/gB1xB8k0VbdjPwGNsxm7nWu92dffKp8AAcm9jr7uzxOLgEfHvOXi9Mr8AR
8NDcmHi5ZcMwfJ4oAQLhhVH7+gX8zrKCddj1+lddgx2zBnvs29R44DyTejPT
QPJUlf7qVKoqM7x62fE1pWBdsgFyAEQu5el7ytmq8fwJpil5RhVdJUC9CegO
+s/DRSMSX3cniIKEza5Fr5VIIBgK8Ec7HJErxvxii+PHJGj5LhtYPzY2w84m
53qg4+DCGsCfUoks1rXZrnqPHhLPJe7H3Ty1vy3K+9gp798CkIKbaqUd4n+V
xugZ/cK/manQMVDIpyhnQcDkew45sKcEPcF06wJvKDLqq8HYNB/V7X0yR2yK
ZBWYJOTYCZ7SIy/aw5uR+UtV7ahrupyb5NIcJuIR9/EnClB9ylkKWgHeEp1V
fLShKV5crVoV7CIVWz60FzjmC2RBdTmBKUgKjGjy13fk/lG+cnuGpMzSh4GT
jFVNLULhXodfOBDOwgBkUZ7K/RGkPoITs6lROSCLJTDucgYyT5mIJENt4ZT/
EeXMraYpuxzwziRvycJkEYJBYb6y8lWgdztd4Bs1Xo4l4kbk43OPiVnE6ZLp
wL85I5GOBd1aYUNj4kVBH0h4c6G+AqUs5Y3DTlGSSFe1L3x0FFfkwL4hFyoK
ixRvaCEfJgF3a8Twd25dTj5iUdAiX0BB2GjpDHfV0e2K7Yk2Z93Rj0BUR6pG
7IhsinQKEYvzUO6l2JBdAtLc3Jhmxg2ZdpgiDjsxjhYoL6JC29xeZE1+eo5l
knRnFaMHZcaBFowvx7iXTf+UHDLQmNBD5mWeb1cxXufXQ10AnVn4kPKdUGdR
fPlDbL9A2DMSPPvgKVG5Zh6i8sbZt6t57luKjEfhNBUO+dZKqNt4fy0oF8yD
QRQ/Jg+Al8s1FLpHi1MqTLXdlkS8bXcxIugNJZBfC7S3OtRakr5c86A/tPFs
wnvj9tNKf5fTJSMEA+iP2i/ejFxMuoKc7VfHg97B7mBXutXjkNs62B3qXv+w
A7+C2N/R2wqatYpwNhzMFgu8Vtnp7/T7wc5geHHeP+r1+i0w8+gyyDargAjA
Dswtd+x0lbLGl42wDU3OUNO9vw+gR4MavK0BRd/JfUH7LzZb4Hv4tzWNwPTk
P+lWN/pTZDBuCbMBH8OmNl4OemDKzjd7vFrS/vvOQ1PlZox+t8ZctqvyBti2
YUQzeQV6MxHytqb9G+xORoPBFLvdq/vazZgNBP34DRl7IebUES9xf6RXIEbM
230/uonSMo+XKKb1+cl7TUmyg9cfPpB45usZYR7FSycQJa9RToaqn2MxlMnv
S6FJK7sqmbAi6QCWpw+dXWjnDi/8n3KhfnuM2RcTp+k1g796RD29xZ8e0x0+
4dgO/18/ttu7B72ejvhOLiDMYfba5qaK/5GDwR4xmMkQr0lj//9/uv9+p5to
82883jUCb1cbtWUP/UYfdcFWR25dKhSqWmu+Kd8ysl5056pDApFInNOXMz4T
QEqbBxR46von3iAnJ4IN9RYUMqVMFM/a66hiuZC5yTtFydpg+GWol4aiEq11
k38r0aDM5kNYJwSFyzAyuDG2t/RyJgl41QjNaQrNufuATi+KvHvTMJdan1/m
Od0TZMNLezndprN7Vm/NhEVtlOJOC3tlT/RDzDfEe2MJRxv0KBxfY+TLKtH4
uyI1v8DrzjhfV53bu9edh8OcnMVdxx7NglCzH1qm0HaKKEYjdcTxg6XV8dcj
8db6IvG2BLTPUtBFqX4CJxFRVA8xQsyfDn5QpWS5RDVVXapGhRcH4+kmtnIB
Wh5kR8+jvBrAAtdM9l11SLQ5M5NpNIXRQl5na6vrbili4lGHiO12c4SKgKR7
6Oh7VI2gmzfOtTEugzIFJGFff2tX8E5pDU/0uRmDJgE7gLFwILRMrKc7TMBA
q0hu0Oa2HZKJxCopTcTrA0IrtnHFWvagf7uVtlm8tTGBgJVlGtMr9d0/F2kw
wrILc7CiJt+vPqEiNvoUyD/NhhrYIGZcgGEcY8jMhhCstQt4wkfihcA18DD8
CuuKPBxuxfiNmK5LwE0VtFTqy18EAYZRuQhHYEs5tMnf/1KevuKnW19yGR2q
7mPlCR7zIHj+SHYLkklejgIHxbqYoqrAdc5SLr7lJvOWcfeL9dCw51rsVuCW
S5CBjdANew5a7u5of58856fommG2WI+jLTknVbjW0L+IhKi94dDYkNZZj++K
34kEkvi6OXNNNCwgdDCAKVhG3VEtlKxx/9IEgEPVHJxYqQQejeAF0ob0rx2f
DjVw0nQchS5BW7q5y8PWZFRqTegMwRo1Hyvlxb+wRZXha6UfymlKSHPc1d42
qNFByPmtVRTrJ+1Qqn+iOKJe8/MTQ36BS/WfrixgXedHf7CMgV2PPFGuAEDQ
g/esJq/reenfT7y0T3/+vbQNcFnOsAauPhY24BP0yXD9XS5bPQLXAN477X8V
Lrwhetl8Ws8at8VDUEQ8fjPrU/G1C+/r5kUNLlRi//wnutb75z/1HMbWZH7/
DT8PQ7YH712O4ydi7IW9jvWf+nkYrn0LF92vWoGrulJ1WT0luGL//k27dntn
6+8C2YGFDO9RbYLMXT25rCBbvQj0s8F7CDJMlfhpUw4EQraa8gBP/xOpCmvh
6rj8hJ84OxVkv7XCLJc+9bn05kQCX5VAY2xjgGydziFhsp+vKdSn+IfpCWyW
g46JJYDwV4p3/iMUhdXA1f8lTeHTJfzZYxKep/fyqnyxK1BjBI2uFdu8iJAF
t9dUUkVt5IsSQK3xznlzCdYV5KjyP0KrgLP691cbHAtAwwEVhjJJTBzQX1yP
iYKqtjDZSjiB7M7HE07qZ9yr4MMHffz4QX/89OIxx3P+Fu/NkMoFu4BWj5T6
4VgpeytoSFf4g7sEpKWJQ6VVjZK31Moppbs5AWqwXL1mswYoGL+weVA/Z3Pq
L2ASKS3XLOL0BbpMoafndtl+pKm/HdVi3Iagh6R6rMU3Fptp0bL79A4YYIWk
T54bd+luKCHWe0V9E8suvFR7dV6OCv/lQ4MiF2BjqXIg5tgpAbmlFMspoKl1
L08TUI6QCOp2NjYYRQmqve165ZgtzF0SO321D3mYyKRvZNm9aXgp1vRlgD6U
ozjKr3xPn2WAjb2qjV9L6iBWxXe06N4ibpO1u2wSkMvmzNwhIxgTvqsB0i+Z
ASN7lYUzTuiqfIyroJP3goqhyrheKsF0dQRyj4V+hagpVdZt1cgIyaWrdfsY
2DcipcpOrMjXT4jSq1NJFwHNT0ReMxXs7AeADdr/kisgO8cm57gUmBXAqfsr
hRMIs1Ti+jVVH0aK4sy1WhXiLRQzMAJWzta1LeOaY2EcXGBBz2OwdXQ7zIqq
J5MQXegu8RIdzfj+7dv375D88Say1Fug6Kk0YJI6pmSF7ZeUu2AzWGKTYQuu
4f0BxWPOp8TPHuAxWH+qeVk28FYXvQob7a1XSPJF1rhyWut8Oa1NzhzlC9IO
OQyEiFuP1YdGr9HZ6Zaq1LAWYN5x+A1qWFNQW0Abtv06ji5N4V9iND/pNydr
xPDP4N7Binh5cdKrKfjExjex7TqOqXwf9o9s+pHLma4K5FCKfH9vv9s9Ojqy
VeA8fTKssvxHSy/xs9fv+tcXG0VrVa1o7TiNy3lC++cw29LkfI0xeCcymQoC
2RqYqtFJcFzrZjk88JLv/pk9kuTplF+HWqpfAu/IwsWVy8EiDyhVCgW0GnKB
SqodyoMLKlluTQY2w1bx0gJCt+W8RZBAR+eitK/u71uO8qpnHT5jV2HuR1a9
2bubDiH7ZxkSS2POl13LRKKsPmdGdhwJSQla9G4rV5ciuOByF7Y69d0TWfez
9T9iQ1Fi6CT66F0eoHTxbHwVga6rV5PHvDXCwVNojlOBJZOBahj9SMx1cwkO
kmc4RFfKNX6UVGUfFqrZEC6KOpn7xh4X1CipaAnLjKjI7f3VRnLZm0K7K92c
TSm6Jt33pEGMzbLipD/P04BxGeWX+LB5vXTQvMq/fmFRDjCiDchXy/l6mKR2
YQElWotc2sUwKcDsZqWcG69gyGNFehFKSbqDv/9QSg49dHsP8qUw4yspG8mX
bjk+m6/skdseJgCQWmmZjQ0YypVF88pVEW2fnbzawkKR2WRKWvaJDeOfW/Wi
hhGLl+MN81qqoJ0iLsRHmDLtUaPB2+N06RZIMwuXSmqdxCaZFZRd3UfRPZBU
Qja9TSzp7lTT2sRxIBV+azvMqaMvMCH6JXkDC5C4WOwKzuXuASZ5Bra0v6vq
aZ/s0q1v/yo21c/+5uJVcOjvIeZh/AHPOAqkgb0MIHF1H0xc3igC0gX+VI2i
V0dRMIp+YcsUx83iNHyG7UjSfezy2SlGTKm05Li3Xn37vYf8qYuTUm45Vbe0
xh7a3iMDR0dWYUfELplbzUoxjBCgTWMTJmJC0z0POU5s+ttDNtSXFDy8ZF0w
LrJW9bKjL/FzJ/IOK9ZUpxPTKdlnUAOFZh8xIEnqHWGb7qGqdBM31lPvirtX
8EZi6Lm+TMo4vpREfdRDq5wcrh2PqY9ZxA6LZOmuodMhdJc8rbJuJqqK/oqv
XKBvVjFYkKHiX2oA4n/k8wNUgAcrvlFcCT8Bg52iBBh+Ec2k3gtLJKxL62rm
2LTZJC/jQqXJLCX3ufj15CMtPCwwXpO7em+gZFQfUZCiqsoDmeP/Vb6Pf4Ks
NwbokJUZpDi/cCfJNf1MP9nvDg7b31Uu4w4dlo7+p4av9vstVTWy5R91Nxwl
U1BtfQHa0l1Q5+w3PWy3iv0/07/EUkPy5QU4+VhfE+mRko5T0MeBKsAakAGg
/WdK+xNoeISHFQHxf57aNFH/JOeqrktiTg4nxqL56PX10mU1VwBtdIvNDMPV
jSnlKc2kGmA9c5A0R9P6u1bQ0iwVvt/wFiUwIH717edtfH0TgrKQFFub3ldJ
+hvGr/DwvYBOSBPQ+58Pjr/+8NVxfbkUQEM2/+b8vd4fHGn3cYzV8QEAHPT7
qrMrvs+GBt+sW+m87udppXU4QMFCWr/BuyuA4wD8qQTyJDfup6+OsPf54ZrF
u8uZpKc24AAUyoK1ReEqAgkLwJQom95H4coqYBf7tI08yJbtvaCvI8Epp+w5
Xg5MzZRkuz7bgAKcsbd31N/lbVNCYlW3/sZug97+ftBbu93benDy5vWbi2a3
b97pt93dIzuX0KubC3Acxgsw2cu518lDsHRYs8Ftnm9g+28x8iV9jYfnOyAF
2mh8Htr9asIt7PEpP0/1Od8lsT2xKMaazVrft/WxVac5j8koD0KGeA0SYYwd
sIaPVlHwXz7u9oK9g0bjY2j87brGe0fB3nGj8e+g8e/XNd7vBQfNkUNofLuu
8cFRcNAceQmNfwQM1zntM8KH3Y1eYzfq7PWZjkCNnNFNSEzD5N+e6qpaAxZS
1/xNEehdtZaZTBK8fhGkGDXa1q0oCOeR/DZKEvkN9P8QhDL81VwYvDRJCuZb
aNtehdfy2zX6vlL7PC4/ru8/x1bSKAlvQOmUPxa3tm8Rpu635fpRirykJvks
CV6cBq/O/L/efe3+evlVcHLa4hPt0ECICLMiiNM/jGQlYxMHM1h1lF/R30ka
jNJr+2uyTNbB8eNVMCvTJYMCfwAyrkP7ByzU+xXWummIjxHWSgQY68f+mW4z
19nmE7AlRARHQ67wT+ztWehbZ1DPtByEY0e4x3QOgt/DgzD4UTVOFXUY7ATA
dmsUuxMcqc8ooZZTsc6+efG7Hy6+Ojs9Pvnht29/OL84fvmbH87f/P702d4O
/ZAapbvdLmddvXt/cep9wYrcIVzfCOOY6Gi3rl0qFWZvAt5i3eUXJZg4ohxh
CdkeZ7t5FlOHLgbjY9/E0p6JhRcr5btcdBc45IJTbmJkPjW1SMJ9WHRxwveL
QnYGUFkzNhwxD/MWCIWrLJKlT8mRUqXM91LQmGjCViWvOazLI4ltTZbQ3BjW
wvGuOTo85F49l66gBG7VqBC21x3Ywrr0XQiqyU0Yp/tSje9pIe7ks1z4IQwO
AlNlSvb840fUAHFIT+7jOeQ8Cvl6EKm27SpW6q8RG2xV9R3Q36y++eKUKAKw
RL8evOrq4xhvbWMJaCQB/0pZx4vCnp286ihByyTKbfEsTEyugKTJPOeP3Jlb
/RDYFTkpwQjg+6Ur43DCYkUlbLfWVniDu6Hwgz0mk0/2uHI4ckG3q8+N1Em0
BURPqklBPVcv3ZQtP4mzP+DPMfm7g0F8Tj+vXB3VoyqoLEMgibib85tuXInj
Qiz4RJE3AQujFssAb50hmFfmIxhpY6rdtbZenRyMiV/SuIqn2nsN7jIJdTkF
cQ6nJagUQ3YZtL4y0BFdtsqz0VYucaEdhmVaO7YDmFzEkFwzXoQ6OdT9/QZ/
fYLE2R4ckq5/2F95Sw6fdt+aAvv9Rmegr+otNtjbP3VvESrbcW9Nxz2v4+4h
dH0J/3uFHXkhvIxPwuEr9OWuQeGLNPlDWmafhsRphki0XX4OGh9H5SegcxNK
9w/6tRYIpx2grm5VAxz4qO3vv9o/3T/ef3WwB0M9qZbIC/wU/H5lRpm5beJX
fVk+/+t//PV//PXf/vo/v9wunzdqIzr3idGXYK1fella4rjhOALwV+cAbniP
pG4qog35ZAvt/db63bsyuHsWHPgd2/7cTWxu42BDG97IweaNXL+Vh/VzgHtx
5W7z7B9uHOTQG+Tk4Pjo5ODoJfy3B/+d4CBu1dLs1d66oYCLzekKUrvfE7w8
4dh27XNQLqnl7onLSFHqfaLHJqNiaukY9ASRSYUrnpcY9DCFWfX5Qt1ucd5M
a0v5Wfh/W7JMtxk1qdzwa5NgcknxciXR3AfwLsS/6uJ5m29AEB6oZItXbQDD
Grn3aacor7nIvFShZ9p9zYY+DL3T/JgMVxsdav7IzQ6FEenzK/y1FP5my72c
U4vWsPbtrxV0/vr8/Tudjv6AJUzWoXb1ykhH29S55MZIeVp/FNhQkporZUb3
a+oVFr7OsCAL3RfCD8N80q6+5asQrkALeZe5kHjHlcqWj1C5wtQ1H7dykaqH
8CIpTJgRAzMhe9l0g0GS07rKLudhCqNTY6mlu2E9Ljrb4j2vr2AVOEXJczv8
hQirXTwEhkyM6Xf8qVI80DDINvv8FyFssW57V7b4QlK+uquiNDtMblk+LPRh
JuvwrNyHYRzRPAAylhcpE6ny7D73QSVx/IADEfwD1VqZwJuE7dOuq/9AgqRa
vbVZJAGSXIqgYspnmtF24otaGAIHsSdfyhwzQZBIxGrBFhxKiFM2WwIOwnGy
2oBiGqhbNmqZsEX1kT4bm6siXYgKzfaQo+1PqV/FHw6N0JK/DZdK9oD3LefY
pa1QQtaTrZ3NV9KyzH5AJUN7UUowf9q8iV4hLTILMK17f7fM8I6lZJTZ0lQL
uS3XbtZ7xz5orVUfspBokORSKF6owdyEwstotYU1NcVJsY6gt6GU+iC1rujb
hvp4jPf7YjOZ8ffR74bAusljYCZUfPAOv4CNlYhQPbkK5/cuCHl3mkXX+tso
Rmvkvip7IjlYxAg0tvtNHJa5+grM8Gvjdf91iJkev47mf/mPxPxIQ4zTwBuF
blxmMWaVWbPZGhmgytbi0TzRy6sMP80K/Y7n+V/+V57f82cXcQ3jVF9EWD/I
PjvOIv0bk/3l3xOTwDMlUL3FD4UD4ckHw/MUX0pxwZsIqwRTSHjO6UJp4zOA
gFP8DpKXNPHr9ArsrfQ25MouJ2DZ6lMMBlcfX5TMGrcTuDUXTLKFlFLzUGGp
eCVrAauB0XjuqqstyIX5bHkgjzHPxiaOCTeOQYzXH0uamsI0tRy5KpXjGZPv
nI1ou0+c80ChZztx/Qa9LTeiqg9Rb/hmCZbCB63cVn+tfYlDnCQXyCZi5kPV
bLmf44XfLOdkxZBPoo0TvoRFqG9Fy3uNXzWXW7qyEqlhgOULMDuj2g5JUs/S
PA8AO2EiI6pxSkmbrmyPV4KOEunwEjHnryP/Ikr4TYyedmqujuHoY0bhhytQ
H6MFLO//AEdZ5kbngwAA

-->

</rfc>
