From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C9797A0032 for ; Thu, 14 Jul 2022 15:52:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3E96842B93; Thu, 14 Jul 2022 15:52:18 +0200 (CEST) Received: from scc-mailout-kit-01.scc.kit.edu (scc-mailout-kit-01.scc.kit.edu [129.13.231.81]) by mails.dpdk.org (Postfix) with ESMTP id 924A142B7E for ; Thu, 14 Jul 2022 15:52:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kit.edu; s=20220408; h=MIME-Version:Content-Type:Message-ID:Date:Subject:To:From: Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=sZr5YNsnpnp6em5htq81nxEV1NerfDg2qPpHQ3A0imI=; b=Zbz37PsLi/KaEMiG9o2Ak/Scmr K2AvOtFQsDfZ32MreVUM7csy7TYK138ALlQy0dO5/2Alro/sE2Fv5xgDrrRikXs3Qn7VelwXv05Q2 Rf9IF5RmQ46iuqODWkFLaSwF1WOx+kXheZHkjW/I3zpZCT8zOrbzieiPGs1mbU0PjcxzUalXbRT8+ MYuzsHLmHmirAgnd/8MZw1kxkM50A7tEQwAGhRB6d8kfsbQRLZymr9+9mzyXkuiNsiiuN3KqU5Fx+ egW2MQ5t9M25LspeGyRuW3PYbRU+NTLyrCmNLJWLkzp6ewXKadneVZGfNDx3eAiVssdVfqhpPI9DH SJ4TCojg==; Received: from kit-msx-43.kit.edu ([2a00:1398:9:f612::143]) by scc-mailout-kit-01.scc.kit.edu with esmtps (TLS1.2:ECDHE_SECP384R1__RSA_SHA256__AES_256_GCM:256) (envelope-from ) id 1oBzGJ-00CnID-Ly for users@dpdk.org; Thu, 14 Jul 2022 15:52:16 +0200 Received: from kit-msx-42.kit.edu (2a00:1398:9:f612::142) by kit-msx-43.kit.edu (2a00:1398:9:f612::143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.9; Thu, 14 Jul 2022 15:52:15 +0200 Received: from kit-msx-42.kit.edu ([fe80::a570:1f70:1d9e:f345]) by kit-msx-42.kit.edu ([fe80::a570:1f70:1d9e:f345%7]) with mapi id 15.02.1118.009; Thu, 14 Jul 2022 15:52:15 +0200 From: "Pfau, Johannes (ITIV)" To: "users@dpdk.org" Subject: mlx5: Keeping packets with invalid CRC/FCS Thread-Topic: mlx5: Keeping packets with invalid CRC/FCS Thread-Index: AdiXiN5heyuO7tMATuqkA4GExguspQ== Date: Thu, 14 Jul 2022 13:52:14 +0000 Message-ID: Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [2a00:1398:4:3601:d158:7883:4356:d500] Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=SHA1; boundary="----=_NextPart_000_030C_01D89799.AF9EA5B0" MIME-Version: 1.0 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org ------=_NextPart_000_030C_01D89799.AF9EA5B0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi all, We're currently developing a low-cost DAQ system to record = high-bandwidth data from FPGA systems. We're using DPDK with Mellanox Connect-X5 cards, = the drivers and DPDK installed from the standard RHEL 8 repositories. We = capture raw ethernet (no L3) on 1:1 links to the FPGA devices to avoid all = possible overhead. So far this setup works great, we can handle 100 Gbit/s of = traffic even on a single core, but we can also distribute packets to multiple = cores depending on the ether type if required. To save a few more bits in the transmission, we'd like to avoid encoding packet counters into the data stream. In that case we have to make sure = we never miss any packets in recording though, even if the FCS is invalid. There are two aspects involved, leading to two questions: First, we need to store the CRC as well so that we can detect the = invalid packets later on in offline processing. Using = RTE_ETH_RX_OFFLOAD_KEEP_CRC is working fine, but it first confused me a lot: Both rte_pktmbuf_pkt_len = and rte_pktmbuf_data_len still report the length without CRC. If I just read = 4 bytes more than announced in these functions, I can read the correct = CRC. Is it intentional that the 4 CRC bytes are not included in these counts? Second, and this is a larger issue: We also need to receive packets with invalid FCS. We don't really have a an idea how to actually inject = packets with invalid FCS for testing, but from the documentation I assume the = mlx5 driver in default setup would drop invalid packets? There was an mailing list discussing this for intel NICS (https://mails.dpdk.org/archives/users/2021-June/005651.html), but I couldn't find anything for mlx5. Does anybody know if the mlx5 driver = also offers an option to keep invalid packets? Best regards, Johannes --=20 Karlsruhe Institute of Technology (KIT) Institut f=FCr Technik der Informationsverarbeitung (ITIV) M.Sc. Johannes Pfau Research Associate Engesserstr. 5 Building 30.10, Room 218.1 76131 Karlsruhe, Germany Phone: +49 721 608-41939 E-mail: johannes.pfau@kit.edu=20 Registered office: Kaiserstra=DFe 12, 76131 Karlsruhe, Germany KIT =96 The Research University in the Helmholtz Association ------=_NextPart_000_030C_01D89799.AF9EA5B0 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIUdTCCA8Mw ggKroAMCAQICAQEwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAkRFMSswKQYDVQQKDCJULVN5 c3RlbXMgRW50ZXJwcmlzZSBTZXJ2aWNlcyBHbWJIMR8wHQYDVQQLDBZULVN5c3RlbXMgVHJ1c3Qg Q2VudGVyMSUwIwYDVQQDDBxULVRlbGVTZWMgR2xvYmFsUm9vdCBDbGFzcyAyMB4XDTA4MTAwMTEw NDAxNFoXDTMzMTAwMTIzNTk1OVowgYIxCzAJBgNVBAYTAkRFMSswKQYDVQQKDCJULVN5c3RlbXMg RW50ZXJwcmlzZSBTZXJ2aWNlcyBHbWJIMR8wHQYDVQQLDBZULVN5c3RlbXMgVHJ1c3QgQ2VudGVy MSUwIwYDVQQDDBxULVRlbGVTZWMgR2xvYmFsUm9vdCBDbGFzcyAyMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAql/aG1/oc5Hl2lz0ouZH5fNoVWAFHQKks5tZ8x6KrzSt/A3C2UgZ7mmP ySD8IaoHGe2wXKxlx1/tAnx7fC0b1rq5gMIYghaE+mawCMZUI4HkzblJP/ZPbjdIKDgPxb7naHD9 OZdN0seYkVCqxESzI305R+lSYtYSk163MZZCBft2px6j9cL86XrFbKlxT+rLeLxgr8fe9NnLvn4z pW6Ug/A0+iGr6o5yoD+k3jBb74ZNapVbQ0SoEBUc5QFXxZjx5gYokaogxbdTJlFDsgsRlVjhwA92 2cCNfIHzcnCeb/4ajtlfNcaybzR8vkhP4lo519ideJ6fhj4DXhmLRKLVxwIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUv1kgNgB5oKAia4zV8mHSuCzL gkowDQYJKoZIhvcNAQELBQADggEBADEDomELH3TocjbGbflNnvoiqOGBVs/Nu5/qq5EZOK+qfBVN 87ajjaX0jvZEqafoIZWtPgBiFojwArr8YSPmM5swems2YnutBCOEWGXi2yuK5yVTN2JTX7zaAWIp oqYnceY6In7Bbx2VcCBKBzTf6v8VgOW613rYW3V8BXopR35AqDETd81AO7RRR3ouEeNHEd6dZtCL 1VRm+oNV6nzCKYkb6W+zzuIFhMkvPniFYm7JX8F4Y3RYwEgYDJk566TMGrV5Wo0VnNgUDfZ6B1fH IoMFLTybJSY9GLOpQ3zIyKtkjw6jv5wbnTDb2tAZLqo88fszgHbkza0ZTwUnjhOhbsIwggUSMIID +qADAgECAgkA4wvV+K8l2YEwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAkRFMSswKQYDVQQK DCJULVN5c3RlbXMgRW50ZXJwcmlzZSBTZXJ2aWNlcyBHbWJIMR8wHQYDVQQLDBZULVN5c3RlbXMg VHJ1c3QgQ2VudGVyMSUwIwYDVQQDDBxULVRlbGVTZWMgR2xvYmFsUm9vdCBDbGFzcyAyMB4XDTE2 MDIyMjEzMzgyMloXDTMxMDIyMjIzNTk1OVowgZUxCzAJBgNVBAYTAkRFMUUwQwYDVQQKEzxWZXJl aW4genVyIEZvZXJkZXJ1bmcgZWluZXMgRGV1dHNjaGVuIEZvcnNjaHVuZ3NuZXR6ZXMgZS4gVi4x EDAOBgNVBAsTB0RGTi1QS0kxLTArBgNVBAMTJERGTi1WZXJlaW4gQ2VydGlmaWNhdGlvbiBBdXRo b3JpdHkgMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMtg1/9moUHN0vqHl4pzq5lN 6mc5WqFggEcVToyVsuXPztNXS43O+FZsFVV2B+pG/cgDRWM+cNSrVICxI5y+NyipCf8FXRgPxJiZ N7Mg9mZ4F4fCnQ7MSjLnFp2uDo0peQcAIFTcFV9Kltd4tjTTwXS1nem/wHdN6r1ZB+BaL2w8pQDc Nb1lDY9/Mm3yWmpLYgHurDg0WUU2SQXaeMpqbVvAgWsRzNI8qIv4cRrKO+KA3Ra0Z3qLNupOkSk9 s1FcragMvp0049ENF4N1xDkesJQLEvHVaY4l9Lg9K7/AjsMeO6W/VRCrKq4Xl14zzsjz9AkH4wKG MUZrAcUQDBHHWekCAwEAAaOCAXQwggFwMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUk+PYMiba 1fFKpZFK4OpL4qIMz+EwHwYDVR0jBBgwFoAUv1kgNgB5oKAia4zV8mHSuCzLgkowEgYDVR0TAQH/ BAgwBgEB/wIBAjAzBgNVHSAELDAqMA8GDSsGAQQBga0hgiwBAQQwDQYLKwYBBAGBrSGCLB4wCAYG Z4EMAQICMEwGA1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9wa2kwMzM2LnRlbGVzZWMuZGUvcmwvVGVs ZVNlY19HbG9iYWxSb290X0NsYXNzXzIuY3JsMIGGBggrBgEFBQcBAQR6MHgwLAYIKwYBBQUHMAGG IGh0dHA6Ly9vY3NwMDMzNi50ZWxlc2VjLmRlL29jc3ByMEgGCCsGAQUFBzAChjxodHRwOi8vcGtp MDMzNi50ZWxlc2VjLmRlL2NydC9UZWxlU2VjX0dsb2JhbFJvb3RfQ2xhc3NfMi5jZXIwDQYJKoZI hvcNAQELBQADggEBAIcL/z4Cm2XIVi3WO5qYi3FP2ropqiH5Ri71sqQPrhE4eTizDnS6dl2e6BiC lmLbTDPo3flq3zK9LExHYFV/53RrtCyD2HlrtrdNUAtmB7Xts5et6u5/MOaZ/SLick0+hFvu+c+Z 6n/XUjkurJgARH5pO7917tALOxrN5fcPImxHhPalR6D90Bo0fa3SPXez7vTXTf/D6OWST1k+kEcQ SrCFWMBvf/iu7QhCnh7U3xQuTY+8npTD5+32GPg8SecmqKc22CzeIs2LgtjZeOJVEqM7h0S2EQvV DFKvaYwPBt/QolOLV5h7z/0HJPT8vcP9SpIClxvyt7bPZYoaorVyGTkwggWeMIIEhqADAgECAgwc OtSMJO2SLrD0kK4wDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNVBAYTAkRFMUUwQwYDVQQKEzxWZXJl aW4genVyIEZvZXJkZXJ1bmcgZWluZXMgRGV1dHNjaGVuIEZvcnNjaHVuZ3NuZXR6ZXMgZS4gVi4x EDAOBgNVBAsTB0RGTi1QS0kxLTArBgNVBAMTJERGTi1WZXJlaW4gQ2VydGlmaWNhdGlvbiBBdXRo b3JpdHkgMjAeFw0xNjExMDMxNTI1NDhaFw0zMTAyMjIyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRsw GQYDVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxEjAQBgNVBAcMCUthcmxzcnVoZTEqMCgGA1UECgwh S2FybHNydWhlIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5MQ8wDQYDVQQDDAZLSVQtQ0EwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVzAD3QYIZZdcJD5XgyQJz0Jo9xhTSGtRzSZPK9tDc O44x7L7DloUjwmSYAPkIeyOMNZ7+64A1zo5HzbzEug3oRXgCw0yEP0cx6Vhmsa4FLaew5WUbMgh/ y35FfukNVCANz9S9zPOI7jkeYsKhh5QNyqf1CGjwme6Hidcl08JEHhS9zC1EKliSAJ4L4uXF97gi l2e8AFNfWTBhHhNWacCDcx6Xm0uhX5ZzFN3AkymxuMXPw/XWoy1rnc1py15/iDEFYxISkOWcYv6z DORR93Wz7c1CQUoFsBnp6FmK85lzhqHiJHEHVP/m/ZPNr4fJqjTh/lJuSQPZjWnRnm90xUQ/AgMB AAGjggIFMIICATASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQEAwIBBjApBgNVHSAEIjAg MA0GCysGAQQBga0hgiweMA8GDSsGAQQBga0hgiwBAQQwHQYDVR0OBBYEFAQavxyTkT3T2T2w3hMj 5Zpw9C4IMB8GA1UdIwQYMBaAFJPj2DIm2tXxSqWRSuDqS+KiDM/hMIGPBgNVHR8EgYcwgYQwQKA+ oDyGOmh0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHViL2NybC9jYWNy bC5jcmwwQKA+oDyGOmh0dHA6Ly9jZHAyLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHVi L2NybC9jYWNybC5jcmwwgd0GCCsGAQUFBwEBBIHQMIHNMDMGCCsGAQUFBzABhidodHRwOi8vb2Nz cC5wY2EuZGZuLmRlL09DU1AtU2VydmVyL09DU1AwSgYIKwYBBQUHMAKGPmh0dHA6Ly9jZHAxLnBj YS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0MEoGCCsGAQUF BzAChj5odHRwOi8vY2RwMi5wY2EuZGZuLmRlL2dsb2JhbC1yb290LWcyLWNhL3B1Yi9jYWNlcnQv Y2FjZXJ0LmNydDANBgkqhkiG9w0BAQsFAAOCAQEAf79AqW5RgZOEcBl6Hkh6uFl0g30HjzyOON7G x+zWnQgeMoASVRrEd2NN8dzbMQ2p8+1z4QpEkvTgw5RYmPvwFJHYw5a7xas5VdiYhkAkDMfUvV4U 1Hpx6bd3WeyeOq2rDbURD787+Rdv2Ugr+y9gPC50g0Vx1YTlSY6Jz1kdLAU9vigR4z3u0bXxZCSJ XMoXVwzqfMsdanvy5EvAPVB6TXLt5fmBzyJBK+/ffBOWHSmmZsOp9oxNH9f8QPtIV93lL0IXTsRe P9daW/umzaBp9Hv3cVo+s+Wga+CG0LukpPy44w0FcLTZerp2s3omVT7mT5ttJFwB3jQGqfq/JgBE pDCCBfIwggTaoAMCAQICDCNxsZI2/e5gUVgM2jANBgkqhkiG9w0BAQsFADB7MQswCQYDVQQGEwJE RTEbMBkGA1UECAwSQmFkZW4tV3VlcnR0ZW1iZXJnMRIwEAYDVQQHDAlLYXJsc3J1aGUxKjAoBgNV BAoMIUthcmxzcnVoZSBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neTEPMA0GA1UEAwwGS0lULUNBMB4X DTIwMDkwNDEyMzMwNloXDTIzMDgyOTEwMDAwMFowgb8xCzAJBgNVBAYTAkRFMRswGQYDVQQIDBJC YWRlbi1XdWVydHRlbWJlcmcxEjAQBgNVBAcMCUthcmxzcnVoZTEqMCgGA1UECgwhS2FybHNydWhl IEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5MTswOQYDVQQLDDJJbnN0aXR1dCBmdWVyIFRlY2huaWsg ZGVyIEluZm9ybWF0aW9uc3ZlcmFyYmVpdHVuZzEWMBQGA1UEAwwNSm9oYW5uZXMgUGZhdTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMYhskqltYszNkHxV/n2y/mFIZO09a0X4sh03H4u 1sx5qyeiJs5FWRUxPFHLv+xICqagPy64LOHB9FaelRIp0NyPv4Z/BOJ8h7yCvoF1O+f1WdNhMKM3 DMMlAoBSVBZizd7e6FV8ESWo40Q/5WHl3/rQpdGoZfFuIz3dRzNrg3I/Sbo7cInteHNXl5hWD/cv TEKAGNXil6aA/deWk9Lc5JyGnwLwh+nQTej15V8ZMSfwjlNhDTAbzvryymrVUkhI7GhdXwr1NUDc cm5ZRwWw36Ljnpis7WOfciHzX1MYr8J9/Pcf2y2VNyqGbfd33TM40Nf2/VM1sV1xL8A3tHeLe+8C AwEAAaOCAi8wggIrMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUF BwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQUTi/9jrzO7S4ik0DFBU73l/FJME4wHwYDVR0jBBgwFoAU BBq/HJORPdPZPbDeEyPlmnD0LggwIAYDVR0RBBkwF4EVam9oYW5uZXMucGZhdUBraXQuZWR1MH0G A1UdHwR2MHQwOKA2oDSGMmh0dHA6Ly9jZHAxLnBjYS5kZm4uZGUva2l0LWNhLWcyL3B1Yi9jcmwv Y2FjcmwuY3JsMDigNqA0hjJodHRwOi8vY2RwMi5wY2EuZGZuLmRlL2tpdC1jYS1nMi9wdWIvY3Js L2NhY3JsLmNybDCBzQYIKwYBBQUHAQEEgcAwgb0wMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnBj YS5kZm4uZGUvT0NTUC1TZXJ2ZXIvT0NTUDBCBggrBgEFBQcwAoY2aHR0cDovL2NkcDEucGNhLmRm bi5kZS9raXQtY2EtZzIvcHViL2NhY2VydC9jYWNlcnQuY3J0MEIGCCsGAQUFBzAChjZodHRwOi8v Y2RwMi5wY2EuZGZuLmRlL2tpdC1jYS1nMi9wdWIvY2FjZXJ0L2NhY2VydC5jcnQwPgYDVR0gBDcw NTAPBg0rBgEEAYGtIYIsAQEEMBAGDisGAQQBga0hgiwBAQQHMBAGDisGAQQBga0hgiwCAQQHMA0G CSqGSIb3DQEBCwUAA4IBAQCKKAxY/QiM3k5fSWtWvAeOVCE6jDjGfl2TEKB4Eht65lsqxmaZ9KZz maMm+6iWnid53BfOR+o8dLnvtBxp0edF5mUW5SEpwVWKUjFZzAMmUIllElpS6h//oKDmOsAPMh2J PmrJQzh2gi414Nzloozeq/pvaGzV6+vbZ0sxlbB9O5nNfl7lu1XS/P4Y0N9KqBkUT78g5JZdpGBp CerPlTC1g/GkEQry+ZeN5kVrhouXmurHIzk0VbD3tgSDxvgFojvsNpfXOV9TJiUslBsIslR0VMCI y/1CI3ksbyC3bMbnCpkg8t+XnqUObnzEdPA3LsyPBpw2vJ6p4H/37f+KXE+XMYID6jCCA+YCAQEw gYswezELMAkGA1UEBhMCREUxGzAZBgNVBAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzESMBAGA1UEBwwJ S2FybHNydWhlMSowKAYDVQQKDCFLYXJsc3J1aGUgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kxDzAN BgNVBAMMBktJVC1DQQIMI3Gxkjb97mBRWAzaMAkGBSsOAwIaBQCgggIzMBgGCSqGSIb3DQEJAzEL BgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIyMDcxNDEzNTIxM1owIwYJKoZIhvcNAQkEMRYE FLtvaK64/lnH2ZpybwaMtz58LHPKMIGTBgkqhkiG9w0BCQ8xgYUwgYIwCwYJYIZIAWUDBAEqMAsG CWCGSAFlAwQBFjAKBggqhkiG9w0DBzALBglghkgBZQMEAQIwDgYIKoZIhvcNAwICAgCAMA0GCCqG SIb3DQMCAgFAMAcGBSsOAwIaMAsGCWCGSAFlAwQCAzALBglghkgBZQMEAgIwCwYJYIZIAWUDBAIB MIGcBgkrBgEEAYI3EAQxgY4wgYswezELMAkGA1UEBhMCREUxGzAZBgNVBAgMEkJhZGVuLVd1ZXJ0 dGVtYmVyZzESMBAGA1UEBwwJS2FybHNydWhlMSowKAYDVQQKDCFLYXJsc3J1aGUgSW5zdGl0dXRl IG9mIFRlY2hub2xvZ3kxDzANBgNVBAMMBktJVC1DQQIMI3Gxkjb97mBRWAzaMIGeBgsqhkiG9w0B CRACCzGBjqCBizB7MQswCQYDVQQGEwJERTEbMBkGA1UECAwSQmFkZW4tV3VlcnR0ZW1iZXJnMRIw EAYDVQQHDAlLYXJsc3J1aGUxKjAoBgNVBAoMIUthcmxzcnVoZSBJbnN0aXR1dGUgb2YgVGVjaG5v bG9neTEPMA0GA1UEAwwGS0lULUNBAgwjcbGSNv3uYFFYDNowDQYJKoZIhvcNAQEBBQAEggEAA7CU qlLUMeMk2gZJQ6Xyl6v1hhqL3ooFNEdf72XP8xD3UiLwpz052HdgOI73Rl6Opj0NFPmyTgoF8OFi ajirYwiqxSZUed4b8PN+5bie2+Nv49MwrKNw8LbS7ABf/mPPf60n5cwFPgVzyYuDz3h8X/xDeQgG 2nh00uxkID/zNVe8W+IiwCWkBQXgOzXSTc896wtZoZ/nw5qSYRkIzWheUQSuSH4Jl42C+E3e0FVr TSU2eqoCV3c5d3wHF84BsDV/OvLxiKk73VTTqQRX2iKbCq1KH9Aj6hDSOEkocg9ibx3Pu5gShWuz Kzrkb3ZnmPnOButqZyAz59a9wwcvr3YnJQAAAAAAAA== ------=_NextPart_000_030C_01D89799.AF9EA5B0--