<?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.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-fedyk-netmod-yang-normal-form-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="YANG String Normalized Form">Extending Normalized Forms to String-Derived Types</title>
    <seriesInfo name="Internet-Draft" value="draft-fedyk-netmod-yang-normal-form-01"/>
    <author initials="D." surname="Fedyk" fullname="Don Fedyk">
      <organization>LabN Consulting, L.L.C.</organization>
      <address>
        <email>dfedyk@labn.net</email>
      </address>
    </author>
    <author initials="S." surname="Mansfield" fullname="Scott Mansfield">
      <organization>Ericsson</organization>
      <address>
        <email>scott.mansfield@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Operations and Management</area>
    <workgroup>Network Modeling</workgroup>
    <keyword>YANG</keyword>
    <keyword>NETMOD</keyword>
    <keyword>normalized form</keyword>
    <keyword>MAC address</keyword>
    <abstract>
      <?line 50?>

<t>YANG models frequently define identifiers using string or string-derived
types whose lexical space permits multiple representations of the same
underlying value.  This can lead to incorrect behavior when semantically
equivalent values are compared lexically.</t>
      <t>This document adds an optional extension to the existing YANG concept of
normalized form to string-derived types whose lexical space permits
multiple representations of the same underlying value.</t>
    </abstract>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>YANG <xref target="RFC7950"/> treats values of type <tt>string</tt> as lexically distinct;
equality and uniqueness are therefore determined by exact string
comparison.</t>
      <t>YANG defines normalized representations for many built-in data types.
Canonical or normalized forms provide a unique representation of a value
independent of how it may have been entered or encoded.</t>
      <t>For string-derived types, YANG currently provides no mechanism to define a
normalized form distinct from the lexical representation.  As a result,
semantically equivalent values that have multiple valid lexical
representations may not compare equal and may not be detected as
duplicates.</t>
      <t>This issue has been observed in both IETF and IEEE YANG modules, leading to
interoperability problems and incorrect duplicate detection.  Existing YANG
typedefs such as <tt>mac-address</tt> (<xref target="RFC6991"/>, <xref target="RFC9911"/>) define syntax but
do not define normalized comparison semantics.</t>
      <t>A prominent example is the representation of MAC addresses in YANG.  IETF
and IEEE modules define different lexical forms for MAC addresses, and
equivalent values may not compare equal when represented using different
valid formats.  This problem is described in <xref target="mac-address-background"/>.</t>
      <t>While MAC addresses provide a clear motivating example, the underlying
issue is more general.  YANG lacks a mechanism for schema authors to define
normalized forms for string-derived types whose lexical space permits
multiple representations of the same underlying value.</t>
      <t>The resulting normalized form is used for equality-based operations.  The
normalized form is an abstract comparison value and is not a new lexical
representation.  This extension does not alter the lexical space or encoding
requirements of the underlying YANG type.</t>
      <t>This mechanism is intentionally non-invasive.</t>
      <t>This extension defines a normalization procedure for determining semantic
equivalence between values.  Unless explicitly defined by a future
extension, it does not alter the relational comparison semantics of the
underlying YANG type.  Operations based on equality (such as equality tests
and uniqueness evaluation) operate on the normalized form.  Relational
operators (&lt;, &lt;=, &gt;, &gt;=) continue to use the semantics of the
underlying type.</t>
      <t>Existing YANG modules remain valid and unchanged.  The extension is applied
only where normalized forms are needed and has no effect on implementations
that do not support it.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="problem-statement">
      <name>Problem Statement</name>
      <t>When string-derived types permit multiple lexical representations of the
same value, the following issues can arise:</t>
      <ul spacing="normal">
        <li>
          <t>Semantically equivalent values may not compare equal.</t>
        </li>
        <li>
          <t>Duplicate entries may not be detected in keyed lists.</t>
        </li>
        <li>
          <t>Leaf-list uniqueness constraints may be violated.</t>
        </li>
        <li>
          <t>XPath equality comparisons may yield incorrect results.</t>
        </li>
      </ul>
      <t>Pattern restrictions alone do not solve this problem, because they validate
syntax but do not consider comparison semantics.</t>
    </section>
    <section anchor="design-goals">
      <name>Design Goals</name>
      <t>The solution defined in this document:</t>
      <ul spacing="normal">
        <li>
          <t><bcp14>MUST NOT</bcp14> alter the lexical space or encoding requirements of the underlying type.</t>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> provide deterministic comparison semantics.</t>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> apply to equality and uniqueness operations.</t>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> be minimally invasive to existing YANG modules.</t>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> be opt-in and backward compatible.</t>
        </li>
        <li>
          <t><bcp14>MUST</bcp14> be general across string-derived types.</t>
        </li>
        <li>
          <t><bcp14>SHOULD</bcp14> be simple to implement.</t>
        </li>
        <li>
          <t><bcp14>SHOULD</bcp14> avoid complex transformation languages.</t>
        </li>
      </ul>
    </section>
    <section anchor="proposed-solution">
      <name>Proposed Solution</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>This document defines a YANG extension that allows a string-derived type to
specify a normalization algorithm.</t>
        <t>The resulting normalized form is used for equality-based operations,
including equality comparisons, list-key identity, leaf-list uniqueness, and
evaluation of the YANG <tt>unique</tt> statement.  The normalized representation is
not required to appear in an encoding or retrieval operation.</t>
        <t>This extension does not modify the lexical space of an existing YANG type
and does not require changes to existing typedef definitions.  The extension
may be attached to existing types, derived types, or schema nodes where
normalized form behavior is desired.  Implementations that do not understand
the extension continue to process the lexical type normally.
Implementations that advertise support for the extension apply the specified
normalization algorithm for equality and uniqueness operations.</t>
        <t>Use of this extension does not, by itself, change the behavior of
implementations that do not support it.</t>
        <t>A leafref whose target type has a normalized form <bcp14>MUST</bcp14> use that normalized
form when determining whether its value identifies an existing target
instance.  When evaluating an instance-identifier, predicate values
corresponding to list keys or leaf-list values having a normalized form <bcp14>MUST</bcp14>
be validated according to the corresponding schema node's type and compared
using normalized equality.  The normalized representation is not required to
appear in the instance-identifier lexical value.</t>
        <t>For NETCONF insertion before or after an existing user-ordered list or
leaf-list entry, values carried in <tt>yang:key</tt> or <tt>yang:value</tt> <bcp14>MUST</bcp14> conform
to the lexical space of the corresponding schema node.  When the server
resolves the target entry, it <bcp14>MUST</bcp14> use normalized equality if the
corresponding schema node has a normalized form.  The normalized
representation itself is not required to appear in <tt>yang:key</tt> or
<tt>yang:value</tt>.</t>
        <t>When a NETCONF subtree-filter content-match node corresponds to a schema
node having a normalized form, the filter value <bcp14>MUST</bcp14> first be valid
according to the target node's YANG type.  The server <bcp14>MUST</bcp14> compare the
filter value and datastore value using their normalized forms.
Normalization does not expand the lexical space accepted by the type, and a
retrieved value continues to use the encoding rules of the underlying type.</t>
      </section>
      <section anchor="yang-extension-definition">
        <name>YANG Extension Definition</name>
        <sourcecode type="yang"><![CDATA[
module ietf-yang-normalized-form {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yang:normalized-form";
  prefix iynf;
  organization
    "IETF NETMOD Working Group";

  contact
    "WG Web: <https://datatracker.ietf.org/wg/netmod/>
     WG List: <mailto:netmod@ietf.org>";

  description
    "Defines an extension for declaring a normalized
     form for string-derived types.";
  revision 2026-07-01 {
    description "Initial revision.";
    reference "TBD: This document.";
  }
  identity normalized-form {
    description
      "Base identity for normalized forms.";
  }
  identity mac-48 {
    base normalized-form;
    description
      "Normalized form for a 48-bit MAC address.

       The input value MUST first be valid according to the
       lexical space of the type to which this normalized form
       is applied. All separators are removed and hexadecimal
       digits 'a' through 'f' are converted to uppercase. The
       resulting normalized form consists of 12 uppercase
       hexadecimal digits.";
  }
  extension normalized-form {
    argument form;
    description
      "Specifies a deterministic normalization form
       used to derive the normalized form of a value.";
  }
}
]]></sourcecode>
      </section>
      <section anchor="semantics">
        <name>Semantics</name>
        <t>If a type includes the <tt>normalized-form</tt> extension:</t>
        <ol spacing="normal" type="1"><li>
            <t>A normalized form <bcp14>MUST</bcp14> be derived using the specified identity.</t>
          </li>
          <li>
            <t>Equality comparisons, including <tt>=</tt> and <tt>!=</tt>, <bcp14>MUST</bcp14> use the normalized
form.</t>
          </li>
          <li>
            <t>List-key identity and list-key uniqueness <bcp14>MUST</bcp14> be evaluated using the
normalized form.</t>
          </li>
          <li>
            <t>Leaf-list uniqueness <bcp14>MUST</bcp14> be enforced using the normalized form.</t>
          </li>
          <li>
            <t>Evaluation of the YANG <tt>unique</tt> statement <bcp14>MUST</bcp14> use the normalized form
for each referenced descendant schema node that has a normalized form.</t>
          </li>
          <li>
            <t>A <tt>leafref</tt> whose target type has a normalized form <bcp14>MUST</bcp14> use that
normalized form when determining whether its value identifies an existing
target instance.</t>
          </li>
          <li>
            <t>When evaluating an <tt>instance-identifier</tt>, predicates that identify
list-key or leaf-list values having a normalized form <bcp14>MUST</bcp14> use normalized
equality after validating the predicate value against the corresponding
schema node's lexical space.</t>
          </li>
          <li>
            <t>Relational operators (&lt;, &lt;=, &gt;, &gt;=) are not changed by this
extension and continue to use the semantics of the underlying YANG type.</t>
          </li>
          <li>
            <t>The lexical representation <bcp14>MUST NOT</bcp14> be modified solely to satisfy this
extension.</t>
          </li>
        </ol>
      </section>
      <section anchor="normalized-identity">
        <name>Normalized identity</name>
        <t>Normalized forms are identified by identity and are associated with a
deterministic algorithm.</t>
        <section anchor="mac-48">
          <name>mac-48</name>
          <t>The <tt>mac-48</tt> identity applies to 48-bit MAC addresses represented as six
hexadecimal octets.  The lexical representation is defined by the type that
uses the extension.</t>
          <t>The normalization procedure is:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validate the input against the lexical space of the type to which the
normalized form is applied.</t>
            </li>
            <li>
              <t>Remove the separator characters permitted by the lexical representation
of the underlying type.</t>
            </li>
            <li>
              <t>Convert hexadecimal digits to uppercase.</t>
            </li>
            <li>
              <t>Use the resulting 12 hexadecimal digits as the normalized form of the MAC
address.</t>
            </li>
          </ol>
          <t>Equivalent inputs include:</t>
          <artwork><![CDATA[
aa:bb:cc:dd:ee:ff
AA:BB:CC:DD:EE:FF
aa-bb-cc-dd-ee-ff
AA-BB-CC-DD-EE-FF
]]></artwork>
          <t>These values yield the same normalized form:</t>
          <artwork><![CDATA[
AABBCCDDEEFF
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="design-rationale">
      <name>Design Rationale</name>
      <t>A normalized-form identity names a normalization algorithm rather than a
regular-expression pattern.  Pattern restrictions can constrain lexical
syntax, but they cannot in general express normalization procedures such as
case folding, separator removal, IPv6 textual normalization, or other
procedural transformations.  The identity therefore provides a stable name
for a fully specified normalization procedure.  A pattern may be useful as
part of the description of a simple normalization, but it is not sufficient
as the general mechanism defined by this document.</t>
    </section>
    <section anchor="example-usage">
      <name>Example Usage</name>
      <t>The definition should be in a top level YANG module.  While new types with
the normalized form could be created it is also valid to just modify in
place IEEE mac-address to support the normalized form.</t>
    </section>
    <section anchor="ieee-mac-address-example">
      <name>IEEE MAC Address example</name>
      <t>The following example show that the normalized form can be added to any
definition.  Below is an IEEE example.</t>
      <sourcecode type="yang"><![CDATA[
      leaf address {
        type ieee:mac-address;
        iynf:normalized-form "iynf:mac-48";
        mandatory true;
        description
          "A sample IEEE MAC address format.";
      }
]]></sourcecode>
    </section>
    <section anchor="ietf-mac-address-example">
      <name>IETF MAC Address example</name>
      <t>The following example show that the normalized form can be added to any
definition.  Below is an IETF example.</t>
      <sourcecode type="yang"><![CDATA[
      leaf address {
        type ietf:mac-address;
        iynf:normalized-form "iynf:mac-48";
        mandatory true;
        description
          "A sample IETF MAC address format.";
      }
]]></sourcecode>
    </section>
    <section anchor="comparison-example">
      <name>Comparison Example</name>
      <t>The following values use different lexical representations but identify the
same underlying 48-bit MAC address:</t>
      <artwork><![CDATA[
aa:bb:cc:dd:ee:ff
AA-BB-CC-DD-EE-FF
]]></artwork>
      <t>Because both types declare the same <tt>mac-48</tt> normalized form, both values
yield the same normalized form:</t>
      <artwork><![CDATA[
   AABBCCDDEEFF
]]></artwork>
      <t>Implementations that support this extension compare the values using the
normalized form for equality and uniqueness operations, while preserving
each type's lexical requirements.</t>
    </section>
    <section anchor="list-key-example">
      <name>List Key Example</name>
      <sourcecode type="yang"><![CDATA[
list fdb-entry {
    key "mac vlan";
    leaf mac {
      type mac-address;
      iynf:normalized-form "iynf:mac-48";
    }
    leaf vlan {
        type uint16;
    }
    leaf port {
        type string;
    }
}
]]></sourcecode>
      <t>A list key using the IETF typedef continues to accept only the IETF
colon-separated lexical form.  A corresponding IEEE model can use the IEEE
typedef and preserve the IEEE dash-separated lexical form.  In both cases,
the shared <tt>mac-48</tt> normalized form enables consistent equality and
duplicate detection across representations.</t>
    </section>
    <section anchor="backward-compatibility">
      <name>Backward Compatibility</name>
      <t>Existing YANG models are unaffected unless the extension is used.  The
lexical space and encoding requirements of the underlying type are
unchanged.  Behavior changes only for operations whose semantics depend on
equality or identity.</t>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>While motivated by MAC addresses, this mechanism can apply to any
string-derived type with multiple equivalent representations, including
case-insensitive identifiers, formatted identifiers, and normalized
encodings.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Normalization reduces ambiguity and helps prevent duplicate or conflicting
configuration entries.</t>
      <t>Implementations <bcp14>MUST</bcp14> ensure that normalization algorithms are deterministic
and unambiguous.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC9911">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schönwälder" initials="J." role="editor" surname="Schönwälder"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document defines a collection of common data types to be used with the YANG data modeling language. It includes several new type definitions and obsoletes RFC 6991.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9911"/>
          <seriesInfo name="DOI" value="10.17487/RFC9911"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IEEE-802-1Qcw" target="https://doi.org/10.1109/IEEESTD.2023.10317806">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks--Bridges and Bridged Networks Amendment 36: YANG Data Models for Scheduled Traffic, Frame Preemption, and Per-Stream Filtering and Policing</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2023" month="November" day="17"/>
          </front>
          <seriesInfo name="IEEE" value="802.1Qcw-2023"/>
        </reference>
      </references>
    </references>
    <?line 448?>

<section anchor="mac-address-background">
      <name>MAC Address Representation Background</name>
      <section anchor="background">
        <name>Background</name>
        <t>MAC Address Formats in the IETF and IEEE YANG modules are different.</t>
      </section>
      <section anchor="current-state">
        <name>Current State</name>
        <t>The IETF and IEEE YANG modules define MAC-address types derived from the
YANG string type, but use different lexical patterns and canonical
representations.  The issue is that the IETF and IEEE use different patterns
and have different canonical forms, which leads to a situation where
equivalent MAC Addresses will not match.</t>
        <t>Both organizations have a long history of supporting these formats.</t>
        <t>This appendix is meant to document the issue, and support the solution
proposed in this document.</t>
        <t>For example, the following MAC Address is in IETF Canonical Format</t>
        <artwork><![CDATA[
   90:10:00:01:02:aa
]]></artwork>
        <t>For example, the following MAC Address is in IEEE Canonical Format</t>
        <artwork><![CDATA[
   90-10-00-01-02-AA
]]></artwork>
        <t>The MAC addresses are equivalent, but will not match if used in an XPath, or
as a key, or any string comparison.</t>
        <t>There are several potential trouble spots in published IETF YANG modules.</t>
      </section>
      <section anchor="detail">
        <name>Detail</name>
        <section anchor="ietf-format">
          <name>IETF Format</name>
          <t>The IETF Format (from ietf-yang-types@2013-07-15.yang) <xref target="RFC9911"/> used in
the mac-address typedef is found below.</t>
          <artwork><![CDATA[
typedef mac-address {
 type string {
   pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
 }
 description
  "The mac-address type represents an IEEE 802 MAC address.
   The canonical representation uses lowercase characters.

   In the value set and its semantics, this type is equivalent
   to the MacAddress textual convention of the SMIv2.";
 reference
  "IEEE 802: IEEE Standard for Local and Metropolitan Area
             Networks: Overview and Architecture
   RFC 2579: Textual Conventions for SMIv2";
}
]]></artwork>
        </section>
        <section anchor="ieee-format">
          <name>IEEE Format</name>
          <t>The IEEE Format used in the mac-address typedef <xref target="IEEE-802-1Qcw"/> is found
below.</t>
          <artwork><![CDATA[
typedef mac-address {
 type string {
   pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}";
 }
 description
   "The mac-address type represents a MAC address in the canonical
    format and hexadecimal format specified by IEEE Std 802. The
    hexadecimal representation uses uppercase characters.";
 reference
   "3.1, 8.1 of IEEE Std 802";
}
]]></artwork>
        </section>
      </section>
      <section anchor="rational">
        <name>Why Normalized Form Helps</name>
        <t>Normal form allows these definitions to remain.  The YANG extension
described in this document enables comparison of MAC addresses regardless of
the format.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Balazs Lengyel and Joe Clarke for their comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ZtRNb8Pp/wG8SpabAkMAAA==

-->

</rfc>
