<?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.1 (Ruby 3.2.2) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cbor-edn-literals-04" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="CBOR EDN: Literals and ABNF ">CBOR Extended Diagnostic Notation (EDN): Application-Oriented Literals and ABNF</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-04"/>
    <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="2023" month="October" day="01"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 53?>

<t>The Concise Binary Object Representation, CBOR (RFC 8949), defines a "diagnostic notation" in order to
be able to converse about CBOR data items without having to resort to
binary data.</t>
      <t>​This document specifies how to add application-oriented extensions to
the diagnostic notation.  It then defines two such extensions for
text representations of epoch-based date/times and of Constrained Resource Identifiers (draft-ietf-core-href).</t>
      <t>To facilitate tool interoperation, this document also
 specifies a formal ABNF definition for extended diagnostic notation (EDN)
 that accommodates application-oriented literals.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://cbor-wg.github.io/edn-literal/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-cbor-edn-literals/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        cbor Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cbor-wg/edn-literal"/>.</t>
    </note>
  </front>
  <middle>
    <?line 74?>

<section anchor="intro">
      <name>Introduction</name>
      <t>For the Concise Binary Object Representation, CBOR,
<xref section="8" sectionFormat="of" target="RFC8949"/> in conjunction with <xref section="G" sectionFormat="of" target="RFC8610"/>
defines a "diagnostic notation" in order to
be able to converse about CBOR data items without having to resort to
binary data.
Diagnostic notation syntax is based on JSON, with extensions
for representing CBOR constructs such as binary data and tags.
(Standardizing this together with the actual interchange format does
not serve to create another interchange format, but enables the use of
a shared diagnostic notation in tools for and in documents about CBOR.)</t>
      <t>This document specifies how to add application-oriented extensions to
the diagnostic notation.  It then defines two such extensions for
text representations of epoch-based date/times and of Constrained Resource Identifiers <xref target="I-D.ietf-core-href"/>.</t>
      <t>To facilitate tool interoperation, this document also
 specifies a formal ABNF definition for extended diagnostic notation (EDN)
 that accommodates application-oriented literals. (See <xref target="grammar"/> for an overall ABNF grammar as well as the
ABNF definitions in <xref target="app-grammars"/> for grammars for both the
byte string presentations predefined in <xref target="RFC8949"/> and the application-extensions).</t>
      <t><cref anchor="cri-later">Note that <xref target="cri"/> and <xref target="cri-grammar"/> about CRIs may move to the <xref target="I-D.ietf-core-href"/>
specification, depending on the relative speed of approval; the
later document gets the section.</cref></t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t><xref section="8" sectionFormat="of" target="RFC8949"/> defines the original CBOR diagnostic notation,
and <xref section="G" sectionFormat="of" target="RFC8610"/> supplies a number of extensions to the
diagnostic notation that result in the Extended Diagnostic Notation
(EDN).
The diagnostic notation extensions include popular features such as
embedded CBOR (encoded CBOR data items in byte strings) and comments.
A simple diagnostic notation extension that enables representing CBOR
sequences was added in <xref section="4.2" sectionFormat="of" target="RFC8742"/>.
As diagnostic notation is not used in the kind of interchange
situations where backward compatibility would pose a significant
obstacle, there is little point in not using these extensions.</t>
        <t>Therefore, when we refer to "<em>diagnostic notation</em>", we mean to
include the original notation from <xref section="8" sectionFormat="of" target="RFC8949"/> as well as the
extensions from <xref section="G" sectionFormat="of" target="RFC8610"/>, <xref section="4.2" sectionFormat="of" target="RFC8742"/>, and the
present document.
However, we stick to the abbreviation "<em>EDN</em>" as it has become quite
popular and is more sharply distinguishable from other meanings than
"DN" would be.</t>
        <t>In a similar vein, the term "ABNF" in this document refers to the
language defined in <xref target="RFC5234"/> as extended in <xref target="RFC7405"/>, where the
"characters" of <xref section="2.3" sectionFormat="of" target="RFC5234"/> are Unicode scalar values.
The term "CDDL" refers to the data definition language defined in
<xref target="RFC8610"/> and its registered extensions (such as those in <xref target="RFC9165"/>), as
well as <xref target="I-D.ietf-cbor-update-8610-grammar"/>.</t>
      </section>
    </section>
    <section anchor="application-oriented-extension-literals">
      <name>Application-Oriented Extension Literals</name>
      <t>This document extends the syntax used in diagnostic notation for byte
string literals to also be available for application-oriented extensions.</t>
      <t>As per <xref section="8" sectionFormat="of" target="RFC8949"/>, the diagnostic notation can notate byte
strings in a number of <xref target="RFC4648"/> base encodings, where the encoded text
is enclosed in single quotes, prefixed by an identifier (»h« for
base16, »b32« for base32, »h32« for base32hex, »b64« for base64 or
base64url).</t>
      <t>This syntax can be thought to establish a name space, with the names
"h", "b32", "h32", and "b64" taken, but other names being unallocated.
The present specification defines additional names for this namespace,
which we call <em>application-extension identifiers</em>.
For the quoted string, the same rules apply as for byte strings.
In particular, the escaping rules of JSON strings are applied
equivalently for application-oriented extensions, e.g., within the
quoted string <tt>\\</tt> stands
for a single backslash and <tt>\'</tt> stands for a single quote.</t>
      <t>An application-extension identifier is a name consisting of a
lower-case ASCII letter (a-z) and zero or more additional ASCII
characters that are either lower-case letters or digits (a-z0-9).</t>
      <t>Application-extension identifiers are registered in a registry
(<xref target="appext-iana"/>).
Prefixing a single-quoted string, an application-extension identifier
is used to build an application-oriented extension literal, which
stands for a CBOR data item the value of which is derived from the
text given in the single-quoted string using a procedure defined in
the specification for an application-extension identifier.</t>
      <t>Examples for application-oriented extensions to CBOR diagnostic
notation can be found in the following sections.</t>
      <t>In addition, this document finally registers a media type identifier
and a content-format for CBOR diagnostic notation.  This does not
elevate its status as an interchange format, but recognizes that
interaction between tools is often smoother if media types can be used.</t>
    </section>
    <section anchor="cri">
      <name>The "cri" Extension</name>
      <t>The application-extension identifier "cri" is used to notate a
Constrained Resource Identifier literal as per <xref target="I-D.ietf-core-href"/>.</t>
      <t>The text of the literal is a URI Reference as per <xref target="RFC3986"/> or an IRI
Reference as per <xref target="RFC3987"/>.</t>
      <t>The value of the literal is a CRI that can be converted to the text of
the literal using the procedure of <xref section="6.1" sectionFormat="of" target="I-D.ietf-core-href"/>.
Note that there may be more than one CRI that can be converted to the
URI/IRI given; implementations are expected to favor the simplest
variant available and make non-surprising choices otherwise.</t>
      <t>As an example, the CBOR diagnostic notation</t>
      <sourcecode type="cbor-diag"><![CDATA[
cri'https://example.com/bottarga/shaved'
]]></sourcecode>
      <t>is equivalent to</t>
      <sourcecode type="cbor-diag"><![CDATA[
[-4, ["example", "com"], ["bottarga", "shaved"]]
]]></sourcecode>
      <t>See <xref target="cri-grammar"/> for an ABNF definition for the content of CRI literals.</t>
    </section>
    <section anchor="dt">
      <name>The "dt" Extension</name>
      <t>The application-extension identifier "dt" is used to notate a
date/time literal that can be used as an Epoch-Based Date/Time as per
<xref section="3.4.2" sectionFormat="of" target="RFC8949"/>.</t>
      <t>The text of the literal is a Standard Date/Time String as per
<xref section="3.4.1" sectionFormat="of" target="RFC8949"/>.</t>
      <t>The value of the literal is a number representing the result of a
conversion of the given Standard Date/Time String to an Epoch-Based
Date/Time.
If fractional seconds are given in the text (production
<tt>time-secfrac</tt> in <xref target="abnf-grammar-dt"/>), the value is a
floating-point number; the value is an integer number otherwise.</t>
      <t>As an example, the CBOR diagnostic notation</t>
      <sourcecode type="cbor-diag"><![CDATA[
[dt'1969-07-21T02:56:16Z',
 dt'1969-07-21T02:56:16.5Z']
]]></sourcecode>
      <t>is equivalent to</t>
      <sourcecode type="cbor-diag"><![CDATA[
[-14159024, -14159023.5]
]]></sourcecode>
      <t>See <xref target="dt-grammar"/> for an ABNF definition for the content of DT literals.</t>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <section anchor="appext-iana">
        <name>CBOR Diagnostic Notation application extension identifiers registry</name>
        <t>IANA is requested to create a registry [[where?]] for
application-extension identifiers, with the initial content shown in
<xref target="tab-iana"/>.</t>
        <table anchor="tab-iana">
          <name>Initial Content of application extension identifier registry</name>
          <thead>
            <tr>
              <th align="left">application-extension identifier</th>
              <th align="left">description</th>
              <th align="left">reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">h</td>
              <td align="left">Reserved</td>
              <td align="left">RFC8949</td>
            </tr>
            <tr>
              <td align="left">b32</td>
              <td align="left">Reserved</td>
              <td align="left">RFC8949</td>
            </tr>
            <tr>
              <td align="left">h32</td>
              <td align="left">Reserved</td>
              <td align="left">RFC8949</td>
            </tr>
            <tr>
              <td align="left">b64</td>
              <td align="left">Reserved</td>
              <td align="left">RFC8949</td>
            </tr>
            <tr>
              <td align="left">cri</td>
              <td align="left">Constrained Resource Identifier</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">dt</td>
              <td align="left">Date/Time</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
        <t><cref anchor="todo1">(Define policy: probably specification required?; detailed template)</cref></t>
      </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/cbor-diagnostic</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">cbor-diagnostic</td>
              <td align="left">application/cbor-diagnostic</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>cbor-diagnostic</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary (UTF-8)</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 interchanging a human-readable form of CBOR</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>Additional information:</dt>
          <dd>
            <t><br/>
            </t>
            <dl>
              <dt>Deprecated alias names for this type:</dt>
              <dd>
                <t>N/A</t>
              </dd>
              <dt>Magic number(s):</dt>
              <dd>
                <t>N/A</t>
              </dd>
              <dt>File extension(s):</dt>
              <dd>
                <t>.diag</t>
              </dd>
              <dt>Macintosh file type code(s):</dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </dd>
          <dt>Person &amp; email address to contact for further information:</dt>
          <dd>
            <t>CBOR WG mailing list (cbor@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/cbor-diagnostic</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>
      </section>
    </section>
    <section anchor="seccons">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8949"/> and <xref target="RFC8610"/> apply.</t>
      <t><cref anchor="todo2">Anything else meaningful to say here?</cref></t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="I-D.ietf-cbor-update-8610-grammar">
          <front>
            <title>Updates to the CDDL grammar of RFC 8610</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="17" month="June" year="2023"/>
            <abstract>
              <t>   At the time of writing, the Concise Data Definition Language (CDDL)
   is defined by RFC 8610 and RFC 9165.  The latter has used the
   extension point provided in RFC 8610, the _control operator_.

   As CDDL is being used in larger projects, the need for corrections
   and additional features has become known that cannot be easily mapped
   into this single extension point.  Hence, there is a need for
   evolution of the base CDDL specification itself.

   The present document updates errata and makes other small fixes for
   the ABNF grammar defined for CDDL in RFC 8610.


   // Previous versions of the changes in this document were part of
   // draft-bormann-cbor-cddl-2-draft and previously draft-bormann-cbor-
   // cddl-freezer.  This submission extracts out those grammar changes
   // that are ready for publication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-update-8610-grammar-00"/>
        </reference>
        <reference anchor="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7405">
          <front>
            <title>Case-Sensitive String Support in ABNF</title>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
            <date month="December" year="2014"/>
            <abstract>
              <t>This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7405"/>
          <seriesInfo name="DOI" value="10.17487/RFC7405"/>
        </reference>
        <reference anchor="I-D.ietf-core-href">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that represents the URI components
   in Concise Binary Object Representation (CBOR) instead of a sequence
   of characters.  This simplifies parsing, comparison and reference
   resolution in environments with severe limitations on processing
   power, code size, and memory size.


   // (This "cref" paragraph will be removed by the RFC editor:) The
   // present revision -13 of this draft picks up some additional
   // discussion points and is intended as input to the CoRE WG meeting
   // at IETF 117.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-13"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC3987">
          <front>
            <title>Internationalized Resource Identifiers (IRIs)</title>
            <author fullname="M. Duerst" initials="M." surname="Duerst"/>
            <author fullname="M. Suignard" initials="M." surname="Suignard"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>This document defines a new protocol element, the Internationalized Resource Identifier (IRI), as a complement of the Uniform Resource Identifier (URI). An IRI is a sequence of characters from the Universal Character Set (Unicode/ISO 10646). A mapping from IRIs to URIs is defined, which means that IRIs can be used instead of URIs, where appropriate, to identify resources.</t>
              <t>The approach of defining a new protocol element was chosen instead of extending or changing the definition of URIs. This was done in order to allow a clear distinction and to avoid incompatibilities with existing software. Guidelines are provided for the use and deployment of IRIs in various protocols, formats, and software components that currently deal with URIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3987"/>
          <seriesInfo name="DOI" value="10.17487/RFC3987"/>
        </reference>
        <reference anchor="RFC9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <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="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
    </references>
    <?line 359?>

<section anchor="grammars">
      <name>ABNF Definitions</name>
      <section anchor="grammar">
        <name>Overall ABNF Definition for Extended Diagnostic Notation</name>
        <t>This appendix provides an overall ABNF definition for the syntax of
CBOR extended diagnostic notation.</t>
        <t>To complete the parsing of an <tt>app-string</tt> with prefix, say, <tt>p</tt>, the
processed <tt>sqstr</tt> inside it is further parsed using the ABNF definition specified
for the production <tt>app-string-p</tt> in <xref target="app-grammars"/>.</t>
        <t>For simplicity, the internal parsing for the built-in EDN prefixes is
specified in the same way.
ABNF definitions for <tt>h''</tt> and <tt>b64''</tt> are provided in <xref target="h-grammar"/> and
<xref target="b64-grammar"/>.
However, the prefixes <tt>b32''</tt> and <tt>h32''</tt> are not in wide use and an
ABNF definition in this document could therefore not be based on
implementation experience.</t>
        <figure anchor="abnf-grammar">
          <sourcecode type="abnf" name="cbor-edn.abnf"><![CDATA[
seq             = S [item S *("," S item S) OC] S
item            = map / array / tagged
                / basenumber / decnumber / infin / simple
                / tstr / bstr / embedded / streamstring

sign            = "+" / "-"
decnumber       = [sign] 1*DIGIT ["." 1*DIGIT] ["e" [sign] 1*DIGIT]
basenumber      = [sign] "0" ("x" 1*HEXDIG
                              [["." 1*HEXDIG] "p" [sign] *DIGIT]
                            / "o" 1*ODIGIT
                            / "b" 1*BDIGIT)
infin           = %s"Infinity"
                / %s"-Infinity"
                / %s"NaN"
simple          = %s"false"
                / %s"true"
                / %s"null"
                / %s"undefined"
                / %s"simple(" S item S ")"
uint            = "0" / DIGIT1 *DIGIT
tagged          = uint "(" S item S ")"

app-prefix      = lcalpha *lcalnum ; including h and b64
app-string      = app-prefix sqstr
sqstr           = "'" *single-quoted "'"
bstr            = app-string / sqstr ; app could be any type
tstr            = DQUOTE *double-quoted DQUOTE
embedded        = "<<" seq ">>"

array           = "[" spec [item S *("," S item S) OC] "]"
map             = "{" spec [kp S *("," S kp S) OC] "}"
kp              = item S ":" S item

; We allow %x09 HT in prose, but not in strings
blank           = %x09 / %x0A / %x0D / %x20
non-slash       = blank / %x21-2e / %x30-D7FF / %xE000-10FFFF
non-lf          = %x09 / %x0D / %x20-D7FF / %xE000-10FFFF
S               = *blank *(comment *blank)
comment         = "/" *non-slash "/"
                / "#" *non-lf %x0A

; optional trailing comma (ignored)
OC              = ["," S]

; note that there must be at least one string to distinguish
streamstring    = "(" spec1 tstr S *("," S tstr S) OC ")"
                / "(" spec1 bstr S *("," S bstr S) OC ")"
spec            = S ["_" S]
spec1           = S "_" S

double-quoted   = unescaped
                / "'"
                / "\" DQUOTE
                / "\" escapable

single-quoted   = unescaped
                / DQUOTE
                / "\" "'"
                / "\" escapable

escapable       = %s"b" ; BS backspace U+0008
                / %s"f" ; FF form feed U+000C
                / %s"n" ; LF line feed U+000A
                / %s"r" ; CR carriage return U+000D
                / %s"t" ; HT horizontal tab U+0009
                / "/"   ; / slash (solidus) U+002F (JSON!)
                / "\"   ; \ backslash (reverse solidus) U+005C
                / (%s"u" hexchar) ;  uXXXX      U+XXXX

hexchar         = non-surrogate
                / (high-surrogate "\" %s"u" low-surrogate)
non-surrogate   = ((DIGIT / "A"/"B"/"C" / "E"/"F") 3HEXDIG)
                / ("D" ODIGIT 2HEXDIG )
high-surrogate  = "D" ("8"/"9"/"A"/"B") 2HEXDIG
low-surrogate   = "D" ("C"/"D"/"E"/"F") 2HEXDIG

; Note that no other C0 characters are allowed, including %x09 HT
unescaped       = %x0A ; new line
                / %x0D ; carriage return -- ignored on input
                / %x20-21
                     ; omit 0x22 "
                / %x23-26
                     ; omit 0x27 '
                / %x28-5B
                     ; omit 0x5C \
                / %x5D-D7FF ; skip surrogate code points
                / %xE000-10FFFF

DQUOTE          = %x22    ; " double quote
DIGIT           = %x30-39 ; 0-9
DIGIT1          = %x31-39 ; 1-9
ODIGIT          = %x30-37 ; 0-7
BDIGIT          = %x30-31 ; 0-1
HEXDIG          = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
; Note: double-quoted strings as in "A" are case-insensitive in ABNF
lcalpha         = %x61-7A ; a-z
lcalnum         = lcalpha / DIGIT
]]></sourcecode>
        </figure>
        <t>While an ABNF grammar defines the set of character strings that are
considered to be valid EDN by this ABNF, the mapping of these
character strings into the generic data model of CBOR is not always
obvious.</t>
        <t>The following additional items should help in the interpretation:</t>
        <ul spacing="normal">
          <li>
            <t><tt>decnumber</tt> stands for an integer in the usual decimal notation, unless at
least one of the optional parts starting with "." and "e" are
present, in which case it stands for a floating point value in the
usual decimal notation.</t>
          </li>
          <li>
            <t><tt>basenumber</tt> stands for an integer in the usual base 16/hexadecimal
("0x"), base 8/octal ("0o"), or base 2/binary ("0b") notation, unless the
optional part containing a "p" is present, in which case it stands
for a floating point number in the usual hexadecimal notation (which
uses a mantissa in hexadecimal and an exponent in decimal notation).</t>
          </li>
        </ul>
      </section>
      <section anchor="app-grammars">
        <name>ABNF Definitions for app-string Content</name>
        <t>This appendix provides ABNF definitions for application-oriented extension
literals defined in <xref target="RFC8949"/> and in this specification.
These grammars describe the <em>decoded</em> content of the <tt>sqstr</tt> components that
combine with the application-extension identifiers to form
application-oriented extension literals.
Each of these may make use of rules defined in <xref target="abnf-grammar"/>.</t>
        <section anchor="h-grammar">
          <name>h: ABNF Definition of Hexadecimal representation of a byte string</name>
          <t>The syntax of the content of byte strings represented in hex,
such as <tt>h''</tt>, <tt>h'0815</tt>, or <tt>h'/head/ 63 /contents/ 66 6f 6f'</tt>
(another representation of <tt>&lt;&lt; "foo" &gt;&gt;</tt>), is described by the ABNF in <xref target="abnf-grammar-h"/>.
This syntax accommodates both lower case and upper case hex digits, as
well as blank space (including comments) around each hex digit.</t>
          <figure anchor="abnf-grammar-h">
            <name>ABNF Definition of Hexadecimal Representation of a Byte String</name>
            <sourcecode type="abnf" name="cbor-edn-h.abnf"><![CDATA[
app-string-h    = S *(HEXDIG S HEXDIG S)
]]></sourcecode>
          </figure>
        </section>
        <section anchor="b64-grammar">
          <name>b64: ABNF Definition of Base64 representation of a byte string</name>
          <t>The syntax of the content of byte strings represented in base64 is
described by the ABNF in <xref target="abnf-grammar-h"/>.</t>
          <t>This syntax allows both the classic (<xref section="4" sectionFormat="of" target="RFC4648"/>) and the
URL-safe (<xref section="5" sectionFormat="of" target="RFC4648"/>) alphabet to be used.
It accommodates, but does not require base64 padding.
Note that inclusion of classic base64 makes it impossible to have
in-line comments in b64, as "/" is valid base64-classic.</t>
          <figure anchor="abnf-grammar-b64">
            <name>ABNF definition of Base64 Representation of a Byte String</name>
            <sourcecode type="abnf" name="cbor-edn-b64.abnf"><![CDATA[
app-string-b64  = B *(4(b64dig B))
                  [b64dig B b64dig B ["=" B "=" / b64dig B ["="]] B]
b64dig          = ALPHA / DIGIT / "-" / "_" / "+" / "/"
B               = *iblank *(icomment *iblank)
iblank          = %x0A / %x20  ; Not HT or CR (gone)
icomment        = "#" *inon-lf %x0A
inon-lf         = %x20-D7FF / %xE000-10FFFF
]]></sourcecode>
          </figure>
        </section>
        <section anchor="dt-grammar">
          <name>dt: ABNF Definition of RFC 3339 Representation of a Date/Time</name>
          <t>The syntax of the content of <tt>dt</tt> literals can be described by the
ABNF for <tt>date-time</tt> from <xref target="RFC3339"/> as summarized in <xref section="3" sectionFormat="of" target="RFC9165"/>:</t>
          <figure anchor="abnf-grammar-dt">
            <name>ABNF Definition of RFC3339 Representation of a Date/Time</name>
            <sourcecode type="abnf" name="cbor-edn-dt.abnf"><![CDATA[
app-string-dt   = date-time

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
time-numoffset  = ("+" / "-") time-hour ":" time-minute
time-offset     = "Z" / time-numoffset

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

date-time       = full-date "T" full-time
DIGIT           =  %x30-39 ; 0-9
]]></sourcecode>
          </figure>
        </section>
        <section anchor="cri-grammar">
          <name>cri: ABNF Definition of URI Representation of a CRI</name>
          <t>The syntax of the content of <tt>cri</tt> literals can be described by the
ABNF for <tt>URI-reference</tt> in <xref section="4.1" sectionFormat="of" target="RFC3986"/>, as reproduced
in <xref target="abnf-grammar-cri"/>.
If the content is not ASCII only (i.e., for IRIs), first apply
<xref section="3.1" sectionFormat="of" target="RFC3987"/> and apply this grammar to the result.</t>
          <figure anchor="abnf-grammar-cri">
            <name>ABNF Definition of URI Representation of a CRI</name>
            <sourcecode type="abnf" name="cbor-edn-cri.abnf"><![CDATA[
app-string-cri = URI-reference
; ABNF from RFC 3986:

URI           = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

hier-part     = "//" authority path-abempty
                 / path-absolute
                 / path-rootless
                 / path-empty

URI-reference = URI / relative-ref

absolute-URI  = scheme ":" hier-part [ "?" query ]

relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

relative-part = "//" authority path-abempty
                 / path-absolute
                 / path-noscheme
                 / path-empty

scheme        = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

authority     = [ userinfo "@" ] host [ ":" port ]
userinfo      = *( unreserved / pct-encoded / sub-delims / ":" )
host          = IP-literal / IPv4address / reg-name
port          = *DIGIT

IP-literal    = "[" ( IPv6address / IPvFuture  ) "]"

IPvFuture     = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

IPv6address   =                            6( h16 ":" ) ls32
                 /                       "::" 5( h16 ":" ) ls32
                 / [               h16 ] "::" 4( h16 ":" ) ls32
                 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
                 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
                 / [ *3( h16 ":" ) h16 ] "::"    h16 ":"   ls32
                 / [ *4( h16 ":" ) h16 ] "::"              ls32
                 / [ *5( h16 ":" ) h16 ] "::"              h16
                 / [ *6( h16 ":" ) h16 ] "::"

h16           = 1*4HEXDIG
ls32          = ( h16 ":" h16 ) / IPv4address
IPv4address   = dec-octet "." dec-octet "." dec-octet "." dec-octet
dec-octet     = DIGIT                 ; 0-9
                 / %x31-39 DIGIT         ; 10-99
                 / "1" 2DIGIT            ; 100-199
                 / "2" %x30-34 DIGIT     ; 200-249
                 / "25" %x30-35          ; 250-255

reg-name      = *( unreserved / pct-encoded / sub-delims )

path          = path-abempty    ; begins with "/" or is empty
                 / path-absolute   ; begins with "/" but not "//"
                 / path-noscheme   ; begins with a non-colon segment
                 / path-rootless   ; begins with a segment
                 / path-empty      ; zero characters

path-abempty  = *( "/" segment )
path-absolute = "/" [ segment-nz *( "/" segment ) ]
path-noscheme = segment-nz-nc *( "/" segment )
path-rootless = segment-nz *( "/" segment )
path-empty    = 0<pchar>

segment       = *pchar
segment-nz    = 1*pchar
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
                 ; non-zero-length segment without any colon ":"

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

query         = *( pchar / "/" / "?" )

fragment      = *( pchar / "/" / "?" )

pct-encoded   = "%" HEXDIG HEXDIG

unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
reserved      = gen-delims / sub-delims
gen-delims    = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                 / "*" / "+" / "," / ";" / "="
]]></sourcecode>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="edn-and-cddl">
      <name>EDN and CDDL</name>
      <t>EDN was designed as a language to provide a human-readable
representation of an instance, i.e., a single CBOR data item or CBOR
sequence.
CDDL was designed as a language to describe an (often large) set of
such instances (which itself constitutes a language), in the form of a
<em>data definition</em> or <em>grammar</em> (or sometimes called <em>schema</em>).</t>
      <t>The two languages share some similarities, not the least because they
have mutually inspired each other.
But they have very different roots:</t>
      <ul spacing="normal">
        <li>
          <t>EDN syntax is an extension to JSON syntax <xref target="RFC8259"/>.
(Any (interoperable) JSON text is also valid EDN.)</t>
        </li>
        <li>
          <t>CDDL syntax is inspired by ABNF's syntax <xref target="RFC5234"/>.</t>
        </li>
      </ul>
      <t>For engineers that are using both EDN and CDDL, it is easy to write
"CDDLisms" or "EDNisms" into their drafts that are meant to be in the
other language.
(This is one more of the many motivations to always validate formal
language instances with tools.)</t>
      <t>Important differences include:</t>
      <ul spacing="normal">
        <li>
          <t>Comment syntax.  CDDL inherits ABNF's semicolon-delimited end of
line characters, while EDN finds nothing in JSON that could be inherited here.
Inspired by JavaScript, EDN simplifies JavaScript's copy of the
original C comment syntax to be delimited by single slashes (where
line ends are not of interest); it also adds end-of-line comments
starting with <tt>#</tt>.  </t>
          <dl spacing="compact">
            <dt>EDN:</dt>
            <dd>
              <sourcecode type="cbor-diag"><![CDATA[
{ / alg / 1: -7 / ECDSA 256 / }
,
{ 1:   # alg
    -7 # ECDSA 256
}
]]></sourcecode>
            </dd>
            <dt>CDDL:</dt>
            <dd>
              <t><tt>? 1 =&gt; int / tstr,  ; algorithm identifier</tt></t>
            </dd>
          </dl>
        </li>
        <li>
          <t>Syntax for tags.  CDDL's tag syntax is part of the system for
referring to CBOR's fundamentals (the major type 6, in this case)
and (with <xref target="I-D.ietf-cbor-update-8610-grammar"/>) allows specifying the actual tag number
separately, while EDN's tag syntax is a simple decimal number and a
pair of parentheses.  </t>
          <dl>
            <dt>EDN:</dt>
            <dd>
              <t><tt>98(['', {}, /rest elided here: …/])</tt></t>
            </dd>
            <dt>CDDL:</dt>
            <dd>
              <t><tt>COSE_Sign_Tagged = #6.98(COSE_Sign)</tt></t>
            </dd>
          </dl>
        </li>
        <li>
          <t>Separator character.  Like JSON, EDN requires commas as separators
between array elements and map members and doesn't allow a trailing
comma before the closing bracket/brace.
CDDL's comma separators in these contexts (CDDL groups) are optional
(and actually are terminators, which together with their optionality
allows them to be used like separators as well or even not at all).</t>
        </li>
        <li>
          <t>Embedded CBOR.  EDN has a special syntax to describe the content of
byte strings that are encoded CBOR data items.  CDDL can specify
these with a control operator, which looks very different.  </t>
          <dl>
            <dt>EDN:</dt>
            <dd>
              <t><tt>98([/h'a10126'/ &lt;&lt; {/alg/ 1: -7 /ECDSA 256/ } &gt;&gt;, /…/])</tt></t>
            </dd>
            <dt>CDDL:</dt>
            <dd>
              <t><tt>serialized_map = bytes .cbor header_map</tt></t>
            </dd>
          </dl>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The concept of application-oriented extensions to diagnostic notation,
as well as the definition for the "dt" extension were inspired by the
CoRAL work by Klaus Hartke.</t>
      <!--  LocalWords:  dedenting dedented
 -->

</section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7V823bbypXge31FBZpEpEOQInWxRVtOdHOOuk9st6Wz0is6
GgskiiRiEOBBAZJlWVn93r8xa17mE/ot8yf9Jb0vVUCBBCVlOsN1jkUCtXdV
7dr32lW+74ubodwWIo/yWA3lWyHl8dGHT/L0a66SUIXyJAqmSarzaCzfp3mQ
R2kiW6cn79tDaHq4WMTRmB76H7JIJTlA/BjlKgtiLYMklIdH79+JYDTK1I2L
/eT9sKFdmI6TYA7DCLNgkvuRyif+eJRmvgoTPzbN/TjIlc5FCH+GcrA12Pb7
W/5WX4gv6u42zcKhPINxZInK/RPEI2CAQxklk1ToPFPBHBqcXrwTG3KcJlol
utBDmWeFEmIRDeVlno47UqcZtJ1o+HY35y/jdL4Ixjl9mcNU9ZUQQZHP0gxJ
4cP/EnoBXMddeZRm8yBJ6BlP6TjINJC09ibNpkP5UxLdqExH+f/9X7k8yhSg
lhd/PqMGOF4Fg/8ICzAJxjO5vb21s7NF78ZRfjc0APwgDaGfE3/want33zwp
kjyDVn9Q2OkdPVzM0gTa/XZn398Z9P1B/5W/t70/6NNLNQ+ieCjHwSj9ff4t
6sIIhbhRSaFwjuYlrMjvcW3orZTTKJ8VI37u3057zmLBW16tofRmeb7Qw17P
NOsyWDdKXYCeJ0SCFMqBKNjlp3fHr/b6W4A9DBHdmX/SrfiiWCAX+NjCn2bB
fB5k3BJeGOCXO4Oh1OoX83N/Z59Han4PduH3X3Sa8O/dwfbOUAajZMK/X+5s
7fLvsa71nmbKnwFfALIs4rbb29uACweUR3Nlnu2/2hvKomyy/+olsKL9ud/f
A+zAhXmWxlogi9anvrO382ooR4FGdGeH7w+71PEigLkqIJgeCuH7PgwQOAV4
U4iLmZLHaTKOtJJHURJkd/LD6C9qnMtPapEpYHeW4Q4LYgs6kUiUdkde/k9A
0/eBq+03mI2aRIkCEZVeWCmCxCgCD/gdmDhUmcxT4p+RgrHECn7itJCv8UFa
5NwdECeQsNJzLW9h+fH5LLiJkikCwOhA6EpMPHiE6JoRbeOILmaRlqAoChRB
qRdqHE0iGOEsvUUkQRjKwNFKqdVKChWahkfa9pADqRom1QVK5/gyKWef36ZS
FyB+DpIJsRBggWcwdJe2WqYTqRbpeObj0oXEEz1kCtZ18BaWCFcMsIewMDot
srGSZyFgwNlkWoj//Ld/t5OWLVcfWs5rW7LsEFlSCQoiAjGCvmCGaQxrAxyS
LkCseMHzGuVAkzIZHBoGkhgwJm3Ms49I4cNjnjtahAaasUVgdPksAOxjVJIp
Tlw3r4dV584sBDPzPAIBBmV8hmIRFmPqwHzuNyJ8+iAOnI8Q72B8+d/F+R1x
f3+uGPcrXBFSKA8PyNHAuX8pEn6HbCrv78HQweSjr/IP3BZG+PBQyok4aSCJ
voMOv0qgOTMBPPqn8w/vO4yy4iSBxC0ZCGWBRGVMHAKz18x6gXZFgvgoD6ZA
PhrEoBTbAXJD6zyHBkEWRt9IuHDl83SqgEYZ94/UAoVRBIZPxrMgmSpe/xy4
RGm2XSnImMpuWKLBeAJzBfAQ8azCdeQIJFolqAI0dVHAYqQTQhVIPQuyNfwD
VEeeJbGiucEDy6ra0SDddqULYFl8UL4PDw4LwcyVghfGGMB6MkKZ3iC3Gc42
b5GmtwoeBjRYscT1Ggdxfw/ca22LNvjsT/oxSpmcYnQHxIE1Q4rX1QH8YlUS
MkrLa7SIuBCOgFSMwQIOMySPJ7uq/xqiO6ZY2u7viQ6Ej7771fwN7T6daTDf
d3Ke8lpit5Z+wtECYyMjoSKGh6nA6mDjTMVkmbChIh0Go87SmyB+TbNHHDSy
SsUAvzEXaBY0mM/GhrwAXyRK0jid3ol1QlgqXgAGjTEFxo+NBVllno7geTfK
KAgPEpeUW1LMRzA+VM6uMaDhNzEl0RYWsohzYlAYzGNusSAl2CUT3ITO6TRK
xnERKrlIF0UMjDgBwSqgJyvqQsFIQ+yHrbRK0LkLV4wojMrhOt0mDrDuaVcc
Sh3NF/ETw+F5Wqld0UQCnKcCBgDvbkFQAhoWsbFdup3ugCgODVEYD3WziGvS
JoVmcKTml4itoaNJBDjChRGbW9AyCrTn+MstqDL2v/NohEbuTt6mRRwCAdHB
gGlOE2LeJBcp+ELBOFZo8BAe+gUAiG6gMXSEffM4WDPCXJ2V6ZIHBdYVrGwH
BwAWAHl/Qi6O9D43zOyz18FGcxWgEhN2bWu8W1JhkqVzuYbrl9SR62wwVCOH
d9atRMfqF2FWtJTMrvghvVWgEWngOJkvVidwqBbxYL3PwNGfPRxQhJ4amCAF
q6DkLwXwn7DcS/oa1AvQjHT8IgYjFWnkoCKCB+gQ0gzYbiChkFuR7xLhnbz3
zGKOVBetPq3nPELMNyoixwWoCVpDeqihPeYe15eh9SlFOQY+KgIwSnWdi048
E7n0ZKoXY430YoZDHB5wIzrUgNZDilYkHnS3icQWHQBABIfiKfU4oEEHcaE0
6wEe9vHJyY9efZQsxY6L1TBqgQqatRiROEfpnAJhVVZ3aFvWQwCXGtiZpmXC
i4cH8OxBoVjGMighPiK72RjAn5aawYboNXfrkQ9Kj7swTGljBNgfsvLfpCLI
nII+E8aKWh+RHHvwVym8uIEglFkKLfvjrj7OEMwvMF2zyHXWBQEQASf8Q7kj
Io3rGhIgJ3p3sEL4R5KexnYOL0mrvDFSEEAd+B2nhgqohGKUJ7DlAASCOom+
wqvRHTotURkQyNbf/mP2t/9DUQf21N/ryL/9x2h7wM+o9+0BPpstPZupr9R0
b8d5vLcjDaK9nSKL212zcGaNcPIjHHxaTGcYkUkI4YHmIMw4e4g9wQsIxqpT
+ZL4UAtvBrrQg2Hhnxn9Qc71oHcP3NUvKmEXkRUBwUBHuNQFaMk4hZVUIUuO
1Vk1v6SKR8OQxAZVK2GZUASANgZ/0uDE7SwCsQANN0bP70Wjl+XQWL/oloEE
LUho7CpzicZpZ0VsApo7lCbLsNYAd1F9QXQOrISakQEV6IUFzpGBgWswDrAg
pEFoaCoUYGkjUB8wIsD/DP7uSNWddnkZ2KaK2sjl9c8/X8N3WASOMwLLcWhV
dRzggsICXf+8aZvJWjPChlKUNDupLotG2jIHxi6s/8lPFDFYm8wfo4Qcnh+f
nclY5egptgL/G/ss3yBSBZZkG+IsLjUXlTI20SU0UhHxkIOakWpEE4LZBW2J
+Lf8/faSomtcfELqqFcSdP6d3YkWxQEA6EdBEoBS7YqPJKs4R0stf4lrgqeJ
hvqANCLI2KiIwAguAa0uutWKqGKAv0Vt2eoOIrEfmSNcBxYHVM8qA0c+ZJuM
PEM5jCk8S6xn1jQh4zIFIJrpWIXgr7q2iqBqsmoir6dIAItz+jVAN1U/h+WR
UkuRgKhp7RFahiIpncxJCorlFkduwhBtvAzDZcuJkQk6bCB+lheQq+cKepP5
3UK5a4eMG1D6Dh75JnTGKayLVLrSpq8UOcNCxeoGTQwyK6xjXmjUKqj518TW
Gfhf4Op+UywJgtoFbNhGKr9VygbSEWoaTDjreWri9YkzD21phdwHBCGd60E4
6Dnm/34D48Mm48/tn1QJjNDhcWNSA/FEAswyOZKDzXcZ6rNbBQwLLI3ra1uS
+vnp0xmgAz8LAxYHuKD4mBny7NOZaGoTOR2UQrPSA0TSrIQM/TjNmfP08mps
woUsgw1Hdmpe5V63z24Jj6EK7TmGwcgd+iLtiF4zBOXqyZEIIEYPJsuS/VpS
KDivshKkRb+CyBqQSXBjrB9HjToXN0EG+i53nC7k+TkYcljJxNdFtsgimtt4
lkYYIhKr3UYajQb6XgEGmiTdbAzXiYYQf/3rX3kLAd8KIMSm3TEwCLoQevRG
aZ4H2TToQVwBOmwTwQR5VaXpxCBsCdulv9ORl55BhM4J4PKu8JlFiA8Zp3d1
xVg5lVRPpxil1pQgxekZZUApXqC8k+RkAQvzunyFeZN4PVe6EFuTcJX55pIB
XT6h5qxmTilJfUT5yRMEukAgFgknN7PdtYElu81PSaHNPjo4z9mENKLur6Je
L3/G966lKTg/RXka8jfM1gPiNyjYuK0fFwYYNXKIsgn4dBMwlaxkYRRgRVI0
uCg+NZtJ5Ggtypy1uMYlgFh8jNDXJpsIYaNlJx9WH8OzykrjDMUkTgOcls/5
Cp7w66VWbCKm6EWbYMQRvP+G3F2G+WZ/f2/f33rpD/oXW4Ph7t6wv/fnzY6Q
za+6u3/evHquGPZ3+rv7WwOQRvt1u7tbE7cw/3+StpMLV9hwq4z2WEBaMqPu
7jdgJdh9a7ZoGxtMpaYdb0cWZbP7aF1F6Mf1FM1YImzwSwE6lUXVptIrsMtL
ihh/d3VFQd6TwYoTexFZgDMtOfQsvU04fwBRm/FYgSrfn1Yp34HMGjTewt10
qX2+cx6DbOd38d1/8vN0E7cFoJSzxo5rYwCXAXclwkda8GYvfgeUEJL+o1HO
/vEoIUz+R6OEtXwK5VOuGKEkH5lRhvnjGAGg0q+PjLJEeT+UG5ZRJRWiHHhn
hqePKxFvlEHhMK+VJe8Bt0ryNEz7V9W3oWydULgiFynguRuiLzYCp+ZuKW5B
QY0gBPzdaxCGHBwfyt2AKoVJtcGQo6L4IznSF+BIrxFw3IeuRx8E4iOI9RS9
Cov2RKVA7n9FW/3krPvkrBvxfR/UKfpdXphxrSFyKan1F8gXVikbTVfTDb3V
t1gn8K/wwWxzNTBQ0bx8ibr1q8cyiKNpcuDFagIeilnR9+rWIdtj3eH63Q9N
uc2DoOZURCOGLhhYjGKUuy+X8Ahw83kppVsxMZTve4dCfFgYg97w7tTk8TiT
UdoQfG82YVs/XbzzX7XRao0huMjvGpre34PFwccYekxKEtLOttmZN5sZq7Dg
XgNrfSwo6YYhuMuijLy2DDX8TrLDZExwH5bkrYoAEckFh4plsMnx/ayYB4kP
Fiq0edY5ObS4GSTeZcGU4mRH8FaHf1ElfDFi0AowwopQ9muyioHCVfANbSlC
aMorvGUu8SCEbh3mcoGEMfLqTN3Z80mwumGlq3Ftb96mL9CfaOgKVvewSkWV
1TlM/59/FtDBCbqhlLVEng/0cjaSCS2l4Ssp/xhM0fsin62l27V370DVVJqt
fNsl34lgx7BUqZ7JCbYk1sfUch3PRyAnTPE3XMuFighcY20qcnKQKBrdpMjM
Jn5tVuQA/ekPVOnFGXgNPm2t4qsNniBG0lhDJ2uchiv9SQWxT5r/EBhItoIs
ryCZ82nrpdDBlFjw+MMf//jhPYoqZpnGpn4mqRqwJBxSoV3vmFMipmQqVhm2
oGo+8TFLbyLNa2V0aTktYAZy70yq5h1NeY3mtnkfjPVr7a2nbRKtEBnWMj9a
trzj9PDjEpT22m+aKrceHoQuRr7V+m4OV3o1k3x6fjEpYnma3ERZmnBFROs4
/XTaFh9LdB5QvrQfzf11OGON9gjrxr6XAyUF2+QWkOU9Zk34XZ6dLBmV7+Ip
q+EvI704Ouk71sRY/3Xmok5JNAsET8UstBekcePXyWTytoQc7O51u/v7+xh2
r9HPHA6Qcl63ucWRqF4Dz5s/TiGHs1mH2wNd63kMrqpvQ3mY3OEyT6WKtbJb
obi8MCMd3EmKAbgOClP0gotSTpyilPuNshplZeRg1dw6l5N6yPRoTW+J9kE8
7dM3f8wmUmB3qbE8BCimV+pvGkI5o5HTiSAV9FixGaYIUqoGiFXOW2zA5tru
NiTyGkt2OGd9zVES76t1kMIdeb247pht8XQMqhF6uda/QHsM0XGJcbMb5mFV
JCInjWVTDctzKK2WsLOpkgDuYPzFdVNJUZfr1yjpFmFVb8dEdVjEzP4JdW2R
4z4BRJcJVlHbHUM0oKKynjaLj/7ibQC8uFLahMiuZ5ub17z/A5EHfc+UXTWz
Oz5zS4mSELQeNK2eOZUEPG8zmmsIuErkM/M9U1R5EWFVXci1YZRCT5aHt7rD
P6YCgdyWZhCekSor60Q9t0lpTdw6GGM2BHMQVNGr1S81dXQgz+Ul7ZOcyxct
r+PBX/7Zlh+Or+S5oF81iHmwkD2YSgay2sMKvKkKxbLy7NHAjLnowcTG5Xew
tzC5nkmxNkDmwCuIgP+UdUA9ybXrzElCoOKrj8z7rQetPN8TVX/23SU2v5L9
Fydnfzi7kJde17M/rjAv6i21uBLOBOo4vC0PDN1XhP/h9F+h9coc6p9L0xk3
BvhF2Znt6zFwmFGK4B+o7VNNR9j0iJq2BZPaJdGvNcSVxGR3XgPp4bX/xPv3
wXtPmKKqOuJJAAp9DRQeLljzKinieM2rIjH+6Zr3PIxWxbXSa3uiwJxhbda4
Yj1JROkbmgtmXLcVwXnL2DAP5bNU24bxOIgXs0C+wC/AIvK1KWdDHcXbyaAi
RKX2LKCDitStoH/rQ9305Iv63iM8EqN6O4PLYO8xNhgGPDSKAn2D5I48ZJGv
AJ/8y08fLk7lizCFKKLsiJ9WlXfVoN688fAEgfTevkWKkOzXRn3pkQ14VJl4
V55A5bG0NvcW9MvCAcQfBuzBE1/qUABmV2hoexHitfwTxt3g3Mlff93alz9c
oBYFZa4Vbx0a1WvKDsQoDpIvNaQE1sM/h/znhP4MtgTt9VCxgG3L0PS67w8U
fdve8k9evntH30+3trb8/tY7+BB0PGnuyXbRDHm+xPYH8gV3/KJlihzNg7aw
vx3S9oCXqpHDzwYx8jZMIxggThzpmNrEAHrgMWcBwNrJFigtsD1hW3w4Xh7X
Ja3bFYIny3t3hSZbBQ9iFcB33LvT5baDUygnXBVvJtFi/uizXag4hH8ij5Cc
NsyshBzVIUd1SOK+2lzAKHqfaTYMX39Hr4Soyw4pkIQKXRrNIQpxw9OfPSt1
zS8JIeYg0N65SuGp/h7Fun4wTn/l13LqoHHBvLyWR+dcPEORxk+/BXZ91ayf
J9gauJryJxMsmqbWx2sMAbb+8R1E3MAeVevD5tYZtj7+JMegjSKsGsxUXmQJ
w5yssUIIA2oB4ujoG6YCgMODEYPsN1EEBEgCCChYkqCWTuMoLHSbQAbvZAvr
mH7VXkNMBP3ZqTNqZYrPA9XQ7DaRo4XWz4NY6CtW/rQBkSw4XMTPT7/lLJd5
XcId2D3pLJ0GeZNv1ZpF01nVgobJXYHarJ63RQ0RoW612HWCuR0CYY7g/2Py
t07h2zuvLbfZwWmiRss78SQ7MHLAzWRbLI0Fhf0EXatXgHAf/udu2hZC1IYo
q/bH0O4E/rcDse1BFVVlBElqau6Ot6RTTUW1Z2gzVNhxrLgxIKIUsZLCZBxA
x0FwjozaxGio1F+vMCbEs0Z9SvLvF0XeCAymwBxFXPmAZp5DZLb1dTCQjS7R
18G2P9h7Cvil3GwGfuXvHj0BvHssf24E3j1hC/Za6i/RQlbrRIXBtJGrGwFd
cyeMY1J+kN6DAY/Ak6xyuSRPMDfVm4IB3t6Hplv+vjDuXv19n9/34f2HJQQW
/iXBvxRHa9736X1fGDZ23jvygf8e0b8sIydGUvDfd55hzKGs25CyHpKKbBEL
cidW9kGsi8d0Izp+EvF2sLBuqDvAvb7/Etkz8L8J651W7y2E8YVp0xn3Ltwt
eS4xdxMnJvGNwTYYVNocwzX1MdF74NnTyV1EggmqP80iqpKpHzRyz7NoRbtZ
pRSWE7eljcJmmkxZIG37RyGF+6M7DowRO4fc4FMuTOqDDjOIVcSYNOYqCJVA
WDzmAsE5zCIup2dOZwTxbXCnRTq6idLCnIZw9rCcykw+gKJn5G/PVLywSQfK
W4Cfn5vsq3ghr8uItF5lWhUxGNhC44E0aB3NnUMTHbD1MeawA9QZlRNlajtS
ZyOH6+gyqgqhzA8Gn1SCrIifAN7UjXQoD0ElkVQ9CvJdq6S0VRjm1IipvEjM
WafmgXZxrlXk/KzJUt14f68H1iww+AB/y9v66rU7/PZVLx2jtYaHKT40Rdxy
0LObUd7WCDT/Cr14rDX68CZAlPBODwbjkX6SJLiT0kSUWkLczMeZh3M8lEtV
kW50Eot2g7QOENQF4HQQpm9gffmszjIuKuZdzomaulEbEtrUNZViVJm25yY2
1+YxG7Noj9erivIMw9oTgDbZVdvioyJ4WIPyqCHXZYw43/kiJCUUvnBLYPCF
TWRidpRIaOpE4fcIHcvq7OeT9dBYEQieq3h8fk7VzSleUGDVEB82xEJBPgJq
it9rRHAVL6VBNzY25Gy4krsG6B8cJqkftqacr1uED6teJS1N3V2ZXV4uG3KL
9yvEPEA8OSHsyRrKlXbwz9ar/u41CSH8ALENwp7c25Y9g1XDrz25N4H/Nq9F
yx6WXR309Zs30pukqSffvr0GqY6qNQ5Zz5tM82rd2Ayp5R7YqB23pgOpVBfP
Yow8ViwW9idMy9TH1w4GcWDNUU2rcgXtYcI2aE+qqla4yiUON73qJLpnbHEx
6DSOwrm0X9qNhhdA1hpXf8bmVZitoSf441MDfxzhOnOtnyceBLPaaG+nkdmO
+ITM03zmpsL/O5xmjuREWvxdHFBnAdrXK08jy3GMu2Nj2XJOB5qtcrxV4uGh
XR4P/OnTj74OJsptu7vcFl2nkcqNR8JV42f1g/6cZ7LF7baOxs5ugc5DMnWL
m4nNbJmmHbBpjrqDjh1GoMnghblVAit0RYT3hSSqZE6i4d4ObXBi1ApUYZeJ
cfkG9RpmpaqrA3kEzLrTgh/A2PKovRrISXlp38ryy6V34MEf/LdXf3p1JY+u
hHnkuKGHP3784dA6oZyxx38/07+cw+954mip6wP5IrK5r6hMfkUm+xUtZfMO
qizeYAujB6A5hv54NuGTbE3BNADQUs7sgLNhkZsOi5aSdwePZOsaxRqJu16w
4W2DaIdN0vgcqUahDvNGmcYdZ7ygpRFPVa6GFdmOSD8q0ddhfl0dUTTF1csC
zL4K7bbRVTVYEnxtz/OaS2P4VKousNPo2/Lpaj5uai+JeXgYNnMxVeUdyLIT
QVXg/qSI4ztFWZIDucOBD72YA8KZXdSBifYgtuv7/YFpEZZ57qUWg1cd+rNP
f7a3+E+/2o5bFR37eS2p4x6OSVB9NEQQWVM3W/5gm1vMo6QwJW5LLXb3ha2x
TpOwsQUOFRvSn72t6jIOiCMWuLv/6GDJaxFuHbeRlGoDjd+CK5xOJhjbYbKo
3Itry2qOmK135sNwFoix/hnB6viEoPOEQUyryu3W4qx+M0WadJg7mSuB/OGH
VQWh4aCSbVA7OfxS/QTmYOC8KvM8kLWxOhM03FhrW3XtXXiyxNWQ2ljKbTQq
GuD/9XomzJ/0IIwsPq4fKt8BhLxRz/ABpFUUeBqEjlM9W7tA279LvUDPflma
fb18QwOfsaBjUGQm0QPBGgUVilXvwpxCOqsPyqQI+ARnmsQQd0Zd1e1Q92ef
zjQ4sZMog+CcCmBqhzz6lsT7r16asIcP0VLkY9MkJk3BRznWWGssaD6QtcmK
17wSpFVJ0eOtWwLPP9XYSI9nas4yMoMQx6d4+FJ6v/PkL4WCOPoKf4ENLMsG
r4SoWhoZ7YGDwde+YVXQIshnPjhG80V+typtPftep3HRkJK2DbI0zTFiX9uA
8YvatJkM0MJezYKvhLCd+TT958xaCBcDwpS/n0Wieuv/TyRKUp7IUyQy0y0X
nd2tF61Vv8vqaPwX1Hnb3uaHY2bYS/RzMyyRlN7vPZj7LNVEDqDlAu8quxJl
AwMCHRVJZov0YWjj3LcXAPQkVvyFKo7mGjsdYqeE0mHSs4/2LjxocvbxZscW
cOI6T0mxCerbgTGGSDiw0m5MtxDJXoUEfr0r8LIZKdu0KS2cJwx1U9VrGEO3
NKmGaQi3F9LZ6z97LTnr7zGgjPX2oGlNmz/eEIB2nwN/ufQEIa4Yfud58C/6
bjsHfvuZ8IM18INnwm+vgTez8ejrI/A76+GrzyPwu8+Bh+drwPeawUGlwvfq
cwD8tWP3uLR7qAYcqRID/m3XJUK40kGeixr76TgHdwq59lm/RPWce1x2PvjD
fkfDNO2mSh3stexD+0YAr++VDqqsAUActQZk4BkHaMfp57UcoIu8swZk18Ls
ur0MdgFkdxdVNqsSS+hnq602+qO5c0LroKbfuZuRmkaJNgl4sAUpXQ7xPAPQ
iMDWr6BledJCrGAIaGN4nMZYq6nIbD1piRuQPAVaEgBB6UKLaqeVqVZRiSiO
MzNIga51KnD9yqV97yffViDA+tTnfeC09pPxmi7KGR48hlzUp3Qgt94scDpv
wcKaNiXv0AvhIJMs1cvPcUwHq9bkMRP5e7QtKwR/TQuKJPZjlUxhdeyY7K2i
WP3FC+6hxlksFQr8PSaaRiEEuz8VCpgFY+VCiR75SCAdpWP0RDu3V7K6v/Zs
itRu4DujlI9kjrpO/uiveI7MPSF4gJt+1YSq2QnnOQ9g6NXGyMVRPXIieugp
GEo4BGK4X9Gb/0H//sbjah9TgNRrLE7Cxy+cdFeH/n1N/x54zeEduv3r4zt4
+2SA90hkRmEdbq9iXIKXdS1dL4qv8O47iL74vAGenq9u7IKwxWwRrRyeEg1J
ZNwIxH01vD+JA6jyup2l61vMVSLlDXxdgYN7YijlRhF01OIrQOIgm6q22Xnm
LQ07BG325vAKEhVP+NrRKC/o3tYSb7tT3abCh8EC8XnpBrPPONzPZr0+Q9cZ
LNhc8bW3eAMTDPYzaargc9veIHCbln1ovh+UgOwFcIAY08qo+ukiANr6Halx
wOfZ1J3AfLCcF3iRKUSTMKsFnfejXQraeemKo4Kg7yh3LG9QjMNoQkFULlEb
atqkxkWu7mwNahckpubKJn59f+/jjdEYIuNptAQD4epEXwyUptZ0HwCiwpvL
yi38bhv6omWsOiuHDUE9cu6mdrrii+bMIQGFZ/RU7SIkPpdAeX+XhTvmFAOQ
7A4ncJvhlX10FV2k55qMsgcA/MOWCEQZ373u4MczKjbtb/a/eUvLLlxXtGgj
Am+cScwlJSafgZeOwwMIDu1hxNSUGDBBMPnDVw5Xt/ZVnMmblXhEEY/inc0x
7MGx2NXDNua2RVrBY5PPZtp1JZM5SmCweMGOpayaR2QaWItFtJ1J91BicQFt
K5Rmm+5YArlEwgKfh5QBoeM7UWIWmS7WsEXHpi8V0jkeZI8zZ2n/KbgJzulw
fYe5jU580M3L1SsY4Thd3BkK0lE7e/+p3e+wzMFrUs0CujB6hCruWLYVFT3Q
vJS9tgLlyV67qXTefo28QmwK7jReUBf66aS+xSLkUmHF9cZ1Fw8lOgd1Jd3r
TycR6/c+oM6/B+0exFiu3R9K/yX8PT0+OT/Es1rwne+g7ZiW0ELKDWxe2g6A
2Kgg6DHD0NURvNTc9fXvZF8evMXZST5O0UGPAZBhaD+bO5vc18g150xMOl2D
FyozLlgG+OXIKOU2DFvrO43qmc+oUj7GVvOiut7Eo0NJGNBxlBgWgSXhL9gB
nrTb65Rb/rghi/4NCm3LXDVd3c/Ytpt6XBlwZ88fmXubcXxcgYGLo/CoX67i
O4dnVyYRlBfC2qoKruCgfBzWxgQRXWsIuGDwuI+vaZHLdb3ef9W63NzsyPuH
juwh80hgv9Aw/FD+57/9795V+3ppRY4/nJ9+Pgd79fmCzx0cyI29LqAqX7R5
KXgSQKhSBGE5foy+KHN1NkqN2VbUXJXNx4YtHLKpvQaL6/QVHwvS5uKiBagz
nDH/xq3KZDM3ZfNBWfAtpCn5HvFpI95PTVnRwri+qLyHf0nCDbcwQDUSoyu1
yZ9+pUObqI+mWVosaD+9Kl1CO0JrMDaGDF/mdFEyITN3va3e4Y3LZXBEFFwZ
joFXc2erFuT/i3IHZ6+aRZOCV9hQ7RcRAk0zGEP3/uEuMQDd/xowL+I1OKUO
qlWmVBlsXAp3z7u6ua/5MmOrrzHTbRheSENCE4GZTTDJl9qnmSVLnKZf9JJl
b+Db3mwz6G/1B3ubPfnmjbzvgU4o1VGpW0AZybdvgbubeRnzfUDsbyr8jOx0
QJPUsovaTmI1iMrwxTVeFHE4/pKkt+D4TJkJV89rgp/LIqjCAy9JPbMrABMd
q8XyrRfrrsNrvhO7dplw05FLuj6qcnJu6eC8Y67Q/Bynnw7B4UyzL/jkn2Nw
vOQPoAm/4MG6N7/yfRDPFJy7P6VZqEFrw7qaO5n4G1bn+/5b8V9m8DoOaWYA
AA==

-->

</rfc>
