From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from emea01-db3-obe.outbound.protection.outlook.com (mail-db3on0064.outbound.protection.outlook.com [157.55.234.64]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 1F37321F74D for ; Tue, 20 Oct 2015 02:13:35 -0700 (PDT) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kevin@darbyshire-bryant.me.uk; Received: from [IPv6:2001:470:183f:da2b::632f:a7da] (2001:470:183f:da2b::632f:a7da) by HE1PR07MB0940.eurprd07.prod.outlook.com (10.162.27.146) with Microsoft SMTP Server (TLS) id 15.1.300.14; Tue, 20 Oct 2015 09:13:29 +0000 To: References: <87d1wavoe7.fsf@toke.dk> From: Kevin Darbyshire-Bryant X-Enigmail-Draft-Status: N1110 Message-ID: <562605B1.2020508@darbyshire-bryant.me.uk> Date: Tue, 20 Oct 2015 10:13:21 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-512; boundary="------------ms010307020803080004080800" X-Originating-IP: [2001:470:183f:da2b::632f:a7da] X-ClientProxiedBy: HE1PR06CA0029.eurprd06.prod.outlook.com (25.162.181.167) To HE1PR07MB0940.eurprd07.prod.outlook.com (25.162.27.146) X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0940; 2:dt1L+bNKBZKP6VVnbGb6JQtioMJHMsS0ERDau/s+IZ9nNtBGw57x8trPFwtQETo4Z7yT6RPasncXIZ/4YQh35WlUW/W4LoCM+azZMuYAO1s58j37Jn5XkvsD+J44uqRWaD1xqGCwVZHT9izYn2QWauAY8y3PylQTVfJRf2lohPs=; 3:XZlQQkVI0zRcAlEUD4Fu2usp50BJrh33uhdnHgrx5nTrqwH2lhpvwNvCISf9adSAA1lAcqQrAMsFmkDJsVlXLTyKDyjaYPjyMBocyh2DyNDjrgOdLYn42HLq6ElaFQDkZOJ/C4jcOzIAHA/DZWNBKA==; 25:gYCEq2Yb/drsYI2/W3EtZHvq9tZhaI4572uC9FeEgmaFlZS2y9gHqCQQXxvT4Pdd6ujwG1ZG105P6VoBRlkDlcDecAm8yGalMn1t9FnrjWu8GBDRXPZF6h/yBOGQQwuJcCdz34mTygtXLYSZLmyDhV921UKGKX3e64ZocnVBi+SRodo3p+oZdtHoFQ5/DuTXrbZ/hiz60m0R4R4KwtOb2EKqQ5J+Y5YceK4KN4cc/Q8fjEFYrb8Y6ZTzXxuB4xXSJaBw6+UHgkSBWB6NVvhDaQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR07MB0940; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(159216200783502); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001); SRVR:HE1PR07MB0940; BCL:0; PCL:0; RULEID:; SRVR:HE1PR07MB0940; X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0940; 4:j/cRWonLonCgZIYVaaEydgVzw0k8xqfLDjZVrBtXxZNpVr1bAo6wG6nyzyPG9uG3YJeR2unq79PoEdLfWD0hn7D1mB8FAt1yHoyS/n3cmRsmUkceqonyvkS6C9LutYGdTraprekcuPMkffWUp+YKfWgBNi6LDUAVkZIamYidKODSpk4Q3R05OROGpQ+qjK+1V4WQAFyECj1X+iQ+5s+sl07BnYhtteNxNhD5w65xRGnpB0QL/9uBcWY/pCEhxw9NCSK+v0lULpYE6jib8FU1pcYH0fskXiAer1Z0l5ulPBrWXpKYfsgIefS2oY1PdCKidPiwLOixfs6feJTjbr2F/QDUs9Y5tDIsCnlqa4toYfQ= X-Forefront-PRVS: 073515755F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(199003)(51444003)(479174004)(24454002)(189002)(5007970100001)(86362001)(65806001)(15975445007)(189998001)(110136002)(4001350100001)(512944002)(46102003)(450100001)(97736004)(122386002)(65956001)(5008740100001)(40100003)(74482002)(77096005)(5004730100002)(2950100001)(107886002)(5001960100002)(81156007)(36756003)(5890100001)(64126003)(80316001)(87266999)(83506001)(568964001)(50986999)(87976001)(106356001)(105586002)(65816999)(84326002)(76176999)(101416001)(42186005)(54356999)(59896002)(33656002)(99136001)(19580395003)(2351001)(19580405001)(92566002)(64706001)(3826002)(5001840100002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR07MB0940; H:[IPv6:2001:470:183f:da2b::632f:a7da]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB0940; 23:SbC850uxIDEoQmc6K1/ApoK11hTnMsQslqBQpA3qe?= =?us-ascii?Q?maKcn1GmQMbdwYduXclbwkHYn1gFoBFcpYg8kpli8X1MEJQGNmkaQmyZ4MYQ?= =?us-ascii?Q?zc7FXIp0OlhEuI8fefoSSW5t772CidOkho7Ewynhix0pVdnXT/7jhl4bypU9?= =?us-ascii?Q?XasrTf9Gevc58/5EIZ7yau8lwj4x7oPGOr9Tdqz6LtG9qmAdVfDjObfAwLbg?= =?us-ascii?Q?ujU2Tp4b3VwGDI1ggVKNuQxnwXhOXXSkOZWhT6/Tt9Ik5HTgB/YOUTMBdWhA?= =?us-ascii?Q?+7a4tAEJnXwuFTHXjNELqHSxW0WwJVRxZsErdrmbsIOQoatOiTXCXu0ab7Rp?= =?us-ascii?Q?AuCKNbb/rjvyfIKoMniyw+b0IHcG4YSpTEsqyMDN7sn9G3g0UixrCJmsgClW?= =?us-ascii?Q?BfaYa/kPczE1Q0tV0C4N8yQFaud1tBDfSo1TEb2Cas70vXUI+51ixkwDbZGA?= =?us-ascii?Q?q/5GDP+IrcTFUPXIRUHB9xUBnw1sb1+h5hdUY15iq7B9knYJg/uvf1UmqY8U?= =?us-ascii?Q?orEkuXAxMr2ysw96z5BLCIw3t0ZDQmpgyrs/zufiyZx3QhRKYpt0HEtk0GuY?= =?us-ascii?Q?Uqu/QbhoUQD3X37VCQvqIHRkITSBAWflG3zxaK/n8+9Zk0V3ZPiKy05e9VmU?= =?us-ascii?Q?1v5OI7z3QvMC5lYHP8sC8o0LDuTixDExBwoKYDRQPsJQg5gguS04nPbaq4oV?= =?us-ascii?Q?xChHFvkCnkmvZDquVUHxbFS9brTrSf84sFJpOmoSYNllWfia00gsrDDGjmwu?= =?us-ascii?Q?h70CzyEE9BHPSKLuUnluhwSChdCheaQmKW7FfsLgqucRaHKa0omvoew1CXU4?= =?us-ascii?Q?GSVTLwAdmKwnSBzDdqCft5qeBIYtlAMUXjzYTj4aMy9GwRIuX05BKV5XVTQg?= =?us-ascii?Q?lYp5lVhM3SCjYX6byZZI0pvtWn69mcaYTLqljD16gFN+GbYeR5EuszPHscAf?= =?us-ascii?Q?NK5McxXF1rdD4N9ACJTqDhhmKTqnrU16eP7jai1HSKJjDducIyAbdA77l1sX?= =?us-ascii?Q?R1nnamuB8ip8Nhccl8Rkk/CWjVx0pIcuSYi1OoVKA3qj4qziq4GC7fhrs9IG?= =?us-ascii?Q?mtheHm1308dkPOFc1PvEGJ010G0vOxHQx22MLdct2q1PXLqjvP6vB/9J2QqV?= =?us-ascii?Q?IaA+uMmRHRe47fndgIKHa/0AoadxMAIEs6cyZX8H9LoLjTXNC4o0wR/l68ce?= =?us-ascii?Q?ZOCnBF36d3JYgKVJ/ptKlqCf6Tr29OuuCG83XbfPMdeFLb0fuqE5VSxqVOml?= =?us-ascii?Q?7GdlurGGRDAd+x4zYebffYdKHnF86Z3n5gtdQ8xIYkR6ojGfaLHEqcmWhkBJ?= =?us-ascii?Q?TCcrPe27tA0RXikLdEAyjC1MslfyQy9H2hyktMGblzSHndPIe9RXzW++9ABL?= =?us-ascii?Q?SVYPKHEKGIicj9rt9Tb3AjvdNn/c3mF3/SdOd9VkjT1m2oa1TjY5sbd3q7t+?= =?us-ascii?Q?plq4GR9fXJZzkO/45bLK9NxKQW+7G0=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB0940; 5:84m34GPjnXJA3hzStFRrhrAJ8RsEdhYmht9Cdtpq4Qv4I8VVkBHao90jxR5I8+9o9tUfasbxhPghpAGfPv2gSOuFj+CjrG9yd2M6+ABehUKs8jyKsKx343UGCiIrildw/Sx7LIgVTsBMo60YxcsLyg==; 24:64F+/x8NBdG3gAJrvZCtuUXJ9LQPJwY4Q1En3KfkRXtTLj44kwXp33u/G8DesSjiIhJBe4uIiPRgXZfd/+hDwF83azOzT9I0nZLoNBRaH9w=; 20:4MdwNzaLR64PnLX208fbNWBIgOCH8z03g8YE5N1YCXKTDlS4qNkse6JnKgVsjLuHWg/WnOL0OGqv11ZDZTkFOg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2015 09:13:29.2902 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB0940 Subject: Re: [Cake] Fixing iproute2 compile X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Oct 2015 09:13:58 -0000 --------------ms010307020803080004080800 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Hi list, Now that I've had a little more time to look at this and I'm not on a train with exceptionally awful connectivity........ iproute2 commit 6256f8c9e45f01187b297a576e148534a393c990 introduced a backup definition of 'offsetof' macro in utils.h presumably to cover the case where it wasn't defined elsewhere. Anything post that iproute2 commit (Dave's tc-adv repo as example) will have this macro defined courtesy 'utils.h'. According to various man pages, 'offsetof' should be defined as part of 'stddef.h' which q_cake.c does not include. By including 'stddef.h' in q_cake.c I can get q_cake.c to compile and I think that this is a more correct solution than that proposed previously. I'm sure someone will come up with an even more correct solution :-) For full disclosure I should point out that toke's iproute2 4.0.0 + cake repo still fails to build completely on my Linux mint 17.2 box *BUT* with the following diff it at least finishes 'cake' whereas it used to blow up over 'offsetof' :-) Kevin diff --git a/tc/q_cake.c b/tc/q_cake.c index 3ab93c2..8c3e9c8 100644 --- a/tc/q_cake.c +++ b/tc/q_cake.c @@ -37,6 +37,7 @@ =20 #include #include +#include #include #include #include On 19/10/15 22:17, Kevin Darbyshire-Bryant wrote: > I think the problem is we're not including stddef.h which defines offse= tof. Later versions of iproute include a def in Utils.h but that wasn't = in v4.0.0 which is what tokes repo is based on. Tc-adv is a bit more rece= nt.=20 > > -- > Cheers, > > Kevin@Darbyshire-Bryant.me.uk > Sent from my phone, apologies for brevity, spelling & top posting > >> On 19 Oct 2015, at 17:41, Kevin Darbyshire-Bryant wrote: >> >> Hold the phone... >> >> My guess is a difference in definition of offsetof as potentially defi= ned in tc/include/Utils.h >> >> But very hard to tell on my phone! >> >> -- >> Cheers, >> >> Kevin@Darbyshire-Bryant.me.uk >> Sent from my phone, apologies for brevity, spelling & top posting >> >>> On 19 Oct 2015, at 17:01, Toke H=F8iland-J=F8rgensen w= rote: >>> >>> So finally got iproute2 to compile out of the kau.toke.dk repo. The >>> patch below was needed to cake. Posting it here rather than just >>> committing in the hope of getting someone (Jonathan?) to take a look = at >>> it and fix it everywhere it's needed :) >>> >>> -Toke >>> >>> diff --git a/tc/q_cake.c b/tc/q_cake.c >>> index 4d64405..1384a46 100644 >>> --- a/tc/q_cake.c >>> +++ b/tc/q_cake.c >>> @@ -495,7 +496,7 @@ static int cake_print_xstats(struct qdisc_util *q= u, FILE *f, >>> >>> } else if (stnc->version >=3D 1 && stnc->version < 0xFF >>> && stnc->max_tins =3D=3D TC_CAKE_MAX_TINS >>> - && RTA_PAYLOAD(xstats) >=3D offsetof(*stnc, capacity= _estimate)) >>> + && RTA_PAYLOAD(xstats) >=3D offsetof(typeof(*stnc), = capacity_estimate)) >>> { >>> int i; >>> >>> _______________________________________________ >>> Cake mailing list >>> Cake@lists.bufferbloat.net >>> https://lists.bufferbloat.net/listinfo/cake >> _______________________________________________ >> Cake mailing list >> Cake@lists.bufferbloat.net >> https://lists.bufferbloat.net/listinfo/cake >> >> >> _______________________________________________ >> Cake mailing list >> Cake@lists.bufferbloat.net >> https://lists.bufferbloat.net/listinfo/cake --------------ms010307020803080004080800 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgMFADCABgkqhkiG9w0BBwEAAKCC DYEwggY0MIIEHKADAgECAgEeMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYD VQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0 ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wNzEwMjQyMTAxNTVaFw0xNzEwMjQyMTAxNTVaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UE ChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUg U2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0 ZSBDbGllbnQgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHCYPMzi3YGrEp pC4Tq5a+ijKDjKaIQZZVR63UbxIP6uq/I0fhCu+cQhoUfE6ERKKnu8zPf1Jwuk0tsvVCk6U9 b+0UjM0dLep3ZdE1gblK/1FwYT5Pipsu2yOMluLqwvsuz9/9f1+1PKHG/FaR/wpbfuIqu54q zHDYeqiUfsYzoVflR80DAC7hmJ+SmZnNTWyUGHJbBpA8Q89lGxahNvuryGaC/o2/ceD2uYDX 9U8Eg5DpIpGQdcbQeGarV04WgAUjjXX5r/2dabmtxWMZwhZna//jdiSyrrSMTGKkDiXm6/3/ 4ebfeZuCYKzN2P8O2F/Xe2AC/Y7zeEsnR7FOp+uXAgMBAAGjggGtMIIBqTAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUU3Ltkpzg2ssBXHx+ljVO8tS4UYIw HwYDVR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwZgYIKwYBBQUHAQEEWjBYMCcGCCsG AQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwLQYIKwYBBQUHMAKGIWh0dHA6 Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNydDBbBgNVHR8EVDBSMCegJaAjhiFodHRwOi8v d3d3LnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwJ6AloCOGIWh0dHA6Ly9jcmwuc3RhcnRzc2wu Y29tL3Nmc2NhLmNybDCBgAYDVR0gBHkwdzB1BgsrBgEEAYG1NwECATBmMC4GCCsGAQUFBwIB FiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQGCCsGAQUFBwIBFihodHRw Oi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMA0GCSqGSIb3DQEBBQUAA4IC AQAKgwh9eKssBly4Y4xerhy5I3dNoXHYfYa8PlVLL/qtXnkFgdtY1o95CfegFJTwqBBmf8py TUnFsukDFUI22zF5bVHzuJ+GxhnSqN2sD1qetbYwBYK2iyYA5Pg7Er1A+hKMIzEzcduRkIMm CeUTyMyikfbUFvIBivtvkR8ZFAk22BZy+pJfAoedO61HTz4qSfQoCRcLN5A0t4DkuVhTMXIz uQ8CnykhExD6x4e6ebIbrjZLb7L+ocR0y4YjCl/Pd4MXU91y0vTipgr/O75CDUHDRHCCKBVm z/Rzkc/b970MEeHt5LC3NiWTgBSvrLEuVzBKM586YoRD9Dy3OHQgWI270g+5MYA8GfgI/EPT 5G7xPbCDz+zjdH89PeR3U4So4lSXur6H6vp+m9TQXPF3a0LwZrp8MQ+Z77U1uL7TelWO5lAp sbAonrqASfTpaprFVkL4nyGH+NHST2ZJPWIBk81i6Vw0ny0qZW2Niy/QvVNKbb43A43ny076 khXO7cNbBIRdJ/6qQNq9Bqb5C0Q5nEsFcj75oxQRqlKf6TcvGbjxkJh8BYtv9ePsXklAxtm8 J7GCUBthHSQgepbkOexhJ0wP8imUkyiPHQ0GvEnd83129fZjoEhdGwXV27ioRKbj/cIq7JRX un0NbeY+UdMYu9jGfIpDLtUUGSgsg2zMGs5R4jCCB0UwggYtoAMCAQICAw5ySjANBgkqhkiG 9w0BAQsFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNV BAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0 Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBMB4XDTE1MDYyMDIw MzA1MloXDTE2MDYyMDE0MjY0N1owVjEmMCQGA1UEAwwda2V2aW5AZGFyYnlzaGlyZS1icnlh bnQubWUudWsxLDAqBgkqhkiG9w0BCQEWHWtldmluQGRhcmJ5c2hpcmUtYnJ5YW50Lm1lLnVr MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAugCNtDhytCJ9HOfenUHr/vUGUECv PL1IJXgHMl4cIJmwgLOkXhIcTMxHnX+kFweqvT+eDWv1hzA9yMWhvjLFC4eLoFaV0xiAat8O XQ7t3MwKY5DW0mB1dOnjiFIcc/XMwyYI4KfEGnFMJQkzon0rDVpkl/Q1f/hu1sELO7Zc6TFL wuuDuiP7S73zrz50TRoq0+Ob3x0uOMW2uVwVzf6NLwHgBE2LFleMXblyUMx0IlIcLan2nWiI Vsa3XYd+C6KAGGwlmO4VAZ25KuX7hkj8f82lSapvtKTtvrSoDghXlHH2JXiIQX+Sn0UgOmbX 1KyOe9vN7WzQ+tpPRzpFRffnnnp1VQye3wVRPBumjDxQSFTOhUtslnvbefUQSPw6p5w9ZiXI GJICLkX/MkYN/TwGCvuUG2PxBybSR1A2I5ap+VI/zGSG3XGVEA69SOZQyD+8YjJZfaY2nCu+ DuM64JrJUi2CvX6fwcdHNschJNrrfetpnrx3JrGnG9o+pWuUG1phBg+KKN2bhrdzY79qm7ha 86EMKSUOn5nBdGY3YxdXq/naoUQeOCUV2JMFGOulu7sKpiWcz7HVFacXjd9ebisVLv+jOwll z14BWRb87s1+LBEJn/Ybn3ekhtgyEAhB4kgj0scl4hI8xCU6zrZyDnbXmxSvDXbClZA0PACt f/jhGvUCAwEAAaOCAuMwggLfMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQG CCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQULkW2CpDiQpRNumQ7wdspjFfgX+AwHwYD VR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO8tS4UYIwKAYDVR0RBCEwH4Eda2V2aW5AZGFyYnlz aGlyZS1icnlhbnQubWUudWswggFMBgNVHSAEggFDMIIBPzCCATsGCysGAQQBgbU3AQIDMIIB KjAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjCB9wYI KwYBBQUHAgIwgeowJxYgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwAwIBARqB vlRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBhY2NvcmRpbmcgdG8gdGhlIENsYXNzIDEg VmFsaWRhdGlvbiByZXF1aXJlbWVudHMgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeSwgcmVs aWFuY2Ugb25seSBmb3IgdGhlIGludGVuZGVkIHB1cnBvc2UgaW4gY29tcGxpYW5jZSBvZiB0 aGUgcmVseWluZyBwYXJ0eSBvYmxpZ2F0aW9ucy4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov L2NybC5zdGFydHNzbC5jb20vY3J0dTEtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5Bggr BgEFBQcwAYYtaHR0cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczEvY2xpZW50L2Nh MEIGCCsGAQUFBzAChjZodHRwOi8vYWlhLnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3Mx LmNsaWVudC5jYS5jcnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0G CSqGSIb3DQEBCwUAA4IBAQBicQWe98eF/o09TXFsExc+WSyYjt3oSnXyocLzXQp82CQhIg21 5RqNZ1e+hsO7tq8S6hdItUDbKpecpIV59+57ke1zVl2slTRIT19fhYINHH78rVVRPzuHoiDt MXnGrp9hbq3Cz8P4mm8INKDiYK46kyplRAQ3ZMouPG1lsnDzgQAvbCj74H8yAp7fK8if6cxs 28BCUmdP8D3c6M1ffdNNaqNT+4Z3mtOujXXg7zOfmXN0Zg/mEtZ0NrWE2uICGdWjTv9KZiI7 fi4hk2CRpCL63qzmu6BwtcgtwhgYYtuAk2N43+SiyDkyLKGAcjEor3t5f9HivN29E0F0MXTH 1OdgMYIFDTCCBQkCAQEwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBM dGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYD VQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQID DnJKMA0GCWCGSAFlAwQCAwUAoIICSTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG SIb3DQEJBTEPFw0xNTEwMjAwOTEzMjFaME8GCSqGSIb3DQEJBDFCBECBSetRUT8egiBJl7Is VWdQXiA40naLCv3v+9t8DoqP40kMdMw3Dl5ZQ2ASdOtU8Pv6VR4OTXsoeNOX8XESIkf4MGwG CSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAO BggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgw gaUGCSsGAQQBgjcQBDGBlzCBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2 BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB AgMOckowgacGCyqGSIb3DQEJEAILMYGXoIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2ln bmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBD bGllbnQgQ0ECAw5ySjANBgkqhkiG9w0BAQEFAASCAgCOn6reKo/HK8//SOjSti93AMV7v68Y S378whT5J3wNqoM0bG3+ZjOs/REd+LFf2S6dWTN+6uQzD7norEvqU71MwXPreybcgeC6F6pr Fm8AUNKnsF6qejfZ5LPjG4oIuOcVz67jkjCeVY6EHI4uIFGzh6+sVnISfleTS3LYbfao2128 FOg27YYQfshznNZlylXjTuaf4kM/TKgojEszTA9NNKob/EyK8NQsPXAmkQA1tPvucxEd8I3o nUcKc4N3nNH96QF9dpSaFa/T6DE+TAOJElIVlYUubhgXApe21bfkXXKzNmj6+MYsq7Gl4+gm pQGkmNZSxccfZL7osMmqRuMJlloATaLN7GjWjdKzFs/pJBeZneOaUWFiaONTuQfkQusg+0U0 Y54rV8V/cpGa1pl/7EtAC87MSyQn6Yytp10tmqE8mgcGCrr0H2Bz0u0MH2tCved1WVSXnN9H avFM2DbJYDmCkGUGHd8Qv+zUaQ3fN56GiVSPvAA28leCZjwEmGbh577JCcCiY4fpSFxSXMH0 9N5m/y1zLeDzi8V6Wt62HspiFrKBMKkXYC7/l+UzSKcSGj54V+gOFSEJNnuFNfrpGlcESekb BKJMXqFn4dDEZYwoVxdIM61/D+UFRemxyWp+z1m+ZWlfelrXPXCz7NgC7Zoe0p4n16yC+GGM hUaXpAAAAAAAAA== --------------ms010307020803080004080800--