<?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.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-demarco-oauth-nonce-endpoint-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="Nonce Endpoint">OAuth 2.0 Nonce Endpoint</title>
    <seriesInfo name="Internet-Draft" value="draft-demarco-oauth-nonce-endpoint-00"/>
    <author fullname="Giuseppe De Marco">
      <organization>Independent</organization>
      <address>
        <email>demarcog83@gmail.com</email>
      </address>
    </author>
    <author fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <date year="2024" month="February" day="06"/>
    <keyword>OAuth 2.0</keyword>
    <abstract>
      <?line 43?>
<t>This document defines the Nonce Endpoint for OAuth 2.0 implementations <xref target="RFC6749"/>. It details how an Authorization Server generates and issues opaque Nonces and how a client can learn about this endpoint to obtain a Nonce generated by the Authorization Server.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://peppelinux.github.io/draft-demarco-nonce-endpoint/draft-demarco-nonce-endpoint.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-demarco-oauth-nonce-endpoint/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/peppelinux/draft-demarco-nonce-endpoint"/>.</t>
    </note>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification presents a comprehensive guide to the Nonce endpoint in OAuth 2.0 implementations <xref target="RFC6749"/>. It describes in detail how a client can request and receive a server-generated Nonce, which is a unique, one-time use, opaque string. This document provides in-depth insights into the cryptographic methods used in generating Nonces to protect the confidentiality of the information associated with them. In addition, it is a great resource for developers and system architects who desire to strengthen the scalability, security, and efficiency of their systems while using OAuth 2.0.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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="terminology">
      <name>Terminology</name>
      <dl>
        <dt><strong>Nonce</strong>:</dt>
        <dd>
          <t>A random or pseudo-random number that is generated for a specific use, typically for cryptographic communication. The Nonce is used to protect against replay attacks by ensuring that a message or data cannot be reused or retransmitted. The term "Nonce" stands for "number used once" and it <bcp14>MUST</bcp14> be unique within some scope.</t>
        </dd>
        <dt><strong>Nonce Issuer</strong>:</dt>
        <dd>
          <t>The entity that generates and provides the Nonce. In the context of OAuth 2.0, the Nonce Issuer would typically be the Authorization Server.</t>
        </dd>
        <dt><strong>Nonce Endpoint</strong>:</dt>
        <dd>
          <t>The HTTP endpoint provided by the Nonce Issuer for the issuance of the Nonces.</t>
        </dd>
      </dl>
    </section>
    <section anchor="requirements">
      <name>Requirements</name>
      <t>The <strong>Nonce Endpoint</strong> <bcp14>MUST</bcp14> satisfy the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>Employ TLS for securitung the Endpoint <xref target="RFC5246"/>.</t>
        </li>
      </ul>
      <t>The <strong>Nonce</strong> <bcp14>MUST</bcp14> satisfy the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>Pure opacity to recieving Clients.</t>
        </li>
      </ul>
      <t>The <strong>Nonce Issuer</strong> <bcp14>MUST</bcp14> satisfy the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>Generate a unique Nonce for each request to ensure the Nonce Issuer never produces identical Nonces, regardless of whether they occur simultaneously or at different times;</t>
        </li>
        <li>
          <t>Encrypt the Nonce with an encryption key that:
          </t>
          <ul spacing="normal">
            <li>
              <t><bcp14>MUST NOT</bcp14> supplied by the Nonce Issuer to the Client;</t>
            </li>
            <li>
              <t><bcp14>MUST NOT</bcp14> disclosed by the Nonce Issuer to any external entity beyond its domain.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>The <strong>audiences of the Nonces</strong> satisfies the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>The servers, within the Nonce Issuer's domain, <bcp14>SHOULD</bcp14> decrypt the Nonce and access its decrypted contents. No other entity might decrypt or know the decrypted contents of the Nonce.</t>
        </li>
      </ul>
    </section>
    <section anchor="nonce-request">
      <name>Nonce Request</name>
      <t>When a Client needs a Nonce, it sends an HTTP GET request to the Nonce Endpoint.</t>
      <t>Below is a non normative example of the HTTP Request made by a Client to the Nonce Endpoint.</t>
      <sourcecode type="http"><![CDATA[
GET /nonce HTTP/1.1
Host: server.example.com
]]></sourcecode>
    </section>
    <section anchor="nonce-response">
      <name>Nonce Response</name>
      <t>The Nonce Endpoint provides a Nonce to the Client, encapsulated within a JSON object <xref target="RFC7159"/>.
The response <bcp14>MUST</bcp14> use the HTTP Header Content-Type value set to <tt>application/json</tt> and <bcp14>MUST</bcp14> provide in the response message a JSON object with the member <tt>nonce</tt>.</t>
      <t>Below is a non-normative example of the response given by a Nonce Endpoint:</t>
      <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "nonce": "d2JhY2NhbG91cmVqdWFuZGFt"
}
]]></sourcecode>
    </section>
    <section anchor="nonce-endpoint-discovery">
      <name>Nonce Endpoint Discovery</name>
      <t>When an Authorization Server requires the use of a Nonce in the request for a specific resource and the Client does not provide it in its request,
the Authorization Server <bcp14>MUST</bcp14> return an HTTP response with the HTTP status code <tt>400</tt> and an <tt>error</tt> field with the value set to <tt>"nonce_required"</tt>.</t>
      <t>This response <bcp14>MUST</bcp14> also contain the <tt>Nonce-Endpoint-URI</tt> HTTP header, with the value set to the URL corresponding to the Nonce Endpoint, where the Client <bcp14>SHOULD</bcp14> request and fetch a new Nonce. Once the Nonce is received, the Client <bcp14>MAY</bcp14> renew the request to the Authorization Server, including the obtained Nonce.</t>
      <t>Below is a non-normative example of an error response issued by an Authorization Server that requires the Nonce in the Client request, the response informs the Client about the Nonce Endpoint where the Nonce should be requested:</t>
      <sourcecode type="http"><![CDATA[
HTTP/1.1 400 Bad Request
Nonce-Endpoint-URI: https://server.example.org/nonce-endpoint

{
  "error": "nonce_required",
  "error_description":
    "Authorization server requires the nonce in the request"
}
]]></sourcecode>
      <t>In cases where, for some reasons, a correctly issued Nonce can no longer be considered valid by the Authorization Server that receives it, the Authorization Server <bcp14>MUST</bcp14> return the generic error <tt>"nonce_required"</tt> reporting the same description as <tt>"error_description"</tt>, as if the Nonce had not been received. The cases when an issued Nonce is considered no longer valid <bcp14>MAY</bcp14> be caused by the rotation of the encryption keys, its expiration or other specific conditions internal to an implementation.</t>
    </section>
    <section anchor="non-normative-examples-of-a-nonce-payload">
      <name>Non-normative Examples of a Nonce Payload</name>
      <t>The decrypted Nonce payload may use different formats and encodings, according to the different implemententative requirements, and contains any kind of implementation-specific claims, such as the issuance time, the time of expiration, the audiences and other where needed.</t>
      <t>Below are provided some non-normative examples, describing how a decrypted and JSON serialized Nonce payload may appear:</t>
      <artwork><![CDATA[
{
  "iss": "https://server.example.org",
  "iat": 1615908701,
  "exp": 1615995101,
  "source_endpoint": "https://server.example.org/nonce-endpoint",
  "aud": [
    "https://service.example.com/endpoint",
    "https://another.example.com/cb"
  ]
}
]]></artwork>
      <t>Please note that the values represented in the previous examples may depend on domain specific requirements and <bcp14>MUST NOT</bcp14> be intended as normative.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Nonce Endpoint <bcp14>MUST</bcp14> be protected by TLS to prevent eavesdropping and man-in-the-middle attacks, therefore the practices defined in <xref target="BCP195"/> should be followed.</t>
      <t>The Nonce Issuer <bcp14>MUST</bcp14> securely generate and store the encryption key used to encrypt the Nonce. The robustness of the encryption key plays a crucial role in the security of the Nonce Endpoint. The following considerations <bcp14>MUST</bcp14> be taken into account:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Key Strength</strong>: The cryptographic key used to encrypt the Nonce requires sufficient length to withstand brute-force attacks. A key length of 256 bits has been proposed as a common practice to ensure a minimum level of security.</t>
        </li>
        <li>
          <t><strong>Key Management</strong>: The cryptographic key requires secure management, which includes secure generation, storage, and revocation. Access to the key necessitates strict control, with access granted only to authorized entities.</t>
        </li>
        <li>
          <t><strong>Key Rotation</strong>: Regular key rotation is a good practice to mitigate the risk of key compromise. The frequency of key rotation depends on the specific requirements and threat model, but a common practice is to rotate keys frequently.</t>
        </li>
        <li>
          <t><strong>Randomness</strong>: To assure the randomness of the cryptographic key, it requires the usage of a safe random number generator. Attackers can simply guess predictable keys.</t>
        </li>
        <li>
          <t><strong>Secure Transmission</strong>: If the cryptographic key needs to be transmitted over a network and within the Nonce Issuer domain, it requires the usage of secure protocols such as TLS.</t>
        </li>
        <li>
          <t><strong>Backup and Recovery</strong>: Cryptographic keys require secure backup and recovery mechanisms. This ensures that the key can be retrieved in the event of its loss while also prohibiting unauthorised access to the backup.</t>
        </li>
      </ol>
      <t>The security of the Nonce Endpoint is only as strong as the security of the encryption key. Therefore, proper key management practices are essential.</t>
    </section>
    <section anchor="considerations-about-nonce-vs-jti">
      <name>Considerations about Nonce vs. jti</name>
      <t>This section provides some thought about the main differences and scopes of the Nonce in compared to the <tt>jti</tt> claim defined in <xref target="RFC7519"/>.</t>
      <t>Both <tt>jti</tt> and Nonces are used to prevent replay attacks, however Nonces offer more implementation flexibility and are considered best practice. They can be created and managed stateless (e.g., by issuing the hmac over the current time as the Nonce), as this document outlines.</t>
      <t>The main differences between the use of the <tt>jti</tt> and the Nonces can be summarized as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Generation</strong>: Nonces are generated by the server, while <tt>jti</tt> is generated by the Client.</t>
        </li>
        <li>
          <t><strong>Storage</strong>: Nonces can be self-authenticating and self-contained and therefore need not be stored. A common way to achieve this is for the Nonce to contain content encrypted to the Authorization Server that creates it. On the other hand, checking <tt>jti</tt> properly definitely requires a store that is shared across all domains that the associated JWT can be presented in.</t>
        </li>
        <li>
          <t><strong>Lifetime</strong>: The life span difference between a Nonce and a <tt>jti</tt> is significant. Nonces are kept just until the Client responds, which happens practically immediately after they are obtained, resulting in a very short lifespan. A <tt>jti</tt>, on the other hand, must be stored until the expiration window of its associated JWT expires, which is a substantially longer length than that of a Nonce.</t>
        </li>
        <li>
          <t><strong>Security</strong>: Nonces prevent replay attacks by ensuring that the proof of possession is fresh. On the other hand, <tt>jti</tt> does not guarantee freshness and using client-generated timestamps has problems, even for non-attacking Clients (e.g. devices with incorrect time-zones or daylight saving settings).</t>
        </li>
      </ol>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7159">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2014"/>
            <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="RFC" value="7159"/>
          <seriesInfo name="DOI" value="10.17487/RFC7159"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="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>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
          <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
            <front>
              <title>Deprecating TLS 1.0 and TLS 1.1</title>
              <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
              <author fullname="S. Farrell" initials="S." surname="Farrell"/>
              <date month="March" year="2021"/>
              <abstract>
                <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
                <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
                <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="8996"/>
            <seriesInfo name="DOI" value="10.17487/RFC8996"/>
          </reference>
          <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/rfc9325">
            <front>
              <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
              <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
              <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
              <author fullname="T. Fossati" initials="T." surname="Fossati"/>
              <date month="November" year="2022"/>
              <abstract>
                <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
                <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="9325"/>
            <seriesInfo name="DOI" value="10.17487/RFC9325"/>
          </reference>
        </referencegroup>
      </references>
    </references>
    <?line 217?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5VabXMbuZH+Pr8Cx3y4i4ukLa/t3WVySeR3bWzLJ8nn2nO5
VuAMSGI9M2AGGMncrc1vyW/JL7unu4F5oShV4nKVSMwAaPTL0083OJvNsmBD
aRZqcnrcho16OH+g3rk6N+pFXWydrcMk08tlY67wyv6DXAezds1uoWy9cllW
uLzWFRYrGr0Ks8JUusndzGmsPKtp8szEybMHDzLfLivrvXV12G0x6+TFxUul
fqd06R12s3VhtnjfYKupmpjCBtdYXdKXk+On+OMafDq7eDnJ6rZammaRFZBo
keWu9qb2rV+o0LQmg+zfZFi3MRrrnpu8bWzYTTB07Zov68a124Xqz/8Rg7Ze
q1f0IPtidnirWGRq1r+TXZm6xU6/UypO//iKvshBxgtguNK2hFZEH+vvvvnL
mkbmuasyLGDDpl1CsK3Zbk1p6/br/bECx6qbYE6Jc/qAOZsQtn5x/34/dy7r
za27c5U7H843oSonWUaGcw0dHXsqtWrLUgz8yraedlTPjXpLC/Bz16x1bX/R
ASaFOXv78VNzlxb2NzhtrFHnwZjSHFj6otG1r9pghgvDOcxfQnoyh/u0PmDM
Z1ntmgpTr2Axpc5ePnt4dPT9In2QoccPHz1ZpA8y9OTbR/IWfZChb48eyxB9
iEOP41r0IcsoEgabPX32/uj7x4v4N8tms5nSS8il85BdbKxXCJq2go6gmJWt
jVdhY/ZCUGHJgX/aalsamsLa8OpTFPHzXJ3QMgHq8GrjrpWu1TGbMGpOnZvm
yjRqbWrTkAvhjUIhBlt8dFv9tzZuLQ94CZWXlsTLsVhpdFNDftcGiAnhk8Oo
4JRbYmM8jcKnPQq13PGZDkkyF41UtihgaITKSR0aV7Q5vZOJgvzW5HZlc5m3
bQxiO3gSzFX4tkGkQ9lq3drCkBy9/jrpINa/rj6fN3YJDWCS6PKmHhoDTfnA
SmpMbmh/rTwfadYfnKWYquuNzTfQMl5pa4uZQK7azIKtjEIYTZPmyVvr9VyN
3WLbuCucjORBtG5xCIsDrzeBRuJx82a3DW7d6C22UpWBogtPaxd0iigQIVI0
LqZh2WDyINNdvbIUp0BXAKNyKx7uXBlq19673PKproEv9LyCvvCgAC7jjamy
Qc64BswGqMW7toERyHcLc2VKtzWN+JXf+WAq4HG+sSSEh4ocad42bEEowtRr
bFGzHD7XpV5aEm0KJQt6T3kls4JjwCx5Eto2cXVa05akYDp3Z/05OdkzV1/R
acn6tMpzijw+hSefMwqYT6kBOpy8/XB+QRmH/qp3p/z57MX/fDg5e/GcPp+/
Pn7zpvuQxTfOX59+ePO8/9TPfHb69u2Ld89lMkbVaCibvD3+cSJnm5y+vzg5
fXf8ZkJGDCOn0KKoJRkpmAZhQJbRPkvuy4YH6PzzH0eP1K+//kfEut9+i1++
O/r2Eb5cQ8eym6vLXfwKNe4yDXTXDa2iyxJOv7UBeRnvIiARD7XamMZAm/c+
kWY+L9Qfl/n26NGf4gAdeDSYdDYaZJ3dHLkxWZR4YOjANp02R+N7mh7Le/zj
6HvS+2Dwj39GbjVqdvTdn/+UkQtdmKaytSvdegcd3OO4undvkS2UOlbIQYWr
iJ5svWkLN4sDwlKgX82h0gMFxYjugE5AAVQCmFfCKvR0HOFAvgpQIpBIgJEQ
z8aoHwS4XgOVPQXkttQ7pUPQ+RdPoEwUiRBHBNLADe/12pDc4FGakK52gZys
MbwqHsDROMPaALllZ/hfFbnhBKGLo3oWeRKPK1P5KWeboNhBsKygIQMK/My7
imIdMDHvVKpOKDc1UbO0G8Vt2InI4zTWAWWXABigIsAF8zUQRnRIMB0kCtkF
Id+WxUDxEPGOxJVETFl6IOTri4v3ffaJgnWJcLQnaYrBFl81jUfwFaRmuDpD
tgEyUuBHfLq5tejUQ0S/kl1WrizdNZm3GcxfIOGqF8iAbqcu3pzz9hFSW/aE
Aev4FNnQ5/lo139zs/ctsAoZLmezOcqX1lzRq884ofrx6p3F/61NXkVP6FJs
VDIdz2hk35SxIQC7vblpidoQNdoy/aB0ywkRjhBNMcUaa92Ap3hPRgJWYgk2
HpJPDhUqb6u2RAAY13q4DwU1CIVdrQCVxJGQ8P0fSP81h/NABM6pIBZGnpCf
UQ4iLycWOVMJU5Vvt1vo7bAzRTogiv3DeGJhfV46f/tMXQMSviKaa5w5htnS
7BzHLOUe0Oy6M5ZuC8q7xo8dFnYTk9kYiHcYjRYSzgTlRhDYF+w/08ZTFRG/
MPvKo+DXeU52YUHlBRyUw548DC8qx9aK56qIQHVLwVBfanA8WvLm7NEB54z+
su+Z+FSWfSSmoqPa4Uem8IkGMy0CYaWRWnDh1YuLoTvepPvY4yno0rXQKVRm
qqtfYCBN9DXJxAtGOVBlggDDuJ0kt63+d/xTVDlmJMt9rv14qftH86PstaPK
Ugwzj/txkUbThqf3W6qzxSH2CpYOi1M1MPLMKfm53vq27AglFw4/nJ++Qxnx
M6WtT7HIAvjQ+k3cTfwZKaU//muDczdE6shcswuU4OpKl0SoDevgUlPISLK8
/7N39SW7DK8UBVXR9bptUi4cC5WoLx5zartk1V3eMNjsVoN1G6zxsBZrjXW3
GNonGUU9fPBAnf41Gx5yofbPlWW/IuYnLNRkoSbFwx82Pz58t1m++v4or/73
b8XHl+3/vXoZJtlve8bsDPccKOFg+F3y6lsqyBjMEuNkDpwvnaTTpbjlHrnp
CgOyQe8TCHOsRnyjMwnXbRTRcaVpdls2FluCm7RN3cVZp+rOajwMhhJaj+jG
FpePHjwQZ8CkS9M0rrlUgK6yr3L2XEmU+1M8fjG5nMcqdeyg1MJiANFRGZes
mlnS8+zD2cmlyLNh953esiENfDh7g7Ua2aFgwnYosKnQNDGxRZ1GyByWqysT
kA7hpeY6kaRTDtAhh4w1bTEdLgaajAc0b2jdKMohqwD76rxsRWK8Iw2CVBf/
i0FDSZHs0iuY2xWcxW5zTiaHIw8dOWY8T/KqcVxK0euHL6Z+xw2U6/UtD1AY
EYFcdtoxxeFohtupp7roMshN51io1NnbA2LXrO+Pm3Ux6llLFPV7HjrtHv4k
xSHTi8mCW2eTsf78geCuD8R0DyAg2Ln2xosupsInicg3RgORqGAU380DGFE0
nWiLGim1U6Wr19hzySzdI/AhNMWAvbNxlGzMfkp5f3r7q0NwoJe4bAASiV/d
DGkqlVwTktt6XRk1UB2VwJcHNHrJxbEdkAW1gY2lhDJ1F1RSNXVaY8AaKcb6
oSp6FYlSKAxJWbodcDnUenLkmGbGPNJPGUbN161t4mtN5EMdLOcELdIS4ZYC
kUAmhXv9snlMGoNofSGu6Yc54L3elU4XQg56TiUPt/IQhGXHuaOnyNJwknoO
Z3CEHeRDOXxoiHz9jE46EfDKjHim9DYiEHumuF8sdTtWe8ea9Yoota0w0beE
k35cnBGFF0/j7h2W6ZUq4z0v5q4KK1lwgnghrJ9gj1o4XWXIIXMQAyFJ7OnQ
8aUT2euT9mCCgsil5t0vB3UsvZwIRYIWONFkcH1wE2QEN6wOeO3oCYjYg+++
fXAkYPJ1mwa/f3wUByWp/9RdUty5+B6CyV7QHGZ9ElwazrVIFgMeen80bfCu
rlndo3fzJV2XfO7w6n0JXCJVByMQ0mVcynqxuSzdM3qCgSuLaq6zButT7jUU
4khqkyG56X2vJ5lUfsVWXV1wn65n9BxP6UqKSCzHvR40I/eSTmqexP6OYACV
8tzzMdTYRMkLUCwat92S05Acla5ntp7hTDNptqdGEHttYxB4Jp5Y5yh7jY/3
EayKT3J98XmQ4aSuY3/uhYzFpFTudCYD0F93tTm1fkPaaK/UTW0rs18bC1w2
btn6UMfa+8B8am7xpUDT5ogETCi7rJV6xqNKri+IeIO+Ts1HNuj0HfQXYDW3
3AmOWmbqR3OUwn/F9uexZX3v3kLgfdSvu/OAfbr1bWxnB1XyavQ+8ULuqqll
0wYzg6XyznpzdcyLx9dxvoePn6glof0GXsZ5B46y5bpfx0uTiq9RxMyDhohG
VVzbqq2w2pUpabGkOBj5YTrpW12jMCIPv/2s/YnYCcj74pzuNoSZYf9GuqMg
GCUfwevTeL1y5VKf81iK/JgDaKPa0IgN3ASk+xMUaYT2sH5k1LExAOk4rrnN
TSaMRMEU0hKw3Gv7Jh3yLOZTOuKZWaNQbeRgKc/KTYdzxUiTFRZa6yAO3lj/
hZRI8/iqylXWR3deMZGK1xajhQVbPIELu+6tyBI2fM9SoY7BWZdtOGBcy8ri
tVlfPm0MMobjPqLjnnFvmiKL7enoqif1x5ruWQqdG7bmBsdeNchNZOICXq/S
Iqn5HQ3tGpiTfZguhYgKekrIQIuWdgOQFbClXpYiN4R9TMKei7fI/a/8doCk
PrlFuNiLkZuSQeNaUYnLRVCgXwCwPm9pQHXtp1uPGT2Y8NjlrvQdcwAoQ+4n
JPdTHLTd8j5nRgpskvvZvsA+7ZFWXfYTmzhRVSbf6Nr6yse7Qglg3yc0djno
lCsRugO/6lOaZAgiQHCk0vl0UcYlKw6xAdNg7tvWMUgYO0ahJ1JF6L8bXckH
Oeg0B6ijfOQPovIY0DlOJC9NGcKMRGAPJYNURVwK4skNZrriG4K4lHAi2RXU
9nOw6XbZ5PFeOXasmIrh3C11CPvSj/N8op2J3vFtxbhBSGqmaNeNwD0X/9ju
UojlKKvGHw1Qf/0pqEt8jxZOl/CNGdzniOXG9zhTooTcuI5THEkIVMDMMcNV
q9J8tXKNKi2PZlRyLamaTypl7Xc+lBPSRLYp+i+4jWK4F/5fZr6eT4mFEE1O
VdOm0rmEGUdm23Qt8GR/Fvj3U/k6vNyEyum2LV0M3ND8ElFr4t1wbD31Wk5d
paiOeALfVpUWuNc+5nqf8verLvdQTA5Uf+MnDD72NSRiZMPRRV58TxoHKWue
Sz4bLJ6kMuVqRkEmNw0hkTUej0VLVHtP0gjSYlEpbKogEhCR/1pLdss3FPOi
V+u7S6auF5taU7HHnWKvd9nba25xBiq5qXMkjR2ucoBJxVTlG5Pzj59EOxK5
5U783gYihB2M6o4OyoWo33DU6LwhWKJ7ZwHfAbINfofww8eLpMghb09p/I1d
GXK3xFJKfEc61UNf6lwpla0cF71hvV3X/NMTYokDx/hiQOB+BiEFSAZbjrtK
3KXziehsqPiqfYosvle0VYX0plkZehXSJRKtnHpkdNvk25JdgnvjjPyg303g
k9BByO4s6jSxhaEhKhKv85GBoIM2APhugYoyJoM93fJ7xo9+v+LbJXFRglnI
HvsSiatiXzFU3wdIJCMVOIMYOIxnN++lpShxWBP/QWS94bTPbg3xNge9UCzY
tZTXrWb+Z2QKExoytfw4RH7YM/jdDl/UBRR8wqKxO3gI9QRIYg4mKtVF4sFF
piAh/diFkxLTT/Bc6X7xorNfHP3Ciy/YdyXfQXnNd6HeBLK1/z1nr5Pjd8cH
asEhSG64iJQ3NacwH39MRcmZFjnO6VKrNMVabo5/XQgFM8V/T1bI9mbyGxY9
fX6K+elNMtj/A7CoGQ0VKgAA

-->

</rfc>
