<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.11 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cui-idr-content-filter-flowspec-01" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title>Packet Content Filter for BGP FlowSpec</title>
    <seriesInfo name="Internet-Draft" value="draft-cui-idr-content-filter-flowspec-01"/>
    <author initials="Y." surname="Cui" fullname="Yong Cui">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>cuiyong@tsinghua.edu.cn</email>
        <uri>http://www.cuiyong.net/</uri>
      </address>
    </author>
    <author initials="Y." surname="Gao" fullname="Yujia Gao">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100094</code>
          <country>China</country>
        </postal>
        <email>gaoyj@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2024" month="May" day="08"/>
    <area>Security</area>
    <workgroup>IETF</workgroup>
    <keyword>DDoS Mitigation, BGP flow specification</keyword>
    <abstract>
      <?line 108?>

<t>The BGP Flow Specification enables the distribution of traffic filter policies (traffic filters and actions) via BGP, facilitating DDoS traffic filtering. 
However, the traffic filterer in FSv1 and FSv2 predominantly focuses on IP header fields, which may not adequately address new types of DDoS attack traffic characterized by constant patterns within the packet content. 
This document introduces a new flow specification filter type designed for packet content filtering. 
The match field includes otype, offset value, content-length, and content, encoded in the Flowspec NLRI. 
This new filter aims to augment DDoS defense capabilities.</t>
    </abstract>
  </front>
  <middle>
    <?line 116?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>BGP flow specification describes the distribution of traffic filter policies through BGP, allowing for efficient traffic management and DDoS attack mitigation. 
Existing versions, FSv1 and FSv2, primarily offer n-tuple matching conditions for policy enforcement, enabling actions such as packet dropping, re-directing, or limitation, etc.
These filter rules can be propagated to all BGP peers simultaneously without necessitating router configuration changes. 
Despite their utility, FSv1 and FSv2 reliance on IP header fields for traffic filtering is increasingly inadequate for countering DDoS attack. DDoS attacks such as application-level Challenge Collapsar (CC) attacks, ACK flood attacks, etc, feature distinct patterns within the packet content with a large traffic.</t>
      <t>This document delineates a new flow specification filter type that facilitates packet content filtering, leveraging otype, offset value, content-length, and content within the Flowspec NLRI to enhance DDoS defense mechanisms.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
        <!-- # Body [REPLACE] -->

</section>
    </section>
    <section anchor="definitions-and-acronyms">
      <name>Definitions and Acronyms</name>
      <ul spacing="normal">
        <li>
          <t>DDoS: Distributed Denial of Service</t>
        </li>
        <li>
          <t>NLRI: Network Layer Reachability Information</t>
        </li>
        <li>
          <t>FSv1: Flow Specification Version 1, defined in <xref target="RFC8955"/> and <xref target="RFC8956"/></t>
        </li>
        <li>
          <t>FSv2: Flow Specification Version 2 define in [draft-hares-idr-flowspec-v2-ddos-00]</t>
        </li>
      </ul>
    </section>
    <section anchor="the-packet-content-filter-for-fsv1">
      <name>The Packet Content Filter for FSv1</name>
      <t>This document specifies a new flow specification filter type that is encoded in the BGP FS NLRI and we follow the FSv1 definition format. The packet content filter is defined as follows:</t>
      <t>Type TBD – Packet-Content</t>
      <t>Encoding:&lt; type (1 octet), value&gt;</t>
      <t>The value field is encoded using ptype, otype, offset, content-length, content and mask.</t>
      <t>Encoding: &lt; ptype (4 bits), otype (4 bits), offset (2 octets), content-length (1 octets), content (Variable), mask (Variable)&gt;</t>
      <section anchor="ptype-field">
        <name>Ptype field</name>
        <t>The ptype field defines the type of the packet, which are IPv4 or IPv6., because, some filters are added to hardware that are IPv4 or IPv6 specific.</t>
      </section>
      <section anchor="otype-and-offset-fields">
        <name>Otype and Offset fields</name>
        <t>The otype and offset fields define the starting position of the packet content used for matching. To avoid the effect of variable header length on the offset, we use the hierarchical way like [draft-khare-idr-bgp-flowspec-payload-match-08].The otype is defined as follows:</t>
        <artwork><![CDATA[
+-------+-----------------------------+
| Value | Description of Offset Type  |
+-------+-----------------------------+
| 0     | IP Header                   |
| 1     | IP Payload                  |
| 2     | TCP/UDP Payload             |
+-------+-----------------------------+
]]></artwork>
        <t>Figure 1： Otype field</t>
        <t>Each otype is detailed as follows:</t>
        <ul spacing="normal">
          <li>
            <t>otype 0 is defined as the start of the IP
header.</t>
          </li>
          <li>
            <t>otype 1 is defined as the start of the data portion of the IP header after the IP options.</t>
          </li>
          <li>
            <t>otype 2 is defined as start of the TCP or UDP data. Type 2 will only be used if it is the first packet of a fragment and the Layer 4 transport protocol is TCP (6) or UDP (17). For other IP protocols, type 1 or type 2 can be used.</t>
          </li>
        </ul>
        <t>The offset is defined as a 2-octet unsigned integer that specifies the count of bytes to be bypassed from the otype's starting position to match the packet content.</t>
        <t>Example:</t>
        <ul spacing="normal">
          <li>
            <t>By setting otype 0 and an offset of 0, the match is configured to start precisely at the beginning of the IP header.</t>
          </li>
          <li>
            <t>By setting otype 1 and an offset of 2, the match will start two bytes past the initial data portion of the IP header, skipping over any IP options. This configuration, for example, in UDP packets, specifically targets the start of the destination port information.</t>
          </li>
          <li>
            <t>By setting otype 2 and an offset of 10, the match will start ten bytes into the content of the TCP/UDP packet.</t>
          </li>
        </ul>
      </section>
      <section anchor="content-length-content-and-mask-fields">
        <name>Content-length, Content and Mask fields</name>
        <t>The content-length is a one octet unsigned integer field that contains the length of the value field in octets.
Content and mask fields have a same length which defined by the content-length.</t>
        <t>The content provides a string to be matched. 
Based on the information provided by equipment vendors and operators, 8 octets is usually sufficient for the identification of DDoS attacks.</t>
        <t>Mask is a string containing 0 and 1, where 1 represents what will be matched and 0 represents characters that can be ignored.</t>
        <t>The content and mask are operated AND by bit to get the final content of the packet that needs to be matched.</t>
      </section>
    </section>
    <section anchor="the-packet-content-filter-for-fsv2">
      <name>The Packet Content Filter for FSv2</name>
      <section anchor="filter-encoding">
        <name>Filter Encoding</name>
        <t>To adapt to the updates of flowSpec, this document also gives the definition of the packet content filters in FSv2. The TLVs is as same as the FSv2 Component TLVs:</t>
        <artwork><![CDATA[
+----------------------------+
|  Component Type (1 octet)  |
+----------------------------+
|  Length (1 octet)          |
+ ---------------------------+
|  Value (variable)          |
+----------------------------+
]]></artwork>
        <t>Figure 2： Sub-TLVs</t>
        <t>The defination of packet content filter are as follows:</t>
        <artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
                                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                |Component Type | Component Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PType | Otype |             Offset            | Content Length|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Content                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Mask                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Figure 3: Defination of the filter</t>
        <t>where fileds have the same length as FSv1.</t>
        <t>Encoding: &lt; ptype (4 bits), otype (4 bits), offset (2 octets), content-length (1 octets), content (Variable), mask (Variable)&gt;</t>
      </section>
      <section anchor="filter-ordering-rule">
        <name>Filter Ordering Rule</name>
        <t>Compared to FSv1, FSv2 adds filter ordering function. Ordering within the TLV in FSv2: The transmission of SubTLVs within a flow specification rule MUST be sent ascending order by SubTLV type. 
If the SubTLV types are the same, then the value fields are compared using mechanisms defined in <xref target="RFC8955"/> and <xref target="RFC8956"/> and MUST be in ascending order.</t>
        <t>As there is no default ordering definition for filters, this document gives the ordering rules. 
Matching conditions with a smaller content-length are implemented first. If they have the same content-length, compare Otype and the smaller type is implemented first. 
If otype is the same, compare offset, smaller value will be implemented first.</t>
        <t>When multiple packet content filters exist in a component, determine the order of the filters according to the above ordering rules. 
When there are multiple components and each component has packet content filters, compare the content-length of the first filter, and implement the component with the smaller value first.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>In accordance with the procedures outlined for managing the "Flow Spec Component Types" registry, IANA is hereby requested to assign a new Type Value. 
This assignment is sought from the First Come First Served range, as detailed below:</t>
      <artwork><![CDATA[
+------------+---------------------------+---------------+
| Type Value | Name                      | Reference     |
+------------+---------------------------+---------------+
| TBD        | Packet Content filter     | this document |
+------------+---------------------------+---------------+
]]></artwork>
      <t>The introduction of the "Packet Content filter" Type Value is purposed to expand the capability of BGP FSv1 by enabling more granular control over traffic filtering.</t>
      <t>This is especially pertinent for addressing complex patterns within packet content that are characteristic of Distributed Denial of Service (DDoS) attacks and other security challenges. 
The proposed Packet Content filter facilitate the specification of detailed criteria for traffic matching, including but not limited to, content inspection at specific packet offsets. In the following update we will add the definition of FSv2.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>No new security issues are introduced to the BGP protocol by this specification</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC8955">
        <front>
          <title>Dissemination of Flow Specification Rules</title>
          <author fullname="C. Loibl" initials="C." surname="Loibl"/>
          <author fullname="S. Hares" initials="S." surname="Hares"/>
          <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
          <author fullname="D. McPherson" initials="D." surname="McPherson"/>
          <author fullname="M. Bacher" initials="M." surname="Bacher"/>
          <date month="December" year="2020"/>
          <abstract>
            <t>This document defines a Border Gateway Protocol Network Layer Reachability Information (BGP NLRI) encoding format that can be used to distribute (intra-domain and inter-domain) traffic Flow Specifications for IPv4 unicast and IPv4 BGP/MPLS VPN services. This allows the routing system to propagate information regarding more specific components of the traffic aggregate defined by an IP destination prefix.</t>
            <t>It also specifies BGP Extended Community encoding formats, which can be used to propagate Traffic Filtering Actions along with the Flow Specification NLRI. Those Traffic Filtering Actions encode actions a routing system can take if the packet matches the Flow Specification.</t>
            <t>This document obsoletes both RFC 5575 and RFC 7674.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8955"/>
        <seriesInfo name="DOI" value="10.17487/RFC8955"/>
      </reference>
      <reference anchor="RFC8956">
        <front>
          <title>Dissemination of Flow Specification Rules for IPv6</title>
          <author fullname="C. Loibl" initials="C." role="editor" surname="Loibl"/>
          <author fullname="R. Raszuk" initials="R." role="editor" surname="Raszuk"/>
          <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
          <date month="December" year="2020"/>
          <abstract>
            <t>"Dissemination of Flow Specification Rules" (RFC 8955) provides a Border Gateway Protocol (BGP) extension for the propagation of traffic flow information for the purpose of rate limiting or filtering IPv4 protocol data packets.</t>
            <t>This document extends RFC 8955 with IPv6 functionality. It also updates RFC 8955 by changing the IANA Flow Spec Component Types registry.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8956"/>
        <seriesInfo name="DOI" value="10.17487/RFC8956"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 278?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>We wish to thank Susan Hares, Jeffery Hass and Li Yang for their valuable comments and suggestions on this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81b3XIbR3a+ZxXfoZe8CCUDEADLsoRyXCZByqKXkhiSsuN1
qVKNmQbQ5mBmdnqGFGSpKu+Qu73ex8hd3iQvkFfId87pnhmAICl5XanQawPT
6J/zf75zerbb7W5vuVKn8b/pJEvNSJVFZba3bF7wV1cO+/1n/eH2VqTLkbLp
NFO7ajw30SXWVZOFdc5mabnMsfT46OL59pYujB6pcxNVhS2X21vXs/DLruLv
aWmK1JTqKJ3Z1JjCpjN1od2lep4VEc7e3oqzKNUL7BgXelp2o8p2bVx0Ixxk
0rI7tQm26E6T7NrlJur2B7R3NnFZYkrjRurx14NBh/47BLFnZpFdGWWnKs1K
hQNjEz86M3mi6bBdVeWxDqv6987f3iptmYC0Ux1dgomx0KSeM01qmhXq4PtT
9Ry0nYM2iGMyKczVSG1vJToF+ybd3rq8Hm1vKdVVh4fZuXppSzvTJcTY4bXE
lyLG7NRGPE5kEpEjNewPh90+/U91uzymrFMQSGJiaEfpqswWWBPpJFmqyVK9
WyTDYhoFdmb2igjAtHlWgIiuKjLiBnwXK3yLGSjsCcn83FPjytKjqOXnDCrz
I1kBpi4clDivtHqT4oDCseKVcmVhTMm8RhjiL4WZgaOROjD2V9L8Lh+nk2u9
dEpfaZvoScJHR1mMswb9fv/pY3mu0rJYjmB+NtVYWDmjLk4O1Z55F5m8VG/+
/ADkhHlMK63L52zY9NUssP9IwaCWYOG70pPdM3HVi1KaAaMdqXlZ5qNHj66v
r3t+ag8G+6gR133S+l5nLWlVv1odhlhcfwFFs1ml06hK1YmeZIUus2KjyNTv
ldmzP0BmLZHNdLb89bv3swhH1eLaVXcLZFd5kZz0wDPMX4ZELCfGtgfvFgzN
qEVDD0E49P1TxcPrVgQkI79HRLSyNix68HJ6Txwlxq6LijyMbYtCSFtyJrZg
8T4BHvfUD93TnjqvCjpf/XJ2dHqyPz5625botEqSTb+yaF8XM53a9xxP6gmP
Do9Oji7CPC9gdc6ft0wSwY/x31smBG2c8eeNSZ+gndMMGSnhh9uICDo7PPod
Cjulj1t29mo8oo9bprAa35wdb/iZMlRhJwjCBfnEOSkDUq2isiqM0k5J4FWJ
dWVHYZ6aZcZBxWWmWmudGIhodawLhxSjDrJiodO0pdI62P7X30t1APvBrIu/
HK8wEsGJvivf2x5WtMinCOcQ4pAaei73mTCc+INeqkOdmGXrLMrgaj9e2BSk
F2JFJyfjlbPMOyTj2BYmAg/fWVNOm1Nr7tg2Psig4qPyIruySLKqnBv18OG/
vjx5+FAxYzgjm/JwaRZIwKXpifPQ38Vcl+oaMv1rZZEG5ybJ4QA8ISVRlRAO
R7Cz5+Onz776qvX9Sfg+HAye1eODrx+PxFEFdsyBZBwDjxppXA27cZy5br+/
MvOSpvLMySxvZud6mWQ67oKWaN7tP8UaAlBt2sb7x4f7/I1289DivKS8Ds6P
T9V5nmVTS0FSptSZWx6Dyr6nvM6+7yNEKwTITK/HPTuDdCDsuSGLTJdwwwf3
7jYIX4bNdk5GRjfnkIszbGI4dJ4j7rg5b+2UKaPe55BU6mJGMSkYrCN5mKIX
aRtrMq9HrlosdLHs5fM8LKqx0pfd/jNRlHmnYUHmzEwRCL3y1MruPuH7ib0o
Wzyqp4leLuhDrUiWfm2phB67d8Tbeo1QOHj29HG3/5hMtgs4pyfkWlFJzxcw
+gAk1XkbDAJBUsB07BcxeaN3K/YV2CMmKoHIKs8SG1nM3Vv9AYEojRWOwjL3
QF0Bn+CwjprqyCYW5kdplMHp6joM95DBXmTXBg7aEddcmYFDAUOfn18N+Ah8
GcLBTZwhcui0BCidZhECtlMgGPY9Nzom3GxNEruOup7baK4WiAqcJGLz1wqS
wiodx/BGB8O6VlRtOOKWKdRlCShekxHBF8EYaH0PkwICRuShAqdUOWai8nDq
2pZI9Ux8LijeVxbE28UcgBoFSLUgWI/IXGRxFeE8zWffBOdB1kSVio2DNXvL
X918VYSkX44LwjoOipIqJrZonw64mzqsvdJJhadQ+SQmnZXzDovWj3VgD5Qp
Gf4TS899+FGvTs6Oa46YdiFU2wWMJ4PdzphHlmJspiZFHo10ridkA7CaXjDM
hY3jxEjoPfYSkbpke2tzxUKCiGCYn2mm5bzIqtlcjBElTHZNhkiyNDTfErlh
LZKhnhnmgMTRtoVFXVER/0fvcDrt43MKzGzFPjswUIsQYmFmEDvoSbtlhRgg
CqKVkDVgGq0VxRK9Swh+ShXrwmsBXklzvVchPkK5SE/eCuIiy3P83gFA8kmS
nxgNLNjnqACU+AjrgC68dIqKvD3SqZoYSpa5Bm+ULjMSEUeJ3JBPO7uoEpi6
ySoHXsjMs4pKWJivC14NAdOm4GhqZ5XP5BGhVigc0jo0Lqd8CrXZQkFjsIXl
msTAQmIB0s0mJ2YJ3QgbVKbCxgujqeYCdQgH3rt5AYM1mdnSZK/90IhU53ni
DQ0ucWUSYHeIAs5hUJAnic6dLtTeePwgLO2o/fGfyU6zuBmCrBHyjGZwFrOR
RJ8SJvgXxIOEskdgteeR/Wr8iCGo1FB/4dPiR0mgpo7Cxt0aQzqKGC/0jCT2
uTGjzdpKuCCbMumcVbsSFhaGTMS6hQSF3V11YQqE9CzJZkuJZpcGJpcVMICd
l2/OL3Y68qlevebvZ0f/8ub47OiQvp+/2D85qb+EGecvXr85OWy+NSvHr1++
PHp1KIsxqtaGXu7/vCMM7rw+vTh+/Wr/ZEfCYVsXwGjEH5zIkqkhK5EXwZxC
rOIQejA+VYPH6rffPDz8+FG+EzzE9+u5SeWoLCUf40fIcUlGaTRnP/JKxFFo
MIGV4QA3z65ThjcsvW/+hJi6C0AfNzXUW9XtfisR9tAA8PloQwftR0WWLheO
fn3IakHdEwIqiD40qUW5hLB6boorS1j+IWtzpF6ZEiq5RCm9hIWdGQ0tcnRf
Io57JEph/CH792gT2vjRA/FBh4zBpiIlEQlQNURCNIbnJx8/+t2Gd+429JvR
Xr98Atx+K6IhO7u98UY8rDugd7XP8j+sX8upjMTOxUWI3WsKWpSexIUoNsa1
1pQItsfUbvRfOiEIUzu/lRv5AEJ0XBwcqv/+9//wzHY9szLhiGiD24++EZr3
BioD4CkfdMT1vw2ByMhzQBgNVxXFYJX7qNEOHjfDRqCc2F5od9lbI0J9Ixup
vcdqYkv3wO/Yfpa4tDcUOmlo9ZSahdZPau9HpGRCuhijg1sD3/oYdMoHMXvC
b94MeAEL/uBhX0qKRgLUpKBwfHr1mPIwPp/0UJabSAOhdpTLFqYBzFSbxLHk
XdhqfM3xhOxlfY/avkKsfM3nkwRfiygkUwrNWf1j1v4xOAiRDPxacPLOM2fL
Vlm8Zl2gWpBnAC6wQYCEq8xKcQ0QBdhBi6+8KEPq9nrIxNyDLcDMqbdCQ3OL
ZFNg0wihBgUaQMulCa77ifXv217D7+0eQCXcF135C5+b/76QyR/Uj2zmHxAJ
KZDnQUJe2OxQ1HL4HTv3lXwC5LwQSd38+xAmD5rJp8L6HZOHfvLF+PTRm8PN
Kz6X5u2t54TpjBr8z3/+zVud9w72WYT/tvhLbZOb8u/6Kf01HdWGGIzv+HR7
S8yn16wa3LcKla+GHRdtM24gJKyJQrGMZaxJ19p9uLb7ys6QJHkgCZMO6Yni
hwA7yMecrSdGXMROleUwT8umtnBl8CRspdUUsKquK2iKpM/HBPVSR7QTDC+z
KEtoEzp378mDcPbe4OsHPbrLAs1I+cRImA004IWU+XwzDLie6Oo1gduHglVu
tRp2OUyqKvVlJiGZGUtMt3MdEc2ImhiaLAlICvKZLHPtOEoU2UJ8nej4J7ch
xmCFVKgbCmU2J+mUjASXHCwVKC5rOAr74R5DGngBJX3pGMiu4C0UIRJURZmA
ZZF1XPKXPHtigHFT3nfNWnq3nDy4efKwfTIbhJwGeOTlA7nIeZzFEeTuNFQk
h0vL9ZzKrshu02XbYhWDkJUaqyNlrMisQ8CCjEXECruoIQnd20lbapPzGCpS
BLawHdoGxd0mjeFNaQz6t4nDpF4c3JIWM5Lc0jjZo4bwkODGa6Bh3AINLyl3
txPeWu63ZNjUkL/FtCWbs4HTSm1TEUxIWULXCtJJPZoAeeM1+BKy61xfIekq
R01Ov5MAguBvk2WbfU9sU+Q1gvHta+KCMDnkLq7GwoVTY8mBJpfzybWlsqb1
jdNQDNucw86VSePM9+iy3PAdGEzkqeeKJFa5ii3FVXVfhMtu2j/GU4NuV9tk
zscYVopt0exFS1/FcQeEkKghO0C1D6d02BU1MTfdyWAaDnl6vz2r7sE5rzeJ
cb7Pu0mItXoISwnP2Hj/1SFJBjCSZAqX8AE75duhFbv08YmPo+azW9NCuHa7
t4IYepP2owHnMsHAUrHOmRg60785QCRM/X1/Z73mTFzGl+6+D9YUCZsRXECb
0kMdSg1xcfIjK50SHtmrT6vciRlnixzOg6U06waAuhvdtFevVBI3oMc9+5ys
wvgHNyGM+qR9BMjtBXS6YZ9PRUBDQkDn1aRLYmnsjRVQO8bm4kzLVd06JlUe
DK7+DTaMDTeMfdlsMsCEL4EmvlJP1Nfw6mefMxa2ufvvi+49/3zaNh/W7OND
y2Cg8kYp/+A/Qf+n/hRBrh9WaPFgvk1d7cFifn80Nbf9hVPvkd3/ETWSX+/7
++OoqT3sy5F0qnQ7nIkLib9J+phSjeHzLeOZVsaFl1Hv5P9TS8GH/ddFLM3o
s4ouPsjstYepRHFHgq+OYxeiRhZWTKs0kquHepNWuxXhKAT3EQd3rin8a3Tc
w6smHO/9Gr2pY0U3Aoqbq8hwjvOMiwAaGPTRoZQ1ZSMuMyjjHouCWqPS0wg6
YUSYrmMpmRMF9qVx1DSD2y3BX3xH8C0nc//0RJ4CrcTQKqUBDOxzTiu4Mk0z
2ldXSdlIdbW9FvLkerptMm29kG9P6JSXGy5zfCPfLej2oFg3IWLdElynvalm
okqxp0SSyzWTvtk3Y5m1ej881Z8UivAN27Oq6iq9UU/YMDRnwlairYDJbm4o
8v2JlEvXQ5Yutm5BHYZuylhJfBoHemr7ltzrN41gV90dRhJFGPfYl37QE3qX
6aYSfvI2RikW/9YE1ccJ6qVGdTMGSd9yEeIasdwE6w2RVODLAmnd10Lyq8I5
bA5tNQVPaOS4q473X+1TDnAA2lLaOfXbLo1+pAnHqZcGX6LUOwLpRyZG3ARc
rMrEpnWnLpU7HJq0U3fM15CZ2+HXqoDVlx0hAKZBUoSfFygcUBb6C0FH1ZPv
dXM2ZUhVXwPL73K1DTRJl61l0wt4zpIaU9tTvtKFAjYu6HawI1clvmk0MSB1
M9y8C6Ot/1ant4ZWPLwih9qcx9SZmYJvku1KXvuHzz84bM5YKxB8hJffVgPO
H3C+AFPbulYPhruzkY6dtqxAS14VeeZE/eZdHiJNfZFPl9r+AuNqwIVmuKle
oBpTMyi3SrQEvyJLpJ+x8bWP+nqTrhI4I3ENimqttGkoQf2LGhJoyc/e3bhR
XXPluofevLrhSpxNletd11xqjwrb+opXymVuuTn/8jntKNfCLrxzQffnLK3N
Om6uXiUOrKRdHF3bf4T9Qaheue0ObfeOf52DhEAv+dG7LHzJz1pq8IhN6QDe
u2nfRU0vkgI9KD+WtCwFCe0phSe15znsQ+QbqkuuHyVkhZfx18LW9tarjANF
LS/AkMrjgvrNlzjEdH7RIPQ9uT1CIWT1PXV5X2Si6f8eQCfvR5dpdg2ByZsa
FCnXhxA1fxuptFpM4NfxP+9MUTObHYz+ROy5uRyv00tgF6dT9YLuCTvqB7rM
KJZ4dKL6E6t+1v5tEXl5gaI3X3LAEBd1bnHVbEZtNIrb2dodMcvrfwFwOT8i
FDEAAA==

-->

</rfc>
