<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-illyes-webbotauth-jafar-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="JAFAR">A JSON-Based Format for Publishing IP Ranges of Automated HTTP Clients</title>
    <seriesInfo name="Internet-Draft" value="draft-illyes-webbotauth-jafar-00"/>
    <author initials="G." surname="Illyes" fullname="Gary Illyes">
      <organization>Independent</organization>
      <address>
        <email>synack@garyillyes.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="21"/>
    <keyword>next generation</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 35?>

<t>This document defines a standardized JSON format for operators of automated HTTP
clients (e.g., web crawlers, AI bots) to publicly disclose their IP address
ranges. A consistent, machine-readable format for IP range publication
simplifies the task of identifying and verifying legitimate automated traffic,
thereby decreasing maintenance load on website operators while reducing the risk
of inadvertently blocking beneficial clients. This specification codifies and
extends common existing practices to provide a simple yet extensible format that
accommodates a variety of use cases.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    AI Preferences Working Group mailing list (ai-control@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ai-control/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/garyillyes/jafar"/>.</t>
    </note>
  </front>
  <middle>
    <?line 47?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies a data format using JavaScript Object Notation
(<xref target="JSON"/>). It is intended for the publication of IP address ranges associated
with automated HTTP clients.
The scope of this specification is limited to the syntax and semantics of the
JSON file itself. It does not specify the transport mechanism for retrieving the
file. It also does not prescribe specific policies for how consumers should use
the data (e.g., allowlisting, rate-limiting, or monitoring).
This format is intended to complement, not replace, other established methods
for crawler verification. Techniques such as forward-confirmed reverse DNS
(FCrDNS) lookups remain a vital part of a comprehensive verification strategy.
This specification provides a scalable, machine-readable component that can be
integrated into a multi-layered verification process.</t>
    </section>
    <section anchor="format">
      <name>Format</name>
      <section anchor="top-level-object-definition">
        <name>Top-Level Object Definition</name>
        <t>An IP range publication file <bcp14>MUST</bcp14> be a single JSON object. The text encoding of
the file <bcp14>MUST</bcp14> be UTF-8. This top-level object serves as the root container for
metadata relevant to the file and the list of IP prefixes.</t>
        <t>The top-level object contains the fields defined in Table 1.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Type</th>
              <th align="left">Requirement</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>synctoken</tt></td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">An opaque synchronization token that changes whenever there is a change to any metadata associated with one or more prefixes.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>creationTime</tt></td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>MUST</bcp14></td>
              <td align="left">An ISO 8601 timestamp in the "Z" timezone (UTC) indicating when the file was generated (e.g., "<tt>2025-08-15T14:30:00Z</tt>").</td>
            </tr>
            <tr>
              <td align="left">
                <tt>notes</tt></td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">A human-readable string containing any relevant notes, disclaimers, or comments from the publisher. This can be used to provide context that is not captured by the structured data.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>prefixes</tt></td>
              <td align="left">Array</td>
              <td align="left">
                <bcp14>MUST</bcp14></td>
              <td align="left">An array of Prefix Objects, as defined in Section 2.3. Each object in the array describes an IPv4 or IPv6 address range. This array <bcp14>MAY</bcp14> be empty if the publisher currently has no active IP ranges to declare.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="the-prefixes-array">
        <name>The prefixes Array</name>
        <t>The <tt>prefixes</tt> member of the top-level object <bcp14>MUST</bcp14> contain an array of JSON
objects. Each of these objects is a Prefix Object, as defined in Section 2.3.</t>
        <t>To simplify implementation for consumers, there <bcp14>MUST</bcp14> be a single, unified array
for both IPv4 and IPv6 prefixes.</t>
      </section>
      <section anchor="the-prefix-object">
        <name>The Prefix Object</name>
        <t>Each object within the prefixes array represents a single IP address range and
its associated metadata.</t>
        <t>A Prefix Object <bcp14>MUST</bcp14> contain exactly one of either the <tt>ipv4Prefix</tt> or
<tt>ipv6Prefix</tt> field. An object containing both or neither of these fields is
invalid and <bcp14>MUST</bcp14> be ignored by consumers. The fields are defined in Table 2.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Type</th>
              <th align="left">Requirement</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>ipv4Prefix</tt></td>
              <td align="left">String</td>
              <td align="left">CONDITIONAL</td>
              <td align="left">The IPv4 address range in Classless Inter-Domain Routing (<xref target="CIDR"/>) notation (e.g., "<tt>66.249.64.0/20</tt>"). This field <bcp14>MUST</bcp14> be present if the <tt>ipv6Prefix</tt> field is absent.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ipv6Prefix</tt></td>
              <td align="left">String</td>
              <td align="left">CONDITIONAL</td>
              <td align="left">The IPv6 address range in CIDR notation (e.g., "<tt>2001:4860:4000::/36</tt>"). This field <bcp14>MUST</bcp14> be present if the <tt>ipv4Prefix</tt> field is absent.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>services</tt></td>
              <td align="left">Array</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">An array of publisher-defined, case-sensitive strings identifying the services associated with this prefix. For example ["Examplebot", "AdsBot-Example"]. This allows consumers to apply more granular policies.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="extensibility">
        <name>Extensibility</name>
        <t>The JAFAR format is extensible. Both the top-level object and Prefix Objects <bcp14>MAY</bcp14>
include additional fields not defined in this specification. Consumers <bcp14>MUST</bcp14>
ignore any fields they do not recognize.</t>
      </section>
    </section>
    <section anchor="processing-and-consumption-rules">
      <name>Processing and Consumption Rules</name>
      <section anchor="fetching-and-caching">
        <name>Fetching and Caching</name>
        <t>Consumers <bcp14>SHOULD</bcp14> fetch the machine-readable IP range publication file from a
stable URL provided by the publisher. The file location <bcp14>MUST</bcp14> be disclosed by the
publisher of the file on the page that describes the crawler as specified by
<xref target="CBCP"/>.</t>
        <t>Publishers <bcp14>SHOULD</bcp14> update the file when there is any change to the prefixes, or
at least every 24 hours, even if the only update is to <tt>creationTime</tt>. Consumers
<bcp14>SHOULD</bcp14> implement a polling mechanism to check for updates at a reasonable
interval, such as once every 24 hours. Consumers <bcp14>MUST NOT</bcp14> poll more frequently
than once per hour unless explicitly permitted by the publisher's documentation
or HTTP caching headers.</t>
        <t>To minimize server load for the publisher and reduce unnecessary bandwidth usage
for the consumer, consumers <bcp14>MUST</bcp14> respect standard HTTP caching headers specified
in <xref target="HTTP-CACHING"/> that may be present in the response, such as
<tt>Cache-Control</tt>, <tt>ETag</tt>, and <tt>Last-Modified</tt>. Publishers <bcp14>SHOULD</bcp14> provide these
headers to facilitate efficient caching.</t>
      </section>
      <section anchor="handling-format-versioning">
        <name>Handling Format Versioning</name>
        <t>To ensure long-term stability and allow for future evolution of this
specification, consumers <bcp14>MUST</bcp14> inspect the <tt>version</tt> optional parameter
of the <tt>application/jafar+json</tt> media type, as specified in the
<tt>Content-Type</tt> HTTP header. The version is expressed as "major.minor".
If the <tt>version</tt> parameter is absent, consumers <bcp14>SHOULD</bcp14> assume the latest
stable version of this specification they are programmed to handle.</t>
        <ul spacing="normal">
          <li>
            <t>Major Version Changes: A change in the major version number (e.g., from "1.0"
to "2.0") indicates a non-backward-compatible change to the specification. If
a consumer encounters a file advertised with a major version number greater
than the major version it is programmed to handle, the consumer <bcp14>MUST NOT</bcp14>
attempt to parse the file. It <bcp14>SHOULD</bcp14> treat this situation as an error and <bcp14>MAY</bcp14>
continue to use its last known valid list until it can be updated to support
the new version. This prevents the misinterpretation of data from a
significantly altered schema.</t>
          </li>
          <li>
            <t>Minor Version Changes: A change in the minor version number (e.g., from "1.0"
to "1.1") indicates the addition of new features or fields that are
backward-compatible. For example, a new <bcp14>OPTIONAL</bcp14> field might be added to the
Prefix Object. A consumer programmed to handle version "1.0" <bcp14>MUST</bcp14> be able to
correctly parse a file with version "1.1". The minor version number increases
numerically independently of the major version number,
for instance: 1.9 -&gt; 1.10 -&gt; 1.11. The consumer <bcp14>MUST</bcp14> ignore any unrecognized
fields or properties within the JSON objects.</t>
          </li>
        </ul>
      </section>
      <section anchor="prefix-aggregation-and-specificity">
        <name>Prefix Aggregation and Specificity</name>
        <t>A publication file <bcp14>MAY</bcp14> contain overlapping IP address ranges. For instance, a
publisher might list a broad range like <tt>198.51.100.0/22</tt> with a generic service
tag, and also list a more specific range within it, such as <tt>198.51.100.0/24</tt>,
with a more specific <tt>service</tt> tag.</t>
        <t>When a consumer evaluates a specific IP address against the list, it <bcp14>MAY</bcp14> match
multiple Prefix Objects. In such cases, the consumer's logic <bcp14>SHOULD</bcp14> use the data
from the Prefix Object with the most specific CIDR range (i.e., the one with the
largest prefix length) for that IP address.</t>
      </section>
    </section>
    <section anchor="use-cases-and-examples">
      <name>Use Cases and Examples</name>
      <section anchor="example-1-basic-publication">
        <name>Example 1: Basic Publication</name>
        <t>This example demonstrates a minimal, valid file for a publisher with a single
type of automated client. It uses only the required fields, making it simple to
generate and consume.</t>
        <artwork><![CDATA[
{
  "creationTime": "2025-08-15T14:30:00Z",
  "prefixes": [
    {
      "ipv4Prefix": "66.249.64.0/20"
    },
    {
      "ipv4Prefix": "34.64.0.0/12"
    },
    {
      "ipv6Prefix": "2001:4860:4000::/36"
    }
  ]
}
]]></artwork>
      </section>
      <section anchor="example-2-advanced-publication-with-multiple-services">
        <name>Example 2: Advanced Publication with Multiple Services</name>
        <t>This example illustrates a more complex file from a large cloud provider that
uses optional fields to provide richer context. It differentiates between IP
ranges used for a general web crawler, a specialized ads crawler, and a
user-triggered fetching service. This allows consumers to implement more
granular access policies.</t>
        <artwork><![CDATA[
{
  "creationTime": "2025-08-15T14:30:00Z",
  "prefixes": [
    {
      "ipv4Prefix": "66.249.64.0/24",
      "services": ["ExampleCloud-Crawler", "ExampleCloud-Ads"]
    },
    {
      "ipv6Prefix": "2001:4860:4860::/48",
      "services": ["ExampleCloud-Fetcher"]
    }
  ]
}
]]></artwork>
      </section>
      <section anchor="example-3-aggregated-publication-by-a-third-party">
        <name>Example 3: Aggregated Publication by a Third Party</name>
        <t>This example shows how a third-party security provider or an open-source project
could aggregate IP lists from multiple publishers into a single file. The
service field is used to attribute each prefix to its original source, allowing
consumers to apply policies based on the original publisher. This reflects the
use case of services that provide curated lists of known bots.</t>
        <artwork><![CDATA[
{
  "synctoken": "20260410223000",
  "creationTime": "2026-04-10T22:30:00Z",
  "notes": "Aggregated feed of verified automated clients. Attribution is maintained via the services array. Data refreshed every 24 hours.",
  "prefixes": [
    {
      "ipv4Prefix": "192.0.2.0/24",
      "services": [
        "SearchEngine-A-Crawler",
        "SearchEngine-A-ImageBot"
      ]
    },
    {
      "ipv4Prefix": "198.51.100.0/24",
      "services": [
        "SocialMedia-B-Preview"
      ]
    },
    {
      "ipv6Prefix": "2001:db8:abc::/48",
      "services": [
        "TechCo-C-HealthCheck",
        "TechCo-C-Ads"
      ]
    }
  ]
}
]]></artwork>
      </section>
    </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="security-considerations">
      <name>Security Considerations</name>
      <ul spacing="normal">
        <li>
          <t>Spoofing: Malicious actors claiming IP ranges they don't own. Mitigate with
FCrDNS</t>
        </li>
        <li>
          <t>DoS: Clients being tricked into polling the JSON file too frequently.
Mitigate by setting a reasonable polling limit, rely on caching (add 9110)</t>
        </li>
        <li>
          <t>Data Integrity: The risk of the file being intercepted and modified. Mitigated
by HTTPS, which should be mandated for the transport.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following media type in the "Media Types"
registry:</t>
      <ul spacing="normal">
        <li>
          <t>Type name: application</t>
        </li>
        <li>
          <t>Subtype name: jafar+json</t>
        </li>
        <li>
          <t>Required parameters: N/A</t>
        </li>
        <li>
          <t>Optional parameters:
          </t>
          <ul spacing="normal">
            <li>
              <t>version: The version of the JAFAR specification the file conforms to
  (e.g., "1.0"). If absent, it defaults to the latest stable version supported
  by the consumer.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Encoding considerations: binary</t>
        </li>
        <li>
          <t>Security considerations: See <xref target="security-considerations">Section 6</xref></t>
        </li>
        <li>
          <t>Interoperability considerations: N/A</t>
        </li>
        <li>
          <t>Published specification: This Document</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="IPV6">
        <front>
          <title>IP Version 6 Addressing Architecture</title>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <date month="February" year="2006"/>
          <abstract>
            <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
            <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4291"/>
        <seriesInfo name="DOI" value="10.17487/RFC4291"/>
      </reference>
      <reference anchor="CIDR">
        <front>
          <title>Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan</title>
          <author fullname="V. Fuller" initials="V." surname="Fuller"/>
          <author fullname="T. Li" initials="T." surname="Li"/>
          <date month="August" year="2006"/>
          <abstract>
            <t>This memo discusses the strategy for address assignment of the existing 32-bit IPv4 address space with a view toward conserving the address space and limiting the growth rate of global routing state. This document obsoletes the original Classless Inter-domain Routing (CIDR) spec in RFC 1519, with changes made both to clarify the concepts it introduced and, after more than twelve years, to update the Internet community on the results of deploying the technology described. 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="122"/>
        <seriesInfo name="RFC" value="4632"/>
        <seriesInfo name="DOI" value="10.17487/RFC4632"/>
      </reference>
      <reference anchor="JSON">
        <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="HTTP-CACHING">
        <front>
          <title>HTTP Caching</title>
          <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
          <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
            <t>This document obsoletes RFC 7234.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="98"/>
        <seriesInfo name="RFC" value="9111"/>
        <seriesInfo name="DOI" value="10.17487/RFC9111"/>
      </reference>
      <reference anchor="CBCP">
        <front>
          <title>Crawler best practices</title>
          <author fullname="Gary Illyes" initials="G." surname="Illyes">
            <organization>Independent</organization>
          </author>
          <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
            <organization>Ericsson</organization>
          </author>
          <author fullname="AJ Kohn" initials="K." surname="Aj">
            <organization>Blind Five Year Old</organization>
          </author>
          <date day="9" month="April" year="2026"/>
          <abstract>
            <t>   This document describes best practices for web crawlers.

Discussion Venues

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

   Source for this draft and an issue tracker can be found at
   https://github.com/garyillyes/cbcp.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-illyes-aipref-cbcp-04"/>
      </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>
    <?line 322?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71a7XIbN5b9j6fAMj/GzrBpkpa1Nms2szQl20rZklaSJ5VJ
uUpgN0giajY4/SGZsZRnmWeZJ9tzL4D+oBhPUrW1qYpFNhvAxb3nnvsBRFEk
SlOmeiJ7U/n95dlp9FoVOpFvbL5WpVzYXJ5X89QUK5Mt5cm5vFDZUhfSLuS0
Ki3ewcvvrq7O5Sw1OiuLnlDzea5vMeH30zfTi56I8c7S5tuJNNnCCpHYOFNr
rJjkalFGJk23uoju9HxuS1WVq+hntVB5NByKopqvTVEYm5Xbjabxid5o/JOV
IqvWc51PRILZJwLLvRDfSJVrNZHTi+MpvtzZ/GaZ22ozkT+8lT/gG23hLT0R
N3qLn5OJkJHM9OdSLnWmc1ViKXpUbFR+k9LriSnK3Mwr2maqk6XOhSAhbU5j
hcR/Jism8u1AnvBG+NGiSlO3x7cq37Z/sflSZeYXXmkiT1obol/1Wpl0Iott
puKb/15irNPOILZrITK2ibnFfvHuyfnfDicyX8QH41cjejA7ObpwDw6fj+kB
mZMfvBy/eEUPyE7RbDp7d3L6ln94NRq5oa9n55AmOhp0bKLMJteLKJ7HGyHI
ePX6YjAYCBFFkVRzKEjFpRBXK1NIGLdaYzsy0QuTAShKFqXKEpUn5hfokGSS
iwZcdkNqtzkjSnUQJWKHKPlED5aDvgRCZJyru1TnRV9OTyTwUjyVpZUbQmic
bslacWoLLcuVNjnBVSVJrotC5AzbgZzK2GYFjIqZ+3KtYuBaR4BNouapbkuG
wTzIz+6wUZj1JjULg41hCVmq4oYEN2RBs9gSYrBZeatz/y3VS1Ma2lRrd1DY
YmHivsAcuZ5Dbh1DhIIGAAEZhFNZrGVqVSJtRjsvDGZolHW3MpA210kV0yCS
JTfFjSBZMpVgfdogNDJPbcy4nwPgWNOoVHq9DiRbrNjoGDtyG4R2Erc9bEPA
MQDOAg/Xa/ymP0NvNNeGDG5iUgKUn9tb7J8MTcrRcqtLySML01JpuVKlUDFP
RT5LyLhVudHlljRYwWgxmKcArBhXa5MkqRbw45OszC02ygbYQZkXnmfDrCqs
VrEuv1e36jLOzaaUZ/OfdVzKU1AMz/PkyxeC4sPDUzhuKTEnqz2Bdcj4pNCW
3UnCBkwOF1iyKCwUCouKO1OuduBbqxkia1nEMB5NUz7WOR6kZm0YGZaXBgGU
6jNDqQAnAFtx4QZr4TyIzG/KQqcLlj+xkCezQSFbh07IWWxsXsq1jlegnWLN
m8s1KE3feuAImosnUWlhm5ng+gV0N9e1tHJjoRBSNs2ysnfsSzAEAFmsbJUm
ZEYCtbOF91uVpvYuddDpQ3eljni7/BUTAVoGoMbXpwNnXm/EtlGgGEAH8Fqz
45KAud6kKtaYg9xIavAMByq8vdZg6KQQJKenDOeTXuWAPjSSmX9U2ExRxbAd
r3oHmoqwqYXJ15gGYQx70/Lo9FI8eTPL8fcpnNLeVBuAgMg6IxSbEk6FiFEy
h7GcuV4R/m91Z1lJVIlguPX77MLAOxJTZqxS4qM9DEWz24ywTx4Fn8ng2oL0
tMwZe/hoMcW6SksTpWoLhkm6UmAh+C552jc+zuPTN/LKbqL32HEanOWIKNw4
t5tmewnRAfHDx8srSMEUkC3xgDFqeRZiGUCRYqzOiF2AOrtgkHTGfrx6E730
lFRCkpQlcXPACfJbdjjHdBbWh5VK6B+Ghd0EDK4Yc7nGQEXacZ7Ea5Af0RcC
oXdlCmzmM9MNy7e7op++8JPoFDToQhppWF6xLUYYfS/f0K/yFOFe3ssrJCr4
c6H/UZmcwYpvR+xJG1bYvbgHvXX+F/fXcPi4tDc6u76/LMkV7s/Or07OTqfv
76F5u1FAKrFCvMptSB8kD/AwWDlKugPsCLSSIwt5kPK/kUJUtpW1phr2ksxe
AJXzRoyrtUOyUWii9a7MWtfikdlItJPLM/nycDiSCHLkgesNqYeU1vt7jx/+
QhM/+Xg1e0r5G+MGECBBGwPdwbI+A4M4njd61+Ph+EU0fBmNXlyNDibPh5Ph
8O/XvacsFRhAF3u0JVcVCLPxl4JfCPZ0AXrbwISn6bvEQZk1pxZEGghTnHss
crtuogHIJfcYdY5HhJe0oyCtQ1hnqxjHpLHalBV54dzxMkRCNOMnZAneTtD4
9f00z9W21q+ib4TZc37BuyaEVB08XmoOj3I8eD6Qx+CMgGNvDDdN4hmdojuc
4PZAcp5ze9iNbH6HbsyH6Y+0T73eIFCbRVcXMq7y3CUaK0WblZQYgPUCV3CG
gOwmRWaOfTqeWTUAk7xb54ONDgBSSu59xHvsnMwZ3qK0lVpJxDvCvVQEPfAc
IHH/2PlER5tfUyZEs9Jnfdh/iECe/BgpPgT2vc/tkmFfVhmlKIkTk2MSMteV
MwBRE1ugRUhBSR0hhWiblTzWm7ZWpdMCoiIsydit6Xg3deHkzpTtDKbmBaw/
7a7cVbf+DBPD3kwXC6kNB18S5Npsbg/cyGsAS9D3w/CdKRTpd7ZDsJyakjag
lcxPVpvM864pEN9uVWoSVldQsFmiIHJeVRvBRRs/Dph7zNnj/zPObm33Xjoe
wrjZ2enRiSMjmnqlvZ07+oc0sxTKT+kR8ludR0eW04kLWzE/Ij+leg75KVGI
g1vNi4eHg/HBq8HhwWD4bDwkRnQey/uu9eNxEJz2sTnYFeb0zkD6DR3+zg0d
7tkQxN0j63g4HE0OECImB8PhcDJ59vzwDwh88FWBKS2gMgTiMo9AvhAI8LHN
njVjRR4Qfa42ooKyNGYsFyeKTinHZO3XeBQvOZF3zjegNIo8g+ufn3rH7hNw
3YMKpknx2paRf9j7FOiV0uKilUJTgN5s4FocgpHNZRVos066actMDce+tjKp
KbfMnNxoaWXNTfU1kK8ty7qHRcmXulGFyB6uFqcV1XNJwrkfclvvTxTLWv70
uJIZyFm9GzKqcC7KEdfPAUkQh6xP4GO7RDajORM9d1lpKKHdTM7/Lio4itv8
G13Gq/odTo6XQjTLXr47+/j+SC7oNd72owT6t9NYjvVKcB2BhPTifYjqdeTu
JAE+d0GB7eYIMA5NiDBKNOHSBzQeZz19K8rNKFtoojM9D2WLqnXMEwrwwuvZ
+cMDdHYe5q23XW2otG7lVT7L8qkgzNAkg+3YQTmPgAipVsiQKYHcyvEBSryK
4hq+Z8EpbQaA+mU4U5fd/LAFAeGFqoMmAhLAzG21piClwm6l4xsOpm5iSErv
UkcE8IMtuLzJEQH6dbFmqT/SFXQXffL07IoXdA61yMHvnKug+EDSwDNsdM6D
EaOZi/XnDXkbBTj8hCK13GP8PzUNCNdMgOSu4nd4lCtgjYIRJw9rBLk1QO6K
mNw1dTo9BoYG4Zn7Ocgps0yTK1DrcI7ndyaBD1cFkCLCwEAb/RaB8KbBoRsu
mXzXba9kDaSgWvnlS7sx+PDg4LgGc7ZJ2cGVpseCuraEuCYv1BF0X+Y2ve7L
6+MrtcRf2tH1ewAq+uCaSgnQ8RizIXPmkC+CgIDFQsVEcYQ0Te0y6qaEjfgs
6R3WYDz5dvXfMBQGYU6A6kGCyLKh8WwZAUBrUoqjTRaOGZhNsagoHQeebFqF
fg/Rm+jQ2yNdoz5kXXO0unVrI/XZeNrcqBwJBhYW3u+vid/9ZM+4y/3nnwsa
staJUZKa3P2uwzutQ8dUVmRlRKnKtTOp05QjIr+2436yGLEPJuqt1c82HwCC
Nu8NxMliR9RawiaytjfpLYTIh++ugib3LANFhmX3t7WY6hVXkxbRbL12ldKK
bEaUL76V8gPJF8wmZ66KnVCXdhXyCkfi9FpYzrX+Q4rBrN0bDYY96mRjgd4Y
n+tik/spmc2iuYpvfH9nvYGE3EzpsOFOLDtZ0ISq1gf3LypiIprSNRa402qK
kBOo/ZIuiSEBA5KPqOfxlgzH7X2K6nfcvSY2Fg3shAjJ5afKi4b3uZvnjVfS
2t48pqycaRRXgDrPrSMeivuYkHJyk1WsEGrIUomQUkS4yexdJl0Kzk0UqMGk
JHUog5m4Weyi2lDP0W1WI6m/C7v0ic+G2mpUn7AaTMHkjodl3Wp1nVwXjTFN
gTSC7cKFpkpLbmkVYJ01yhVCEeH7d6CIX/u9KBoNRh0UcRntcyISkja2gG5B
HAVVL3WCQ8Er1zTNHsh1UsU+QRPT1Emry3LXZrkquYRMkronTPN1srVwlsGw
2Ieceqe8raYuJeCX1tkb1TtXcw4/HtUM5dbgUc+xzF79IV2kQO2OtzISBvpK
MWXrsC7dhsxnn3v0aSSxMOi0pHOPiRwNXsnoO/wZDf3fkROh6wet9LLK6mwy
4fmcNSyrZkNOSt2xpmpudShDye21O13CXZfeT+Abl54VKNlGafy4+Tn9sS6O
LXaWguT9WWn3vMCZPmwStm8lhs7k7FpKznNKEVySmpobEPbo1cvBC9LGkCq+
8XVgG+6ZmTgUKaJUy74PbYUN03H2U/fw3bReE6ZsMqqdRQ6u+yJwWmeCUHVd
S6wG1f1AOWabJUETlefdelBLGWpJfdWybsj2iUZIiQjg8Upw35rKqG5pAkrL
nKh8StRlRSRkqV1imZAGey4kHhF1B6/b1PA1HCBpi7IRlKtYp6MnZqAHfZ/1
6nqAQFEGa5Y+eUbOnC3L1VOf0sH5m70ysORHSDMjodkyvgwsQi3nasbRRL5W
BdY/bx02ukOCUFYmeo3t8gECqZbTSsqIHSu7AobovJVTevu5LpCg9KJ7yupO
qDhaVCQfJ/cuy+NWSOLdiI4h+BARlvKHfCCQ0LDlbXlT0I5//fVX8QU+2GsX
Br0J4vKedm6PvL8X6hC89RMfhH/hf/FL0wOgGbqND6Zq+dD/2ojnB/w23h+N
f/P9w+b9Pe0KPwz/fhIPvLuO6cYINMktuXTStp5T/oeA5kvfRtgxqknTqmVT
cjR3zPW5XZJKhhzMZask5MsObMLZbdMt1Fv9aLAD92ldW9qdFZrFQlPX1vCy
c13eaU39YH9I7nraDkvOxmn77L0f/Bq4oxN9RQfE9U/EPSRUHpW5WS45Ui9C
ze6Z4ysNkKZWJF2IugmiYiqIml7I/yPMDnr98FboBdH40OSZkVGimVMAtXs6
z6dJ0fv0x2BH/0yeHbz8PctyNwTLfvo6RJ9P6qi2A1KUtoqsgTrxXOXldgee
xYosRCe9ilJIZDJ0zLmFIeMqpzKqBiMnknRBIYsK1NMxZ/3ct475YFiF9Yke
ifb90UpN95umMPQnmL557RJaBH/h9dD0AsPhCxJhd0dHauqRe2ImOJWUApil
IedwcvnzaCoR97Te6hPuOd+C8j2aeordQyAslHLjjOJCuMJAHFt3DTki1IdD
lTvgcvvHay6vpnssHUTXp4EezofDg9FwPH4ORnJA3gP5w2h4EI2GV+NxB/J8
vkWvtACw0LS1hT8UJhfeiQh0T8ar1FeVfCtFcefvlirVTmOUmqwDeeSOXxcI
fHQEv9Ob+WMOOHqFGm4w/or7+Wd4eqlVHq+OsyV1+aaNJ/7mGydrtdSvbdnz
b/ymf3YE6uRG/1Ym6hSnH6iqj15HmObW6Lt/u94uHyTzlxM1j7/CBs2KdJ9h
ZqNZ9E6jQFrNqKXW1kH9OzFSV5Aua1ATjcozGN4lLM0tgMKd092grKfLc4Xs
URZOnBeqUvp8cfw/H08ujo/o8+W76fv39Qfh33BZWvOpGTk7+/Dh+PTIDab2
XeeR6CFN7Lkg0ws1U69uRdeXgqjnAI+mI6JQWnI7RIQOK/dVXs/O//XP0YH8
8uU/Lt7MxqPRq4cH/+Xl6D8P8IW6p241TozcV+pqCJAFMEWzgEzofJeugLhD
WaLMTFLLFS797U+kmU8T+Zd5vBkdfOcf0IY7D4POOg9ZZ4+fPBrslLjn0Z5l
am12nu9ouivv9MfO96D31sO//DWFZ8lo9PKv3wnG0GWID9SRpfigPH6+RTll
LQC1nMgPirjWVgUdGtOlNj6B96VTOD12xwXZn0oJtQ5Q6ZeGowhlV8JdycGk
R/ZyEi6gwu58doPM5yZchwlt57ry4+SqtLbVFR6IevI5RbiSz+Habeh6Gr6+
1KdLBHQOWjdXnyDtl69Go+FTEono8ISv5UARE65e6Ype5wzAicoojfWGUQq0
rX27tNluIiASdf0u+3T1DzHO37eaU0mdud5LaA3X175c+XEyPZ0+sgM/5ABG
V6B85wbxgS5GulkW1ofJVnOyvtrBzMbnpiATNyzfTsi8fJbqrr62mp1k92pe
Nr81zU/8dBGqjbodWUzk6bMpfjp71Est+PKr/DY0ESadBqhXrjsQe9SOdEqn
+102Xxe+CVIfVVKXhG4DLupOqOHzLoUUpQg9QtcAlTsNUN/zcq2HcF4Q0gtq
UR2Hq09xxxATOUdekW9JP8Fldt+41Fr+FK4kHH568k1IvqLumwQ6PkrmW6K+
zb07mdNqaMInXRVNXFJz5HnUX8SkJhbhaBpTtkJ3oPlmjPgyce0bnfxXbwH2
070HxIezozO4c3gTHPi/WQLpJ2IuAAA=

-->

</rfc>
