<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pauly-intarea-proxy-config-pvd-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="Proxy Configuration PvDs">Communicating Proxy Configurations in Provisioning Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-pauly-intarea-proxy-config-pvd-01"/>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple, Inc.</organization>
      <address>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author initials="D." surname="Damjanovic" fullname="Dragana Damjanovic">
      <organization>Microsoft</organization>
      <address>
        <email>ddamjanovic@microsoft.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="13"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 26?>

<t>This document defines a mechanism for accessing provisioning domain information
associated with a proxy, such as other proxy URIs that support different protocols
and a list of DNS zones that are accessible via a proxy.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/tfpauly/privacy-proxy"/>.</t>
    </note>
  </front>
  <middle>
    <?line 32?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP proxies that use the CONNECT method <xref section="9.3.6" sectionFormat="of" target="HTTP"/>
(often referred to as "forward" proxies) allow clients to open connections to
hosts via a proxy. These typically allow for TCP stream proxying, but can also support
UDP proxying <xref target="CONNECTUDP"/> and IP packet proxying
<xref target="CONNECTIP"/>. Such proxies are not just defined as
hostnames and ports, but can use URI templates <xref target="URITEMPLATE"/>.</t>
      <t>In order to make use of multiple related proxies, clients need a way to understand
which proxies are associated with one another.</t>
      <t>Client can also benefit from learning about additional information associated with
the proxy to optimize their proxy usage, such knowing that a proxy is configured
to only allow access to a limited set of next hops.</t>
      <t>These improvements to client behavior can be achieved through the use of
Provisioning Domains. Provisioning Domains (PvDs) are defined in <xref target="PVD"/>
as consistent sets of network configuration information, which can include proxy
configuration details <xref section="2" sectionFormat="of" target="PVD"/>. <xref target="PVDDATA"/> defines a JSON
<xref target="JSON"/> format for describing Provisioning Domain Additional Information,
which is an extensible dictionary of properties of the Provisioning Domain.</t>
      <t>This document defines several mechanisms to use PvDs to help clients understand how
to use proxies:</t>
      <ol spacing="normal" type="1"><li>
          <t>A way to fetch PvD Additional Information associated with a known proxy URI (<xref target="proxy-pvd"/>)</t>
        </li>
        <li>
          <t>A way to list one or more proxy URIs in a PvD, allowing clients to
learn about other proxy options given a known proxy (<xref target="proxy-enumeration"/>).</t>
        </li>
        <li>
          <t>A way to define a limited set of DNS zones that are accessible through the
proxy (<xref target="split-dns"/>).</t>
        </li>
      </ol>
      <t>Additionally, this document partly describes how these mechanisms might be used
to discover proxies associated with a network (<xref target="network-proxies"/>).</t>
      <section anchor="background">
        <name>Background</name>
        <t>Other non-standard mechanisms for proxy configuration and discovery have been
used historically, some of which are described in <xref target="RFC3040"/>.</t>
        <t>Proxy Auto Configuration (PAC) files <xref section="6.2" sectionFormat="of" target="RFC3040"/> are Javascript
scripts that take URLs as input and provide an output of a proxy configuration
to use.</t>
        <t>Web Proxy Auto-Discovery Protocol (WPAD) <xref section="6.4" sectionFormat="of" target="RFC3040"/> allows
networks to advertise proxies to use by advertising a PAC file. This solution
squats on DHCP option 252.</t>
        <t>These common (but non-standard) mechanisms only support defining proxies by
hostname and port, and do not support configuring a full URI template
<xref target="URITEMPLATE"/>.</t>
        <t>The mechanisms defined in this document are intended to offer a standard
alternative that works for URI-based proxies and avoids dependencies
on executing Javascript scripts, which can open up security vulnerabilities.</t>
      </section>
      <section anchor="requirements">
        <name>Requirements</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
        </t>
      </section>
    </section>
    <section anchor="proxy-pvd">
      <name>Fetching PvD Additional Information for proxies</name>
      <t>This document defines a way to fetch PvD Additional Information associated with
a proxy. This PvD describes the properties of the network accessible through the proxy.</t>
      <t>In order to fetch PvD Additional Information associated with a proxy, a client
issues an HTTP GET request for the well-known PvD URI (".well-known/pvd") <xref target="PVDDATA"/>
and the host authority of the proxy. This is applicable for both proxies that are identified
by a host and port only (such as SOCKS proxies and HTTP CONNECT proxies) and proxies
that are identified by a URL.</t>
      <t>For example, a client would issue the following request for the PvD associated
with "https://proxy.example.org/masque{?target_host,target_port}":</t>
      <artwork><![CDATA[
:method = GET
:scheme = https
:authority = proxy.example.org
:path = /.well-known/pvd
accept = application/pvd+json
]]></artwork>
      <t>For a HTTP CONNECT proxy on "proxy.example.org:8080", the client would send the following
request:</t>
      <artwork><![CDATA[
:method = GET
:scheme = https
:authority = proxy.example.org:8080
:path = /.well-known/pvd
accept = application/pvd+json
]]></artwork>
      <t>Note that all proxies that are colocated on the same host and port share the same PvD
Additional Information. Proxy deployments that need separate PvD configuration properties
SHOULD use different hosts.</t>
      <t>PvD Additional Information is required to contain the "identifier", "expires", and
"prefixes" keys. For proxy PvDs as defined in this document, the "identifier" MUST
match the hostname of the HTTP proxy. The "prefixes" array SHOULD be empty by default.</t>
    </section>
    <section anchor="proxy-enumeration">
      <name>Enumerating proxies within a PvD</name>
      <t>This document defines a new PvD Additional Information key, <tt>proxies</tt>, that
is an array of strings that is a list of proxy URIs (or URI templates
<xref target="URITEMPLATE"/>) that are available as part of a PvD. The new
key is registered in <xref target="iana"/>.</t>
      <t>The kind of proxy is implied by the URI scheme and any template variables.
For example, since UDP proxying <xref target="CONNECTUDP"/> has the URI template variables
<tt>target_host</tt> and <tt>target_port</tt>, the URI
"https://proxy.example.org:4443/masque{?target_host,target_port}" implies
that the proxy supports UDP proxying.</t>
      <t>When a PvD that contains the <tt>proxies</tt> key is fetched from a known proxy
using the method described in <xref target="proxy-pvd"/> the proxies list describes
equivalent proxies (potentially supporting other protocols) that can be used
in addition to the known proxy.</t>
      <t>Such cases are useful for informing clients of related proxies as a discovery
method, with the assumption that the client already is aware of one proxy.
Many historical methods of configuring a proxy only allow configuring
a single FQDN hostname for the proxy. A client can attempt to fetch the
PvD information from the well-known URI to learn the list of complete
URIs that support non-default protocols, such as <xref target="CONNECTUDP"/> and
<xref target="CONNECTIP"/>.</t>
      <section anchor="example">
        <name>Example</name>
        <t>Given a known HTTP CONNECT proxy FQDN, "proxy.example.org", a client could
request PvD Additional Information with the following request:</t>
        <artwork><![CDATA[
:method = GET
:scheme = https
:authority = proxy.example.org
:path = /.well-known/pvd
accept = application/pvd+json
]]></artwork>
        <t>If the proxy has a PvD definition for this FQDN, it would return the following
response to indicate a PvD that has two related proxy URIs.</t>
        <artwork><![CDATA[
:status = 200
content-type = application/pvd+json
content-length = 222

{
  "identifier": "proxy.example.org.",
  "expires": "2023-06-23T06:00:00Z",
  "prefixes": [],
  "proxies": ["https://proxy.example.org","https://proxy.example.org/masque{?target_host,target_port}"]
}
]]></artwork>
        <t>The client would learn the URI template of the proxy that supports UDP using <xref target="CONNECTUDP"/>,
at "https://proxy.example.org/masque{?target_host,target_port}".</t>
      </section>
    </section>
    <section anchor="split-dns">
      <name>Split DNS information for proxies</name>
      <t>Split DNS configurations are cases where only a subset of domains is routed through
a VPN tunnel or a proxy. For example, IKEv2 defines split DNS configuration in
<xref target="IKEV2SPLIT"/>.</t>
      <t>PvD Additional Information can be used to indicate that a proxy PvD has a split DNS
configuration.</t>
      <t><xref section="4.3" sectionFormat="of" target="PVDDATA"/> defines the optional <tt>dnsZones</tt> key, which contains
searchable and accessible DNS zones as an array of strings.</t>
      <t>When present in a PvD Additional Information dictionary that is retrieved for a proxy
as described in <xref target="proxy-pvd"/>, domains in the <tt>dnsZones</tt> array indicate specific zones
that are accessible using the proxy. If a hostname is not included in the enumerated
zones, then a client SHOULD assume that the hostname will not be accessible through the
proxy.</t>
      <t>Entries listed in <tt>dnsZones</tt> MUST NOT expand the set of domains that a client is
willing to send to a particular proxy. The list can only narrow the list of domains
that the client is willing to send through the proxy. For example, if the client
has a local policy to only send requests for "example.com" to a proxy
"proxy.example.com", and the <tt>dnsZones</tt> array contains "internal.example.com" and
"other.company.com", the client would end up only proxying "internal.example.com"
through the proxy.</t>
      <section anchor="example-1">
        <name>Example</name>
        <t>Given a proxy URI template "https://proxy.example.org/masque{?target_host,target_port}",
which in this case is for UDP proxying, the client could request PvD additional information
with the following request:</t>
        <artwork><![CDATA[
:method = GET
:scheme = https
:authority = proxy.example.org
:path = /.well-known/pvd
accept = application/pvd+json
]]></artwork>
        <t>If the proxy has a PvD definition for this proxy, it could return the following
response to indicate a PvD that has one accessible zone, "internal.example.org".</t>
        <artwork><![CDATA[
:status = 200
content-type = application/pvd+json
content-length = 135

{
  "identifier": "proxy.example.org.",
  "expires": "2023-06-23T06:00:00Z",
  "prefixes": [],
  "dnsZones": ["internal.example.org"]
}
]]></artwork>
        <t>The client could then choose to use this proxy only for accessing names that fall
within the "internal.example.org" zone.</t>
      </section>
    </section>
    <section anchor="network-proxies">
      <name>Discovering proxies from network PvDs</name>
      <t><xref target="PVDDATA"/> defines how PvD Additional Information is discovered based
on network advertisements using Router Advertisements <xref target="RFC4861"/>. A network
defining its configuration via PvD information can include the <tt>proxies</tt>
key (<xref target="proxy-enumeration"/>) to inform clients of a list of proxies available
on the network.</t>
      <t>This association of proxies with the network's PvD can be used as a mechanism
to discover proxies, as an alternative to PAC files. However, client systems MUST
NOT automatically send traffic over proxies advertised in this way without
explicit configuration, policy, or user permission. For example, a client
can use this mechanism to choose between known proxies, such as if the client was
already proxying traffic and has multiple options to choose between.</t>
      <t>Further security and experience considerations are needed for these cases.</t>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <t>Configuration advertised via PvD Additional Information, such DNS zones or associated
proxies, can only be safely used when fetched over a secure TLS-protected connection,
and the client has validated that that the hostname of the proxy, the identifier of
the PvD, and the validated hostname identity on the certificate all match.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document registers a new key in the "Additional Information PvD Keys" registry.</t>
      <t>JSON Key: proxies</t>
      <t>Description: Array of proxy URIs associated with this PvD</t>
      <t>Type: Array of strings</t>
      <t>Example: ["https://proxy.example.com", "https://proxy.example.com/masque{?target_host,target_port}"]</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <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="CONNECTUDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="CONNECTIP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky" initials="A." surname="Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="April" year="2023"/>
            <abstract>
              <t>   This document describes how to proxy IP packets in HTTP.  This
   protocol is similar to UDP proxying in HTTP, but allows transmitting
   arbitrary IP packets.  More specifically, this document defines a
   protocol that allows an HTTP client to create an IP tunnel through an
   HTTP server that acts as an IP proxy.  This document updates RFC
   9298.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-13"/>
        </reference>
        <reference anchor="URITEMPLATE">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="PVDDATA">
          <front>
            <title>Discovering Provisioning Domain Names and Data</title>
            <author fullname="P. Pfister" initials="P." surname="Pfister"/>
            <author fullname="É. Vyncke" surname="É. Vyncke"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="W. Shao" initials="W." surname="Shao"/>
            <date month="July" year="2020"/>
            <abstract>
              <t>Provisioning Domains (PvDs) are defined as consistent sets of network configuration information. PvDs allows hosts to manage connections to multiple networks and interfaces simultaneously, such as when a home router provides connectivity through both a broadband and cellular network provider.</t>
              <t>This document defines a mechanism for explicitly identifying PvDs through a Router Advertisement (RA) option. This RA option announces a PvD identifier, which hosts can compare to differentiate between PvDs. The option can directly carry some information about a PvD and can optionally point to PvD Additional Information that can be retrieved using HTTP over TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8801"/>
          <seriesInfo name="DOI" value="10.17487/RFC8801"/>
        </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="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="PVD">
          <front>
            <title>Multiple Provisioning Domain Architecture</title>
            <author fullname="D. Anipko" initials="D." role="editor" surname="Anipko"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document is a product of the work of the Multiple Interfaces Architecture Design team. It outlines a solution framework for some of the issues experienced by nodes that can be attached to multiple networks simultaneously. The framework defines the concept of a Provisioning Domain (PvD), which is a consistent set of network configuration information. PvD-aware nodes learn PvD-specific information from the networks they are attached to and/or other sources. PvDs are used to enable separation and configuration consistency in the presence of multiple concurrent connections.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7556"/>
          <seriesInfo name="DOI" value="10.17487/RFC7556"/>
        </reference>
        <reference anchor="RFC3040">
          <front>
            <title>Internet Web Replication and Caching Taxonomy</title>
            <author fullname="I. Cooper" initials="I." surname="Cooper"/>
            <author fullname="I. Melve" initials="I." surname="Melve"/>
            <author fullname="G. Tomlinson" initials="G." surname="Tomlinson"/>
            <date month="January" year="2001"/>
            <abstract>
              <t>This memo specifies standard terminology and the taxonomy of web replication and caching infrastructure as deployed today. It introduces standard concepts, and protocols used today within this application domain. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3040"/>
          <seriesInfo name="DOI" value="10.17487/RFC3040"/>
        </reference>
        <reference anchor="IKEV2SPLIT">
          <front>
            <title>Split DNS Configuration for the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document defines two Configuration Payload Attribute Types (INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA) for the Internet Key Exchange Protocol version 2 (IKEv2). These payloads add support for private (internal-only) DNS domains. These domains are intended to be resolved using non-public DNS servers that are only reachable through the IPsec connection. DNS resolution for other domains remains unchanged. These Configuration Payloads only apply to split- tunnel configurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8598"/>
          <seriesInfo name="DOI" value="10.17487/RFC8598"/>
        </reference>
        <reference anchor="RFC4861">
          <front>
            <title>Neighbor Discovery for IP version 6 (IPv6)</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <author fullname="H. Soliman" initials="H." surname="Soliman"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document specifies the Neighbor Discovery protocol for IP Version 6. IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4861"/>
          <seriesInfo name="DOI" value="10.17487/RFC4861"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91a63IbuZX+j6dA6B9rV0haomWPzVqvw4hyrIwtMRY9qU1q
Kga7QRHjZnen0U2ZUWmeZZ9ln2y/cwD0hRfv1kxqt2qnpspUN4BzP+c7Bz0Y
DERpykSP5Xm2XlepiVRp0ls5K7KvWzxLl+a2KvAsS600KT3fGIu/aNE0WyuT
WqEWi0Jvxoc2ydlmakWcRalag0hcqGU5yFWVbAcmLVWh1SCnXYOIdw3yTTw4
ORWxKvVYgBd9mxXbsbRlLITJi7Esi8qWo5OTVycj8UVv77IiHsvLtNRFqsvB
lM4XwpYqjf+mkiwFza22Ijdj+dcyi/rSZkVZ6KXFr+2afvwohKrKVVaMhRwI
if8g0ljOh3JGbPITx/wcGtq2nmbF7VhO8jzRfXAQDfmhhkoSsMky/k7R22GU
rTtnT4dyqtY/qRS6jFoEwP2tStXuS6bzwURFZjNI16ISx/XK363DAiYnBoOB
VAtbFiqCQuYrYyWsUK11WspYL02qrVRyraOVSo1dy2VWSBVF2lqybN42c8xm
ButYs2arCmVtFhmYJ5Z3plzhJLYilFpF+MvKrFzpwj2Unz5eWlmuVIm3eQ79
y9gsl7ogVrACZskSOFEa45jE2FJmSzm9upH/yIhJ3ghHCdwtEi03RgWSQyfq
2sRxooV4RL5QZHEVMZ/i3Xw+44UmHFVZjR9anl9fXV2cz6ECGD+W9/c3mvfI
V8NnwxfEw29o8+uPb89fnZ6ePDyIx1CuTiWcRhcFJC8zkrQHrdypIu4FMk+k
SpLsTkaJgYSWlmU59sHDU0eCnolVZvGyLYmcrzQxt80RhUmy9eeQZebnM8QA
omXt1sIsfbmoShmpFMtsFlQrPk1n9RII9RsvJh6zJKNXLx8eJOn6EutU9EWX
9XLRLL+cvb4cTIdGl8vBWtm/V3rg2R+Y/OFhKG/IzkGvZJ00K+VPCE3vXLCl
ZRHJsy0TJPZswzXZAZ4hS73OE3iSJW7xYH7xYfZ+Mr8gdl88/w6Kh4kvU0RB
DI+CMtfqi+bdMNG6SkqDEINREvZGz1K/1n6qiRd5p7a0t0pxCGcHcbcyOyLs
OjXcD4yzJ4OFcz6wUfhCp5C0lMsiW8tEq4JjRS0yyKfi2JChVdKOml0CgtzQ
hQj7SGnW5h/snCaETmXVrfZR9SXN7oiECwi/AGEd+XyrY0HHpLXjuIBhN0Vc
rQ3RtZrDK9VfS7nKcjuk3EBeZ9YU83odXNbpD1Ku1MbAA0nuBQXhyugNOf+q
yKrbFYeSM4Y4VBuGByuGfExl4QlrPfgLMsz9/ZvZD1My/HfPn79AxCmWziIn
EC/g3TrmS6T9L7XgTrktRfelMy7xbNIoqWKvZ9HdEusSadS2Yn9E54MHcnG4
I35NJ/MJcfTy5ckpIqdJnX+8ub6iiKF/ecHo+SsscExw0MbaRoVZ+HK6qwQ5
aZzkssW7d0xDQSNhJp26nBcbZlEVW+IR4uS6KMl18RcZ4QCJ4bHEb2HCAnTr
9M8mJzOSXej3Sid5HUNN1MBn7oRf6kNnLMTpUE5ChC11Ce5xzBH59qJMsWOn
Ta2Qj+/vHSYAGHh4eNI93xUIRCYUvM4K3a4xUKoi0n0XAKSIJgkLjlEfoO3y
RIFHOfnWbHS6w07Nik6hQec2YGnY5cmpdT/Kvl3EWhEkamo2T0w5iFPrqDQ6
TFBcy44xc1WUiHXvZSAC29BhME3Lrmtzu6IwJpNxgoiNjRDoRZP69gwSAgz8
+J8Dv9hx9eiR/D1Kxy34RyIV16zMNEsH7COohW0GKBKceN3gI28KvGwlsowG
lzoVxKeEoGVWuDJImG3N2d5FhksaTuiQNhB/z07OXK1wKHRSQdYuFH08m5w/
kUuT6HbIvxhy0Ncn8Pl/VBtFFPJSuH+8CUuqPZ8+vietgXROuT6NHVyKqVpI
eBc9xYnqkNg+eMDmn/VCNqwOprUqZh4Sycd/nk2mTzqsnu2wSm5uhTeSS/Xx
hvJCE58hshfb+h0XKgltsDIId8CvbJZUzCGqvaJEm8rpO8AOFx5y9HxU1woA
zDXpk0p52+xP2nbnQlQDPooQDyyZqcW2Rgc1OOg7n8gYS4SdQXuO52WVJB3U
gAzcwgxsf/DY5qNVX7rxQ3ZGD6KR3BjLZYRJQSNII1RCXQXMttHO+k7J5NCg
OVgo2wAOZl1tMhMTxZwOTSM8FxklcR1V3FU1biW9W7VLFaPEKkf2iCBvuZWb
KkmRdBYGOQFnucj7qP9emcIVaics2iBiDZR7Hz7dzHt996+8uubfHy/+9Ony
48WUft+8m7x/X/8QfsXNu+tP76fNr2bn+fWHDxdXU7cZT2Xnkeh9mPx7z5mt
dz2bX15fTd73Dmu6JMTE+i7yQpcOIHbC+Pfns//8j9Mzqrvw8NHpKZVT98fL
0+/O8MfdSqeOGjuX+xPJZyvQZyG7cwGAg0QqNyVAWp+i1K4onSNDIej+9U1C
iXrw4s2/CeoV3lKx4vp8vF6F/EVGvn/UFKbjTdUvrISi1QfgYNrY5HYPFXdq
fkjUh6tK3SC10fMvqM++tVO+mApjbcUeL7m7+sPFHPAbLYJ1sIco3+kkGbhC
SqS4qveGzdOn0GCPUptHWIT10pi3UlqQriOnGPCStjVD0Ah9NaoDCUwkF6jn
3S6PgxsxWJqlQd2j5OdP9snGudDj0K/eXJ9/f9MJZpYtNIlNa5fWIS8OEOIs
SwUCWn8LxvRXteb5QFAeArVK4O6kQhZsmQWosqtDUlxjDMHG6K3KMrfjp0+d
Pvzxw6y4feratPs3pSpudfk3Erbvf5O8Dz0AtZ9//lmMfcP7mgwnxjZaIZfg
Lz5ZjBvNv5Z7RMQ4V+DitXy6Y0tBHois9jpYhlyJXvz2J4uSQnRZH2pfrVuq
NL09UuOXJy9PehzeXdVZ7R2l1pzwmvsnCMhUf5WUV1npqwVloj2fRF3PIg6u
LGUpLFXArmfaFSfM8BJ+IA7H6tADCBScJNv61o0ocdNrNRAiSLEjdbFXk0mE
z/iEEJqpDM8mCEodTxMIwsJVIi6eOL9UxonUq+OhoLKhv+ZYZV2dELA0EuVX
/E11C/3h2xofcu+hjlfs/t7pkuqcAEfRqs4dDCl81qinP264IlvEVVEgTXvp
UZmAJ+ASC1LmUlVJScVWXgTU30IuFIeh0agLQrs9OF4YUn33rcwLffTlZ0/n
c59NKVwf6LiFVLYkJOTNTO/qiVmrD3rsEEozWhHHRitPWp3JBr0wZ1SYgHoL
h2HBr9MdmKeBqzP8LbXkRYDfRqWqhl5fDNXnwA+lazDhUyPZhBjzMcmYKd3W
fMqNKgyxAN/rZE8g1gg7u6OtZrIFaLBStj59/zjxuZUVPzPdz63c+Lkf9orj
CXZ8dnb27L/Psl5cXx2aCY/Hs7YjBbUBKx2ciXf4QHLS1M4gvea5ekOXPHTq
tKrom9xwSIeJ5k6P1Gqpa7bIn9l/aqAhKKY3KvGzWV7xOM9o/mJ4JunlIFp1
E+0muN6X/KCI202KE+/rlCSIbItlSM9jxAhA2k3gsAkInyugG+e0W3j41M6U
jzxVNU2kcIL3HW4hYiif1dr1L7U5fDFRSaFVzEpVd0Qbx9NYwXP2gfyy6UK9
TpmJbkcSSlg9dWu9BqIjoyCk3v5petVkp1DhfWaaBJ54tliS+5YNVKPxAHlH
e5DI5t/BWez5mZtE8ruQGNCtwYXRKu3P4al58/musWMzxN+JMUrf9aPLGUc8
GpILFyNC/KEzQDlQ6EkL/QO1vtfCRxEV+VDRv5UtayPvIaj/a6Bz2YKsnJiU
B/PUA9c9BZc2pxETsA0ao8pbr41ubJ6lllso5FaiqdsZg1PfXdYJDlcIhl4R
6GjLyoLn0ckJjUApmgflNtfHxAhrkAZuWQ2j0UiIeyE71Xd8wJRDdIWyqflY
MjoZPRucvBiMns1PXoxPTvD/X9yiuhiP5V9/9E84runB8UTc6/8aFPyjeHBW
mu8CyyZyOkWk3YB0oselcpd2u5HSF1j1a5hk8HFDo0CeIZqj7WgzLkQurddH
3Wtbxp2cY++oDfbJCmIs/Jwy9lN5Ku1ZVTbTfSSwH2ZXsqzSVCeS8bvPWZ3y
fPn9xWbUDJcP8wEpkD3eYO0Po5vZ+8s5D82f033Ut5Fmq6B0QqBzD0L7XajV
5LvDftBoBmlnw2d+0O+az5p3srQbeIGJz9DrX2h8+9lBMz+p8QVaWPhLtHKI
iYBM04M3c191EL2Fso8AsOR/NZw8ooHW6D/gPmSKwl3ELBuzCAbPx6p+v7Gz
c/OWfI7DWrU21xFiPHJSiEPT6wZueI+4XPoWm0scWKQpnr99iQPJgJOBDfho
Bl5pk/09Hue6rZuaXR97Z9BU0cGLb4/SoeGLlDTk8I1joCVvmI/Bh/MweNgJ
Bu9enjFjBdFmmTPfg9K9GgFlE1WJKtp9BpdeHulRqMFwhRvN1zXZExG7qMRY
uUdmb6DTDT6zbB0gXAxQj4nmM0Nmd3eLPIul03yJdFPMXkhKgAg9Lw/70U5e
p9du7nbQbWrI2uPxHry3s9O1fe4albAIkJU/ca+3Jw6r3LFbI/3Dp4pDg65D
aKS5V6pT+q9JzfX9nG9OKbEyMqeeqwXtO9JFvro3oObwDbH4fwFq/LzQNHL/
QlTDF/BNlFPG6B9wB8IE/zyoc/rs+f8G1AlBxFjnoEiHkIpTKOfMaJVlTn3u
i5ageBc93c953EcYrNcluhThZxhunHKINuuaUUi4l2qPQLj9CLNnntrcP9q9
KKRyu19f6Yry20Ol0M3RwIAuWOgCpR5zh7stN+pyJegjIZYCJ3beuTvBs5cv
TukqfxKOEPVFlCntDj6hT3F2G632FwSdhpxHIUduh51L0yHt3rU7qeHuNUxc
hJ8FeibDtX0Y/hIjrW11jvDL/8XdFbRhkup823Xo1rcfoEn7jiur7wTtUL7L
7ugrgfAljbRb1NG1dSM3Kp3INRmpyX2r5GpVoZYEG7r3y8EyzUSPbkhIDJhO
IH4QlabsWqPvq1efUCdkwnG6WBtreex5cLQuwldFTKL5so2mky5WFlCYRug0
MwjWRGh3O5UUPFoRhgR1LQoC8qcQ2FJ/fxQ+ItgjRhcBVcGTkvpej3ZDbASV
prkWf+IS6zZcpwGux3buRp/xu2sLwinn3W1oBnQ06J6FKOxegbdsEdz9yGco
TisNkqV80lxGNJ9ZBZCzoGn1Uidb54F0N1dPq9gdlJNfy/n7G8oSJbA43jVf
xfXrKyBvAVLwRiUmVq4lYai0iwjb7ZmruU3apo+S/E1KA1+aExuwyjvKbZjJ
R6SjpS9JAJw8YGblX06uJvuK5/nn7tg3DEnD4JcneD7nHkl/ZI7v9db2/OaC
MA19X0RPx/W9k5hqd3uMPWM5Cc1FawC8e4dX+gtF8IhS2NrjGxKgZRdNxxtv
h9iOv/yfdN7/BcSfI2huLAAA

-->

</rfc>
