<?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.18 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sawant-capport-api-state-enhancement-02" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="CAPPORT API State Enhancement">Captive Portal API State Structure Enhancement</title>
    <seriesInfo name="Internet-Draft" value="draft-sawant-capport-api-state-enhancement-02"/>
    <author fullname="Paresh Sawant">
      <organization>Apple Inc.</organization>
      <address>
        <email>paresh_sawant@apple.com</email>
      </address>
    </author>
    <date year="2024" month="August" day="22"/>
    <keyword>capport api state</keyword>
    <keyword>token</keyword>
    <keyword>internet access</keyword>
    <keyword>notification</keyword>
    <abstract>
      <?line 23?>

<t>This document specifies a new key in Captive Portal API State data
structure. The purpose of the new key is to allow clients to
perform the client authentication without user interaction.</t>
    </abstract>
  </front>
  <middle>
    <?line 29?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>As described in <xref target="RFC8908"/>, the Captive Portal API data structure is
specified in JavaScript Object Notation (JSON) <xref target="RFC8259"/>. Requests
and responses for the Captive Portal API use the
"application/captive+json" media type. The original specification
specifies key "user-portal-url" to convey the web portal URL to the
client. Although in most cases client devices are capable of
presenting the web portal to the user, there are types of devices
that are not built to support the user interaction with the web
portal. This document specifies a new key that allows client to
perform the authentication without user interaction.</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="api-state-structure-enhancement">
      <name>API State Structure Enhancement</name>
      <t><xref target="new-key"/> shows the new key that can be optionally included in the
top-level of the JSON structure returned by the API server.</t>
      <table anchor="new-key">
        <thead>
          <tr>
            <th align="left">Key</th>
            <th align="left">Type</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">client-authentication-url</td>
            <td align="left">string</td>
            <td align="left">Provides the URL of the authentication server that <bcp14>MUST</bcp14> be accessed over TLS with which the client is authenticated without user interaction. Authentication Server authenticates clients using the HTTP authentication framework specified in <xref target="RFC9110"/>. The server <bcp14>MUST NOT</bcp14> require user interaction on the client device. The client <bcp14>MUST</bcp14> have a credential to perform the authentication without user interaction.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <ul spacing="normal">
        <li>
          <t>Devices that don't support user interaction or web interface,
can join captive networks using "client-authentication-url"
key. For example, IoT (Internet of Things) devices or speakers
can join captive networks using the credentials provisioned to
them.</t>
        </li>
        <li>
          <t><xref section="2" sectionFormat="of" target="RFC9577"/> specifies "PrivateToken" HTTP
authentication scheme. Use of "PrivateToken" HTTP authentication
scheme can attest that the client behind the user agent is likely
not a bot attempting to perform some form of automated attack
such as credential stuffing.</t>
        </li>
        <li>
          <t>User experience improvements by not requiring user's interaction
with the Captive Portal system every time client device connects
the captive network. For example, many Captive Portal systems
require users to accept the same terms of service or solve CAPTCHA
or watch some commercial on every connection to captive network.</t>
        </li>
      </ul>
    </section>
    <section anchor="example-interaction">
      <name>Example Interaction</name>
      <t>Upon discovering the URI of the API server, a client connected to a
captive network will query the API server to retrieve information
about its captive state and conditions to escape captivity. In this
example, the client discovered the URI
"https://example.org/captive-portal/api/X54PD39JV" using one of
the mechanisms defined in <xref target="RFC8910"/>.</t>
      <t>This example illustrates the use of "client-authentication-url" key,
and therefore, excludes "user-portal-url" key from the JSON content
sent by the API server. An API server may choose to send both the keys
based on its policy and configuration. And the client can choose
one of them or both to perform the authentication, based on its
configuration and capability.</t>
      <t>To request the Captive Portal JSON content, a client sends an
HTTP GET request:</t>
      <artwork><![CDATA[
GET /captive-portal/api/X54PD39JV HTTP/1.1
Host: example.org
Accept: application/captive+json
]]></artwork>
      <t>The server then responds with the JSON content for that client:</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Cache-Control: private
Date: Mon, 19 Aug 2024 05:07:35 GMT
Content-Type: application/captive+json

{
    "captive": true,
    "client-authentication-url": "https://server.example.org/auth"
}
]]></artwork>
      <t>Upon receiving this information, the client will use it to start
an authentication session with the server (as specified by "client-
authentication-url" key) to enable access to the external network.
The client sends following HTTP request to begin the authentication:</t>
      <artwork><![CDATA[
GET /auth HTTP/1.1
Host: server.example.org
]]></artwork>
      <t>Upon receiving the HTTP request, the server selects appropriate
authentication scheme to authenticate the client. This example
shows "Bearer" authentication scheme defined in <xref target="RFC6750"/>.
<xref section="16.4.1" sectionFormat="of" target="RFC9110"/> specifies the list of authentication
schemes. The server sends HTTP response message with 401
(Unauthorized) status code along with WWW-Authenticate header:</t>
      <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
]]></artwork>
      <t>In response to the received challenge, the client sends an access
token in the "Authorization" request header using "Bearer"
authentication scheme:</t>
      <artwork><![CDATA[
GET /auth HTTP/1.1
Host: server.example.org
Authorization: Bearer mF_9.B5f-4.1JqM
]]></artwork>
      <t>If the access token is found valid, the server sends a response to
the client. An example of such response is:</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
    "access_token":"mF_9.B5f-4.1JqM",
    "token_type":"Bearer",
    "expires_in":3600,
    "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
}
]]></artwork>
      <t>On a successful HTTP authentication, the client <bcp14>SHOULD</bcp14> query the
API server again to verify that it is no longer captive.</t>
      <t>When the client requests the Captive Portal JSON content after
gaining external network access, the server responds with updated
JSON content:</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Cache-Control: private
Date: Mon, 19 Aug 2024 05:08:13 GMT
Content-Type: application/captive+json

{
    "captive": false,
    "venue-info-url": "https://flight.example.com/entertainment",
    "seconds-remaining": 326,
    "can-extend-session": true
}
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document recommends security considerations specified in
<xref section="7" sectionFormat="of" target="RFC8908"/>.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This document recommends privacy consideration specified in
<xref section="7.1" sectionFormat="of" target="RFC8908"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to add the new key specified in <xref target="new-key"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8908" target="https://www.rfc-editor.org/info/rfc8908" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8908.xml">
          <front>
            <title>Captive Portal API</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Thakore" initials="D." role="editor" surname="Thakore"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes an HTTP API that allows clients to interact with a Captive Portal system. With this API, clients can discover how to get out of captivity and fetch state about their Captive Portal sessions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8908"/>
          <seriesInfo name="DOI" value="10.17487/RFC8908"/>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <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="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
          <front>
            <title>HTTP Semantics</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 describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC8910" target="https://www.rfc-editor.org/info/rfc8910" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8910.xml">
          <front>
            <title>Captive-Portal Identification in DHCP and Router Advertisements (RAs)</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="E. Kline" initials="E." surname="Kline"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>In many environments offering short-term or temporary Internet access (such as coffee shops), it is common to start new connections in a captive portal mode. This highly restricts what the user can do until the user has satisfied the captive portal conditions.</t>
              <t>This document describes a DHCPv4 and DHCPv6 option and a Router Advertisement (RA) option to inform clients that they are behind some sort of captive portal enforcement device, and that they will need to satisfy the Captive Portal conditions to get Internet access. It is not a full solution to address all of the issues that clients may have with captive portals; it is designed to be one component of a standardized approach for hosts to interact with such portals. While this document defines how the network operator may convey the captive portal API endpoint to hosts, the specific methods of satisfying and interacting with the captive portal are out of scope of this document.</t>
              <t>This document replaces RFC 7710, which used DHCP code point 160. Due to a conflict, this document specifies 114. Consequently, this document also updates RFC 3679.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8910"/>
          <seriesInfo name="DOI" value="10.17487/RFC8910"/>
        </reference>
        <reference anchor="RFC6750" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9577" target="https://www.rfc-editor.org/info/rfc9577" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9577.xml">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="S. Valdez" initials="S." surname="Valdez"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document defines an HTTP authentication scheme for Privacy Pass, a privacy-preserving authentication mechanism used for authorization. The authentication scheme specified in this document can be used by Clients to redeem Privacy Pass tokens with an Origin. It can also be used by Origins to challenge Clients to present Privacy Pass tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9577"/>
          <seriesInfo name="DOI" value="10.17487/RFC9577"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61ZbVfcNhb+rl+hdT402cUwQyAJs02zUyDJpCFQGDbt6enJ
0diaGRW/1ZKHUEJ/y/6W/WX7XEn22AaSbnf5ADOypXvvc5/7JsIwZEaZRI74
viiMWkl+kpdGJHx8MuFnRhiJ32UVmaqU/DBbiiySqcwME7NZKVfYNj45OT6d
tt5vvxVhYZGXVyOusnnO4jzKRAphcSnmJtTiUmQmjERRQGgoChVqOiKU6yPC
wTbT1SxVWqs8M1cFdk8Opy8ZU0U54tBNm+3BYA+vXciry7yMR4yH3J/JcSa3
Z9KiyS9kRh9UZmSZSTyOIqk1LWW5UXMFfSGFsUKN+E8mjza4ximlnGt8ukrp
w8+Micos85LkMI6feZUkzqwTUUq95GfWLvssLxciU7/ZY0d8XBSJ5JMs2rQP
ZSpUMuKF3fXBofEPQe9sRnnKWBiGXMy0KUVkGJsuleZAsCJYuC5kBIWl5oJn
8pLDeJh1vxdjYQTTtSs3+XQpeVGVRa4lz+fc4GtzjAZSXCRJfsmjREEaLbBC
lvO8TO2rbpkTEPjrYeOXCrhUhldalg5jKI4Hm86UVMVxIhl7AARMmceVfciv
H6jW1xvGxjBT6qhUMxmTTdfXfzl9uf9sb/Ds5mbDir/DSrKPN/bBBlYjZM94
I1biDEcWhh/PfpGR4e9y47R++Obs+N2jWsr27t7NzSY/lb9WUhvNRBZzuKfI
Mw2sAcB9CsBoesQCcqBHZCty7/3tF51nAU9lrAQnDjv881ItVIb9XlXPvrVr
yRsBoRkWVlBYlUlAzonybIVnpMqlnHH3lJ+fvqWHpIVz0CYfJ+SSxZIwSHNt
EBhkh/dfLFcqIgoBMagqZgmRgRUwmNyaLfoS3OnWwdYT2Ed7ySRNNPIHMrMU
xj5BWPFZpRJDW3XlgrI+os0RS55aHHPiCKUvcd5JIq42VvW4+sdJ+oDvE64Z
fYUMeP5AzlWm7HcKQGlFUpLRPDg6P5sGG+4vf3dsP58efn8+OT08oM9nr8dv
3zYfmH/j7PXx+duD9af1zv3jo6PDdwduM1Z5Z4kFR+Mf8YS0Co5PppPjd+O3
AbnVdDCy7sj5TDrb4EqDCBCadULq2/2Tf/9ruONJvz0cgvR1BAyf7uDLJTBz
0vIsufJfAeQVA7+lIOgIdqKNgquQH4XmeplfZpxoATT/+hMh8/OIfz2LiuHO
N36BDO4s1ph1Fi1mt1dubXYg3rF0h5gGzc56D+muvuMfO99r3FuLX79IVCZ5
OHz24htGFPpS4WTX1+BuCCIBZQJMd5Kv5XMkMvJgXhDzgDKl9iipYuc8im+T
F2EiVzKpkzclsVb+g9srVLiYz1yWIK1A+JUs4ZlP/DtIav984lOE8PrbgSWL
Fc9v/Xxin0Zh76e7cvt592Vo4GI17AYn5TdIhxmUez7xkzJfKRDXmkDZzRvb
C2lnmIPOUgzYucoOAHJ6NH175hLM5VJFy3YJQ+y0TsP79+YHPu5KPXNS27t1
Uy8rXWfP19PpSV/heYl2AWnkgneKlAvAveFwQCWI0o23rI4buPXXSpV3ZM88
axvl0rA7wi/ZI5YCNUvwqJQxaeMS+p/JleDA9Yg/8ETmtoV8HgQ3FADnmuoj
qgxSAIjkKoz1TZxnX5mmCty2obSlxi7NRSQ30CRRJPySAxtfSREnhoCrEQ7u
5VGA3dBtk7/EufKjSNFWbfBJPuUPJ3X7BzqhwmQL/agphXgZPhEXstR/QLzF
vEFT84IIS40qHIoyxOmFlJo9QHF9fSadodsk+AW5evfpU8oCTV0LTkq1ApGm
1KkGljvY3Kd7hEPh3XPXut2xp7cDR7g91h5hQFTjPNLizEwCiXhdm8XCh0ei
LmRyhTOolgs+o984Ii1cg7AmkM4hwX6CVtAgT21A4WURXZAOFUIPVaJFP22q
OSrswkN0ToLlRxwIlSKUsJQAtXlTUyYjDVwIkGhS8yvdphBOadqIXoumrzR0
5kiZJfE17cUKdVQZ3KOdz/r+7rEoFdnV3QJofztIXSuNXFQ4sDUCn0Pf1LZL
FN4knEiXJzgL09R0//WYcRsMwgAwiyrGgVSWEUEGAjgjvMbECOoIewoToA/4
odOYT1oYsXM0szxWOqLUWLP4/HRSZ9d1rdigZOFg8tIsr7lgPXGAHb0AWuay
X27odRQjOHQl7RBYpo6TYkaZRcGx9Vl2TrMtB4TFruui7ahFoqhdogxCeuK6
HtY4pJ37vGEyru1iwdKYQo+2tvz7m5jK6tbcd9ZbaGO2ftjdOTl4vPfmn4EP
b8Qx9cN0Tioj1HClUxpOQNnuaGIzth/RvBAORCqa3YyvX5UP1/szFuWrDTtx
2NYaWME0+dFWfn3HIECpd17m6boBAHCGmgxtI/pW6efjrO2aVIBFy5xGQOrO
JQQjul344GzNZsJW0My6qcgx1lzV/pmrRVUKXxh93qipgiTjjmUOQJsFidHu
9M+VnA3elsk6gpxoGlNUQjQA3rkNNpfOboV8G5EWk8lO6u6ZzZSvDqf1GSPG
fv/9d0Yrn2WHTbFbw80he42JasRbrGJjG+ojft8QaCWwVmkn4/2ACa2a7NXW
3U+d1BdaC7yetRZ8ezDgx9+xfYEcH2KCwTBNtwquKrAD/BrxI4J2uIceZoH3
t3f4YHc0eDp6vMtfHU3ZvhMUTu31yr26s2t7bRH4xcBev9gyzT9H6xFvAtDz
sB2HtCFgNw4Ym5pKGUkEuk1MSreTRifQbcqhoFJuuDSiNIzqW785tDdHa2g9
8A9pXmm6L8RKbQG7JzIf2VyU2SHZdZf1OCw/Uj8BxjXJt9V4ObrNcxpRySbL
uoa1NKktXE/fU7zNRnrSZ91tKO+BUHZEbrQx0DKhmkceL3MQhvhyZ7Nhk36r
0W35wQ/pXg/mJprgW4yIsgzubl1uZ9AnT3dtBl33SMMnmzvgdt0o2Z641SiR
/ERp41uNdrPjZOhOA+2c4HFwlznI6FqjyXHE2BkM2cPzzN3sqd9k/MiWowrV
KY/hmiQHlvbN9+/fh+M2FEspYlmOeC8qcSJvH8j6G0fcgQSNRJI+DzyCgXPj
JFtr6mnmnArYUImSRGaLbuGr81p9qWlvO/28yIOxV8RiFDQEdMrXzbT32t0c
+BOE7Aht7E1fftjb/HZ3HsLBb3498vb6ya4OLKs7xU2FpL8SiYp7zLXGtjFi
bU6i0NV1mPos6jybV5W+L4PemwYp/f0dsJdamufn05fhs366zfJQGxRsdlKK
RSrsQkSv1EnTWfbBWhaMgh4Igc+i9vEHuk/DO94d/hH6YnSV+oPC9sdPBgO/
jD7BXh/XB5tXv60evzm+eDn44dXu9x+3p8l37yfjJsMegx+EBykzr5K7xoUO
q/xtStPasVb/IBZC2eaT+si5v7tQdmjIck4hg5d8sUC1fk+lrnW056D+Uu3m
Yo78ykgYsbSfbT1nOvToFtSqiGkSYe1D/29F9Nlo+Ph/K6JzTI51FV3JrJIh
lbx+6ZwnarE0TXhhItiS1NUbwEIDUk0TLal71mFJ/10gwHDI4+0ndZUWWUgA
ZnHoC6Ov4jU/HnBk4KpEf0WXoVohO4jm/rN90YhsREMJgazrHVFnR+dyo5Xa
n1JIrq/07cWrnWGj/0Jm4Td0RN4r0VWSnszJ+N34lkC7CJmenH7eiePOJV3v
1qa5z/P/6JjRvPsf8VEPk1sbAAA=

-->

</rfc>
