<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version  -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>

<rfc docName="draft-birk-pep-05" category="std">

  <front>
    <title abbrev="pretty Easy privacy (pEp)">pretty Easy privacy (pEp): Privacy by Default</title>

    <author initials="V." surname="Birk" fullname="Volker Birk">
      <organization>pEp Foundation</organization>
      <address>
        <postal>
          <street>Oberer Graben 4</street>
          <city>CH-8400 Winterthur</city>
          <country>Switzerland</country>
        </postal>
        <email>volker.birk@pep.foundation</email>
        <uri>https://pep.foundation/</uri>
      </address>
    </author>
    <author initials="H." surname="Marques" fullname="Hernani Marques">
      <organization>pEp Foundation</organization>
      <address>
        <postal>
          <street>Oberer Graben 4</street>
          <city>CH-8400 Winterthur</city>
          <country>Switzerland</country>
        </postal>
        <email>hernani.marques@pep.foundation</email>
        <uri>https://pep.foundation/</uri>
      </address>
    </author>
    <author initials="B." surname="Hoeneisen" fullname="Bernie Hoeneisen">
      <organization>pEp Foundation</organization>
      <address>
        <postal>
          <street>Oberer Graben 4</street>
          <city>CH-8400 Winterthur</city>
          <country>Switzerland</country>
        </postal>
        <email>bernie.hoeneisen@pep.foundation</email>
        <uri>https://pep.foundation/</uri>
      </address>
    </author>

    <date year="2019" month="November" day="04"/>

    
    
    

    <abstract>


<t>The pretty Easy privacy (pEp) model and protocols describe a set of conventions
for the automation of operations traditionally seen as barriers to
the use and deployment of secure, privacy-preserving end-to-end interpersonal
messaging. These include, but are not limited to, key management, key
discovery, and private key handling (including peer-to-peer synchronization of
private keys and other user data across devices). Human Rights-enabling
principles like Data Minimization, End-to-End and Interoperability are
explicit design goals. For the goal of usable privacy, pEp
introduces means to verify communication between peers and proposes a 
trust-rating system to denote secure types of communications and signal the
privacy level available on a per-user and per-message level.
Significantly, the pEp protocols build on already available security
formats and message transports (e.g., PGP/MIME with email), and are written
with the intent to be interoperable with already widely-deployed systems
in order to ease adoption and implementation.
This document outlines the general design choices and principles of pEp.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Secure and private communications are vital for many different
reasons, and there are particular properties that privacy-preserving
protocols need to fulfill in order to best serve users. In
particular, <xref target="RFC8280"/> has identified and documented important
principles such as data minimization, the end-to-end principle, and
interoperability as integral properties which enable access to
Human Rights. Today’s applications widely lack privacy support that ordinary 
users can easily adapt. The pretty Easy privacy (pEp) protocols generally
conform to the principles outlined in <xref target="RFC8280"/>, and, as such, can
facilitate the adoption and correct usage of secure and private
communications technology.</t>

<t>The pretty Easy privacy (pEp) protocols are propositions to the
Internet community to create software for peers to automatically
encrypt, anonymize (where possible), and verify their daily written
digital communications.  This is achieved by building upon already
existing standards and tools and automating each step a user needs to
carry out in order to engage in secure end-to-end encrypted
communications.  Significantly, the pEp protocols describe how do to
this without dependence on centralized infrastructures.</t>

<t>The pEp project emerged from the CryptoParty movement. During
that time, the initiators learned that while step-by-step guides can
help some users engage in secure end-to-end communications, it is both
more effective and convenient for the vast majority of users if these
step-by-step guides are put into running code (following a protocol), which
automates the initial configuration and general usage of cryptographic
tools. To facilitate this goal, pEp proposes the automation of key
management, key discovery, and key synchronization through an in-band
approach which follows the end-to-end principle.</t>

<t>To mitigate man-in-the-middle attacks (MITM) by an active adversary,
and as the only manual step users carry out in the course of the
protocols, the proposed Trustwords <xref target="I-D.birk-pep-trustwords"/>
mechanism uses natural language representations of two peers’
fingerprints for users to verify their trust in a paired
communication channel.</t>

<t>The privacy-by-default principles that pEp introduces are in
accordance with the perspective outlined in <xref target="RFC7435"/>, aiming to
provide opportunistic security in the sense of “some protection most
of the time”.  This is done, however, with the subtle but important
difference that when privacy is weighed against security, the choice
defaults to privacy.  Therefore, data minimization is a primary goal
in pEp (e.g., hiding subject lines and headers unnecessary for email
transport inside the encrypted payload of a message).</t>

<t>The pEp propositions are focused on (but not limited to) written
digital communications and cover asynchronous (offline) types of
communications like email as well as synchronous (online) types such
as chat.</t>

<t>pEp’s goal is to bridge different standardized and widely-used
communications channels such that users can reach communications
partners in the most privacy-enhancing way possible.</t>

<!-- # Rewritten Inroduction from CL: HM to check for merging.

The pretty Easy privacy (pEp) model and protocols represent an
implementation guideline for bringing Human Rights privacy
principles like data minimization, the end-to-end principle, and
interoperability to existing messaging applications. The pretty Easy
privacy (pEp) protocols are a proposition to the Internet community
to create interoperable software to allow the users to encrypt,
anonymize (where possible), and verify their daily written
communication without application boundaries. pEp does cross-device
trust management such that users are assisted in their privacy
preservation and end-to-end security. Users remain in control of
expressing their personal trust in the correspondents in an easy
way, an information which should be respected by as many
applications as possible.

Balancing security and privacy in remote communication protocols is
vital for many different reasons, and there are unique properties
that protocols prioritizing privacy-preservation need to fulfill in
order to best serve users. In particular, {{RFC8280}} has identified
and documented essential principles required from a Human Rights
perspective when accessing the Internet, such as data minimization,
the end-to-end principle, and interoperability. While (partial)
implementations of these concepts are already available, today's
applications widely lack privacy support that ordinary users can
easily handle. The pretty Easy privacy (pEp) propositions generally
conform with the principles outlined in {{RFC8280}} as a matter of
course, and as such can be used to facilitate the adoption and
correct usage of secure and private communication technology.

The pEp initiators learned from the CryptoParty movement, from which
the project emerged, that manually engaging cryptographic services
is only for the few. It is largely more effective and convenient to
automatically bootstrap the security context, and have humans just
do a verification whenever they prefer, and eventually re-use such
pre-verified trust anchors to authenticate further transports
automatically (multi-factor authentication).

The privacy-by-default principles that pEp introduces are in
accordance with the perspective outlined in {{RFC7435}}, aiming to
provide opportunistic security in the sense of "some protection most
of the time". This is done, however, with the subtle but important
difference that when privacy is weighed against security, the choice
defaults to privacy.

To mitigate man-in-the-middle attacks (MITM) by an active adversary,
the only manual step users carry out in the course of the pEp
protocol, is the proposed Trustwords {{I-D.birk-pep-trustwords}}
mechanism using natural language representations of two peers'
fingerprints for users to verify their trust in a paired
communication channel.

The pEp propositions are focused on written digital communication,
but it is not excluded to other forms of communication may build
upon pEp. pEp covers both asynchronous (offline) types of
communication like email as well as synchronous (online) types of
communication such as chat protocols.

-->

<section anchor="relationship-to-other-pep-documents" title="Relationship to other pEp documents">

<!-- TODO (HM): Merge -->

<t>While this document outlines the general design choices and
principles of pEp, other related documents specialize in more
particular aspects of the model, or the application of pEp on a
specific protocol like as follows:</t>

<t><list style="numbers">
  <t>pEp-enabled applications (e.g., pEp email
<xref target="I-D.marques-pep-email"/>).</t>
  <t>Helper functions for peer interaction, which facilitate understanding 
and handling of the cryptographic aspects of pEp implementation for 
users (e.g., pEp Handshake <xref target="I-D.marques-pep-handshake"/>).</t>
  <t>Helper functions for interactions between a user’s own devices, which give 
the user the ability to run pEp applications on different devices at the same 
time, such as a computer, mobile phone, or tablets (e.g., pEp KeySync
<xref target="I-D.hoeneisen-pep-keysync"/>).</t>
</list></t>

<t>In addition, there are documents that do not directly depend on this
one, but provide generic functions needed in pEp, e.g., IANA
Registration of Trustword Lists <xref target="I-D.birk-pep-trustwords"/>.</t>

<t>[[ Note: At this stage it is not yet clear to us how many of our
  implementation details should be part of new RFCs and where
  we can safely refer to already existing RFCs to clarify which RFCs
  we rely on. ]]</t>

<!-- # Terms -->
<!-- # Normative language -->

</section>
<section anchor="requirements-language" title="Requirements Language">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this
document are to be interpreted as described in <xref target="RFC2119"/>.</t>

<!-- ## Terms -->

</section>
<section anchor="terms" title="Terms">

<t>The following terms are defined for the scope of this document:</t>

<t><list style="symbols">
  <t>pEp Handshake: The process of one user contacting another over an
independent channel in order to verify Trustwords (or fingerprints
as a fallback). This can be done in-person or through established
verbal communication channels, like a phone
call. <xref target="I-D.marques-pep-handshake"/></t>
  <t>Trustwords: A scalar-to-word representation of 16-bit numbers (0 to
65535) to natural language words. When doing a Handshake, peers are
shown combined Trustwords of both public keys involved to ease the
comparison. <xref target="I-D.birk-pep-trustwords"/></t>
</list></t>

<!--

[KRB] If my suggestions above are kept [[pEp Handshake]], there is no
need to have the second sentence about the Handshake, as it's already
been related in the Handshake definition.

-->

<t><list style="symbols">
  <t>Trust On First Use (TOFU): cf. <xref target="RFC7435"/>, which states: “In a
protocol, TOFU calls for accepting and storing a public key or
credential associated with an asserted identity, without
authenticating that assertion. Subsequent communication that is
authenticated using the cached key or credential is secure against
an MiTM attack, if such an attack did not succeed during the
vulnerable initial communication.”</t>
</list></t>

<!-- TODO: Make clear that we use TOFU without T. -->

<t><list style="symbols">
  <t>Man-in-the-middle (MITM) attack: cf. <xref target="RFC4949"/>, which states: “A
form of active wiretapping attack in which the attacker intercepts
and selectively modifies communicated data to masquerade as one or
more of the entities involved in a communication association.”</t>
</list></t>

<!-- Out of scope:
Qualified Electronic Signature
: An electronic signature created with the intention to comply with official regulations or mutual agreements, usually to settle contractual terms electronically on par with traditional methods. Technically they may build upon the same protocols as pEp does, but pEp does not give them any particular meaning. Qualified Electronic Signatures are defined for example by the Swiss Federal Law Nr 943.03 on Certification Services, and the EU Regulation No 910/2014 (eIDAS Regulation).
-->

<!-- To be discussed (if left in, adjust formating): 
OUTGOING MESSAGE
: A message which is being prepared with the intent to, or was already sent to other correspondents. Outgoing messages may be transient and quickly discarded, or being archived.

INCOMING MESSAGE
: A message which is being received, or was previously received from other correspondents. Incoming messages are always persistent and never discarded, and may be archived.
-->

</section>
</section>
<section anchor="protocols-core-design-principles" title="Protocol’s Core Design Principles">

<section anchor="privacy-by-default" title="Privacy by Default">

<t>pEp’s most important goal is to ensure privacy above all else. To clarify,
pEp’s protocol defaults are designed to maximize both security and privacy,
but in the few cases where achieving both more privacy and more security are in
conflict, pEp chooses more privacy.</t>

<t>In contrast to pEp’s prioritization of user privacy, OpenPGP’s
Web-of-Trust (WoT) releases user and trust level relationships to the public.
In addition, queries to OpenPGP keyservers dynamically disclose the social 
graph, indicating a user’s intent to communicate with specific peers.
Similar issues exist in other security protocols that rely upon a 
centralized trust model, such as the certificate revocation protocols used in 
XPKI (S/MIME).</t>

<t>[[<spanx style="strong">TODO</spanx>: Fix the wording and reference to XPKI, S/MIME]].</t>

<t>In pEp messaging (e.g., when using HTML) content and information
SHALL NOT be obtained from remote locations as this constitutes a
privacy breach.</t>

<t>Because of the inherent privacy risks in using remote or
centralized infrastructures, implementations of pEp messaging, by default, 
SHALL NOT obtain content and information from remote or centralized locations,
as this constitutes a privacy breach. In email this issue exists with HTML
mails.</t>

<!-- ### Linking Correspondents to Contact Cards -->

<!-- TODO: To be discussed; not only because of the content / the phrasing,
     but also because of the location.

Users tend to manage databases of contact information about other
correspondents. Such databases contain information about different
addresses used by other correspondents which the user considers to be
reaching the same correspondent (potentially with different degrees of
end-to-end confidentiality).

A software usually can't properly infere these relationships just
from the addresses. Engineers usually improve the result of their
software by handing out personalized tokens (e.g. HTTP cookies) and
looking for them in incoming correspondence, to do cross-channel
correlation and tracking.

Such technology represents an attempt to breack privacy. pEp software
MUST NOT actively employ such technology, but SHOULD integrate with
contacts management and other information bases to passively learn
these associations which the local user already made.

Basically speaking, it should be the user who actively breaks other
users' privacy, not the software, which should not anticipate and
automate the privacy breaking.


\[\ **NOTE**: having a hard time to specify this in exact terms, as
most terms are not yet introcuced at this point: identities, users,
end-to-end, ... \]\]

-->

</section>
<section anchor="data-minimization" title="Data Minimization">

<t>Data minimization keeps data spare and hides all technically 
concealable information whenever possible. It is an important design goal of
pEp.</t>

</section>
<section anchor="interoperability" title="Interoperability">

<t>The proposed pEp protocols seek interoperability with established message 
formats, as well as cryptographic security protocols and their widespread 
implementations.</t>

<!-- TODO: Understandability difficult; to be discussed. 

Two integration strategies are considered:

 1. install asymmetric keys which have been produced and transferred
 under control of pEp into the existing cryptographic security
 services of a transport, to measure and defend the end-to-end
 principle,
 
 1. wrapping messages, for transparently transporting them over
 alternative transports.

Seamless communication between users of software, which implement pEp,
and users of other software, which employ the same encryption services
and technically allow for maintaining the same level of end-to-end
encryption, MUST be guaranteed.

-->

<t>To achieve this interoperability, pEp MUST follow Postel’s Robustness 
Principle outlined in <xref target="RFC1122"/>: “Be liberal in what you accept, and 
conservative in what you send.”</t>

<t>Particularly, pEp applies Postel’s principle as follows:</t>

<t><list style="symbols">
  <t>pEp is conservative (strict) in requirements for pEp
implementations and how they interact with pEp or other compatible
implementations.</t>
  <t>pEp liberally accepts input from non-pEp implementations. For example, in 
email, pEp will not produce outgoing messages, but will transparently 
support decryption of incoming PGP/INLINE messages.</t>
  <t>Finally, where pEp requires divergence from established RFCs due to privacy 
concerns (e.g., from OpenPGP propositions as defined in <xref target="OpenPGP"/>, options 
SHOULD be implemented which empower the user to override pEp’s defaults.</t>
</list></t>

<!-- (e.g., from OpenPGP propositions as defined in {{TLS}}; TLS? -->

<!-- TODO: Discuss contents on this and references for next I-D revision.

\[\[ **TODO**: Keyreset and Keysync are ASN.1 specified, so that vendor-independent integration is easily possible. \]\]

\[\[ **TODO**: tcpdump dissector anyone? \]\]

-->

<!-- Review (HM), maybe link to existing RFCs:

## End-to-End {#end-to-end}

\[\[ **TODO**: Peer-to-Peer means that all nodes have symmetric
capabilities; it does not exclude hierarchies or even central
infrastructure. Some P2P networks have "super nodes", some have
central lists to boostrap the network. While End-to-End means that a
network can not be partitioned in any way to learn from the
communication flowing over the intercepted vertices. They are
complementary but independent concepts. \]\]

-->

</section>
<section anchor="peer-to-peer" title="Peer-to-Peer">

<t>Messaging and verification processes in pEp are designed to work in a
peer-to-peer (P2P) manner, without the involvement of intermediaries.</t>

<t>This means there MUST NOT be any pEp-specific central services
whatsoever needed for pEp implementations, both in the case of 
verification of peers and for the actual encryption.</t>

<t>However, implementers of pEp MAY provide options for interoperation with
providers of centralized infrastructures (e.g., to enable users to
communicate with their peers on platforms with vendor lock-in).</t>

<!-- TODO - to be discussed: Perhaps approaches of Qualified Signatures are, 
     technically speaking, covered by this; this can also be generalized under 
     an own chapter. -->

<t>Trust provided by global Certificate Authorities (e.g., commercial
X.509 CAs) SHALL NOT be signaled as trustworthy
(cf. <xref target="I-D.marques-pep-rating"/>) to users of pEp (e.g., when
interoperating with peers using S/MIME) by default.</t>

</section>
<section anchor="user-interaction" title="User Interaction">

<!-- TODO (HM): Decide whether parts of this goes to handshake draft -->

<t>Implementers of pEp MUST NOT expose users to technical terms and views, 
especially those specific to cryptography, like “keys”, “certificates”, or 
“fingerprints”. Users may explicitly opt-in to see such terms wanting seeking 
for more options; i.e., advanced settings MAY be available, and in some cases, 
these options may be required.</t>

<t>The authors believe that widespread adoption of end-to-end cryptography is
possible if users are not required to understand cryptography and key 
management. This belief forms the central goal of pEp, which is that users
can simply rely on the principles of Privacy by Default.</t>

<t>On the other hand, to preserve usability, users MUST NOT be required to wait
for cryptographic tasks such as key generation to complete before being able to
use their respective message client for its default purpose. In short, pEp
implementers MUST ensure that the ability to draft, send, and receive messages
is always preserved, even if that means a message is sent unencrypted, in
accordance with the Opportunistic Security approach outlined in <xref target="RFC7435"/>.</t>

<t>In turn, pEp implementers MUST ensure that a distinguishable privacy status is
clearly visible to the user, both on a per-contact as well as per-message
level. This allows users to assess both the privacy level for the 
message and the trust level of its intended recipients before choosing to send
it.</t>

<t>[[ <spanx style="strong">NOTE</spanx>: We are aware of the fact that usually UX requirements are
not part of RFCs. However, in order to encourage massive adoption of
secure end-to-end encryption while at the same time avoiding putting
users at risk, we believe certain straightforward signaling
requirements for users to be a good idea, just as it is currently done
for already-popular instant messaging services. ]]</t>

<!-- TODO [nk]:

**[nk] I think this point could be strengthened, maybe something like: By including a UX structure that is so without any complexities or possibilities for the user to make mistakes pEp enables and accelerates the Human Right respecting aspects of the underlying technology.

-->

<!-- TODO: The concrete, respective dialogs belong to the Handshaking and Sync 
     drafts. 

Possibly to be included:

../shared/ascii-arts/trustwords_schematic.mkd

../shared/ascii-arts/handshaking_dialog_insecure.mkd

../shared/ascii-arts/handshaking_dialog_secure.mkd

../shared/ascii-arts/sync/pep_sync_handhsaking_dialog.mkd

-->

</section>
</section>
<section anchor="identity-system" title="Identity System">

<t>Everyone has the right to choose how to reveal themselves to the world, both 
offline and online. This is an important element to maintain psychological,
physical, and digital privacy. As such, pEp users MUST have the option to
choose their identity, and they MUST have the ability to maintain multiple
identities.</t>

<t>These different identities MUST NOT be externally correlatable with
each other by default.  On the other hand, combining different
identities when such information is known MUST be supported (alias
support).</t>

<section anchor="user" title="User">

<t>A user is a real world human being or a group of human beings. If it is a 
single human being, it can be called person.</t>

<t>A user is identified by a user ID (user_id). The user_id SHOULD be a UUID, it 
MAY be an arbitrary unique string.</t>

<t>The own user can have a user_id like all other users. If the own user does not
have a user_id, then it is assigned a “pEp_own_userId” instead.</t>

<t>A user can have a default key.
[[ TODO: Provide ref explaining this. ]]</t>

<!-- TODO: To be discussed.

To provide for this separation, pEp will create dedicated keys for
every identity defined.

 * By default, all identities MUST NOT be externally correlatable.
 The user MAY override this through advanced usage, e.g., by importing
 external keys.

-->

<!-- Identities != Aliases; to be refined later.

pEp assists the user in learning different identities of
correspondents (aliases).

\[\[ **TODO**: Define how the incoming own identity must be matched
when multiple identities are matched from To, Cc etc. \]\]

-->

<!--
{::  include ../shared/ascii-arts/pep_id_system.mkd}

\[\[ TODO: Verify figure \]\]


## Terms

\[\[ TODO: Adjust Terms to figure, formulate more understandable,
     maybe leave out some details of data model that are specific to
     implementation. \[\]

-->

</section>
<section anchor="address" title="Address">

<t>A pEp address is a network address, e.g., an SMTP address or another
Universal Resource Identifier (URI).</t>

<t>[[ Note: It might be necessary to introduce further addressing
schemes through IETF contributions or IANA registrations, e.g.,
implementing pEp to bridge to popular messaging services with no URIs
defined. ]]</t>

</section>
<section anchor="key" title="Key">

<t>A key is an OpenPGP-compatible asymmetric cryptographic key pair.</t>

<t>Keys in pEp are identified by the full fingerprint (fpr) of the public key. 
The fingerprint is to be obtained from the specific cryptographic service used 
to handle the keys. The canonical representation in pEp is upper-case 
hexadecimal with zero-padding and no separators or spaces.</t>

</section>
<section anchor="identity" title="Identity">

<t>An identity is a representation of a user, encapsulating how this user appears 
within the network of a messaging system. This representation may or may not 
be pseudonymous in nature.</t>

<t>An identity is defined by mapping a user_id to an address. If no user_id is
known, it is guessed by mapping a username to an address.</t>

<t>An identity can have a temporary user_id as a placeholder until a
real user_id is known.</t>

<t>In pEp a different key pair for each (e.g., email) account MUST be created. 
This allows a user to retain different identities, which are not correlated by 
the usage of the same key for all of those. This is beneficial in terms of 
privacy.</t>

<t>A user MAY have a default key; each identity a user has MAY have a default key
(of its own).  When both an Identity and the related User have a default key 
set, the Identity’s default key MUST override the User’s default key.</t>

<t>[[ TODO: Provide ref explaining this. ]]</t>

<t>In <xref target="pep-identity"/>, the definition of a pEp identity can be found
according to the reference implementation by the pEp engine.</t>

<!-- TODO: To be discussed:

## Trust Reflection

The pEp model is designed such that users can choose one of their
identities (pseudonymous) and express their trust in other
correspondents (mainly the trust in them to preserve privacy).

Reasons for an user to mistrust correspondents are both rational and
irrational. Some of the rational reasons for mistrusting an ongoing
correspondence can be automated by pEp. Mainly, weak cryptography is
a reason to assume no privacy guarantees. 

-->

<!-- Detecting tracking
cookies would be another reason -->
<!--
For the computation of the trust rating, pEp requires a data model
which accumulates the learnings from the user, their inputs, and the
learnings from past correspondence.
-->

<!-- TODO: To be discussed. 

### Key {#elements-key}

In some cryptographic services the key is stored in a certificate,
which encodes additional information collected from third-parties,
like signatures from certificate authorities or attestations from
identity systems. E.g. in OpenPGP, keys are analogous to certificates
and contain (non-local) third-party signatures, if not carefully
stripped.

When keys are to be distributed via the pEp protocols to other
correspondents, all third-party signatures and all metadata which is
not required to prove possession of the private key, MUST be stripped
from the copy which is being transferred. The key basically is to be
reduced to a self-signed key only. Note that the same limitation does
not apply for the purpose of keysync among an established device
group.


\[\[ **TODO**: must probably intro certificate-signing-requests here
\]\]

The same asymmetric keys MAY be reused with different cryptographic
services<!-\- cryptotech -\->. Converted copies of the original key MAY
be generated, stored and distributed.

\[\[ **TODO**: CL: Whenever possible, this SHOULD++ be avoided.
Instead new keys SHOULD be generated, and a proof of holding both
keys should be sent to the peers which extend the trust according to
their estimate of the hardness of the new crypto. Otherwise the keys
weaken by the sum of bugs in all crypto services used concurrently.
\]\]

Temporary symmetric keys (secrets), for example channel session keys,
may be obtained or generated and mapped to a key (Key Mapping).

-->

<!-- TODO: To be discussed 

#### Keygrip {#elements-keygrip}

\[\[ **TODO**: \]\]

Given that we envision to reuse keys across protocols, we should
study the Keygrip further (or do we use it already?)

\[2\] The keygrip is a unique identifier for a key pair, it is
independent of any protocol, so that the same key can be used with
different protocols. PKCS-15 calls this a subjectKeyHash; it can be
calculated using Libgcrypt's gcry_pk_get_keygrip ().

\[\[ **TODO**: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=agent/keyformat.txt;h=42c4b1f06faf1bbe71ffadc2fee0fad6bec91a97;hb=refs/heads/master \]\]

-->

<!--

### User {#elements-user}

\[\[ TODO: user or person? KB: User. Person is an internal DB term.
\]\]

A user is a supposed distinct physical person or a supposed uniform
group of people eventually participating in a conversation, i.e.
sending and receiving messages. The attribution depends on the
knowledge and point-of-view of the participant, and may differ among
participants of the same conversation.

A user is locally represented by just a user ID (user_id), which MUST
NOT be disclosed to other participants. The user_id MUST be a unique
string, it MAY be an arbitrary unique string, e.g., a pointer or
foreign primary key into a contacts management application. In lack
of a better source, it SHOULD be a UUID.

No constrain on the user_id exists for the local pEp user itself. In
lack of a better user_id for the local user, instead of an UUID, the
user_id SHOULD be "pEp_own_userId" (without the quotes).

-->

<!-- TODO: To be discussed

#### User's Default Key

Any user can be optionally assigned a default key (cf. {{elements-key}}).

<!-\- Multiple default keys per crypto type -\->

TODO: A different default key can be assigned to each cryptographic
system supported, e.g. a default key for ECDSA, one for ED25519, and
one for RSA.

A default key which is considered weak MUST be ignored.

A default key MUST otherwise override any automatically elected key.

Keys which are generated automatically by pEp to bootstrap the
protocol MUST NOT be set as default keys automatically.

-->

<!-- TODO: To be discussed

### Identity {#elements-identity}

While a user's user_id is an element for matching the messages to
correspondents only in the local context and is not to be disclosed,
Identities are those elements signaled between correspondents and are
potentially encoded with the message (connection oriented transports
may not do this, but routing oriented transports require this
information).

An identity is a label (possibly a pseudonymous) notified by a
sender. Multiple correspondents may use the same label, such that
there is generally no one-to-one mapping from an identity to an user.

Matching of users is possible in the context of a message. There are
three properties considered:

 * is the address known
 * are the users related to the address trusted
 * \[\[ **TODO** \]\]

An identity is defined as a mapping of a user_id to an address (cf.
{{elements-address}}). If no user_id is known at the time of processing an
address, the Identity has to be appropriately guessed. Guessing
depends on context, and may involve querying a local contact list
manager.

\[\[ **TODO**: add an exhaustive intro/teaser why we need contact
list integration to perform well. \]\]

An Identity can have a temporary user_id as a placeholder until a
real user_id is known.

\[\[ **TODO**: should such a temporary user_id be exclusive to this
Identity, should it be "garbage collected", should it be available to
match with other Identities... lots of questions about the
referencial DB / OO model here. \]\]

An Identity can have a default key (cf. {{elements-key}}). When both an
Identity and the related User have a default key set, the Identity's
default key MUST override the User's default key.

\[\[ **TODO**: see User's Default Key for copy+paste MUST/SHOULD here\]\]

\[\[ **NOTE**: This is the reason why in current pEp implementations
for each (email) account a different key pair is created, which
allows a user to retain different identities. \]\]

In {{pep-identity}} you can find how a pEp identity is defined in the
reference implementation of the pEp Engine.

-->

<!--

### Alias {#elements-alias}

\[\[TODO\]\]

### Address {#elements-address}

-->

<!--
Original:
An address is a network address, e.g., an SMTP address or another URI.

The problem with this definition is that: - it is not "functional",
so it assumes there is a solid static address out there in every type
of network/channel. - it leads to assume that an incoming message may
usually be labeled with a source address, which is a strong
requirement. -->

<!-- TODO: To be discussed.

An address is a resource identifier, which can be associated to a
network interface, and which the network interface can use to send a
message to a correspondent. It is either an SMTP address or an URI.

\[\[ **TODO**: what about channels that don't tell us where a
message comes from? \]\]

\[\[ **TODO**: question will arise: why not use mailto:// for SMTP
address ? \]\]

\[\[ **NOTE**: It might be necessary to introduce further addressing
schemes through IETF contributions or IANA registrations, e.g.,
implementing pEp to bridge to popular messaging services with no URIs
defined. \]\]

-->

<!--

## Opportunistic Protection

Opportunistic protection provides for cryptographic keys to be
exchanged end-to-end, such that messages can be eventually verified
and encrypted.

### Handshake Initialization Protocol

The basic protocol of pEp is a simple two-step handshake which is
continuously running.

 * In every message delivered, the public key of the sender, and any
 pending revocation certificate concerning the sender, MUST be
 additionally delivered (guarding some exceptional use cases
 described later).

-->

<!-- this is to keep XML2RFC happy for a picture followin a list element -->

<!-- TODO: to be discussed; consider commented out until Message Archiving and Journaling -->

<!-- TODO: To be discussed

The sequence diagram of the basic protocol is rather trivial. 

Possibly to be included:

../shared/ascii-art/basic_pep_protocol_interchange.mkd -->

<!-- To be discussed

With no auxiliary support like pre-shared secrets, or exercising
trust in external third-parties, this is the fastest way to
automatically assist Bob in starting an encrypted conversation with
Alice.

-->
<!-- 
The protocol has two advantages: it requires no external input to
start functioning, and it works fully asynchronous and in-band. The
protocol has two drawbacks though, which pEp explicitely accepts;
first, Alice may totally renounce privacy in her first message, i.e.,
until she receives a reply from Bob; and second, both won't
immediately authenticate their channel once they start the encrypted
communication.

**[KRB] The pEp protocol has two advantages: it requires no external input in order to start functioning, and it works fully asynchronous and in-band.  The protocol has two drawbacks, however, which pEp explicitly acknowledges: first, a user may totally renounce privacy in their first message for whatever reason (e.g., until they receive a reply from the intended recipient), and second, both users won't (don't might be better here) immediately authenticate their channel once encrypted communication has begun."

But still, it is a huge advancement over sticking with plaintext
communication forever; at this point, a passive eavesdropper is
already locked out. And an active attacker only has a short
window-of-opportunity to attack. 

**[KRB] "Despite these drawbacks, the pEp protocol is a huge improvement over plaintext communication in that a passive eavesdropper is already locked out of the communication, and an active attacker has their attack window-of-opportunity shortened drastically."

-->

<!-- To be discussed

The exact format is transport specific, in particular, the
cryptographic material may be sent in three different ways.

 1. On a transport for structured messages (e.g. {{MIME}} based email), it 
may be bundled with the original message, resulting in a replacement framing 
message
 0. The cryptographic service may embed it into the cryptographic envelope in a transport specific way (e.g. {{SMIME}})
 0. Additional technical messages may be sent precursing the actual message. \[\[TODO: Such messages MUST be cryptographically interlinked such that partial reception remains totally useless to the recipient.\]\]

Different variants of the above may be used during initialization and
in the loop state.

Let's say Alice sets up a second device, and configures it with her
same identity. pEp MUST first create a new key. Alice now ends up
with two separate keys on two devices. Alice immediately sends a
second message to Bob from her new device (Message 3 in {{pEp_F_2}}).
Her new device has not yet learned the public key of Bob, so Message
3 is sent unencrypted again.

Check figure:

../shared/ascii-art/todo_second_device_in_use.mkd

Neither Alice nor Bob really care about the details, and if it was
not for the pEp protocol, they would continue to send and receive
messages in clear text. pEp wants to improve this, and wants to
provide encryption whenever possible. But pEp never stops anyone from
sending a message, if by no means it can't start encrypting
automatically.

 * pEp, in it's default configuration, MUST NOT, ever, prevent the
 user from sending a message or interrupt this process with questions
 * It MUST clearly signal the predicted privacy rating for the
 outgoing message though.

\[\[ **TODO**: we just introduced rating *prediction* without prior
explanation \]\]

Alice, who is sending her first message to Bob on her additional
device, will clearly see that pEp predicts a low privacy for her
outgoing message.

Check figure:

../shared/ascii-art/todo_received_message_from_unlinked_additional_device.mkd

Now Bob sees a message and a new PubKey_A2 from Alice, while he
previously learned PubKey_A from her. Bob's pEp is giving this a low
rating. As Bob and Alice have not expressed trust in their
connection yet, pEp now accepts Alice's second key. Still, the
first learned key is preferred, which is Alices first key, which
residing on her first computer.

 * For any identity, pEp MUST use the first learned key for
 encryption, otherwise a man-in-the-middle could succesfully install
 an additional key by forging a message. - The recipient MUST
 maintain the validity records of learned keys independently, but the
 validity MUST NOT exceed those encoded in the received keys.

\[\[ **TODO**: add note if pEp requires valid network time, I think
it could be designed such that it's not required\]\]

\[\[ **TODO**: why not encrypt to all still valid keys on a given
transport?\]\]

Note that the case above depicts the worst case scenario. When Alice
started using her new computer, she may have re-read Message 2 of Bob
on the new device, and pEp would have immediately learned Bob's
public key, so that outgoing Message 3 would've already been
encrypted. This is covered in the transports model with the incoming
and outgoing messages property, described later. TODO

-->

<!-- TODO: Eventually move this to another chapter or the Key Sync draft

### Private Device Pairing

To read Bob's message on her second device, she needs to pair them,
which engages the keysync protocol. Ideally, Alice's oldest key would
automatically find its way onto all of her devices. Unfortunately,
pEp synchronization cannot occur fully automatically. Alice first
needs to be guided through another function of pEp, which is mutual
authentication. For this, Alice operates both of her devices, and
once she has selected the common account or has entered an address of the
other device, she has to compare the public key fingerprints of both
devices (simplified through the use of Trustwords). If she confirms
on both devices, each of them will mark the other's public key as
trusted, and register it under the same "own" user.

TODO; check candidate figure:

../shared/ascii-art/todo_device_pairing.mkd

Note that the transport for synchronization messages and the
transport for the users messages MAY be separate transports.

### Automatic Key Management {#pEp-key-mgmt}

#### Synchronization

At this point in time both devices disclose all of their private keys
(one each) to each other, and Alice can now read Bob's messages
on both of her devices.

-->

<!-- TODO: To be discussed

## Pervasive Forwarding {#pEp-forwarding}

### Transports and Selection

Applications implementing the pEp protocol SHOULD subsidiarily offer
their transport service for use by other applications. pEp will
automatically prefer Transports with higher privacy or security
properties.

Messages are addressed to identities; and identities are supposed at
a number of network addresses. Upon sending, network addresses are
translated to a transport selection and the establishment of a
channel; the message is then encoded specifically for the transport,
and eventually tagged as a pEp message.

A transport MAY be realized over an object store to which the
participants have shared access.

In particular, for exchanging sync messages between the users own
devices, one or more object store per identity, and one or more
identities per object store may be used to relay the messages. A
common example of such an object store is an IMAP Mailbox.

<!-\- the sync protocol MUST run independent instances for each identity, for 
not leaking information over a disjoint subset of shared mailboxes -\->

Other than a shared object store or, more generally, a shared
database, the following integration patterns may be encountered:

 * message queues, eventually supporting point-to-point (unicast),
 multipoint (multicast), one-to-all (broadcast) delivery, with
 address-sharing (load-balancing at receiver or sender side) and
 depending on the topology and address as a context (anycast).
 * file passing (e.g. key import)
 * remote procedure calling (RPC)

Note that integration patters are a functional model; and for any
transport natively designed to best suit one of them, there exists
concepts to adapt software written for another one. Some functional
guarantees are usually not maintained through such a layer of
virtualization. pEp tries to predict the conservation of privacy
across such layers of virtualization.


### Use to Cryptographic Services

<!-\- The proper title would be "Implementation of Cryptographic
Services", but most people associate other meaning to
"implementation" as it is meant in object oriented programming -\->

pEp in itself does not introduce a new cryptographic service. It
requires the transport to have default encryption services and
standards for encoding and decoding such messages. pEp defines an
interface which must be implemented by the transport's cryptographic
service. One transport MAY have multiple cryptographic services.

pEp requires access

 * to the public key
 * to the fingerprint
 * the ciphersuite in use for a message
 * the list of private keys
 * encryption and decryption function
 * signature and verification function

pEp must also be able to

 * create a new key pair
 * revoke a key pair
 * import private keys

-->

<!-- NOTE: a system architecture design comment __
 
 - export private keys

The requirement "export a private key" would be VERY limiting. PKCS
#11 (OASIS Standard) is important here. - People want private keys to
be managed by secure elements, and their main job is to NOT hand out
the private key. Instead, what is often possible is to bring two such
secure elements "in touch", and obtain a "transport cetificate" from
the receiving one, hand it to the sending one, and if the sending one
validates it, it will hand out the private key encrypted to the
transport certificate. - This is not too dissimilar on what we do
with keysync. Making this requirement "functional" instead of
"procedural", gives us more room to integrate with existing crypto
services. 

 * transfer a private key to a remote key store

-->

<!-- TODO: To be discussed.

### Message Decoding and Encoding {#message-codec}

If a transport already has a facility to use end-to-end keys (and the
transport is generally considered integral), pEp should convert and
install the "own" key.<!-\- CL: reuse of keys is bad practice -\->

\[\[ **TODO**: we have a problem here: we don't always hold the
private key in a file. \]\]

The trust rating of a transport depends on the protocol, and an
ongoing analysis of the general community. \[\[ **TODO**: Online
registry ahead? \]\]

Whenever the transport of a message is not sufficiently rated
trustworthy, pEp will engage the handshake protocol, and eventually
protect messages cryptographically by wrapping them.

Each iteration of wrapping is an operation in three stages, which
each is to be done according to the specific transport selected and
the specific cryptographic services in use:

 * stage 1 - encoding a pEp structured message into an "inner"
 message

 * stage 2 - wrapping a cleartext message with an "outer" message,
 which may also contain public keys and revocation certifications,
 and then represents the cleartext to be submitted to the
 cryptographic functions;

 * stage 3 - cryptographically protect the "outer" message for
 confidentiality and integrity and encode it such that it can be
 transported ("transport" message)

-->

<!-- TODO: To be discussed; especially to be discussed in which I-Ds
     and when to add it. For the general draft, explanations to
     email-specific.

### Message Wrapping and Tunneling

\[\[ **TODO**: Quick Intro to Tunneling vs Transport, and various Onion Schemes, and Mixnet \]\]

Routed networks require that a message carries a destination address,
and often also a source address. This is metadata being leaked, and
most often it is cleartext information. {{pEp_F_5}} shows in a
sequence diagram how an eavesdropper (here depicted as a Three-Letter
Agency), sees a message directed from Alice to Bob being sent from
Alice to Bob.

Check figure:

../shared/ascii-art/todo_eavesdropping_in_transit.mkd

A workaround for Alice is to start wrapping the messages and
directing them to a relaying party. In the simplest case she requires
Bobs Corporation Transfer Agent to cooperate, so that she can link
the message to a generic corporate address. {{pEp_F_6}} depicts how
the eavesdropper now only sees Alice communicating with Bobs
Corporation.

Check figure:

../shared/ascii-art/todo_onion_routing.mkd


Alice can apply the wrapping recursively. An Internet Service
Provider may also offer a relying service. {{pEp_F_7}} shows that by
double wrapping the message, the eavesdropper starts to read less and
less meaningful metadata from the messages, in this case a message
from Alices ISP to Bobs Corporation.

Check figure:

../shared/ascii-art/todo_multiple_wrapping_onion_routing.mkd

Nesting of messages is an important concept in pEp.

 * On a transport which supports structured messages and an
 extensible schema, an encoding for wrapping messages MUST be
 defined.

 * On a transport which supports message types and new message types
 can be allocated, a message type and an coding for a pEp message
 MUST be provided.

See {{message-codec}} for more technical
specification.

\[\[ **TODO**: add the steps for wrapping a message, using the
various abstracted elements \]\]

\[\[ **TODO**: add a paragraph about wrapping when a final public key
is not known \]\]

-->

<!-- TODO: This - with the mention of "server" - mostly belongs to email; to
     be discussed how to frame that.

## Message Archiving and Journaling

\[\[ **TODO**: say more on archival/journal. \]\]

Check figure:

../shared/ascii-art/todo_trusted_and_untrusted_server.mkd -->

<!-- TODO: To be discussed / maybe commented out

## Information Base Synchronization

While the pEp protocol is applied to incoming and outcoing messages,
information is accumulated which will enhance the future
qualification of trust and increase the protection of messages.
Cryptographic details, connected transports and applications, trust
and mistrust input form the user, and the address book is among the
information collected.

For the user experience across the data terminal equipment (e.g.
MUAs) to remain consistent, Synchronization of these properties is
necessary.

\[\[ **TODO**: give an overview on what object types the sync stack
needs (pEp elements, contacts, keys, ...) \]\]

-->

<!-- TODO: Fill out TODOs.

### Base Protocol

base_prepare_message
base_decorate_message
base_extract_message


### Device Groups

\[\[TODO\]\]

### Private Keys

\[\[TODO\]\]

### Trust Records

\[\[TODO\]\]

### Public Keys

\[\[TODO\]\]

-->

</section>
</section>
<section anchor="key-management" title="Key Management">

<t>In order to achieve the goal of widespread adoption of secure
communications, key management in pEp MUST be automated.</t>

<section anchor="key-generation" title="Key Generation">

<t>A pEp implementation MUST ensure that cryptographic keys for every
configured identity are available. If a corresponding key pair for the
identity of a user is found and said identity fulfills the
requirements (e.g., for email, as set out in
<xref target="I-D.marques-pep-email"/>), said key pair MUST be reused. Otherwise a
new key pair MUST be generated. This may be carried out instantly upon
its configuration.</t>

<t>On devices with limited processing power (e.g., mobile devices) the key
generation may take more time than a user is willing to wait. If this
is the case, users SHOULD NOT be stopped from communicating, i.e., the
key generation process SHOULD be carried out in the background.</t>

</section>
<section anchor="private-keys" title="Private Keys">

<section anchor="storage" title="Storage">

<t>Private keys in pEp implementations MUST always be held on the end
user’s device(s): pEp implementers MUST NOT rely on private keys
stored in centralized remote locations. This applies even for key
storages where the private keys are protected with sufficiently long
passphrases. It is considered a violation of pEp’s P2P design
principle to rely on centralized infrastructures
(cf. <xref target="peer-to-peer"/>). This also applies for pEp implementations
created for applications not residing on a user’s device (e.g.,
web-based MUAs). In such cases, pEp implementations MUST be done in a
way such that the locally-held private key can neither be directly accessed 
nor leaked to the outside world.</t>

<t>[[ Note: It is particularly important that browser add-ons implementing pEp
  functionality do not obtain their cryptographic code from a
  centralized (cloud) service, as this must be considered a
  centralized attack vector allowing for backdoors, negatively
  impacting privacy. ]]</t>

<t>Cf. <xref target="private-key-synchronization"/> for a means to synchronize
private keys among different devices of the same network address in a 
secure manner.</t>

</section>
<section anchor="passphrase" title="Passphrase">

<t>Passphrases to protect a user’s private key MUST be supported by pEp
implementations, but MUST NOT be enforced by default. That is, if a
pEp implementation finds a suitable (i.e., secure enough) cryptographic
setup, which uses passphrases, pEp implementations MUST provide a way
to unlock the key. However, if a new key pair is generated for a given
identity, no passphrase MUST be put in place. The authors assume that
the enforcement of secure (i.e., unique and long enough) passphrases
would massively reduce the number of pEp users (by hassling them),
while providing little to no additional privacy for the common
cases of passive monitoring being carried out by corporations or
state-level actors.</t>

</section>
</section>
<section anchor="key-reset" title="Key Reset">

<!-- TODO: discuss that with backup / reformulate; less informal style.

Now, Bob was unlucky and got his computer infected, so that he is
setting it up anew. On the fresh system, while his previous key is
recovered from the backup, the key itself was compromised, such that
it needs to be replaced.

 * When a key is recovered from backup, it SHOULD be replaced.

-->

<!-- TODO: Check what can be kept here. -->

<!-- To be discussed

Assume Bob chooses to "reset" pEp. This means that pEp is resetting
his "own" identity, revoking all keys and creating a new one alongside
with a key revocation certificate for the old key. From now on, all of 
Bob's messages will contain the new public key, whereas the old ones 
will be revoked.


 * When pEp receives a revocation certificate through a pEp specific
 transport format, it MUST mark all the learned keys as revoked,
 while,

 * when pEp receives a revocation certificate through a non-pEp
 specific transport format, it MUST mark only the specified key as
 revoked.
 
 * Revocation certificates MUST be accepted from any source, given
 that they pass cryptographic scrutiny (i.e., that they are valid).
 
 * The message delivering the revocation certificate MAY be signed by
 the key the revoked certificate concerns.
 
 * A revocation certificate for an "own" key MAY be received; in such
 a case, an "own" identity reset must be triggered.
 
 * It is a considered a good course of action to submit revocation
 certificates or private keys to the issuer, shall third-party
 private keys be found in leaked datasets. Submission MAY be
 anonymous.
 
 * Receiving an "own" private key from a non-"own" identity MUST
 trigger an "own" identity reset.

Bob has now replaced his key. Alice wouldn't know anything of Bob's
new key until receiving a message from Bob. This is why Bobs pEp
sends a technical message to all recent correspondents. If Alice is
not a recent correspondent, and she suddenly starts writing to Bob
again, she will see a lowered rating because of the timeframe<!-\-
MUST! -\->, and she'll be using Bob's deprecated key which she
still considers valid. Bob can then still decrypt the received
message, but will also see a lowered rating, because of the revoked
key being used. For opportunistic protection, it is still better to
use a deprecated key, than sending messages plaintext.

This key rollover was almost transparent for Bob and Alice. The
previous time Bob went through this, he hadn't done a backup, and things
didn't go as smoothly. He had lost his previous key, and pEp could not
deliver the revocation certificate automatically. Bob then needed
\[\[ **TODO**: Bob does not really know this need \]\] to write Alice
a short enquiry, to please reset the trust on his identity. Alice
heard about Bob's issue before, and followed up, and Alice's pEp then
blacklisted all the previously acquired keys. The most recent key attached
was then the new oldest valid key learned, ready to be used.

-->

<!-- TODO: to be discuss in relation to actual practice

### Private Key Export / Import

A private key can be exported from one device for import onto
another device.  When pEp's Key Sync (cf. {{private-key-synchronization}}) is 
not available or not desired to be used, this is largely a manual process.

-->

</section>
<section anchor="public-key-distribution" title="Public Key Distribution">

<t>As the key is available (cf. <xref target="key-generation"/>) implementers
of pEp are REQUIRED to ensure that the identity’s public key is
attached to every outgoing message. However, this MAY be omitted if
the peer has previously received a message encrypted with the public key
of the sender.</t>

<t>The sender’s public key SHOULD be sent encrypted whenever possible,
i.e., when a public key of the receiving peer is available.
If no encryption key of the recipient is available, the sender’s
public key MAY be sent unencrypted. In either case, this approach
ensures that messaging clients (e.g., MUAs that at least implement
OpenPGP) do not need to have pEp implemented to see a user’s public
key. Such peers thus have the chance to (automatically) import the
sender’s public key.</t>

<t>If there is already a known public key from the sender of a message
and it is still valid and not expired, new keys MUST NOT be used for
future communication unless they are signed by the previous key (to
avoid a MITM attack). Messages MUST always be encrypted with the
receiving peer’s oldest public key, as long as it is valid and not
expired.</t>

<section anchor="ux-considerations" title="UX Considerations">

<t>Implementers of pEp SHALL prevent the display of public keys attached to
messages (e.g, in email) to the user in order to prevent
user confusion by files they are potentially unaware of how to handle.</t>

</section>
<section anchor="no-addition-of-unnecessary-metadata" title="No addition of unnecessary metadata">

<t>Metadata, such as email headers, MUST NOT be added in order to announce 
a user’s public key. This is considered unnecessary information leakage, may 
affect user privacy, and may be subject to a country’s data retention laws (cf. <xref target="data-minimization"/>). Furthermore, this may affect interoperability to 
existing users that have no knowledge of such header fields, such as users of 
OpenPGP in email, and lose the ability to import any keys distributed in this 
way as a result. The ability to extract and receive public keys from such
metadata SHOULD be supported, however, in the event these approaches become
widespread.</t>

</section>
<section anchor="no-centralized-public-key-storage-or-retrieval-by-default" title="No centralized public key storage or retrieval by default">

<t>Keyservers or generally intermediate approaches to obtain a peer’s
public key SHALL NOT be used by default. On the other hand, the user
MAY be provided with the option to opt-in for remote locations to
obtain keys, considering the widespread adoption of such approaches
for key distribution.</t>

<t>Keys generated or obtained by pEp clients MUST NOT be uploaded to any
(intermediate) keystore locations without the user’s explicit consent.</t>

</section>
<section anchor="example-message-flow" title="Example message flow">

<t>The following example roughly describes a pEp scenario with a typical
initial message flow to demonstrate key exchange and basic trust
management:</t>

<t>The following example describes a pEp scenario between two users – Alice 
and Bob – in order to demonstrate the message flow that occurs when exchanging
keys and determining basic trust management for the first time:</t>

<t><list style="numbers">
  <t>Alice – knowing nothing of Bob – sends a message to Bob. As Alice
has no public key from Bob, this message is sent out
unencrypted. However, Alice’s public key is automatically attached.</t>
  <t>Bob receives Alice’s message and her public key. He is able to reply to her
and encrypt the message. His public key is automatically attached to the 
message. Because he has her public key now, Alice’s rating in his message 
client changes to ‘encrypted’. From a UX perspective, this status is 
displayed in yellow (cf. <xref target="trust-rating"/>).</t>
  <t>Alice receives Bob’s key. As of now Alice is also able to send
secure messages to Bob. The rating for Bob changes to “encrypted”
(with yellow color) in Alice’s messaging client
(cf. <xref target="trust-rating"/>).</t>
  <t>Alice receives Bob’s reply with his public key attached. Now, Alice can 
send secure messages to Bob as well. The rating for Bob changes to yellow, 
or ‘encrypted’, in Alice’s messaging client <xref target="trust-rating"/>.</t>
  <t>If Alice and Bob want to prevent man-in-the-middle (MITM) attacks,
they can engage in a pEp Handshake comparing their so-called
Trustwords (cf. <xref target="handshake"/>) and confirm this process if those
match. After doing so, their identity rating changes to “encrypted
and authenticated” (cf. <xref target="trust-rating"/>), which (UX-wise) can be
displayed using a green color. See also <xref target="trust-management"/>.</t>
  <t>Alice and Bob can encrypt now, but they are not yet authenticated, leaving 
them vulnerable to man-in-the-middle (MitM) attacks. To prevent this from 
occurring, Alice and Bob can engage in a pEp Handshake to compare their 
Trustwords (cf. <xref target="handshake"/>) and confirm if they match. After this step 
is performed, their respective identity ratings change to 
“encrypted and authenticated”, which is represented by a green color 
(cf. <xref target="trust-management"/>.</t>
</list></t>

<figure><artwork><![CDATA[
          -----                                       -----
          | A |                                       | B |
          -----                                       -----
            |                                           |
+------------------------+                 +------------------------+
| auto-generate key pair |                 | auto-generate key pair |
|    (if no key yet)     |                 |    (if no key yet)     |
+------------------------+                 +------------------------+
            |                                           |
+-----------------------+                   +-----------------------+
| Privacy Status for B: |                   | Privacy Status for A: |
|     *Unencrypted*     |                   |     *Unencrypted*     |
+-----------------------+                   +-----------------------+
            |                                           |
            |   A sends message to B (Public Key        |
            |   attached) / optionally signed, but      |
            |               NOT ENCRYPTED               |
            +------------------------------------------>|
            |                                           |
            |                               +-----------------------+
            |                               | Privacy Status for A: |
            |                               |      *Encrypted*      |
            |                               +-----------------------+
            |                                           |
            |      B sends message to A (Public Key     |
            |      attached) / signed and ENCRYPTED     |
            |<------------------------------------------+
            |                                           |
+-----------------------+                               |
| Privacy Status for B: |                               |
|      *Encrypted*      |                               |
+-----------------------+                               |
            |                                           |
            |   A and B successfully compare their      |
            |   Trustwords over an alternative channel  |
            |   (e.g., phone line)                      |
            |<-- -- -- -- -- -- -- -- -- -- -- -- -- -->|
            |                                           |
+-----------------------+                   +-----------------------+
| Privacy Status for B: |                   | Privacy Status for A: |
|       *Trusted*       |                   |       *Trusted*       |
+-----------------------+                   +-----------------------+
            |                                           |


]]></artwork></figure>

</section>
</section>
<section anchor="key-reset-1" title="Key Reset">

<t>[[ TODO: This section will explain how to deal with invalid keys, e.g.,
if expired or (potentially) leaked. ]]</t>

<!-- TODO: Perhaps comment out. -->

</section>
</section>
<section anchor="trust-management" title="Trust Management">

<t>[[ TODO: Intro ]]</t>

<section anchor="privacy-status" title="Privacy Status">

<t>The trust status for an identity can change due to a number of factors.
These shifts will cause the color code assigned to this identity to change 
accordingly, and is applied to future communications with this identity.</t>

<t>For end-users, the most important component of pEp, which MUST be made
visible on a per-recipient and per-message level, is the Privacy
Status.</t>

<t>By colors, symbols and texts a user SHALL immediately understand how
private</t>

<t><list style="symbols">
  <t>a communication channel with a given peer was or ought to be and</t>
  <t>a given message was or ought to be.</t>
</list></t>

</section>
<section anchor="handshake" title="Handshake">

<t>To establishing trust between peers and to upgrade Privacy Status, pEp
defines a handshake, which is specified in
<xref target="I-D.marques-pep-handshake"/>.</t>

<t>In pEp, Trustwords <xref target="I-D.birk-pep-trustwords"/> are used for users to
compare the authenticity of peers in order to mitigate MITM attacks.</t>

<t>By default, Trustwords MUST be used to represent two peers’
fingerprints of their public keys in pEp implementations.</t>

<t>In order to retain compatibility with peers not using pEp
implementations (e.g., Mail User Agents (MUAs) with OpenPGP
implementations without Trustwords), it is REQUIRED that pEp
implementers give the user the choice to show both peers’ fingerprints
instead of just their common Trustwords.</t>

</section>
<section anchor="trust-rating" title="Trust Rating">

<t>pEp includes a Trust Rating system defining Rating and Color Codes to
express the Privacy Status of a peer or message
<xref target="I-D.marques-pep-rating"/>. The ratings are labeled, e.g., as “Unencrypted”,
“Encrypted”, “Trusted”, “Under Attack”, etc. The Privacy Status in
its most general form is expressed with traffic lights semantics (and
respective symbols and texts), whereas the three colors yellow, green
and red can be applied for any peer or message – like this
immediately indicating how secure and trustworthy (and thus private) a
communication was or ought to be considered.</t>

<!-- In cases no (special) Privacy Status can be inferred for peers or
messages, no color (or the gray color) MUST be shown and respective
texts -\- being "unknown" or "unreliable" -\- MUST be shown.  -->

<t>The pEp Trust Rating system with all its states and respective
representations to be followed is outlined in
<xref target="I-D.marques-pep-rating"/>.</t>

<t>Note: An example for the rating of communication types, the definition of
the data structure by the pEp Engine reference implementation
is provided in <xref target="pep-communication-type"/>.</t>

</section>
<section anchor="trust-revoke" title="Trust Revoke">

<t>[[ TODO: This section will explain how to deal with the situation
     when a peer can no longer be trusted, e.g., if a peer’s device is
     compromised. ]]</t>

</section>
</section>
<section anchor="synchronization" title="Synchronization">

<t>An important feature of pEp is to assist the user to run pEp applications
on different devices, such as personal computers, mobile phones and tablets, 
at the same time. Therefore, state needs to be synchronized among the different
devices.</t>

<section anchor="private-key-synchronization" title="Private Key Synchronization">

<t>The pEp KeySync protocol (cf. <xref target="I-D.hoeneisen-pep-keysync"/>) is a 
decentralized proposition which defines how pEp users can distribute their
private keys among their different devices in a user-authenticated manner.
This allows users to read their messages across their various devices, as long
as they share a common address, such as an email account.</t>

</section>
<section anchor="trust-synchronization" title="Trust Synchronization">

<t>[[ TODO: This section will explain how trust and other related state
is synchronized among different devices in a user-authenticated manner. ]]</t>

</section>
</section>
<section anchor="interoperability-1" title="Interoperability">

<t>pEp aims to be interoperable with existing applications designed to
enable privacy, e.g., OpenPGP and S/MIME in email.</t>

</section>
<section anchor="options-in-pep" title="Options in pEp">

<t>In this section a non-exhaustive selection of options is provided.</t>

<section anchor="option-passive-mode" title="Option “Passive Mode”">

<t>By default, the sender attaches its public key to any outgoing message
(cf. <xref target="public-key-distribution"/>). For situations where a sender wants
to ensure that it only attaches a public key to an Internet user which
has a pEp implementation, a Passive Mode MUST be made available.</t>

</section>
<section anchor="option-disable-protection" title="Option “Disable Protection”">

<t>Using this option, protection can be disabled generally or selectively.
Implementers of pEp MUST provide an option “Disable Protection” to
allow a user to disable encryption and signing for:</t>

<t><list style="numbers">
  <t>all communication</t>
  <t>specific contacts</t>
  <t>specific messages</t>
</list></t>

<t>The public key still attached, unless the option “Passive Mode”
(cf. <xref target="option-passive-mode"/>) is activated at the same time.</t>

</section>
<section anchor="option-extra-keys" title="Option “Extra Keys”">

<section anchor="use-case-for-organizations" title="Use Case for Organizations">

<t>For internal or enterprise environments, authorized personnel may need to
centrally decrypt user messages for archival or other legal purposes.
Therefore, pEp implementers MAY provide an “Extra Keys” option in which a
message is encrypted with at least one additional public key.
The corresponding secret key(s) are intended to be secured by CISO staff or
other authorized personnel for the organization.</t>

<t>However, it is crucial that the “Extra Keys” feature MUST NOT be activated by
default for any network address, and is intended to be an option used only for
organization-specific identities, as well as their corresponding network
addresses and accounts. The “Extra Keys” feature SHOULD NOT be applied to the
private identities, addresses, or accounts a user might possess once it is
activated.</t>

</section>
<section anchor="use-case-for-key-synchronization" title="Use Case for Key Synchronization">

<t>The “Extra Keys” feature also plays a role during pEp’s KeySync protocols,
where the additional keys are used to decipher message transactions by both
parties involved during the negotiation process for private key
synchronization. During the encrypted (but untrusted) transactions, KeySync
messages are not just encrypted with the sending device’s default key,
but also with the default keys of both parties involved in the synchronization
process.</t>

</section>
</section>
<section anchor="option-blacklist-keys" title="Option “Blacklist Keys”">

<t>A “Blacklist Keys” option MAY be provided for an advanced user,
allowing them to disable keys of peers that they no longer want to use in
new communications. However, the keys SHALL NOT be deleted. It MUST still
be possible to verify and decipher past communications that used these keys.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>By attaching the sender’s public key to outgoing messages, Trust on
First Use (TOFU) is established. However, this is prone to MITM
attacks.  Cryptographic key subversion is considered Pervasive
Monitoring (PM) according to <xref target="RFC7258"/>. Those attacks can be
mitigated, if the involved users compare their common Trustwords. This
possibility MUST be made easily accessible to pEp users in the user
interface implementation. If for compatibility reasons (e.g., with
OpenPGP users) no Trustwords can be used, then a comparatively easy way
to verify the respective public key fingerprints MUST be implemented.</t>

<t>As the use of passphrases for private keys is not advised, devices
themselves SHOULD use encryption.</t>

</section>
<section anchor="privacy-considerations" title="Privacy Considerations">

<t>[[ TODO ]]</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no actions for IANA.</t>

</section>
<section anchor="implementation-status" title="Implementation Status">

<section anchor="introduction-1" title="Introduction">

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation
here does not imply endorsement by the IETF. Furthermore, no effort
has been spent to verify the information presented here that was
supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.</t>

<t>According to <xref target="RFC7942"/>, “[…] this will allow reviewers and
working groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented protocols
more mature. It is up to the individual working groups to use this
information as they see fit.”</t>

</section>
<section anchor="current-software-implementing-pep" title="Current software implementing pEp">

<t>The following software implementing the pEp protocols (to varying
degrees) already exists:</t>

<t><list style="symbols">
  <t>pEp for Outlook as add-on for Microsoft Outlook, release <xref target="SRC.pepforoutlook"/></t>
  <t>pEp for Android (based on a fork of the K9 MUA), release <xref target="SRC.pepforandroid"/></t>
  <t>Enigmail/pEp as add-on for Mozilla Thunderbird, release <xref target="SRC.enigmailpep"/></t>
  <t>pEp for iOS (implemented in a new MUA), beta <xref target="SRC.pepforios"/></t>
</list></t>

<t>pEp for Android, iOS and Outlook are provided by pEp Security, a commercial
entity specializing in end-user software implementing pEp while Enigmail/pEp
is pursued as community project, supported by the pEp Foundation.</t>

<t>All software is available as Free Software and published also in source form.</t>

</section>
<section anchor="reference-implementation-of-peps-core" title="Reference implementation of pEp’s core">

<t>The pEp Foundation provides a reference implementation of pEp’s core
principles and functionalities, which go beyond the documentation
status of this Internet-Draft. <xref target="SRC.pepcore"/></t>

<t>pEp’s reference implementation is composed of pEp Engine and pEp
Adapters (or bindings), alongside with some libraries which pEp Engine
relies on to function on certain platforms (like a NetPGP fork we
maintain for the iOS platform).</t>

<t>The pEp engine is a Free Software library encapsulating
implementations of:</t>

<t><list style="symbols">
  <t>Key Management</t>
</list></t>

<t><list style='empty'>
  <t>Key Management in pEp engine is based on GnuPG key chains (NetPGP
  on iOS).  Keys are stored in an OpenPGP compatible format and
  can be used for different crypto implementations.</t>
</list></t>

<t><list style="symbols">
  <t>Trust Rating</t>
</list></t>

<t><list style='empty'>
  <t>pEp engine is sporting a two phase trust rating system. In phase
  one there is a rating based on channel, crypto and key security
  named “comm_types”. In phase 2 these are mapped to user
  representable values which have attached colors to present them
  in traffic light semantics.</t>
</list></t>

<t><list style="symbols">
  <t>Abstract Crypto API</t>
</list></t>

<t><list style='empty'>
  <t>The Abstract Crypto API is providing functions to encrypt and
  decrypt data or full messages without requiring an application
  programmer to understand the different formats and standards.</t>
</list></t>

<t><list style="symbols">
  <t>Message Transports</t>
</list></t>

<t><list style='empty'>
  <t>pEp engine will support a growing list of Message Transports to
  support any widespread text messaging system including email,
  SMS, XMPP and many more.</t>
</list></t>

<t>pEp engine is written in C99 programming language. It is not meant to be used in
application code directly. Instead, pEp engine is coming together with
a list of software adapters for a variety of programming languages and
development environments, which are:</t>

<t><list style="symbols">
  <t>pEp COM Server Adapter</t>
  <t>pEp JNI Adapter</t>
  <t>pEp JSON Adapter</t>
  <t>pEp ObjC (and Swift) Adapter</t>
  <t>pEp Python Adapter</t>
  <t>pEp Qt Adapter</t>
</list></t>

</section>
<section anchor="abstract-crypto-api-examples" title="Abstract Crypto API examples">

<t>A selection of code excerpts from the pEp Engine reference
implementation (encrypt message, decrypt message, and obtain
trustwords) can be found in <xref target="abstract-crypto-api-examples-1"/>.</t>

</section>
</section>
<section anchor="notes" title="Notes">

<t>The pEp logo and “pretty Easy privacy” are registered trademarks owned
by the non-profit pEp Foundation based in Switzerland.</t>

<t>Primarily, we want to ensure the following:</t>

<t><list style="symbols">
  <t>Software using the trademarks MUST be backdoor-free.</t>
  <t>Software using the trademarks MUST be accompanied by a serious (detailed) 
code audit carried out by a reputable third-party, for any proper release.</t>
</list></t>

<t>The pEp Foundation will help to support any community-run
(non-commercial) project with the latter, be it organizationally or
financially.</t>

<t>Through this, the foundation wants to make sure that software using
the pEp trademarks is as safe as possible from a security and privacy
point of view.</t>

<!-- TODO: to be discussed:

## Qualified Electronic Signatures 

pEp uses cryptographic services to establish end-to-end transport
security. The original message is transported unmodified, provided
that message wrapping is used, so that additional features applied on
the original message remain undamaged. The encryption and signature
applied by pEp are discarded upon reception of the protected message.
pEp signatures thus have no utility as a "qualified electronic
signature" to later prove the authenticity of a message. This
function must be provided by other means.

 * pEp User Agents MUST discard the signature and encryption of a
 protected message upon receipt, and eventually replace it with an
 "own" signature and encryption for the purpose of storing the
 message.

 * A symmetric key (session key) previously used to protect the
 message in transit MAY be reused, to avoid re-encrypting large
 quantities of data. \[\[ TODO: Double check that. \]\]

 * Qualified electronic signatures MUST be applied prior to
 protecting messages with pEp

 * The application of qualified electronic signatures MUST preceed
 the message processing through pEp, and the verification MUST be
 following the processing through pEp.

-->

</section>
<section anchor="acknowledgments" title="Acknowledgments">

<t>The authors would like to thank the following people who provided
substantial contributions, helpful comments or suggestions for this
document: Alexey Melnikov, Athena Schumacher, Ben Campbell, Brian
Trammell, Bron Gondwana, Claudio Luck, Daniel Kahn Gillmor, Enrico
Tomae, Eric Rescorla, Gabriele Lenzini, Hans-Peter Dittler, Iraklis
Symeonidis, Kelly Bristol, Krista Bennett, Mirja Kuehlewind, Nana
Kerlstetter, Neal Walfield, Pete Resnick, Russ Housley, S. Shelburn,
and Stephen Farrel.</t>

<t>This work was initially created by pEp Foundation, and then reviewed and
extended with funding by the Internet Society’s Beyond the Net Programme on
standardizing pEp. <xref target="ISOC.bnet"/></t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC4949" target='https://www.rfc-editor.org/info/rfc4949'>
<front>
<title>Internet Security Glossary, Version 2</title>
<author initials='R.' surname='Shirey' fullname='R. Shirey'><organization /></author>
<date year='2007' month='August' />
<abstract><t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='FYI' value='36'/>
<seriesInfo name='RFC' value='4949'/>
<seriesInfo name='DOI' value='10.17487/RFC4949'/>
</reference>



<reference  anchor="RFC7435" target='https://www.rfc-editor.org/info/rfc7435'>
<front>
<title>Opportunistic Security: Some Protection Most of the Time</title>
<author initials='V.' surname='Dukhovni' fullname='V. Dukhovni'><organization /></author>
<date year='2014' month='December' />
<abstract><t>This document defines the concept &quot;Opportunistic Security&quot; in the context of communications protocols.  Protocol designs based on Opportunistic Security use encryption even when authentication is not available, and use authentication when possible, thereby removing barriers to the widespread use of encryption on the Internet.</t></abstract>
</front>
<seriesInfo name='RFC' value='7435'/>
<seriesInfo name='DOI' value='10.17487/RFC7435'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC1122" target='https://www.rfc-editor.org/info/rfc1122'>
<front>
<title>Requirements for Internet Hosts - Communication Layers</title>
<author initials='R.' surname='Braden' fullname='R. Braden' role='editor'><organization /></author>
<date year='1989' month='October' />
<abstract><t>This RFC is an official specification for the Internet community.  It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='3'/>
<seriesInfo name='RFC' value='1122'/>
<seriesInfo name='DOI' value='10.17487/RFC1122'/>
</reference>



<reference  anchor="OpenPGP" target='https://www.rfc-editor.org/info/rfc4880'>
<front>
<title>OpenPGP Message Format</title>
<author initials='J.' surname='Callas' fullname='J. Callas'><organization /></author>
<author initials='L.' surname='Donnerhacke' fullname='L. Donnerhacke'><organization /></author>
<author initials='H.' surname='Finney' fullname='H. Finney'><organization /></author>
<author initials='D.' surname='Shaw' fullname='D. Shaw'><organization /></author>
<author initials='R.' surname='Thayer' fullname='R. Thayer'><organization /></author>
<date year='2007' month='November' />
<abstract><t>This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format.  It is not a step-by-step cookbook for writing an application.  It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network.  It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t><t>OpenPGP software uses a combination of strong public-key and symmetric cryptography to provide security services for electronic communications and data storage.  These services include confidentiality, key management, authentication, and digital signatures.  This document specifies the message formats used in OpenPGP.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4880'/>
<seriesInfo name='DOI' value='10.17487/RFC4880'/>
</reference>



<reference  anchor="RFC7258" target='https://www.rfc-editor.org/info/rfc7258'>
<front>
<title>Pervasive Monitoring Is an Attack</title>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2014' month='May' />
<abstract><t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t></abstract>
</front>
<seriesInfo name='BCP' value='188'/>
<seriesInfo name='RFC' value='7258'/>
<seriesInfo name='DOI' value='10.17487/RFC7258'/>
</reference>



<reference  anchor="RFC7942" target='https://www.rfc-editor.org/info/rfc7942'>
<front>
<title>Improving Awareness of Running Code: The Implementation Status Section</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author>
<author initials='A.' surname='Farrel' fullname='A. Farrel'><organization /></author>
<date year='2016' month='July' />
<abstract><t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section.  This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t><t>This process is not mandatory.  Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications.  This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t></abstract>
</front>
<seriesInfo name='BCP' value='205'/>
<seriesInfo name='RFC' value='7942'/>
<seriesInfo name='DOI' value='10.17487/RFC7942'/>
</reference>



<reference  anchor="RFC8280" target='https://www.rfc-editor.org/info/rfc8280'>
<front>
<title>Research into Human Rights Protocol Considerations</title>
<author initials='N.' surname='ten Oever' fullname='N. ten Oever'><organization /></author>
<author initials='C.' surname='Cath' fullname='C. Cath'><organization /></author>
<date year='2017' month='October' />
<abstract><t>This document aims to propose guidelines for human rights considerations, similar to the work done on the guidelines for privacy considerations (RFC 6973).  The other parts of this document explain the background of the guidelines and how they were developed.</t><t>This document is the first milestone in a longer-term research effort.  It has been reviewed by the Human Rights Protocol Considerations (HRPC) Research Group and also by individuals from outside the research group.</t></abstract>
</front>
<seriesInfo name='RFC' value='8280'/>
<seriesInfo name='DOI' value='10.17487/RFC8280'/>
</reference>



<reference anchor="I-D.marques-pep-email">
<front>
<title>pretty Easy privacy (pEp): Email Formats and Protocols</title>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<date month='October' day='23' year='2018' />

<abstract><t>The pretty Easy privacy (pEp) propositions for email are based upon already existing email and encryption formats (i.e., PGP/MIME) and designed to allow for easy implementable and interoperable opportunistic encryption: this ranging from key distribution to mechanisms of subject encryption.  The goal of pEp for email is to automatize operations in order to make email encryption usable by a wider range of Internet users, to achieve wide application of confidentiality and privacy practices in the real world.  This document defines basic operations of pEp's approach towards email and two PGP/MIME formats (pEp Email Format 1 and 2) to provide certain security guarantees.  The proposed operations and formats are targeted to Opportunistic Security scenarios and are already implemented in several applications of pretty Easy privacy (pEp).</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-marques-pep-email-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-marques-pep-email-02.txt' />
</reference>



<reference anchor="I-D.birk-pep-trustwords">
<front>
<title>IANA Registration of Trustword Lists: Guide, Template and IANA Considerations</title>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<date month='July' day='8' year='2019' />

<abstract><t>This document specifies the IANA Registration Guidelines for Trustwords, describes corresponding registration procedures, and provides a guideline for creating Trustword list specifications.  Trustwords are common words in a natural language (e.g., English), which hexadecimal strings are mapped to.  Such a mapping makes verification processes like fingerprint comparisons more practical, and less prone to misunderstandings.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-birk-pep-trustwords-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-birk-pep-trustwords-04.txt' />
</reference>



<reference anchor="I-D.marques-pep-rating">
<front>
<title>pretty Easy privacy (pEp): Mapping of Privacy Rating</title>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<date month='July' day='7' year='2019' />

<abstract><t>In many Opportunistic Security scenarios end-to-end encryption is automatized for Internet users.  In addition, it is often required to provide the users with easy means to carry out authentication.  Depending on several factors, each communication channel to different peers may have a different Privacy Status, e.g., unencrypted, encrypted and encrypted as well as authenticated.  Even each message from/to a single peer may have a different Privacy Status.  To display the actual Privacy Status to the user, this document defines a Privacy Rating scheme and its mapping to a traffic-light semantics.  A Privacy Status is defined on a per-message basis as well as on a per-identity basis.  The traffic-light semantics (as color rating) allows for a clear and easily understandable presentation to the user in order to optimize the User Experience (UX).  This rating system is most beneficial to Opportunistic Security scenarios and is already implemented in several applications of pretty Easy privacy (pEp).</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-marques-pep-rating-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-marques-pep-rating-02.txt' />
</reference>



<reference anchor="I-D.marques-pep-handshake">
<front>
<title>pretty Easy privacy (pEp): Contact and Channel Authentication through Handshake</title>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<date month='July' day='7' year='2019' />

<abstract><t>In interpersonal messaging end-to-end encryption means for public key distribution and verification of its authenticity are needed; the latter to prevent man-in-the-middle (MITM) attacks.  This document proposes a new method to easily verify a public key is authentic by a Handshake process that allows users to easily authenticate their communication channel.  The new method is targeted to Opportunistic Security scenarios and is already implemented in several applications of pretty Easy privacy (pEp).</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-marques-pep-handshake-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-marques-pep-handshake-03.txt' />
</reference>



<reference anchor="I-D.hoeneisen-pep-keysync">
<front>
<title>pretty Easy privacy (pEp): Key Synchronization Protocol (KeySync)</title>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<author initials='K' surname='Bristol' fullname='Kelly Bristol'>
    <organization />
</author>

<date month='October' day='31' year='2019' />

<abstract><t>This document describes the pEp KeySync protocol, which is designed to perform secure peer-to-peer synchronization of private keys across devices belonging to the same user.  Modern users of messaging systems typically have multiple devices for communicating, and attempting to use encryption on all of these devices often leads to situations where messages cannot be decrypted on a given device due to missing private key data.  Current approaches to resolve key synchronicity issues are cumbersome and potentially unsecure.  The pEp KeySync protocol is designed to facilitate this personal key synchronization in a user-friendly manner.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-hoeneisen-pep-keysync-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-hoeneisen-pep-keysync-01.txt' />
</reference>


<reference anchor="SRC.pepcore" target="https://pep.foundation/dev/">
  <front>
    <title>Core source code and reference implementation of pEp (engine and adapters)</title>
    <author >
      <organization></organization>
    </author>
    <date year="2018" month="July"/>
  </front>
</reference>
<reference anchor="ISOC.bnet" target="https://www.internetsociety.org/blog/2017/06/12-innovative-projects-selected-for-beyond-the-net-funding/">
  <front>
    <title>Beyond the Net. 12 Innovative Projects Selected for Beyond the Net Funding. Implementing Privacy via Mass Encryption: Standardizing pretty Easy privacy’s protocols</title>
    <author initials="I." surname="Simao" fullname="Ilda Simao">
      <organization></organization>
    </author>
    <date year="2017" month="June"/>
  </front>
</reference>
<reference anchor="SRC.pepforandroid" target="https://pep-security.lu/gitlab/android/pep">
  <front>
    <title>Source code for pEp for Android</title>
    <author >
      <organization></organization>
    </author>
    <date year="2019" month="July"/>
  </front>
</reference>
<reference anchor="SRC.pepforios" target="https://pep-security.ch/dev/repos/pEp_for_iOS/">
  <front>
    <title>Source code for pEp for iOS</title>
    <author >
      <organization></organization>
    </author>
    <date year="2019" month="July"/>
  </front>
</reference>
<reference anchor="SRC.pepforoutlook" target="https://pep-security.lu/dev/repos/pEp_for_Outlook/">
  <front>
    <title>Source code for pEp for Outlook</title>
    <author >
      <organization></organization>
    </author>
    <date year="2019" month="July"/>
  </front>
</reference>
<reference anchor="SRC.enigmailpep" target="https://enigmail.net/index.php/en/download/source-code">
  <front>
    <title>Source code for Enigmail/pEp</title>
    <author >
      <organization></organization>
    </author>
    <date year="2019" month="July"/>
  </front>
</reference>


    </references>


<section anchor="code-excerpts" title="Code Excerpts">

<t>This section provides excerpts of the running code from the pEp
reference implementation pEp engine (C99 programming language).</t>

<section anchor="pep-identity" title="pEp Identity">

<t>How the pEp identity is defined in the data structure
(cf. src/pEpEngine.h):</t>

<figure><artwork><![CDATA[
typedef struct _pEp_identity {
    char *address;            // C string with address UTF-8 encoded
    char *fpr;                // C string with fingerprint UTF-8
                              // encoded
    char *user_id;            // C string with user ID UTF-8 encoded
    char *username;           // C string with user name UTF-8
                              // encoded
    PEP_comm_type comm_type;  // type of communication with this ID
    char lang[3];             // language of conversation
                              // ISO 639-1 ALPHA-2, last byte is 0
    bool me;                  // if this is the local user
                              // herself/himself
    identity_flags_t flags;   // identity_flag1 | identity_flag2
                              // | ...
} pEp_identity;
]]></artwork></figure>

<section anchor="corresponding-sql" title="Corresponding SQL">

<t>Relational table scheme excerpts (in SQL) used in current pEp implementations,
held locally for every pEp installation in a SQLite database:</t>

<figure><artwork><![CDATA[
CREATE TABLE person (
   id text primary key,
   username text not null,
   main_key_id text
       references pgp_keypair (fpr)
       on delete set null,
   lang text,
   comment text,
   device_group text,
   is_pep_user integer default 0
);

CREATE TABLE identity (
   address text,
   user_id text
       references person (id)
       on delete cascade on update cascade,
   main_key_id text
       references pgp_keypair (fpr)
       on delete set null,
   comment text,
   flags integer default 0,
   is_own integer default 0,
   timestamp integer default (datetime('now')),
   primary key (address, user_id)
);

CREATE TABLE pgp_keypair (
   fpr text primary key,
   created integer,
   expires integer,
   comment text,
   flags integer default 0
);
CREATE INDEX pgp_keypair_expires on pgp_keypair (
   expires
);
]]></artwork></figure>

</section>
</section>
<section anchor="pep-communication-type" title="pEp Communication Type">

<t>In the following, is an example for the rating of communication types as
defined by a data structure (cf. src/pEpEngine.h <xref target="SRC.pepcore"/>):</t>

<figure><artwork><![CDATA[
typedef enum _PEP_comm_type {
    PEP_ct_unknown = 0,

    // range 0x01 to 0x09: no encryption, 0x0a to 0x0e:
    // nothing reasonable

    PEP_ct_no_encryption = 0x01, // generic
    PEP_ct_no_encrypted_channel = 0x02,
    PEP_ct_key_not_found = 0x03,
    PEP_ct_key_expired = 0x04,
    PEP_ct_key_revoked = 0x05,
    PEP_ct_key_b0rken = 0x06,
    PEP_ct_my_key_not_included = 0x09,

    PEP_ct_security_by_obscurity = 0x0a,
    PEP_ct_b0rken_crypto = 0x0b,
    PEP_ct_key_too_short = 0x0c,

    PEP_ct_compromized = 0x0e, // known compromized connection
    PEP_ct_mistrusted = 0x0f, // known mistrusted key

    // range 0x10 to 0x3f: unconfirmed encryption

    PEP_ct_unconfirmed_encryption = 0x10, // generic
    PEP_ct_OpenPGP_weak_unconfirmed = 0x11, // RSA 1024 is weak

    PEP_ct_to_be_checked = 0x20, // generic
    PEP_ct_SMIME_unconfirmed = 0x21,
    PEP_ct_CMS_unconfirmed = 0x22,

    PEP_ct_strong_but_unconfirmed = 0x30, // generic
    PEP_ct_OpenPGP_unconfirmed = 0x38, // key at least 2048 bit
                                       // RSA or EC
    PEP_ct_OTR_unconfirmed = 0x3a,

    // range 0x40 to 0x7f: unconfirmed encryption and anonymization

    PEP_ct_unconfirmed_enc_anon = 0x40, // generic
    PEP_ct_pEp_unconfirmed = 0x7f,

    PEP_ct_confirmed = 0x80, // this bit decides if trust
                             // is confirmed

    // range 0x81 to 0x8f: reserved
    // range 0x90 to 0xbf: confirmed encryption

    PEP_ct_confirmed_encryption = 0x90, // generic
    PEP_ct_OpenPGP_weak = 0x91, // RSA 1024 is weak (unused)

    PEP_ct_to_be_checked_confirmed = 0xa0, //generic
    PEP_ct_SMIME = 0xa1,
    PEP_ct_CMS = 0xa2,

    PEP_ct_strong_encryption = 0xb0, // generic
    PEP_ct_OpenPGP = 0xb8, // key at least 2048 bit RSA or EC
    PEP_ct_OTR = 0xba,

    // range 0xc0 to 0xff: confirmed encryption and anonymization

    PEP_ct_confirmed_enc_anon = 0xc0, // generic
    PEP_ct_pEp = 0xff
} PEP_comm_type;
]]></artwork></figure>

</section>
<section anchor="abstract-crypto-api-examples-1" title="Abstract Crypto API examples">

<t>The following code excerpts are from the pEp Engine reference
implementation, to be found in src/message_api.h.</t>

<t>[[ Note: Just a selection; more functionality is available. ]]</t>

<section anchor="encrypting-a-message" title="Encrypting a Message">

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

<figure><artwork><![CDATA[
// encrypt_message() - encrypt message in memory
//
//  parameters:
//      session (in)     session handle
//      src (in)         message to encrypt
//      extra (in)       extra keys for encryption
//      dst (out)        pointer to new encrypted message or NULL if
//                       no encryption could take place
//      enc_format (in)  encrypted format
//      flags (in)       flags to set special encryption features
//
//  return value:
//      PEP_STATUS_OK           on success
//      PEP_KEY_HAS_AMBIG_NAME  at least one of the recipient
//                              keys has an ambiguous name
//      PEP_UNENCRYPTED         no recipients with usable key, 
//                              message is left unencrypted,
//                              and key is attached to it
//
//  caveat:
//      the ownership of src remains with the caller
//      the ownership of dst goes to the caller
DYNAMIC_API PEP_STATUS encrypt_message(
        PEP_SESSION session,
        message *src,
        stringlist_t *extra,
        message **dst,
        PEP_enc_format enc_format,
        PEP_encrypt_flags_t flags
);
]]></artwork></figure>

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

</section>
<section anchor="decrypting-a-message" title="Decrypting a Message">

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

<figure><artwork><![CDATA[
// decrypt_message() - decrypt message in memory
//
//  parameters:
//      session (in)   session handle
//      src (in)       message to decrypt
//      dst (out)      pointer to new decrypted message
//                     or NULL on failure
//      keylist (out)  stringlist with keyids
//      rating (out)   rating for the message
//      flags (out)    flags to signal special decryption features
//
//  return value:
//      error status 
//      or PEP_DECRYPTED if message decrypted but not verified
//      or PEP_CANNOT_REENCRYPT if message was decrypted (and
//         possibly verified) but a reencryption operation is
//         expected by the caller and failed
//      or PEP_STATUS_OK on success
//
//  flag values:
//      in:
//          PEP_decrypt_flag_untrusted_server
//              used to signal that decrypt function should engage in 
//              behaviour specified for when the server storing the 
//              source is untrusted
//      out:
//          PEP_decrypt_flag_own_private_key
//              private key was imported for one of our addresses
//              (NOT trusted or set to be used - handshake/trust is
//              required for that)
//          PEP_decrypt_flag_src_modified
//              indicates that the src object has been modified. At
//              the moment, this is always as a direct result of the 
//              behaviour driven by the input flags. This flag is the 
//              ONLY value that should be relied upon to see if such 
//              changes have taken place.
//          PEP_decrypt_flag_consume
//              used by sync 
//          PEP_decrypt_flag_ignore
//              used by sync 
//
//
// caveat:
//      the ownership of src remains with the caller - however, the
//      contents might be modified (strings freed and allocated anew 
//      or set to NULL, etc) intentionally; when this happens,
//      PEP_decrypt_flag_src_modified is set.
//      the ownership of dst goes to the caller
//      the ownership of keylist goes to the caller
//      if src is unencrypted this function returns PEP_UNENCRYPTED
//      and sets
//      dst to NULL
DYNAMIC_API PEP_STATUS decrypt_message(
        PEP_SESSION session,
        message *src,
        message **dst,
        stringlist_t **keylist,
        PEP_rating *rating,
        PEP_decrypt_flags_t *flags
);
]]></artwork></figure>

</section>
<section anchor="obtain-common-trustwords" title="Obtain Common Trustwords">

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

<figure><artwork><![CDATA[
// get_trustwords() - get full trustwords string
//                    for a *pair* of identities
//
//    parameters:
//        session (in)  session handle
//        id1 (in)      identity of first party in communication
//                      - fpr can't be NULL  
//        id2 (in)      identity of second party in communication
//                      - fpr can't be NULL
//        lang (in)     C string with ISO 639-1 language code
//        words (out)   pointer to C string with all trustwords
//                      UTF-8 encoded, separated by a blank each
//                      NULL if language is not supported or
//                      trustword wordlist is damaged or unavailable
//        wsize (out)   length of full trustwords string
//        full (in)     if true, generate ALL trustwords for these
//                      identities.
//                      else, generate a fixed-size subset.
//                      (TODO: fixed-minimum-entropy subset
//                      in next version)
//
//    return value:
//        PEP_STATUS_OK            trustwords retrieved
//        PEP_OUT_OF_MEMORY        out of memory
//        PEP_TRUSTWORD_NOT_FOUND  at least one trustword not found
//
//    caveat:
//        the word pointer goes to the ownership of the caller
//        the caller is responsible to free() it
//        (on Windoze use pEp_free())
//
DYNAMIC_API PEP_STATUS get_trustwords(
  PEP_SESSION session, const pEp_identity* id1,
  const pEp_identity* id2, const char* lang,
  char **words, size_t *wsize, bool full
);
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="document-changelog" title="Document Changelog">

<t>[[ RFC Editor: This section is to be removed before publication ]]</t>

<t><list style="symbols">
  <t>draft-birk-pep-05:
  <list style="symbols">
      <t>Change authors</t>
      <t>Minor changes, especially in identity system</t>
    </list></t>
  <t>draft-birk-pep-04:
  <list style="symbols">
      <t>Fix internal reference</t>
      <t>Add IANA Considerations section</t>
      <t>Add other use case of Extra Keys</t>
      <t>Add Claudio Luck as author</t>
      <t>Incorporate review changes by Kelly Bristol and Nana Karlstetter</t>
    </list></t>
  <t>draft-birk-pep-03:
  <list style="symbols">
      <t>Major restructure of the document</t>
      <t>Adapt authors to the actual authors and extend Acknowledgments section</t>
      <t>Added several new sections, e.g., Key Reset, Trust Revoke, Trust 
Synchronization, Private Key Export / Import, Privacy Considerations
(content yet mostly TODO)</t>
      <t>Added reference to HRPC work / RFC8280
      <list style="symbols">
          <t>Added text and figure to better explain pEp’s automated Key
Exchange and Trust management (basic message flow)</t>
        </list></t>
      <t>Lots of improvement in text and editorial changes</t>
    </list></t>
  <t>draft-birk-pep-02:
  <list style="symbols">
      <t>Move (updated) code to Appendix</t>
      <t>Add Changelog to Appendix</t>
      <t>Add Open Issue section to Appendix</t>
      <t>Fix description of what Extra Keys are</t>
      <t>Fix Passive Mode description</t>
      <t>Better explain pEp’s identity system</t>
    </list></t>
  <t>draft-birk-pep-01:
  <list style="symbols">
      <t>Mostly editorial</t>
    </list></t>
  <t>draft-birk-pep-00:
  <list style="symbols">
      <t>Initial version</t>
    </list></t>
</list></t>

</section>
<section anchor="open-issues" title="Open Issues">

<t>[[ RFC Editor: This section should be empty and is to be removed
     before publication ]]</t>

<t><list style="symbols">
  <t>Shorten Introduction and Abstract</t>
  <t>References to RFC6973 (Privacy Considerations)</t>
  <t>Add references to prior work, and what differs here - PEM (cf. RFC1421-1424)</t>
  <t>Better explain Passive Mode</t>
  <t>Better explain / illustrate pEp’s identity system</t>
  <t>Explain Concept of Key Mapping (e.g. to S/MIME, which is to be
refined in pEp application docs auch as pEp email
<xref target="I-D.marques-pep-email"/>)</t>
  <t>Add more information to deal with organizational requirements</t>
  <t>Add text to Key Reset (<xref target="key-reset"/>) as well as reference as soon as available</t>
  <t>Add text to Trust Revoke (<xref target="trust-revoke"/>) as well as reference as
soon as available</t>
  <t>Add text to Trust Synchronization (<xref target="trust-synchronization"/>) as well
as reference as soon as available</t>
</list></t>

<!-- TODO: Check relevance in pEp of that.

 * Add references to Private Key Export / Import
  ({{private-key-export-import}}) as soon as reference available -->

<t><list style="symbols">
  <t>Add text to Privacy Considerations (<xref target="privacy-considerations"/>)</t>
  <t>Scan for leftovers of email-specific stuff and move it to pEp email
I-D <xref target="I-D.marques-pep-email"/>, while replacing it herein with
generic descriptions.</t>
</list></t>

<!--
LocalWords:  utf docname toc sortrefs symrefs SRC pepcore CryptoParty
LocalWords:  interoperable fpr UUID USERID userId SMTP uid MUAs ons
LocalWords:  keystore NetPGP iOS Crypto JNI JSON ObjC crypto api Bron
LocalWords:  Shelburn Alexey Melnikov Trammell Gondwana Kahn Gillmor
LocalWords:  Tomae Rescorla Dittler Iraklis Symeonidis Mirja Walfield
LocalWords:  Kuehlewind Resnick Housley Farrel ISOC bnet src typedef
LocalWords:  struct lang bool SQLite pgp keypair datetime enum rken
LocalWords:  compromized RSA SMIME CMS OTR anonymization xbf xa xb xc
LocalWords:  xba xff dst AMBIG stringlist keylist keyids REENCRYPT
LocalWords:  reencryption untrusted trustword wordlist HRPC
LocalWords:  wsize Windoze const Changelog PEM anonymize automatation
LocalWords:  Keyservers Gabriele Lenzini interoperation correlatable
-->

</section>


  </back>

<!-- ##markdown-source:
H4sIAFeZwF0AA9y963Yb15Uu+n89RTX9w6QagC62Y5va6Rxaomy2JVERqU4y
kgyOAlAgKwKqkKoCKcTRGec1zuudJznzm5d1qQJ0Sbp799gc9hAJ1GVd5prX
b845Ho/drJ6X1fVxtukW4++c68puWRxnB+um6Lptdpq322zdlLf5bJsdrk/X
R8fZK/1zus2eFot8s+wOXD6dNsXtcbb3NjevZ1W+okfPm3zRjadl83a8Ltbj
B9+4Wd4V13WzPc7abu5c2+XV/Cpf1hVdvS1aty6Psz929WyUtXXTNcWipd+2
K/llVq9WRdW1f3Yu33Q3dXPsXJaN6f8sK6v2OPuPSfYDvYw/kBH8R718WzTh
07qh+dMgs2f1pprnXVlX/HlL7yq64+x8WjR0/Y9NPi2q7Gv+blZ2NN4nP42/
+/rBg+x3ZdUVTXezaeRLek6H+Vzcld3fimZJE+IvilVeLo+zWx7ABGvwf9Ea
TBbpezcNTfim69bt8f376ff3e5P7aZK9yJu/bmiVwvx+Kpoqr8rkm//2Od7I
ICYrGcQ/Oc8fJtlPdVEVZVtU0Ux/oJeURe+r//apTnkUkxsbxefPtaqbFf1+
WxzTxa+fPfn6+6+/11+//fqrb4iky2rRu+bhw0ePjt0XWfbi7MXpMT559ODr
b+i783VRvfrxFX/09XffPcA1F/6ib7795iE+oV9/9f23X9lbHn3znf36/deP
9NfvHn33gF9x+fyCb/7u669/RV+djZ/avvIZlnXQL/zJ7ppN293Vzbw93nFP
Q3MhvrPjmxta3vYmf1vYl35h+eu3xbbdVjM+5hevn0zos1nd8MVZ1uXNNfZ4
z0rPi9v7cp2wuSd0IzGVTTMraJfnRUavzoivEIFU9FG5Wi8LcBe+O6sXTFaH
RXVdVnJtPs/XRCrtET+V3kIPffTg4XfjB99ifGcX508m04pGtHN0d3d3EyY1
uqKtZ2XRbSdEvfeny/r6Pj3m2/sPfnX/4aNxWVX1Le/9eN3UfylmXTtuiyX9
W8zHRBfjabGtq/m4uynG9KjxgiZMi5tM9eAHviaja7KXRTfJHj7KzvxzianL
c7MLfW5Gz83Se7Jn8txJdmYLQ395eXBb5sRy2jY7rWbNdo0loyMDZp438/Jv
uHSHePj//p//t6Xfa+Lv9bI94CEbI8+ycNTPlvM8uyhXea0fM184m0Sf+eX/
dvzgVzExf9GjlC8+lVS++K+hlS+GxOJHSMtOFzd1Od9L0bT3M+InRCzLzf1r
Gl0+va/34Ot41y+i8WJDMSb8eyKXp8v2fX8gZd1+wiBmN7xYTbGu2/v0giu6
86o8v7j/KQOh6z4yiHrTLev67aetxnAg53L7Jw1Gr907oKIqr8Hq6K27h2MX
TOgU3i+refFusr5Z08f35/Vdtazz+X2hoDHe/aEhneqTMI8d43Hj8TjLpyTS
8lnn3CUd0L2qV7aihy6ZBP05y+ZFO2vKKVFm1tLJJnKd1dUtTnRdtQ4jwKGn
g1ivPEHX66LhP9qM3jsv8Wu+XG7pCSRI8zab5k1TEoVnXe1w+6YVyp8X62W9
xeHAY3i/ipENklha0RbNLfhDASZWj+mfjPkivbDFO9yqaNv8mnkPzZUeW1az
5WZOT5luuiynk1nVXbYsVyVYV1ePMhIT2Sqv8ms+lPy3m5ftrL4tmu1IV4MG
0BV8KYTOEkM4lCcztyqKBsPBvxlkzk1TV+XfbD1cdH/LD6xp0g1m3WC78iyf
NXWLtb4tZ0V7RDrMhoaUvS6vb4iDF1U+xSvxnGpWEvtoaQZvi+wp7n1RVjQb
edmIyIEX5hRshP4/w+LwdkzLJZE+VsAV79bLkhQZ7G15XWXXdb5sJ6QFyV7i
Tyz/pqXXFrb6IxA/aRddU883NMhsVeTY3zqjdSoXW9avN1U5k1lPi+4Om40l
aY2k6LjRjXnmWOKrZKcFa7tihSfNC9qcQvc967ZrupoJLnqyPAzjplHScJ2R
8LK4BfHe0lngcdMgcnp9M+Zl5hHQH0IfhVw9cRf0nHJBj666JU0R08cZD+Q/
3ZTLOT9r2RT5fBu9wNiJE4VLBmbPJ7qv2jVZIS2x9sn1ZJSRpnUfylVGuuGN
aIRHQl6gyjt6Ukd6KX+JYYCs6RjQqkzlD91GejFfY+O5K+nMbsdycoikZTVb
2inSb+c0c3pCkeN8zWsWtfzKVAhNiC+URH71bCNnj9gbCaNWyIF0qobWWoll
dlODRu1cGD2KGJsIv1mV8/mycCS+zpReWL11F7Kx8ZHq7y19fVt29DpwFjoD
22xeLlh0do4mTIe8lUXDCSr4+nXedOVss8wbpjHSx0seet7t4BwubG1VMAfI
Fpvlolwus3jFpkXbZbiFeVNDp+OscuFFo+yXX1Ttff+eWEKb0S4QS1yUhZw7
W8qCl5rIgAgsPr7tZnYDRsinf5WcYKx5xN78TTxtVw4OdMvUcY0tiqZ/d1PS
G5hz0CrNaMeY2cZ8hThkPc+3X9Kqr8EQdAuEoLJlPnvrxUO7WWMSsqi0SGWV
N9vM8dJkdHhAYSXdxJoLc94PSJmwA0pay60jmYJThKXnMxgRltAi+Hy86Lwa
I8weSznCINwin2FNQFYsk2KCJ32uIXUVTI1OpxcuMS26Hi12xeymqknD3k4+
JjjDlJggmdOV+hSekTtT7d0Inp5D38yIpMHw6kV3hztZxyhEMHqZOuMVKkRX
xrzrakvkUmSHd3wG6F1tSdus3ETZMb20hHTBthhzmZfXfLbSiU7IbMPxp//y
2U1JjHEOlw1zPvDnzTqwP5IdZStcW/V14QRdzZMHM9NRQ0jT4+i6Yk2MmJkw
ThyT4Yzk/xZbmxw6UoGxOfSRbk50DHT6xdwNBv9RHu5VmJv6jk6mKB1ly3wU
YyDeSa9g5ZxmOqNjS0RJCwyaWzQ56U7EwGg8rdGBPB1mEPHxgjQ7MoKaesWv
foJh1q+IVZBaQToEuMAke0qSgpgPn5+uXBUj5fFEJHlX034vi7wBlfMVdHgh
X2jlxtPtmFfwekPHks+auymWayKZlbKmDy5bulijjIQ+TXxK+odbwUwpiLfO
2K6TQwLNroQIMMXulqZPfPgvNSSdaAV4Z7nAt23hdg2SzwDvLW1qs6kqEAMr
rIeLerms7/B37jeI6Ja5lVPSUbkjiwNirRbl9UYUSh6mSSR/lpk0amKBa3qO
Y1oEc8sShkDzhmYzsu0TZWSovEL/6+mDWU8fxEd9Na+jPzbXxNQrGvl4Cl5N
bLWpcQaEGcvc270MHtRVkzDoymuMmMZA9jyb6iJPs7zriCmTQvHi7PLFEc4o
vSzX7ZvT8FriyiPHp1BeU1dLVm43tFq8Q8axo+OH62ZkVLS8lKJR6cnRwyRr
Nc8uvZ+GOPEeD87796SCz0hJLtsV3kZiNqezQ+9f5tX1BhtGZhfEseoerDrQ
vcL3vnQLIg7S52lRSHUCFcqQg54pjI3fiOETHeVl0+cLGYZQQcNTzi16wBSK
EnuiYxEjqgJRRaTdgobLypHkpFnlYA1eM4OtsdZTM5BO8MKxdCKJTlROrIaW
75aOBRlFEKE0QuKfM6882g7QesgGHPDJxhYUrDURE2k7JzvDrOMg4tfzuiJW
QmyNmDYpJX6I7WZKxiKbPEH9MEVqVhiXgX6ucgzssCC1APrLdV5WrP7IEIUK
RO9zuny8IXovj4ceTJtFgxloNCxXcO0KOgOOIHRT8XmwYnxTspihMTNHFc0T
RHxDEgd7TxykgAKD+0ERrDs7r2HDwYMFlnOlYoKoYgszGkuam1Z+lDLwIKRF
9s42oHIa8SEWLrUTjz4iRJV/3sLUMNZQb+is1osFZnTkzZm+msGWHE8Jp/au
WPK/6TOq+BFQeBxdQiTe0YRoMl8Ka8NKQ3dtyjkdM683e1HNIg3jVJsB0+2P
Rs+NaqhMJ0HLa1iip3ewVlyxTBBKBr36A1dU9LwZtvcu33pNhUb9v/6F7IQv
steFLivp195QEGH65Plx9tML1pJuCtJF2SAgYQvb/h9xZHi2Q5+7nhOOBRfW
mN8yhazGmGNt2d4wMML/eRUeqo+pVd5/kSjlA5XafUj/zGPiNpV6qIC6oICm
9qVXR6GEQmZl6qMRPmyaqPsnNNGUWZsiFk2ZdBR4WBuyZSZ8Xuc11B+4Scbi
JhEnQuS6GZAsrwWNqO2EQctAwj6yTRjUimjHvKcwe8NPanA+IdihjZCMgH8E
bhR6RMtsXp6sTqggnES2kuVBjAoaZsenROylraMjMRJ9QUM2WApWFVpajuUc
lj9uFTf7lG09mMQusdfow+hc/ZAv9cB5CeNNnBlLG5pL3Te8IwIqW7fPAM/2
GOD0mL9uisj6dGp82zPp7dAfzbWf2OTy/qEt7j5oi2efZou7ni1O24Wv2FT2
p7gp/rqBBiFsJ09OvYuFPQtMsaV10/2pGn3AoncfZAdZnx1Mst+x+n/IU8yX
Rz1m1aqa1mIPSZivO6X0voOK+JDY9+4ftO8943dq3rPvs/gE+z5I1qGJH/So
jxr5WE9aTNJ7iRJYckJNVaeZiijIpSlThhDQfh+A+wQfQO9YDF0ArCUOrLYP
Wn8j+VpsHFWoY9txJMsuajqtMttzbDLFZg2fAHjeHEl51uvNRFsUd3Qk2LBb
IswAlf+Dth0ppYlvgXht3SFCsFZVVBkHeF3xrpP1vsnpQTc4Gm32F2Jvjgzp
XFi8Z+N0PqCI4ikgCoS85OYCAQOZXVNA7xAlhi4ZyxOwecw0iXnd1N7/cYPT
CtQHMYaGfebBr9qbw+GK1NJyTPtPOxPfSyM7+j/TDPifZQX8J1mv/7DZyvEJ
kzkj1oX/SeMVO/c/wnr9iLliKvROy2TkeP+ZPcCkKd5xPIyZpYShwJWHcRZa
f/UBOnYAwrvPI2EjR3xIn2fqfL6lM3iCCdlZol9w1OHfnHNfwKBYysbclOsw
RVEgRQ1o1fi4PH96nh3+9OLoOHsBPpzxM0T2dv9IOCS2DCQcMtLXNxhUETQR
mjRxjpKdjKACsOsoukAzXDPEQgmbrRl6loZaIyVZwQOQb44fSbzYr4usd96a
4+nYuYe8hRJQxBmP9QK1xvE8MbDlmAzgO+/fg53Sk34qlmuQz6aayRPMey0q
TT4TY0idX0Euk15PBASbFAfMiXDRoKrOOJV80XIwe05tN7xVIxHRFH4ybFA2
nIbHDX14KtEsWh/PFE82Gdz1XWXxWpvjNViZxbN1s4KJ12zE65Esel1F6rU+
LoOPGOw7X+Fx7C02ws9xSNebDnx+VU9Bq+sbZv+gDuxqlyzDz8X2gs6X7uVO
fJQsAqnU+Vwi9aNItQ8Uy8KCZD54yLyEHkU8WjznGbs/yXDggYDdmLDjw0I7
GBYWir7IST4fMtKzk5cn7nVxXUIJMcL2DDt7Tp9/kGvT+P/0xz/9MXtZA/pw
0sn5JRKDW9xzvi2MX2hs2A1iNogGsIEDxAIj+HqUNS86ovc2ssZwRnF5VdwB
NCReH7Z96e67gpXRNl8UrOcsxHwxvdyb+HwjbG866hAJQjz4VB7S4Pa6mmR/
+vOf/uw9JZcFuDR4lH7w0mB+QTYxB/sCmD0xaWTnnuvXIkzguxYxePDizcXl
wUj+zV6e8++vT3/75uz16VP8fvHTyfPn/he5wtEf52+e6/f4Ldz55PzFi9OX
T+XmFyd/OBDl7+D81eXZ+cuT5wcit4lQPGtVL4OFuGFUFKzbW8xGVap/AWrx
4cPvea91BeI14VnznzLLEGfo+Bqm5WLBOprpze2MrC7hOBG3Jy7p7qUs5FgN
npqjqKCWSo84NGRwCLhrKuH14gIElhOwHgksdSbQk3CXagSRYnJII4s1CHoI
n/kFabhTUp6OVOdTmwd6H4IN4ncQ+SBBCLKYARlpSZGjZ9CLpn21wDv6Riom
hI/Q1VCnJx/mmrRAYdR04GgpcyJmGLh8YFMdCSv28FfjKZ3EarOaMqN+AJU4
y371zTdffXOExRjoWfxs2MJQbGqJGPkdGRmuhA8enc87eGZWU97faEHpzayn
rDe0GjPB35TVbb28FQWIgREIeWTMV+k8tjh4H1IQmfic++PPr3/4c3a2yFaw
nq+vacVFNZvWt8I635Jlnv3xjwkl/fnPxlyZJzlze7BxpbZXzf4noD9mkB9Q
d/FNNHe4ODqE7TUmO4VgMh1DVeMg/5jsS4F5iJ6ku5edV9mzkiQxnFzZ4eX5
szekC80Wk9SEUY8URDft9QEEBS1XULRxHxONSE34R9Z6ImgiZIxptM9vAREq
1pu0XvXF5C0wrTx6gbYAI0bHi6fDF8H8UCehyxLjjv0wJJnkBkwyu9hMW+J/
fOxSax4Xlm36BHrHxrtzZvkMto8MMh4ixIk6C8QuwkOq7EV5+UINmxFioiKm
K/2I5OScJQ99PMNOzzkKrAR3u1lW6nANoc5ouJODSFElHRV7qeKL7TZBzfHq
m//0cpLpBr8YmF9qdsnIom0GgnzHNp/QCNldg/iJur9IonSkvfB+ygRLc1iy
rsOfmfrHjileJZDzUgxldk3MYe+30WSxMvCa0UFY5S3tXJPPWXEFf2NiYX+G
6oZMD3iAP8hsR6VbbSSl66greb4RXCEY/7H7LZmX4no4xfAQy50xmACsqHDE
16qsCN+09o06zedZD6ulznYwEni68SVZRCX0fDqd15ul6XxNttrAG0K01BQi
pEe0meIfoSe0RQe7nV3NtPa4UqRYGA1fWrMbVIcRcJbZqiByAPO8hPtKL2af
jLfpBNThtcwoftB6b7uqcuZ7ByGzhkt3rTLoTZHFAjAggy4/vKhDQVy8y6F0
wR2A0VzclSRin9G5gzB4nt9lL5vs+6+/mjz4CtN9gjPu/U0X6hHz/ujs9A2p
PrbSpCFl3z98AHz816QTnz09uYi+JaWXz4ocMVZBEOXftDCqD+ksL4sFTHR6
+Bz+rkx99NU1MUl3/ubyx/Ozlz9mL04vLk5+PAW1eOyfHAngLArFstNKDemF
0ae0BHe5Z+XM+IPZmoYOJqDf6zpEiQDCxIYq2rCU2NY8I91v9nYpqIWctI05
v0YGkzezG9rEOVT+l6SwfeIcSN8vcJsfME3qtiSTnTVd+U7cnLtHflbRsUhG
Li7ru5wkMvQXBGl0+OJDjAbPuEqZaBi+aH1IR2DKJXHIuPunYpa/8qY4q4bD
TDSLm3K00nvH4jBqUbWbxvsMTbAvl3QK24LhJarAj/RR3u723jEhdgxIxPwq
f1dyvIyVkl0BGvXWVObYJYnUMpqPDTJGZ2EV+X5min54WCNOPPBPFdcl3O4k
eDuxB2c3NcNe4nvF+hNu0zL12Xw0auO1ONZ5PR5Y04e+bN3vium4XoxFqzj8
XX15BHWk4KF79K34vASl20ReGoPIqYYwSU1RSAOGc9b2PtbiEA0i/W++rfKV
MjgQzLJuVY+qme06diGMoIqbtuAN+ACwjSSRnNHgSoGWCZTwqgSXI95E2rBY
cqzKM637FQ9clCU023ECnstcjCrTwKV4dcyyZ/XDszdYgbf1IDjHHj96sfv9
q5/PssMLBhQfqfl77x40hXv3jkmre8fPu+NQznUvAYVmjNtHmdz+5z8LAYA8
QvRZfQjsHRb96KfLF8+PJCagBzWKWzpvIuKU1lMynH1cRAOOyzqKWLLJRc8i
rbnbAPGV+4j2lFEGCGUWs3wT3LtldSNuEruQlPW3HE+V8elrSF/4AIJvlO0I
piUzH4FJ6AkeZdG8ZFL7FiCZKnTHaAx+5iO3c+pZb+qIb4qbtBMPP1GdEJ1g
FnkrHC5oPZKCmNzzsnqLhXiSBpxpu5+ImZo9YbxmJPZYs+wJv8cs6dkFP013
wKZ+X47rDS0sFkzSrDi9YtnW/Zts8jRSiaV3RaXMEIF71vymzCkktYQHGi+s
mEB81FxfrFzg8IQn8O1lteP2ACIn1oKofaGHiTZ7l8SK1Foz9IExElf+tHC8
UWY1sAqV3J8drutOTAdTBWM3H9Q+9m4nSM1qUaq5QcwEh/okIDFMOyTL/8tO
I+1LRI3wTI0Gp0yVY3Q+LulnPclOOdGMcVX6UDoSTa0GKF2FsJhsXtk4P4Kp
hH/ZSQu1ULEOwtDqt4V5kIk4L1/RbOq3xLaP2C+OVCncp46XVcZbpApBvG4z
jlnDyyhAD/VRyLYvA1IDavFbwQExBYQwbXA9tGqHFau1ZFFgy3zEW0IZNjln
HjA1dRCEXSGfQiEl/vGiEqvfS2H3KjSc0m4bI1JCrk9MkkKskLNAp/DrOJDs
ZB8j2yWmQxykpYpT1RZXZCcx5qNVGUiCK3/LTKzsIrelJ+O7mzpMEStCDFRO
FjvQvwzCHTxABKks0ShFpuDrHAZ0ucYCMNpV0bsW2/ccTXcKMiq7d49W+RQy
6ia/FXF8Q0yJI5ps+rDk3Srjq2AeEDtg6wd+D8fqWnDpmVuXI7azzQy+Q/X+
rklR7o7Nf1AWbGLRHEfRoRtlk4m5Wc2LOMipcu7pANL4tijWCvVo17lCCG4E
/LxcCsHoljgGaeRLNfRjpI9Gyz16R4P4QAR5hTRK0eJMMs6x+eKLQWKXBbg1
2pkC4NuieDvAmWgeUvAUet3fEppGcZiuD0YY6Dxqg5UNI0zaNUg062NXJonk
eeMjQTYmcEmYlN1jdQt7sTTJaIp3tT91HA5EuKC4LtWcMCZdzJHz/XACYGiX
8/C3KzKKG3MBCimz0419Z2sJ98+NuVQtsVVEZSVWFYG+DB8gGqt36e9eHOcx
G4JC9dgF5nJkMreGPiF9o1ATNlCni5BCLuMJ3TXqfzEzaiRMlR+cQ7rA0rfX
qHxasU/aEWUCqyQhgwCjAA8t8tUSru3dKXwSW4PfpMcL/N5yLIcDef5aVY17
dyhX9UKz8AngAd7CexAdIEEgChqtZPmeyF0xKOiN0cKFx44yZu1ESNebnObc
FWz68mG/rC3fxdhNekDEYuL7JZyQvSLuU8DUfF1PSbxWWDPnTc0hCgSVF96/
55T6bFlO2afBLjNiUtt6o75SMXDBJxQPd1skV5E0m8OJ9cq7W5Y6Ng4lEnX5
cXmCScO+Es9QtdO/47DFieiOBBQYBYw003mAO2MmJ2jQrY+OChvhKHTjVakV
SQWwtB3HX8aiq4HtnQmErayQMsIKS1VX42GgVzNU1WE0YjOItWRZizvABiEP
9DBjN1JniQhvvi49MM7gb/PCkyMRlFdRkLl59vL52ctT/yyeyLOSs5pHap5j
FLqOJBtohZtrtrd4TjGf5QDgfFNE6BkVE02Iw/NdZvKm6I/We9CY0PQiOHEF
7NbCbGEVZRqVG4ADyg5hfafxaQlU18whGkRsxfQ3D4ax688e0+Xzi/fvH6Mc
yG8G9sZTYelmTrQWPk7NVCHDqnjXobQHzOGyFTOCQ73B2P252ELjE2XrZ4lp
szg4uXg5eWi2PPxIbS2G+S0dqLoZx/G5WKrQSBTvGCSz6Ai9N3ez9XyzWkNG
Ectn2Fm1raviN7FKwRN/TaMv7hhtMoIrawp+UL1NkN+gimOW7VEO9y9fBLb2
fjCAV5p3jn8tH5uDIXwUoI2wjPPSz83ytTA34hqPoSN6z67CgkiJoXMJJ1vB
jmoA98yWdaktTdYXIGqvHr2iXUJ47K2+7oCOE5L9MICDkWSq4Quzy2nqrdil
07oOsEN9iMFfo0WIZ+b0Mo6BYuAalWc61FhAteVsA3oBq9UendkDEy00Qlwr
ZDHELQrGrncQRwx2lbR5duwLP2q2gqqLI7yKxe3rk8ke/fJFXCqANvRFgPsb
YD6CZM/EUNV0mb43kZcB83VJ/YFD2pEjGCGVgQEthKgBEyuvwNNdFfNSUPZO
ksBtscHRvFkEzysc/qfrsfeN2W56wQ2B1das0irKw0pm9Bj5SPyXBuLLxVng
ktlD1fKlA3yVCQmGBPFOg/7JYI+B0TXeq/Pi5A9ZAF72oD2+SoXYb3qd3PwB
F5IxQ3YRs1ZvGD83cCRaXgA/lXaRbFhB2/G3wodg2L0lZnQU68bZuK//4rQ3
N/mas7U5rVDUyhBwSaMso0z8MrEqFcxDBvGJ+wOs97F6pWAyiw/HcG68AqIF
y/PoEo6233CNGg04iudXV5Cfer2sgTl4Enk0T7hYj8TudA25JlsDV637/eSb
B99nT07aoyzxJUqlBwGFWCC+u9m6Q4lg7q4W9f79kYB8IlqIPJou3n/kJrEK
oz4RfKCO1cgVKFYXPFhieuVa0qAPJXxKp2POqQICPMwbw/Fx/qnY/TchOI8a
d7KGZ7vo1w5g8Q52XUCT+l01Yxjcg0QMnS1XKLiQg364yx9ZTvjxlspWoR8H
sIkA2Yncz/gbuLqDGI5yYOkwCMZYERHEIdfduKwkclmYy4SpPJfCT7A/GevH
WjzHcuUwkgyaFBOE2G4Brp5z6JOubPnkguuEZAZxuIo44ajIKFOHiZ1sjRFZ
PgdbjJLey5DyabFUZR/h82Cj+hyBxIhIVgqoAVMGEOcP+UUQQT6BBCTnTdr0
AZY2HKUWK5iHh7VQFK5EAYSxWh0WBsr5eFzIb3KMNis52qyYsUFexWJH6ItI
+VyuFHX9hispsC5aWJqNN4FkprEgiGd7l5cdb2pqAHc5PPMW2cC0hZskIfKi
g/WNpFELTWJxiYtuJIZTNpb8BGPFfBOzpU9PLzuvqGbrTYMDwq7z9oZN7MSC
8ZPQqJ4k4qcATT6LIza3RqqLcmDTK/3IvLCQpS4VXckqEufDI4mDpadPOBXc
CI13U/nM1NG+hILzJDPgwsfxLIt8T5KBRG+I71ejVNjunHMOiYIjtiFbJK7v
w9CPDed/McpkiTptQvDq7QApqOj2tXXMYR85iqIqO06q7Aid55L97lkYEDut
4shjl6EY9Cbyna2khfjjMCKUmE4jeZA7tGHlumSbQimL452SgcEb68ouWBDm
ivydALZy9nNr2GLBfkc5a+Ilf/P71EqGSsj2pmJCob+j+KSpI0lhC2QqYBYr
8fjGPMftLXah+YCcOxEcHuwqzW9ryZomoxm7qQBoRB3L9u0I6CBjd+DqCIpA
00ZOG63LHVyuIlhx78D493vEZb+u65pxWPmIgwoCP2NvwqZRCxpIROYD6pke
r+s140LYA1d1UWDR1MUE3soC9I/V2z/DWXEPv2RnEJkwkbwzF+ke4s9Ggc7q
GhAuHCexpyAXOg7JQKgdZz9ss1CgK8fueRXOgGAwCH3qabVVtvRONJTaHLNq
LnmKNJN5Bfm9osNE/wpoRtRBLYMymxVLsDxNG4iSCj1bw8BSpD9Lj+VWcKtR
6pmkN8QxOwnHzYCXHcV8krR5uoelSi1kH6MBzdAAJlz1OeZ6LWTlKxFwWw/I
lUQR2pLJ5D7dTTz/ft7OynIMpeZ+QEVetaSMcibWZPV2vufymzCEKxnkFREH
k/7n3fXRe+AAQL2/K/xyhSfctPET5FbFj5wpvpCWBHWznDtFmQ8Az240KN/w
nnEaOrAT4gGr4ZAopALZqi3IqvIwBlqS5Vz5pNOUGAkEcW5LSNtK/PyFelKZ
sMTNma3bLb2TRgxFb+RIjeA4jwgnS/bxAa0TK4UEUozEtseWKseBnSIzESEb
EJbKYre9+yIR6YfGyXZrOPh8fEWSldq48ED4MtEginfsiOZ4pkb2fF0zxyUG
RDGJtO8s26GyCOIXNB3Cu9ErGbvASkgcdqGFf1vBgjHHsDr/gPoidpi35g08
Cio/QrF87LmURYN9512WfEhVX8D9suum3qxxmqNvAH9aKMvMMwdxtCziCzha
p5huGGrFXMOrk/jFUYUx5M7J52dPs0P8clXOjyQvV//KggeQmN+bs6f8Emdq
NcnvZlqSRECar6RvwxvsSytggSTwTZcyJeT+yYIXJ2EfqhjKFLv4RvMsufRu
xj9XthqtejPy7ABlOOnmK1x3Nj9gyUGiJCxBNBLT+kiznIgwF674Sk39hvRp
2Cc+VlAOxc0A9yAJjOYtEG7P6hsJeK3r4P3MWjaBuKPiVzmsRPc4CP+tP1Pm
FKVnZ/cgkjywBOv3ecdj4vz+snXkXbY8TF9+yCwpTnK2BJvpVlkNxL1/AY96
Evspz8KI/uXX2QmOAxyFIhAadfACZ95I4REtr9AGwUi8gZ1uyamMZ8o5fQnU
Qo4dyl4OHJxP+ZUWdAgeeVCZX+MVlJIpdKsO6G3H594YVPxqqHd6kfgEL+tR
9mSWFd1s0nfZul+OjzOTgdlOOQMRU86vpOAihIo5aIW8/kPSO7h2VaGPd5a0
klx5IgBTyWZBDjvfwqG9FdCqhdjMmyhayiFB/KgzucglC1nMY0tcIj4k5Qi4
HIro/03iD5CH9KpBZjS2yIN5ItgRHETecvlTuJl5Y/VDozc6qhcvLl/5a9k1
LkCDN1XJub7L7HWhRZLPjLM12eGb12eeDiSd64y0RxbBU/iIrQ5QV4c0bZ8c
rq8DkbNKUoRzcXZ6+UziuOV043HYSDwDNtsnntkMguXISvbpOiqsA0tZ1duh
WivmXFVnNJHW2fHX7afF/LnYYiFhE4sKoOGUcQiaxeHq1K7GXcgXpgX6WVJZ
vGM4lQ5swWyIxUTum+xwsW6OfLK0T8cg1Y8zpqIrS1P+UyAfmyDe/burOIFg
qpy6uJaiPzCXEY0VFWPYa9XLENKJ0HtJ9sKshE/Y3RTv8jm9bgV5i2X9W9HU
4zXAoarHVrXxZzh4aEPbdT5jVeSLoNrRekfcQkV4P0EpV/OWTK983TJGnN4h
jKc0FCuNLaf3cJFW9V7bAYjKTIWatqrr9d4GNxVHs7fsPXKIYLTFZo5iOkiC
pieLH3cyGLnF2KbA/mgmhpfLsKkrOwMskKvaf0lmPas9VgLwelO07a4nVbkg
caJHpcOI5DDAVXVjpULwGk5XI8E7K0hxhfW7oZuWWe5YaQqDER0sAE/zSFgY
lUt+ANRBdd1KzVyYVuiz4BU4TcdgOg5+htwbashaKaud0sj8aubJM3krC6Op
vFosxBvgGJ/Yukv5nB1PptVPySjVpA+QSKG59S6ArU+CDB/qM49lxn61dRow
Rnbf4A7VC0LrSSqgJMxJcn4VrBvzntjs3shD+w8j7RS1bHCl3RqiwXwBL3qk
ehT8qPSiiftMpewMDi14723aiGXj2SF3TQ4YM4mYEKfQ1DZAn7FDrQwm796C
+8oexWAHFHLiPqQWSkhWAhyvi8WyUMf/pT5DZCufTVVmd1VOU4uLE5oMWhlp
JocxAziSkilSXUqNNF8wYhcONjuEXSY5PkntqVXi1VUKhHh9LYWchIyr4NKA
HMTtvecz/hMkJUIyX0ods8b+1FCwHhJ/URO9xR4tnJsWgrEZLkV/2pYalJBP
IReeeMEThF8rfzvwzOf6JvUqblY4zN6f6IE/7OQIuu7TolMnjMFJnaJWybhT
R5Ml9erzLfvaWal0Scb3QiSsvwSWRikmJI+0MaeMZzbbiI4nOrTpzm2QuCKX
1FYHSCbkO7ne5eu8t3ezYrLDdzQE1n0hmgngBnJUWlQHeM8nUwIuO0sRmXhn
XxqJYJ+LFwJJI2eVqGcMSLDMDmaPwSqf1UvrJiLzLpv5mOP6xKQdW5xtCG/y
NXGyRB6FFkHSXQe8jcZ76WLnmYaWR59kp8Aql17/GmlxfgbkwUsESQynTxQT
c1pHicXJIVBKjMk9ioa7jYbJGaEsVeip0Ma2DjY2KRGwB5lP+3f6YK/opwAg
lLnnU1FiSb2TA4g9uXsY4o5cclpgzgRosSTXD14JDBxuT2jRgaaj/gUBUGdz
CSDzWb3e9hPHIjSl6IAgl6kHLJcBUC8ITBxh5IsuxspNOReXzv6EzYEQuBHw
H+pzarGGupAJARQXimNpYEgL+wo2aFULE4oxWVpTkP03ClaODdGVxren+ZRh
92R5xKTBg6XpjrGaBQxirgkh0u3SRtuHoaozpilYa+5lCaQ1je3E0TH+01i/
g4c4oz//bYIEj1vJl6Y9ECtbvDFNeV2qpY/XOR/Y50CUnllxJ3rSG5rhKMX5
uz5ceSSasfiZ/vVfJVpbI/6PFC523nCdDJ5q8EZFr2fCxKoCL7rIoDFacpvj
uwKC3fIieUs5UK9s5V1XJIGhWA9wwjSRms/AdF0UAM4rreQgKvydrugkO8fh
uivbYLk4iJzCqw0kXbiqwOZaSjmyMwj3BqbIuwnnvIVHJkYIXl3uEcJhW8CT
3x6NkpxYKxphpxHXjpxGub1pRjf4NdVUSRxLOUnY90Nw9hei5B8l7p6d8kDE
AcuDazrhPZmAj4ZANJnfjyVCoZadXlSC2BMVHEFd4XbS6iSqMU3XykYTe9zM
ZZnt5WbZozLGvLak97KzQNNvjjCWR3/6s/EWvottPHVrlsG5wNqONy/UEnIx
iAtKZhVA7QEymCj/cclB9lmHUxtqUmWvfn5yMX74jZZGEICjFTmm6f2UtzeP
g+PX0WWzzTKqR/C8nF4zaaG6L/1ytX57dV10VzbJwx3+MrQXOr6PVk+T62qz
vuYmYbPrcjwtK3x6V0wn9Odv1r+Wr+mjx/mvp8t6+njxa7Jzqu4+PV7E8qR7
1z2++fXXj2ZfTx8uHvxqkS8eTqfFtw8Xi3w+e7Qoigf0y6+mxez7h/n33z6+
mf4ajRbvo2pze39Fqggted+rxpoGGx8RWUHDSX1nrJDWVlH1N9nPPxzzXROA
oFqtKV0JjAvs7ekPbGnZQYu99ezNx05J3HtGe6RxlCzUTYkuI7LB/J335K+L
GocxKmEoee/IfME+afWBir1a4icGqMUh3BySL4EkiMHIIgxJUTF/lNZSUjRs
wdb6sphr5JsDoMixZRypiWUbR9WFJGmhRRFyLrqiTWzYeLxJlIE1mmWURyVK
uAR+hzEHM6ChFDj1X1siblRiLh5HGqYwbcLOq5MwBB/OjwYrvLtR1odpBmHo
AikzVnH8rYDVa9mlYYpWKMfF6BHURXVsbE4LrjsqTkoeUD+mQiv3spZczgY6
oQJwbG6asmmqiCRwWXQONjupOdxYhmuxxu+0J6S3iiWggRHhVRraAcEMAz+D
mMphjAb964Y0iPYTBILKA7XzFUSkjsxqG4IzUwsxCq4/xHZi/4HC9hIz471C
H0mzeWFu++gehpSYlEVhQFZ6SJyK8zzJrAwvMlOyDYBZqV6e6lXSe8rHAIWi
emPmNmtPnl6cjNiA5z+fPvrmm4ffS0Fv+/D1xQmfpfherw6H5CQxYo3waXRQ
wgY3iqPFqyPe5QL5lFY+tT6M4nn5OSQ4wbCIVIO05OvWe7Xj4q++gGYSkWJ0
fZvuSfK4TySi4I+KuL/3+VjxRZ+hH7kL88pHyCUTqAvpt76kBCNwE8cFZzGr
p1bOkNa0FTShQN8D0Ja51sidpSEjAVHaeAMg1fKj+s4S6ejl4gxgsX6jCiCG
ajqk8VRa4ZWUdeG3UY1bcxKjaw1pEJLCgk6HEnEe3GDmHF/tIgv7aOhMzonX
TUm9PFwb8CPPUj8UvTkEnFmgQQT7M9qbOMa6sfoLbJ3h8aPgD3Odlb7yVaHh
qKHjA+ATTpG5oqUSdzRccUiDIGgeL2z3QzuaUAM91IaVjY77P0ykUQVvT3fT
FHHN8l724D0rIGshLHZY43MhCcPimkNVbRO7mo0RJBDeyxIVTRWiPW59LXct
a+CDEgPfPjNRFzFR/RyMdOD2V7SD6rAMHoNSI8kFop84H72LHb8CgBEMGCCI
JE9ppsuthQ4m2Y8bDbZFqktSMxoUoUkHXMhjK2GGcBJz7vfRdoqKbYYaLQ2N
D/+7mxzeQ06NI+P7fofqIkho3sIo4Dpq+kC3lOocIaEHno2ikeLjBYrb+U04
+68JavTmoGas4GF3PJ9j/rPlhpGBnZx0Y0Lbkd1ecgT04Jp0IQbCmsfsoHdF
aFBI/JAZpdaiYk0s8DakPi9r0QvZaWH160Q/cOZAL0W/vp+dn6uzG2foI4v4
CSI/iVS4z45U7AhUuH80UBFtVVHsUHRY5sC79a/wsEpezH3Vs7AYSXaYoUot
ICSTYf8xqBUlRMQxsCs1xkUxrzTatTNCBr1Col++h9ZnRL8+EH7hxFPsJzEm
SfrsBV/KJOEvppddHY7NkXlqAZeeRchIk1gpYEiI2oTYG4ufezRCcrGyv/ix
5+r5OgaF/nOQBYTyfQH5mg6W72Fgi1AasgxS7jgbR0VnD6z0bb48GLm2Zt8F
xygsyUqs1HpZzhmCjXrHNgQ5iVzHKRNgEdRfxwVoeRL3rVC4vHMJ0zuKggji
Iyq2YWoHMWZnuOapCmpffdF6V/sF8jpsDrurThHDnAGUfQRY1d+DxqAfwTtj
rwl6u9WExHx82h+beYt8pgkhoTzG4AJ+EusjAv2mh/jmrGIMRtqL1V4oSgGS
7CIGpYMex+A0beGavneS1kpGqZYOqPiNr+Dlh0AbooGM3+xOLjWWLIAzVCYt
jpmBgKowLbCHrj6+f5+5E4ZrcjzrPdI40v9BSJqEf/QyJ175pgnOpd9E7RQU
5yfW+QBlY1EJEsu0p+jvGBcNCQFeb3oo1UZOIutr4fK4e+VEmFioznompT+t
sIiVsxN2w3GSUFfOyk/wQeRlResBab0YUsp8dAd7VFYbLdInbRgFiHhm7MSo
Ec2vOCFw1AMHeacR6/7qsq+2LlurdysqUxYH5DSb3Vdq0NvV6HVRGJCriOvb
s0MEa6UbHKKOtPyFehSY5Dnty0W1oRmKmLowOhO7NVdpyX7/4vmj18+e0AKt
14rbyNal5AFYlWjopFAazcQchEy7foksMxYkg5GNMHAAUQxf6KqecLFC8wH+
O3E8Sbj4WAUuDRlxDdsZQ/qJNFe2FT2iAL4o76Q1Cr0MwfjPhPLf5ydeAc5o
T72SVGimfSAbs72lMslo12Oab96VJLWb0E2Iw7bo8SJvzDTKwZmFxTvkfTKD
8YgFj0tNw79hSzkvp0VsVxO8ez1gBI2a/VBPOVOwyxvDG4S+gLHnU7z3pHzM
TCfhKZqolwVmM+iuFmQtSsq3x5C1Pqpf1WHgUsSCxsXv9mXv2VXJHocuk0R5
Dgen7TMkv5E7h7Kd6gYjmDf53ZR7qMCLd31jIpOhLJqOWYSSGo/dAtWdRxlP
kI2xru7Uu0uvBG1FfcG4FQiXg1auIH7skROiblmN5YQ4RdAhygo7nZb7sZb5
RfFqTX24g/gj5s8J5jKsuJ+PhOYswlVLO5piK5vGO72n4++EM4S4+rZBcP6J
rYqztP7ZPct2ko3ftLhDz2DbeNe8y5+GrVunevzH9k5WM9k9ZnVQTjhoqwaI
AulkR3m9Lccx2dFOiyGkSXXa1S/ZZXGC8F5nh6LxeBVDfdlQfI6yzyGE+LDG
BRuwpNPiesMlnX8A2JmmsRz51IqbzXVhAHgpcoCpQ/K/DVnewJ/BQ9EvBlEj
oad5nNYP49CCpuwBYt3OmxoAVUYdaRE2pO8L+59kJywefVcjK4jNbsgbdiNw
cqojmTOv7xDP8e2g1MnFt4CFG5EfPCUlteysyF9ETn10SLQIWtEvLIKfdm9J
S43X7p1mNpxmKAcZtxlS1WAwd02jKhurGb577rwuyOfDDFtzKx9Y6tse2XPJ
RbjgRRJHJ0sJ3xfWsMqcjBk3DIS5mup8wAc08HRodL2VojCZeAmD8Yzk34kU
Fzuv4pJefNx8huE8aIZSFPGXX1BQgOxq1P6bK5JVUnL0jdMNANORi9hjNzw7
ltqMPuaIA5srpS9IQeAMe8u8zR4o5HonTJsT+FfcXaML5czSawuSk0t0yCjT
iXoEOESwze5CpnfE7z0JGK9Qp6BfsrqVcDmS+Xz5fa3v4b21Zv0fS6FP/4iA
/I0GLHgi6C0orZPgMLWTIjM7SYKThp6tZ6oblKhvfQ6f53kTMTeeegK4JUss
jqZKWWidEyMCtMh/mSr20vhVAxH1WgrtEyU9LxDfb+l+kdItGvhs1gyC4lYQ
AkwaWQ8/yQ3hDFymFGDB2NlunplJVLWM5YHmKuUGxpnom0jYZOy13aydEN2d
R9MrVgO+U4iwQjN25caYlbf8BMQGeLCRgQ0ljIXJDdeDudOnZIemHX8leeyI
UT67esRBwJ/SS8E6rMKjdVocmif0IsZp6HPdV7uS7qVtA633E+klzKu4Rx3u
6nl9JRO6kpGQOowYqiSOvlQfga1iw1OFK5jrszZx0w5NxFFFgpMA73KBqXmA
WsTBRyKTBX6q5lvkvwglCZw/CnAnSlMIYu6y93e5lv0NdV1LHYJ95bsRJpnm
g3qUP2j9f/m87WpUn+ESV4Kq9BCHSGVcIFhU1VoJQfAtX3aqXNnrSOvvxw+z
e1LoArVhu8hNazSfR+X8Xp5fct0FYuWoQ8/YMPTUYF2JiW4wssyq/jSbtUl4
bejDxO894Gwfa3KBFUKQkJ9CIZHzxw3GrQy1wEB0P92g7pwq6zs8R4XAKrz3
ZW7PuqdvofHc8xnqXI7dMYK+Ep6iHvgl8weUdhXC54kPtHk7k7Vo+sEAd8Zh
JLPRplyo+1Dok4fDIUPiGjZzTBn8pz/jzzhm1jvgSm+9wu5dbSph4VdhlHoS
9QjSIDCXtijiYhuCJwQDebWZ/lxsr04eCTX4JUJ4mS0r37zA+Ird4XnWBG/4
sjWPy7UY8grjolVwslecd42x4OXCEjhYITXVGMLvK76bou6ioO+20Mr8YMdW
C5Gf82VrIoCZ9oXouiAx2VcbueKvpd1q4yMB+Iyf0yodMHhXggQ0KqkeUcdm
n3WWk8P4TMrZRenhXq5YkHc4DmTAZnH1zQBgyHe0BJ1ZXIxGKdaVVmx1Gu00
NYJBw/z46+RUw+99GctrASKFPHUM85ak8Bw6Jl1lXaGiQbdxGbellnjmk+xv
jMowcR8fRQRoUF9f49tgaFbtjkBmBQRzuUizAvgt3n0t7f60+IUro6IXO/JL
mFHGIO6dnmRzGuu+SE+6pRhP+naT9jl3eKmc1/Z+I09ModecnSeKDy0cM4ZO
Ch+AivBlOysqUpRqDfIxHYpPxMMbTS0I/QzhYYAixeenKcZcnMm0hUcq6l1t
eXd3iWrEgo+Xim+PdRTbaz7PLigPAd3pGVjQTfhZX96GttooFOyCH9eH96yS
mlJBBMWQYGnU9EWCMOwQHhQnNSQCjarn3pywk3AIsDkNvuaVSXnBCWgVVqnQ
Zm1DEcbksh9c8EPc0K8U1/9U9K1XeQnVlfPgefGFA3oJKsyip5e2NxJ+14Lm
pZR4D2kf1wLNUTQ1BmDazgShWymgagwP4fVWgVOMCE79exyMRK4bTI+6UkIG
dBwFB0xLfQPUC5mVvPvcnMX3mDVtnHQSbnIwI+vD/DqJPqKsnDmc89PjMsJc
4c6n2+tim9doWK9LWj25tCG1lLIVvUzeJMXoCq2HlE7JUGYwD25ELW4N9GWG
eF35SHEtRjdXgCrmMW5EbBYnQ443UKEe0gOv6CvZSVNjbannrFnpIUcitIW3
rorCY5Iunq1gU1qB5tDCrtAvVKbr5ynFP3iUK9FHVjmYohX+gDwO4yJNWnE2
Vq8L4SeGVmrJQg9FOqjvqgPDD+H8PKbzARVlhp4Gc+4w/lFlRY2BtRwTU0Vi
zthzB/SoLvQ+0vSt9PIAKgqGriBgvVWWlO3maLhRbSYgfw9r/eULFOukVRqv
rlfde8VwXqQjIuUx9nYxDwNAKN6U0FfH57tyTcuQEtS6Q1gE2LsjD7Pk7RpF
WpHUa73bwVgCHfRO8ieBCoEIv83ZdfVMKluBrcr0F/4DWQCiRs+duQxS4dM5
T+KuvEnIcuBmU+BHu5lCiyIxh9J78A9ovknkKlF3i9bUCs1G4h7AE19WpMft
RKOLxywWP/qz+zZMnPRu9eYDmm1ipWWt05b2/+BoekCAiN++VyLDQ+HzzuXa
sjMLmIO4l8ibNVduZ5NjNLxAgHYYvwfJJZ4kW34P+vEZWVajNnfqGX6cwCYl
GFR5Fcx8UiIl9CyFcvsSgw3yssuvrw1uF5r/cL59NDyfnqVVULWza1ZzCock
T3ERRMMgpHB7Kb0skS8o9pxIf5Y6IiXbh+NsUjWAxKM//IYvDXwBCETPK6U5
opbTjIfEjtukqFN0aZx1jAuTO2M3FkOHlvk2gdiSXHQqbSxJqQ5dL5NnCWj3
7MXJKyTvLqf1Ow/yZq4cawKiYKNBdlqTG8VOrBJ4khYvK8d+lKWUtE2ySWWn
wCf+wnwNR7WQ1o+yHysZET1aoOTnEkC9gay0a5LZ1Nxv2+OpWWmxK501IBKX
fGg9HGMQ18hJbUKRUi4JKBJa4KZG2n/dFBsWhYFcNZ7K+AnOA0GpZ57YIfvf
2+5o5LTijXzMv8sXBq8F9z6cNnU+588t6K6NVZ0dWo7V4k2HS7p0PM2XtAVs
c3Vm4TTCc1jAIgguTX40f0WtSj5/9Vp68rBdriqI9jCXWMQhGZg8mglWYMHd
zHNBpYpjmW1bLlx0hCu0vRY7bubciZNmxVe/fvXkKBbGw6VXPpgFPJYo6I99
hWngGsLpl0YZjE4IGQRTaKftpuyiTP6VtfSVdA9nhcCZ281JBw9dnO6IS3dF
pW/TftGVVVIPI3MhZz2Luz+B3s20jdQtBZbSYWVG7W7LBpSjQl7kS2dd9NSX
YxhpbQehmqvIFKc5evxcfiqrfb3HOp/MxS3GktiBdea0E6+RUTAcOr4o9WZW
7cHZACyYPMrZow7EMOcGQJqS5TFiKlW1CSn8mwcpBvEgFK3ERRL3lfPtQfQ0
PsAsOIwiXEF6vWiiTiiVH9BSeZQ72guxAFDmvI2f6oadNnw2F+eOLih8pKTW
EzwWzAAh6wxMMi/0jzYOjMhWC1QKj3ABDCdCykplxU0hptt0eF+2u3OPEfEq
euKRp+FLbe0uEqCVwkIVBJaFzPO6umdqRB9GRgd/CnIt17TNOH6FtP0rFM/j
g15yHWN5jJxNR6XvonXWNbQ/7ejhqtDnd1CS31/GM+LFtHLpBrjGE/oRFzaL
hX/d1txrPf5Q+Fs62EjxBXjvGLJGMpW4NwNAbBvfDcAwSNnVFdoEjblY+OCJ
4ibzsM3sQK/K4+sOwsH8j9PXf5D8evZyIpvVffHwYXZ4fnJxdpFdKG0ecWlC
X8ZSoOFjUsr5hCLekIwDS8Sl2mCoMO1Z9dulNUIOfaTA6rK/AMzDnAsOuBt1
nrguLUuANDpOixsJILMExwKrDWkhrQIPwSAQ6aKD43ovzw64jDl9c6CKk/R8
zLODQPezwlBuBxIFCc4/EX6kB9wocERpufWCsfChoN7njh1x7AEou5GE95ZL
P9+sN98IIyHvcPEAPQ5P/KPiqJJUp5q7lWg/01q7DN0RKdUSBFQnDSquvPUO
74RuIkBzlIvoDkwqA+jMbkQkcInS1NT1SnGmUce8fvssX+QA8AccZS0dkZKo
GBGqCXAiABS0j5qKai+bg+9pETHTU+Osv3yhnGQMs2KG+idJ3y7vDBQsBzFW
Xxl10yYVnCWtf2jnJ7lPUUqgrgwwAeyvurEQIMo6aPBYepmBEMSbAbIX8Yr6
DJJir2UuuP5GDpkGOMbMMiaHAShNrDBcO47vsZADgnZa7BxZL2LfRNvAxwIq
m0FyL3vFb3o9z3r5zVHMU4AjTksCcfmVbVv6CLuul8FNEOHuzeOcC+s6RR+T
vokUdMNA+7oVqQyO08LsdLQbbtfOYYCMkyZd1HEiKv8pXk1+YsDdphMK6rtT
1HEEFh7AFogP+tZuUCmJWk/Z3umsaj6N118hplVoX+JxKm0nfa4kyiMWkzku
UaI7G1TJCqUge1a51JJwyTV7igCJKBYrhkeQPYQQ8uqKUPQAGqNJ2RWYLu3w
gfNiPDzoET3ITzuX4CRbDr5NeSmFzg5qxBAOfBzamcKTb0VEW9meoGtYv6kd
+GWGrzuTRFXcVJT1ED8MWVoyL1dQ7D0v7q2Uccz2cTS1r7LxDkIwWpFTnsxJ
gmu9NrGKQATzsL/EJ8INQKNAkZWZCBsNuHUQa/41Rx9lpY+zuMNIr3gIN67D
yp+Nn7bWMWYutZjZIIJcNPd3ONzaeyGKbre+OimDpXzfoR4j/52nDnrL5Qau
Ig5h9FjEbzfl7C06tzQ1huEvzG7b4GCTkwuED7Cd5xWI4kKyH+SrF+W7quiU
sbyuuU6T730VMm8ZT+cTPfKGTS9kr0HaKRxIc2skGMSaCpNpP/kmxJl89Sap
qwS3h/q9pSmqPEQL83sCjbwiEw+2+eb9e0iYO6lg4wZAc073qlIk4CGbuBLu
M9fZJZjO+DnDPN0Jmt1tj0b9oPyc1iQU9hJfsEIRZCat4NdIkYq//AwMQRgn
aryX1RUTNVEZO+hPGL2bN6gSyOaCgpjaAPmNWW/ipHcyeOPKpnqQScy+GBTa
4poRzCXZpvIB0KBtt46m06IrN9I+efcvTbPBomkLeg0AhaAkR0poGwCFcLHz
k0fBBwc8WR8bUYxt869omy0+S1vKz0j2FO54hqbylqmbPoA6DTKL4bto+J+x
NTXO0JXmq8t+uBAOkEpdHDq2HVA8IBwvQNNKryWcOXUDOK0m2QTOXku9E26B
E+UPhXX41pM7r+t06+b1huvN79h38eEly8RE0opDlHQqxglyW2v8oj6HxSaq
r+Yx1KHzZKktDiV07iVdOBNtdnbxSmk/IZbPWG0zxK9sYrvW/2XRmnYWQGS9
ZgTqwtKyvIIH6cFdtRu0eCbbnchX1eukRpcYYdIoYqQZGaIfME6939c2ZAol
FdQ/PAh/QLZrfT0M8ORT5/MLl9yYnlloconhmKPRJUEC59Gn1u6MO+gWRG6p
8fA+892uPArW+UBFt7OXJcQjM5MO/aWTlYkwdhsDzDqTVfkUaXfMZr0tuxML
wun04Fw5ax0KVfQvYTENtR7u0cgtowqylBLoN7e0jiR00TiucFGZ4nrA9UdJ
kxmz+45zTtGdhM8US/fHXtgnyoS22gC4WeSqFHb+WH7VMKs732qcpBIHChnb
9/8i15v58qmHTCPOV/TKq01lf8kM+6lSO8ur3dea7UnmmPb0DiGMH8AoBuFa
KZCyE/jPrYAlvGfZvuo7mKVdcF2vG0YoQWrptGrj3OSalUMKLI62+6u0Ggwd
GrXkHqugcHq1hTftCg+HCC1zUx+xx8YqGi6tY8KnMIqSjuRlrC/5MrXaMxiF
HSxI5v1HPuIwreu3PE8u+4hTs7PwKJHWsygID1W0gGsYupi4wxnQC/6OUmN8
QiDg1+wV4XCFe/EG7QtZULDvig38FmVgRv29VOu2TUqQoCSn5eUOmcM151VI
dEvKgKn7Rj3ZwvZ8cK1FtoViVw4518i72KwOlhQ9HWWTyeRoz7F+BloAj8Cf
hjpg4gypqoh9XZGFBOyIATnlQ7ipoZykn5JAALPyH8pDFYT0I+qutbsy/w2t
9DP7M4ffW41mBvntfIAwtF33azegFETB4VqfHhZ6hRe+Nd+eLoLiVkwzjGSx
48pjWvTeV0CzoscTaxSQ/ei75lnzhV5phUF7tx2ZzAtp49tsnU8fmEf1xZuo
YggjdOLMeDCOpBw7Hx+711eowfHiMtySIJaX0QtIM1qUUgGxSDuNWVNpjE/6
eDOwieF46JE3bO7Jl71/DyMjF9SijMyWUCqpxlU8UTjgbnihr4ql9pUGZcVW
m+sAuHMZckNoJRxQZwkUXbooGkiGxR57yyWSZMV1pNO2znRVT0subcb3HBko
zkXNETnRjxuLsd5QityronUGc1YHDrovauOdkpsTGjjT2jYqUsWqeHU1FwaV
6smxnq+ZnrxFvW6NBpIPVeXSReJ3IiHtmi0siQr2jiojj7q64bP+Ko4GWN+H
XqN53iZ1Pk6B2F7OzW2IHn4bK+SCdTxsj4739D3EvK0xZhIMCbWq4z6/6lNe
1h6YI/0EWLK20ucRxIota2U6Vteh552XqK2KQcvpSryLS6nO2LbrmyZnKI3U
n4hcwnl2W9bLEJvlxuzoti1RH+fbfCpUg6f5gb7F1jE36UD9/sh3Z4T3Qae6
p2+z01ozohTHgCnBIAdQuS/hZkk/UgrirpiOJQGOJaV069xw0Q/u57qXFsx/
yf4KgD+Da6uz0m7L7ZgJJXZSM+hM83Wm5ovQDGmpdYv8HfGlmEuU6LrlFr7o
8DVoRQOsnAfwLLeR0STGZUN2pqRXjAdIMnQkzaIwPzeIqnnxNNAkca+UibM3
Twqi0d3xBh/OlvVmfmQWL/NPtjItzBtTU+9eTca81b71BlnBzuI0z+u6aYHo
ulYYhOMuQbk4Q3zPOVWdha5k3Rlz2EM+qi2UW3PxOoJGJlEF09Liko7CYOPi
pT2cmYQiLJYnjc9VUXnlTxgxnnDatNY5e1o9qcZ0M+wNJ/USXTnoZL7p0uZd
0C1ncoNvXncpIUnOjsrdDjkOYLMUqy2lFd6hMGTfGhQ4j6NBXL7beKTxBtOK
GMoHDpPlfuWAUaNXz6ZCcq+Jo7iH6aIXxA7xK88GNGMgILPQesGPIxjLIi04
Y1Vr32pb5qhWkbioZAUNAahLoAui5V+hZnB/S1uZaOZOQtjaaZUT5hmswVkD
HswYmiQeTjme1y7NzXfE4PWlGfjsbS27ThhtVcd5KXEmVEBiO2Zn/BZNqqYP
SzpnXN2cnZ6xEJ1uvRdPq+k4zg4dS5PbHCe0DUrhazIaukRHV9sy08bWJGtw
hDdrMjWbwjcReyyeKzV+kP+xRVM5JFON2B17R+yDSGEzeyuBhGviS+yz0gwN
3MryLPgokdbQOm3azbDrNd1a3E2sXeOCDuiNYhd8ApZkK3EGlmYvOaTmSB6F
d57JHEZGlgbDwSgxIrqsbIu4Gg+yZWKovuZHq+vod+La0Gyp3vvsXUmN3+j+
vlUkzgI2vtSf9Bb+MkU/7K+VciK0jtWWjjA81gMEl7oD6XQi+qjwScu/4wHr
Kjt8LwHgcOYYWMIm/3IZYlssrsV3VLG5CLcX/C50o9NaX2+5BsTOGj5G1Ij+
Ml94hqUSp/HI0OAuhXJrEmEdsq/w5jjnhhUmba1as15XcEctuo3XHAgZViNt
zwQ8FBUe2TlYn5Ah0UZ1s7kUkU/mlRSWBlPizAKLqCf5YHlr45A4IprtYTh3
/8hw0CaEBf+OUOvOIdXWyUdv0NS6vHVhdTIM5/XOVweNSbIJjcSRy2elrIVl
e/1py3yqH96dNfAab43zhouh2zJa5UgHchkFJxRWal71PctjeQ0CrJxunT/l
dhMUsh0FpVp95cmHiJbjwYqQCChuyc57zJWBgP2Bocu2kr/c26x82LwW1TXl
9XXR+HU/03Ijia7OTbLR5VtAGPnMKo9KcDgarkt3q276ACleg5I4hSTF9Tq7
uPRya4CljTexbPBRoYzAJLvAu6V3hCwDYtpa3dcTkQGX/DLEipCQDhNxb40k
0VLXZt8a0jkGr5NE/jvPUVkERKUIWGIDcPKWs2CrbWflfSVnz1QQqVsTsFbB
c2+FiEK8FFmPHEvB4dMyBcNyFJYMiWdW/b5XbFtbuFB6y+y8UOvi4Mhu5vTB
cmsxIwB+1VhH7iIXIZCMK2Z4SLLmZGImIoXNTItZrlAehqyUq4Id4Az1cVj2
f2E4j3/rl8I6JSog7HgOwILvTGtxkhvkYCp/ZsrV5NOJCKS8ErSDXKPoyCyg
20iA+RAE1F4pTAi7cdc8Rv2J6KlmB4MoQeKsgde13lOmz2r7yJC0oFBXwwPA
AfV4liPxlBimLiRWWukbruEphJc1AOkDFQR1Il9yBF34ct5YkfEkq9tKcqna
wp4ZVpqk+IDlvUHJZ1QQk7Ngbrx2IZ5pGlzr5iVfcF2zz2tV190NIp4/8a20
km03UJNCnqukBKO3snLbD7HaXl4jxsy7DE2JdqPnY8bXHuisNS34ULJdyWWW
YfOx96kBDldSe7WuEanj8O9hK8gIWHJAQHhp58FhyCL13aw7YwHuhgTwXMNR
QsPMAWnPUZlppCB9mKnIIF5HmWWao49JuSk6KQD+W8y9aI+S/fOZ9rp661uS
8s7roWYxC7uYuwjnmmNkSozmpvqEadMZRplgAkXp3LRBYdxbQRDMmusbq4zQ
ujeG1hu4u7NTwerez87Y3cDe4J6bg4tIq7HK3BC0p+4XULPCjJE16yz3QGsq
ZF7RorX0ecLmLvqQWc/oX+GMvup03UjF+qK1tmK6LKGQ3zJvrrkQGKx1mXmt
CVLWdDj46rOn1ppK/OBJ17nwWh0uhhnclzzCyC/o1PKDCvP69Ldvzl6fPuUg
ZORCZ+kbml9G+aYo+qXkwTdxCc1B8YtgPvN0Vf+oFSFWLgS6XGhprIg6fQGB
INYCytfHVaOobFKbc2JVI/FHOu5g0jDWJnrooKeXE2VP48DDOqBB9vIM4h2Y
OCk9H6Hs0xu1QkN8zyiaQJKbHzJf0zo+7DJUh95MU67ER9vUOTCPvJFqOoWa
srNlGYcc4H1UnBYnkCGUaFTitCHgkbnmmOlZykbqaJ5LbZ6oZYXMwEnFDhim
0qysu9loQiB7CTSyWmeHCXc+skMKP/yOjZwwHrnzVaMVjJxrXD7O2PbtmiVN
K0a7OsWme7EqHE3aKXPRkpKriPjebbF7i1MDAUSUkHCvmtymkiJaZiV4/T5h
xFIUHmwI7eJoYC/OLl+oQ/JoYtH9QRRgeBZcSo2hfkBsb+ateIp8AlAyXafT
VX/hm9+jlR7rRurydmdxWEHZx8VPJ8+fx6WHwNjXSJbEBTHCNLCLULIJRMiI
IK3wrhq/BHiigKM+30mDnbpabFiTRx0UMkmjZY47jWyqnFPNuJ/endAtCsvp
BF8G9xV3z6hCHWiDLyFzWH5T3wpqCWCkGWDVBdzCMUXQ4ySUEgKllRaodL1j
ISp/KJzhzad4GHFwHgYNq5sIi7l8AfeTrJM63kKbCYHhShxcqnsDnMHdixGy
b4pO8SjL/K41YYGvxquyKldBopFCKjWwV6x3dBYe1LdzRhVj9aYe++98IoN4
FMU1JlWAstDHyzJlZRlpE4vlvA1rrCm+i8w4kCeRkfo7FV4RvVn5BWx7pre4
gahBzjhekmvVdXVHJw/RcHxcXywhYimoBZPZI9wiiRI6J/nypur58aejLTyD
5rRm1D53IXQeSDMOUETcTINt0CwadE0s6AhH/nXpecQAnDZ0Q/TVALUQTDwE
9CWzzB7hHC4RlzjdMcOLffnq2BQFCmdr5E+vU6FlwLColuPaVD36bVxKHLEf
bwST0GEJLMNOiDlT9qENmID87JzGKAMxSLQaixQ572F1WQtJbQZlUjJh+Gvk
AWvufrV1h/GaHvFAOUE6zCLuMabH36rcSsJp1emOn2oKuTfiUVaLtZiQQ21p
5mxgSTYuF8ex1H2rNGS9C7rtmoF2Wn4xeTbmMKdF53ZtlkelFd6Z+qW0tgCN
AlDjeN+Y9o7FZ+7f1XqsyQ4QRwJLX1hZ9EnMNONxxWBfGTejfFCsphXVLNQM
cN7bOy8El8Q+hDCRGHFiHl0p3AUblub20LwwNCIwK9wP+yB4YPCNeVDSanJc
/UwMuCxTN89AD+ECjcJHQ74NK3YAvtF9iX7ntWdv3MUKeK+LmcnXCU9D6jCq
a9Zuj4vDcd2MSBT9JHrU1GLoa0loQE07zVvwNbPCltBt5aeNyiQ7HuZv/kG9
IjdSdScdErxkYeaNbzAZLx6eJic1E9JlfvalX8Iv1VGfQ5tBi8t1wSV5dQ8Q
WtqwAMaDVG8RcbEtQOEmHJl6xjIGadHnKcUvsljq4slj2QVXgQfYC6ZAVxcE
hDdamNa0ISMkHLGolKKESPz0Dvz0DvAQbmRo453Vy7o5wgTSPQ+KP9/yubMS
ctCSK2ndIaO67KXfLrbBZX5SI3vHJCGFpQHVhycr8xrx4+jbaGtHH5rlYHYy
Oe/DNM7DSblBv9xRl+8QGvmRquTIhMpE2ZwxbvtakreU6YVWFlI9SoVVicaZ
Y5yHgrc91IGynfCZczDSfXVbhnJGxTk5U5Y0Hz5DaGZFu7WAF3DORndbj/Rt
wfEs67qTeOxYxxXI0RdzJ21YaP3wze/HAJMd+Ryq+NyI2zXPrhvpBUi0SKYf
bEJQvz00MGHblnRPZqFHgfAALUIoCr4VwU2GPYJ6zMaP7s8qu90sId71xO3a
17IL+zpBfDIYMaVqekx1kDXSYXXXOPdRQFpCjDblM3de0qK36UYr1yrW/LSy
tV5u2qykhCJlPK5PBa2SAWvpdPdBVBB4QAZR0bZe99tkd7MBN+lt7v9NPwJm
558xfrJP++Fro3v/np3Q/5/28/fsh+zv/0nvzT75rXyt+9fxnp9/HVy8/1L3
d5aj5r4rAupkOJj9lzq++LBkXxQ+poNztGdK+y/9T5rRf/6KDl+/fwBY0VeK
ULkQsc/S5njnWHZee3JsK5rdexPUtHt7Z7T32v+kGQ3f9Wk/fx/ceaI6bazR
ZoeR33nvnSb/j7L7ccdj8XYJ695zZ/wDA+v05ZPXf3h1efr0g6PdS2DDn3/7
8Ds/9PN5d/7n7NB+mvu8p/DPvdOU5P63zCi5dtedPwzJ7mRAdjvvjMnOemuj
ekVCQ707/9enk85/F7dK7/wcDtW/k3+Gu/5fONrkr49c/eE7T0Sl0uLXWv06
VZ723BnpU1aRMF9yUyPWgKyTzo47NfqxvkFoECUzjj5ptERD2af9909xn/95
Eo+I61Ly++59YEZ7r/3fLvFUFe0BRzniH+VstpqqJ1l/7xguYbED1GcWE7is
QqVw39lxYdEimKmHURjiSLFIhhCPAuGviuYmX7e+aBX3TdL0K8ngihOwosFK
8QbL5uptXVx+pg2bGbcQh+mi1sB8o1n0AQ+8MJjtJfur25ty0RmaMbeC96L/
MyAfwF6rCtjFgAY2guQ1zpdbWWqkIk3U3BVDa6Pesh4jIamJKC/E3kTxODNy
Ic7Zpl8rBU1HJagNDbjK54W7LSUPuxbPdzMOYVkGl9AnJpcYfDyytnu62k5W
G7CurawGAhjb1bRealXj4l3nuw+LIz0uxc5VmbmsHVckUGyBc/c4YhOHEo2N
qVuXEYsScwYwA87rDdqMCboA2fj3/FW+NszgQgFRe3uVC537krPsuGgE8yfu
W4nd8rTqbLO+bmgJe3THMHvnK+6FckCRMRlwnDuT2iJrWAvEYvMiLi+3TMvm
LV/f+W/ev9fqkIrF1+hT7eI63t7G1Yw9mVTsekaJt2tGZYY4rG6xRj2S4RhB
hSqxaiuzu5sf/6XrlwwXiRZHlXanfk3SnEttXs3z6UoNWUkfN56G9MK13Jp+
toNF+xG75DbiXG6DPpc8XX6OxtoG91oUI6pfbmC0ABxRfLZLUs84TdcHdCXe
X2thE5ShkFLXsk5JaXUXqqlJYxjNBpJ6u2EgQsWa7cpuDitVyV0+uTJL9KVV
DpRO1fS3fgy6fsIM7Uk9Z0eZ04Yl8Yk30cgIAj5/deORBENi9q7HyMUp2XDa
Y9q3226zg8hIPBi5g9PwR3agwhS/vmEIwwnTJf1ddDN5em+EpSRpMlu0skKc
Gl62UScW4a5Njlw80oGINUACrnKcEKnY5iJ30oC1HaUAdim7JYzQu23ZV+Qk
mjr39SaU7Wuh2f5SQn/idqmSyhmxzLKaWzUWEI96lnlAoTaZlZrb+DSmI5TO
TjjqDr4ZQvATldFnleTiwSNyqFWejvorrVNCOkjT6JzkPNaNhzlwIpAIzEMr
9tTkW/PW+wyrG0BXZLFs2Z1IEVS2E6DowaZiiMsBJkB/NMWyhJfzgK9JHjXJ
RJm41BoJu06CyBSS7GUn8ZCi7Y/AMzUfmhWktQIQS27OvuTg6U6mHrngJXXw
JFTMtihcKJOXbhTn8YuMj7rL1wIc4/C7T+r00Bqa6SnigYhicObcrOixVidO
dQlMS+c1Gmfy5jHezGOOsukB2v1HlUZGIJXdRnHv+DFkWcEALrQEYHiO5Gf6
bg7CI8qFj88bkrHUmmJRBpDpmLu6G8RFbRaFVHUNXbShAkrH4MCuay5DzhjB
KMEVHQoGOYkBuoEoG+eDWapU65O92dhSBgKSRdEFpyhDTmZEFJb5WaNIVybI
JJEpSpachzIWYUAuNEzo4UYHK2LHgr68SCqwq0MbdHxTE/ekla2YkrUgqGI9
84xelsA0mnpdt6V2kIPGY8oQqCFk2WGvAzpFRNuuzE+RecP8z9KSiseJ096n
e2oS8xJlnkwPknpN8sRQlcgX86BPrX5OaLQiaDGXK7yKa8CochqVbfM7nytE
x5qvxGdnsPiffoh8XRWBmTBWGG0OQBo4yDso4rOXzB+bsx6kSbSJvFwZ/UWY
p2W/dGuSBh6VSndFxVd7oJYcaYM2cfeN+2ga6lFOWDr6Xjtw8BlkZbCLl0pS
UYp3N2STiYT2PSToXNd2d2B1siHy2OzgleZjviCN5yDVcCO0pDraWpYPUdxX
IDADxK9PrOcrGSgdQ28EU4aS+cYJrWpAbi/ktoyuh0PmIvMBTdCmeFwpnenL
ozHzkrKfN76tRSoAUOgqnn9iGcYw3njBnpYtb+Mrn5JBy/am9ZWBa+3zFpX8
Ue1gLnfOIzgWtw1YioRFz8dd0Mo0Q7ky5NSugYDK+MSbvdnV9tZ+qW+QpQbb
BfGSL5ep1OVPQ6VTLZCTfur71QgbjQFqnAqj/tlRhIP1408pTylGvhxrlvAY
/QiMz2KR+LQOZEWyP6fA7nGZjYNQjv9JrpXRz5vr3NhPK04EPssQVexQ6Nj2
4NLFtyXxEyvBzanZwt9ZtMESBwhSsdBOJQDjsSRoLW3KjcmylquFtljpZDa2
LK65rFiD9jLiajGhNyzgcfKHmAziidqa+lKjuYuART2YsAd4cypOlLkdoaov
2bUT17whdkOmJ749JEMRIsC3Q1eRzGo4B4efnF2cgzMvFlB/tb/PrgX0+bTR
rtBuhmx7qQBCql3JzUZ155OpmxKTIHA9raC0ofYUMDujVyvBu6F68wknjc16
ZjyAecdj9SVYo4ZBI8O0ZL7Nd7qS+n4X9QSq5iYtNQdn5wzT2jWR16yLClEn
A7E3jEBx9gbjDdKVHnkO3AiN9eOOMzps9SY7DtBeHWrnkBnxAVgIg21rIASl
F7TPrEl0rhZ1Bqx6TNrssg2OHVaopfNBiBkhU01STFuQIDdk47IkLPZv6yXS
SPTlkr90XXdlWtFnkWaeul5yzyR7Gu4Ph+oQ0U1f9+4oGcrIphiw7oZeYX/G
jmwWy9YTnSVq+wvsvsO7eFH99dHXvhVdNpi5ApB7M3IhyyjioD9Yyphx0ZPB
Z3Y0+vBe9TDn81vkc8yl/pzztVQ6LRlrMsnGbCkhlk8dTCBDZsHfTGaltseM
nMNJcpE+MYErz0m+SpqMppSzaELLBd8IgZ7PTS221gRDaGudSwvY2BXNYxQq
ZK/4W+lsSpaWdhwbZEv8YPqKUc6ufCTAoPv9L9XFSCfTPWN0Ks7h4eX5szcs
D72XNoGIWj4Z7UjFE4MH03l4U68pDUvqzRQwcS19GKUg+C5y7kWo1XH4Cmip
uGb6L7+8fvbk20fffCcuLm6LJ68zcJh5U+cj6/LgyVItoSTIN/TusW3gZLvE
4ZkoaiTMSl/ByDY02Fll6BcWdX9JNUHGBC44khH7VeHVitym3BbK9HV++BFI
NfIEq6ZnuX1s2MvsrHcSPXFrVWaU6CQZzHvY9rWZtDlHyVYTn/ynWcVR0Zc+
N/MdL+hwSpkQtYrgRFmRFgqcp4oYad1g+iJXMPMerz59exNOrSeYTycvTwbX
sX03r2cbjnEpMNo4NsaKu+RVvQZIFs/ieqDSaMjETmQHWStjPmLeQyt5YH1X
tnb99Ka+VtQV31GIT6j3yTpZIsEZa1z7csHsmjSLY/xUKrarOiFVvSSsxB4B
1HT3fWzZ3YSD8/3Xj+Bfurwx8LxPYugPuuwZfqnK4iK/zdnp5TNt08TcrI2E
nFjB3NlJC/JxoXl2dtN46LC9kizlKmnjuSz9pLkFNsko4vhIVO351KQoum8M
tQJimMZYN60A7tU9hyH28oqQKLlAn1q219BcGPsg7D86KXE2VIAkqtaAaj95
65CCw8oRvY0XA9YLW58IaGZJAxi/hrmqglzkAolw6g4mwW5K4YgrZHT5spaV
8Km2AwJr1J+jihC99LWkimnvST6CUj3Jlln05P6TyMaQZCqc9SHfZfIZZQd/
+uNkMkEW+o0WRBTPD1Lgy+JOg3YOeiduv+aKoubtu644/DuLDyxLaT2scfoW
js2UzNdFyVHVZlOxFYkA8ChqMMG5R5wmB70AqiW6peXLDVbLSSHZcMA5k53s
KFQFiN7FzJ23PEov9aqiW0l/Riyv1QrcrH2xkECgw0lL8BpRhYiWvH+rQDZI
N2HrMXuyadiD5BvWDcrX9TJhdl9oHmk/emR7wteG+uxkoSBAArNK81elb94x
osC4iw3XTbdE2V64MriSHn/6ooTvjl5p3yP1Xs7vL79cvH4yWRdruq6WL9+/
jx54Us0bJJseRoxqAbtI05N//h5JwUe7H5jLzfzA06q8hrfqPvvI0uHVfyNS
RFsEDnNPy2bef16hd9Nzk+GV5xfZYbzx7LuD/iejmhZdngyprFt6gOtNb8QP
AoH5BWwifVXTvEx5G6lfs2hgcDqFL2jQp/ybpp4Y6mA/UWhZr3hlONiwadoN
c5rQugdjQY7mKK2sZwTzDJVszC4+QYEU/8441Z+e+Axxtwv7lrELG9UPxWJA
lR/ppAGi17Kkr/fERkJ9zRn3krocjMcWUdIoP+kpvj6nmLxx2cfSN+lBBZBp
sa21ZrUxIZEuQbAzo0tF7yTQA16n1MB5K3uGp6XcuLWvets0ZqSFRdzJnFvG
txyxm5ZsmiHk6auGaSVTdKtcltMm584mMpHwOIfwXCGNnuqoM7rUJcmlCmCH
baEXcdAzz14WHdRMPpJ3pERrk0vvMwFd211Hk7BDhUyAIxMpTcj4uFFavm5R
AQ/MZ6gbMd/p133+t347bUUrhNd5PvJjtXn1o1ThuKER05RkLi7DtzTuIxLB
P5tJHyrPku5syrWp4RIbXOXS8CuL9WteiODil1JdO8AT93q4gH/rDbu1RrK5
oDVuuGZ73LVLYqRcZ4G/5XkUUdUBX6fIVkChOiMbVS79z0Jb6iyr8hVdewA+
cMXhzYPwguyR5QizhOMSxSK2kIUXArFYHghVT3HSu8xy7TQIL3lNrWYer1C2
tErj/SHcz+t1oq0T1FjMTl6dYdlAYDu+CqEFdidbYyepISKeUNk784tyvJb2
DgDPuEqeoEukHrZW34pCKfQAa0cqfu0IOJWE/pRghMX4fqE8MeuSEPqH98hB
SlAJH+YUF5Hp1j1zeL80afB3VNs4IzlqyxWF2gWTwkmznMlO91+8uBhlv3/x
6pXm7lfSm0HbhAZStWa5tH9Pvv8+ac+6zKvrDWdTiibEfXELdZ7YiSkrF62o
oPasAHDULjJ9qXZO6OrrghVUNoJzvyZeHuXGKaUGKuKIheKrdoxTmwkBUVdL
v4DU365ubG48IUrBk/MX3PIGwBd5lX7x7y/P+p9cnL/sfXQ+/csTgYRc3JWL
7qj39astUV/V+/C3nf8AonIX7SuAoYWPLIm78doW74i9o++xLz6yC5XQ48DZ
oR0bX1rMTo7/IDTidAH7Zsl4ofrdL79YF5SxMKJxvi7HNubxQwE2cCXnNggQ
Mm6EYx0QGXe0hadwWWjU8oB5kvQVZC9RBwggqjRyL/Zi7lR54SKPTQ07oac3
CJek4dFOdH8rGiIJODJekUVANANc6F3h/X4+/Bfp2EwSXqr51i/xUMxXYoWb
xwuShJNPvw8eLpJAVWnZbsR6OSx+KD064OeFOGLcK53mrl++FjrReiMsOipV
OApoJ+n9rMrwZKeGJf1Oi+VaqiYGJuO1xzEZYO4Qax3U1iNTKYOPeMn9vkfs
PeqSaItGIYFORFdzroiGscTV22Txw6jySno/rZDgGKKzbbKyzsg9Wt2SC4m2
+YIVVu9+1YqKJhxF91J0rXRv51bbxd1kf/0w7hlPh/S30pCFNuIUpxGu7ll2
Yf2L20xYKpeG3tO7sYsAsHH/Ul+j1NlAJVRDlsc1tz6JIm5xR8FNtarnPKSR
tztcVIypSLpYiufQiglHIRBzJPi4D4nEbtfrtdEKtmuFjsIyyh3RX36ey4On
xMqAYUlJZnJVOXGsFd4pxbvqq/hbCj8vahtWORR3qkhQd+JM5SD8wV/9BhV+
g5y/FRFsUCvXs6lvd+N181A6gB3DXp+28qSxeRf6oLdS9RhDjaGvfOR1ygrP
irtdRwuHV7vh7MMqleuu3+rUCnxK+2LuzOm0Luje95iGr2FhlrLqfof7Jay6
lH1tt3Tyu0ZdxoeI5mmlsaO4lpqFzqJ+mi7QbJVpi8BQHVad2CQLuChVU4xt
jCzHGzT+ot3UaCNGCc1OW9HKEX0qXeVmXBuau1Wpk5gG/tsdhBDTkGfFSqDE
EWqudOmRFXFJS0FAwx2j1XdjRYeGtovsBm9D7cwCKfFdVG4kal1iRS0Zjm6K
Z9IO3fdoCw4hPTE7nuFr+2UnM6uJxOqPCAOrBi/F2wUKy3yhepvKw2ytrcVv
6sBh2s2Uu7WU+TJ4PyUkCYmC7nyab8LeynZzfY02eOaMZ/eY2d7H2cmyeAfz
r1hW5dv6dpSd4Ejm6AW6WcHaIOHyA2mmT0i1mBZLsnx+aEoi9UvW1+VvWIZk
1ZP4yEfZkyXEZp0938zejrKnkLTL7Of8hq4hoUfa74j0JKLp2l3Wq5xUnlMQ
+OuiJct+Sff/mE9J3NKknxfV38qqHCGHoR2/QsWX7CnXpqdHnDU5gpbuYrsq
aMfnJQdkcSxpeHSmaFw/45ccg69I2RllL8rmL3n286a4WRa0uHQCXtKA3c+k
p5DGI2L0JeCcv8uXXK9qlOGlGBqRFM3lNapZ/oQzh1prF5PsgtZ7umkq6Wx6
0RVrxIWekb5QLK0AKwMSAEfWIj3IfNPOIsqYg1rgSa8y7640Juamgr7GEjFF
NjLM3+67RtYz6OVftjRl72Qh+xwwIrGuMvGzsN0kPi+uwv7LL2cX508mU3oI
PCtjksPQrkC+QMtnp6rs9sIy3kvklWErfxi5jhMF2e1110SGyeE+A+hIYtm4
9EyThRhQ4tVvn5VUtj7uoyHCFEkskKS2mcF9J0r75OboWFLI5MfBcqeH6E3Z
Fdpr+hf8wsDc2U3eZPcUivE4Tke7fz97gjtLaytq3TveXD4bf6ddi+fRQxbr
5nHW+xk8JIoZyoNc/5bBA4ZvgquBJvLh4bIP9Ozp3uHie7g5Hn/0IbjqHxns
q9NXV96DkvnfHvOF/NkASh5yyc6ehrGCev741Z8f919mVCXPQev5NkJuf2iY
gED96qvvxw+zk+evfjoZPxrRw6CebDtWER/wI6Z1Dc1tsKv8iHLhw/msxKOl
jzmBPvJ2YshoDXH/pkRkd8E3GF1eLZb5dXvVZfzvY31X/OXD7O/pB48+/sa/
o2Wee5/FJ+BxfFQYSvQkQUJd/Pa5c6+16i8AXrnviBoZz4cwFX/7/Mh8GNlM
YzI7kqVGjhseafej0OhNrkX/sqXWGOZwAj0WFZtx7mGVpmf7yevTk8vT7PLk
h+enilnLDrngirp21myxbgWYQ58bvcu3XCh1s2QHTwaV/Iquu9J7bT09qyNz
6HqNK7hkxyGd9CO7BkB7xrBwJzj/SJAmP4v/stxR/4EE96846BU+LdurdbG+
0sKaXXHNJY8FQPTAHT126aw9K+N5G3vyT1MusXdGumblfMdcZjlp3HPOu9ys
53n45L9qvQYrxOQ/XAVbJ8YN7PwSQACipNV68P0hJoKvD78kfe7LoyO+PqKT
7NCjDnXxjoarnsyMR7pudlOc6Qg6Dv5M8o/b5LNPnTvGokM5e/n09PfxUK7s
wRDE/RHqd7g/PfLiuks48CX4suLYIy12pD2XPysnCD1AIvBG3k8G2iXC+1Gi
PSK9qDar7CqVML8EqdNdaQZW9muQhVM22HCa84N3Dx5CWad/vz9OK0CP8GGu
XxLH0fusvKAgjjhKHr+rqq8iA/HX/IIR7tOm57uvLeZXljTMtzwaxdfheNFr
r8RdyBd8NbjAstn5668HX1tfEv76m8HX0wfN20LH+6vk29XWv1+TNPUh34+S
iZuv5Wq6vaqnrXqI+Mo8eaC86koDLnzBdDCerq6vpCw/XzBL32UZVH+zsRS8
xLLL8Zfantf0AJuS9uC1uxfR3dF3AJb2qeXhAyGIrxbH2abS2l9F7BRwKeX5
S/pk8fDBPrLQ0NrVXZG/jZ8gtwk1vb44yR4+ePQ1BxvouuStXX01La7Ylte7
Hu192QXyWAZvefQw2ZEnLy6Glzzq7T9M9esrsl0Hl3710akO7vhOtoQLFioI
/tGDr7/LpqWXMB/70VUi5nT6JHnn5evh+/IhY/hat/rbvVut7dbRlMYDrPdv
/hWu5Ld9vXc9oJP1x/btok/88bffybNY/aTFYRQZjLhSO1x/eLWgT7aZf+Jg
Db5T5vgdrQEik82t6vPRNd/rOk3pmo8eiL3H4ftPOg5y6e4jkB1uKiieR/vP
Qm/tcn7nvkMhlwwOgny8m/h7c5p+bE5y1QdofS8Fy507qHamu7HYsxsfodk9
FDv7EMXyFYsFmRSJDB4oGB8Oy6XgrDQqB1/350TmRj7nWeNrUCzUTXiVr8vJ
Tdob9d85ZTHEBR9LC+O022nSLyILnblPg68194FnaSw6eG1fo0kVGrGZ8TBr
L354lI2zXpQR81kVNMAt3YB7kENAxgxCusf8N37MuUw22VHygZTUD9c1s3AN
fqLaXvpify0XW4+vlg/e+k7d4czbLXNa2MN60/nnc5hIcAGAiIW0CnsvPefl
G5ReWfiHDH7STh3SUog7T7MHP4yXSFhBKTLo8Db52F8pWnY0M/mAS/92BitL
PP8a5LEtaAr6sxKMR9gEnIeLy5PLNxdX5z9H468rq52VXPrz6R+ufjq5uDp5
8cPZj1cvT4gHpTlg/X4k+1dIf3hrbiTXN19Ny+sNQqMwfZMXv3k5LOZX1eE9
rXmALBdklH301VGQbVkskkYoo4/ebDCcMmlDkZWdrfcsv6UdCCvNAbY74k7t
TbnmOAzRtQTY2hBd5ZK+zf6bQK3XdeEb2en1T/9Ae3H25AoMK2zp4Kx6UcvX
nF5cnJ2/tGM38l/autyjEYZPxdEGqMZVl93jc7Xjlns0wFHymojEw6+DS3iY
iTOpb/99KrcCw3taDBneP8rvFDCR8LseiOIf4nefxu0iXqcv3ce4emxLrw5s
ax9FGzcDyyDZAWe1XUn0zdAcfUugAKFX+rqcB/6gxrUNKSrAHYXA+vzMxh+4
GeJoS8/QdBqfztCKpkEISrCd/lP6CIT29NR4CCmfoaemrRQS4uBqkzAc6ZG9
25+cvHx5fnn1+lR5UfwUBFzCk7jSTbTgik/Y+kcf8cuA7IiDwmtDzJdtfDcw
7rMIzCuHXnCvDCDpDzRw9ISP82VYaUX6hVUrq+OEPvAQI3zccOVzEq+kFciA
miwkrPvHkAM7Jj6oTvYyBGEocT14zLS4yRFlbqK6XiChO+sVJ6+Pg9jDhyg0
GRAIG3ZYoU33kakSv73SXCcY+oOnx63hOMy2sr5wSMUWGYgJ+IzZwRMOkU5o
Njyn7SfQunGoc3ZfwKPl8BmCbdS3YrWPPjwr4itXBh4ZPEyrIBUhb5L5UC0d
f3wKjd0/yU6Ggp0PeQ0FN2QOanspRmsIOFC75Jie8IH9nzdcbm5qmTpocc5c
QnscMR1rOGPwmPOXz/8gRK54IiE8xiIwAoBxFtperNQmL4OnWJF7yVbJ4X6S
DusfXmokv2xWQ4ZrzW6QOJt9+BF0iOrm40/QM/3PqBqgtijp1T8DcX7WqyS1
G/mRuvvZoQgCQBGLQku9L7lDDf9FwifmR0rckDFcXexIsqQMMPbYjnaJdV6T
1dkG5euDVCx9TrrJ/mnvUZb2Xm/y7gP3lLKYzFqCri7l/Y3LiWBq+3qrfwaD
poounGmMU5donybX10L+GU1uj7KWKnj3dDFSTU2F+j1tQpt8F28UtLh7O9U4
qGfn0obpST859x9V0a4LGrJ/Cmto9JGAwsPnOsE9epAgje8hDHGPMyZ97QMT
nLu1ur5et0etQ6TvYaTY+WgYiqNyRjZjOjMpxxgVTtlnh4w5kjPL0eeWDier
cFnyukd7XtcWM2A1/vn3RddyANG/Lo3Kh+i1j4DDdxLdre0rVBeMFNkepCHZ
zr0jTSAEI5ouZ0xbUGe6BOapQDfLfQ9Q4z4MVzHwIamqHuo/9uMHyLNidgJw
iOAnwQ83lffRxEvQln8r/BIsSUOiCYM2PkbDfIFfefGpoge9tW5A9YLoflXH
273mQET4k73XFMs2fkdOJPyumI95DgCLxVy5/3MocD65g7sDblZjFLyp11u9
ef/Y0Fj5HSvoOGRH4WjuNgb2+zfiNdGud4lehPvO31xenT+7enH64vz1H+wL
YLLrRTD34hsuX7+5uPzd+eunVzATnp2/efm05x4J1AGCYudfmENfjIuE4qvt
TMSSKRFdO0RVFkt57roCsIQvagDhTayyjFf7kBjX70gZrP8mVQDg7JfreKn3
yKYe+3W7hZLkPyeYjntgiiPGvu/66pHdA1jNPT6OfDEDgu7xy+h4E81B2PAB
GgkIBmdiIHeyp1Yv4Amrdf9/Y1fT00YMRO/8Ch8DSsRnC+XWRkGNSiSUgHoO
bIK2AhKxSZsK8d/r92bGXywpFyKy3onttWdtz3tvHhb3esI6vui7QQVVikI5
rjaJNuQShMSEpMtWVQXZqckp654w33tBRvjgE8Kxe/pbhr/kV6P6CeIQsrb0
SyLd6lKMNDpqYfi0WT4Ryxf1JspNxWNmXPpaVW26CdauUEbwzHjQUCXFMIq6
O6FQiq7kSp5N4eWh97HP3iXCBwh8MCyZva/NwJFc9AD96H5MA/qxrXXH0rrR
9BdzOMbwuw5yw5Fq/abLVQC36rzQdN/2LQHRhDOW0NiyPyABiIWwvxmLWL1q
euxR5L2bqXfaf1wLFWpG3W1pxrvvyWBwJur6m4mpILrruxKOczepbMQ2+pZ/
H1/1Bfq5jwF9dnQmqDArTMwHTwzqe9IsmEcRPsWkEYXfqrn2/B2+yrq+G6RZ
HK/LtIcdSYeYplSUWl4uBKFZPxJ/b0zPUJMZ5xxBxTJq2sbDkY4HAPg7gu6p
diX4ggANNgyVnwlxuNrkTi+Hq4hquWHTrGdhkpfFMK8K9Yw/2ELGqYFgTyia
af4l97HAt7Ye/sAUP7RG87mHfmorenCuU1EScuqbUcQera3N/xxd3B7PHpfK
mimdn4yFLR5wAjDE7CnTVaEli6qh0DiCrrx1X6HPX06PXad9JuySQVpVKVSL
rAOg9zHWBb7MxyOczUbEO3r+DTQSwI7/icOTo8Oe/3NCe8UzSZ9fy+V9Vz88
rDVz6LvPb6Cl+1A+W3KBIAxn4eJQ8gc1F03ORLyePbxDLJqBhwtxXDg8zEqV
wgVqGVRPf89bWWReeX0N3cYQYapLkckH59QtO1BS0oAY4FT1NwXX5zovL1Dg
RKR9xfxyUZ8uuiMQsxYigxHXuoXJ1IXCqmYH5P9bDIMh+zHThSuOv1HoliU/
5o1/oB0JbaxPMgp4d9Qos8fHV9V0paSaN+N3yzvB18DXU08YqXU6Y4GeHDJq
Xa1SSU2DegNYIH4jmPdI+/QKP3X3t5cJtjQ6hiYggWLHgPDY4rfqiHKURbXC
ZrWez4VsDB9dr0wxy8apH6Xvj9WuylsItYnEtRXncC3wan+/hvRT59ooe2/n
EuDcn1gJnju3Xs0xWwQ2u/A18z3muwh6vo/8nIz7Tk8RNMJ/hU1wbiWX48Wm
9+YGwPTJYDykmtXzsHKT0fWVW9cVBESAYmxyGyFvswovQF9BIQVgGJNTTBax
cfqXNUktuRUje5SMGWdMmMCBydguuRFSXgLZxegsxmZxkc2ibBWjouRWIofF
yClGS1HyCXb5fQdCB8/HFPiYG1FiA88KuE5XyPTyfukMAWqgV4FMAoaX20ih
c0CeCA4GoBdATjLUiNvczt1m6j/c5i63srn1X8/lgJCh7DS2ZaeAEt5yIdqT
m8gCNyHM0Lb9x8osv1c2+7bRkj1OXLfg1WUNmdl6TA5n8mcS07KXDKZkECv+
4Jki13Rg8BD/ABHLeaZyXgEA

-->

</rfc>

