From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mail.toke.dk (Postfix) with ESMTPS id 8F4FD9F9C5E for ; Wed, 29 Mar 2023 13:23:59 +0200 (CEST) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=hfF6hjZE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680089039; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZBfCtmhIXZ3a7WDYA0EreShUJi3K2H0A83JbG6BaoFc=; b=hfF6hjZE4iSt29MzXb1wLO5rx1q1+JVVuPKEWWKRaQRqBlQP6dvyRPR56C5ovUwnRmQD2G ZsekPSJXyOiD6+7qI5OWUJ1GhGR6BKA2O60iA6wFV6jJ9Ep0IRfGoBtB3SPjl7qRJ21++F 2ZLX1VyX43qYqXuyyUQjx0xuNBEdEFQ= Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-365-yGCDeb_BOCyPsgzjYWG-5A-1; Wed, 29 Mar 2023 07:23:57 -0400 X-MC-Unique: yGCDeb_BOCyPsgzjYWG-5A-1 Received: by mail-ed1-f70.google.com with SMTP id m18-20020a50d7d2000000b00501dfd867a4so22064957edj.20 for ; Wed, 29 Mar 2023 04:23:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680089035; h=content-transfer-encoding:in-reply-to:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ZBfCtmhIXZ3a7WDYA0EreShUJi3K2H0A83JbG6BaoFc=; b=paqD61YAm8dZCbDrxFPKQv5zm/D8KVAwIvfdLcAjpUQDFec62XeMYV7v2vI3HkIE3A BeqIgQAnC0kvUSVVNkTn0p+eQgNfbvMwqTma5aMyBCu/XvRQMycON/SJfgf7NaUv6vpC pcn++wwtFFYkVqyfs3aKDXI6AhztPgwdMbeIT183KFPQFbd4EKRyFmxOVyePMxjG6I9Q vOdLQKUc+GktUhdlv1r1QnOsJ8PKtwBjl7pHsCXZBuZxQ9wOoDKfHEf6F0w2yke2wLx0 WVGBt6V7T2RlUm2sFiLEtWVvSQNO+8xWafxRqB5LYdlexDte4xEVmk2KESgq3ifnhEyf 1PKQ== X-Gm-Message-State: AAQBX9etGFfQFYOgUpzI0iQJsPd6mZUD2ppsKmajecmSfPkfBlrV02AO Eh9yHb35mvjSflEcL9gi5s5ZpjQhTN7MrOXLHZ/3Nx9TpLp23hk2iDApnd7+0oKSmLtOg8Sr57c JvII59NY5R0Na5LZDg/Rb X-Received: by 2002:a17:906:6a8d:b0:933:9918:665d with SMTP id p13-20020a1709066a8d00b009339918665dmr2011833ejr.11.1680089035228; Wed, 29 Mar 2023 04:23:55 -0700 (PDT) X-Google-Smtp-Source: AKy350YaTN4ppSuFlgQgVBfE/TA14eBU09XWE3FSbcEvEqIX/dEGQYgsIgn4Eu3KvYEPg65tQscF3w== X-Received: by 2002:a17:906:6a8d:b0:933:9918:665d with SMTP id p13-20020a1709066a8d00b009339918665dmr2011814ejr.11.1680089034885; Wed, 29 Mar 2023 04:23:54 -0700 (PDT) Received: from [192.168.42.100] (194-45-78-10.static.kviknet.net. [194.45.78.10]) by smtp.gmail.com with ESMTPSA id b9-20020a17090630c900b008bc8ad41646sm16183091ejb.157.2023.03.29.04.23.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 29 Mar 2023 04:23:54 -0700 (PDT) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: <811724e2-cdd6-15fe-b176-9dfcdbd98bad@redhat.com> Date: Wed, 29 Mar 2023 13:23:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 To: Stanislav Fomichev References: <168003451121.3027256.13000250073816770554.stgit@firesoul> <168003455815.3027256.7575362149566382055.stgit@firesoul> In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: P77N4EQA25BPMYWFRRQC5P42LZTARBRP X-Message-ID-Hash: P77N4EQA25BPMYWFRRQC5P42LZTARBRP X-MailFrom: jbrouer@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: brouer@redhat.com, bpf@vger.kernel.org, netdev@vger.kernel.org, martin.lau@kernel.org, ast@kernel.org, daniel@iogearbox.net, alexandr.lobakin@intel.com, larysa.zaremba@intel.com, xdp-hints@xdp-project.net, anthony.l.nguyen@intel.com, yoong.siang.song@intel.com, boon.leong.ong@intel.com, intel-wired-lan@lists.osuosl.org, pabeni@redhat.com, jesse.brandeburg@intel.com, kuba@kernel.org, edumazet@google.com, john.fastabend@gmail.com, hawk@kernel.org, davem@davemloft.net X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] Re: [PATCH bpf RFC 1/4] xdp: rss hash types representation List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQpPbiAyOC8wMy8yMDIzIDIzLjU4LCBTdGFuaXNsYXYgRm9taWNoZXYgd3JvdGU6DQo+IE9uIDAz LzI4LCBKZXNwZXIgRGFuZ2FhcmQgQnJvdWVyIHdyb3RlOg0KPj4gVGhlIFJTUyBoYXNoIHR5cGUg c3BlY2lmaWVzIHdoYXQgcG9ydGlvbiBvZiBwYWNrZXQgZGF0YSBOSUMgaGFyZHdhcmUgdXNlZA0K Pj4gd2hlbiBjYWxjdWxhdGluZyBSU1MgaGFzaCB2YWx1ZS4gVGhlIFJTUyB0eXBlcyBhcmUgZm9j dXNlZCBvbiBJbnRlcm5ldA0KPj4gdHJhZmZpYyBwcm90b2NvbHMgYXQgT1NJIGxheWVycyBMMyBh bmQgTDQuIEwyIChlLmcuIEFSUCkgb2Z0ZW4gZ2V0IGhhc2gNCj4+IHZhbHVlIHplcm8gYW5kIG5v IFJTUyB0eXBlLiBGb3IgTDMgZm9jdXNlZCBvbiBJUHY0IHZzLiBJUHY2LCBhbmQgTDQNCj4+IHBy aW1hcmlseSBUQ1AgdnMgVURQLCBidXQgc29tZSBoYXJkd2FyZSBzdXBwb3J0cyBTQ1RQLg0KPiAN Cj4+IEhhcmR3YXJlIFJTUyB0eXBlcyBhcmUgZGlmZmVyZW50bHkgZW5jb2RlZCBmb3IgZWFjaCBo YXJkd2FyZSBOSUMuIE1vc3QNCj4+IGhhcmR3YXJlIHJlcHJlc2VudCBSU1MgaGFzaCB0eXBlIGFz IGEgbnVtYmVyLiBEZXRlcm1pbmluZyBMMyB2cyBMNCBvZnRlbg0KPj4gcmVxdWlyZXMgYSBtYXBw aW5nIHRhYmxlIGFzIHRoZXJlIG9mdGVuIGlzbid0IGEgcGF0dGVybiBvciBzb3J0aW5nDQo+PiBh Y2NvcmRpbmcgdG8gSVNPIGxheWVyLg0KPiANCj4+IFRoZSBwYXRjaCBpbnRyb2R1Y2UgYSBYRFAg UlNTIGhhc2ggdHlwZSAoeGRwX3Jzc19oYXNoX3R5cGUpIHRoYXQgY2FuIGJvdGgNCj4+IGJlIHNl ZW4gYXMgYSBudW1iZXIgdGhhdCBpcyBvcmRlcmVkIGFjY29yZGluZyBieSBJU08gbGF5ZXIsIGFu ZCBjYW4gYmUgYml0DQo+PiBtYXNrZWQgdG8gc2VwYXJhdGUgSVB2NCBhbmQgSVB2NiB0eXBlcyBm b3IgTDQgcHJvdG9jb2xzLiBSb29tIGlzIGF2YWlsYWJsZQ0KPj4gZm9yIGV4dGVuZGluZyBsYXRl ciB3aGlsZSBrZWVwaW5nIHRoZXNlIHByb3BlcnRpZXMuIFRoaXMgbWFwcyBhbmQgdW5pZmllcw0K Pj4gZGlmZmVyZW5jZSB0byBoYXJkd2FyZSBzcGVjaWZpYyBoYXNoZXMuDQo+IA0KPiBMb29rcyBn b29kIG92ZXJhbGwuIEFueSByZWFzb24gd2UncmUgbWFraW5nIHRoaXMgc3BlY2lmaWMgbGF5b3V0 Pw0KDQpPbmUgaW1wb3J0YW50IGdvYWwgaXMgdG8gaGF2ZSBhIHNpbXBsZS9mYXN0IHdheSB0byBk ZXRlcm1pbmluZyBMMyB2cyBMNCwNCmJlY2F1c2UgYSBMNCBoYXNoIGNhbiBiZSB1c2VkIGZvciBm bG93IGhhbmRsaW5nIChlLmcuIGxvYWQtYmFsYW5jaW5nKS4NCg0KV2UgYmVsb3cgbGF5b3V0IHlv dSBjYW46DQoNCiAgaWYgKHJzc190eXBlICYgWERQX1JTU19UWVBFX0w0X01BU0spDQoJYm9vbCBo d19oYXNoX2RvX0xCID0gdHJ1ZTsNCg0KT3IgdXNpbmcgaXQgYXMgYSBudW1iZXI6DQoNCiAgaWYg KHJzc190eXBlID4gWERQX1JTU19UWVBFX0w0KQ0KCWJvb2wgaHdfaGFzaF9kb19MQiA9IHRydWU7 DQoNCkknbSB2ZXJ5IG9wZW4gdG8gY2hhbmdlcyB0byBteSAic3BlY2lmaWMiIGxheW91dC4gIEkg YW0gaW4gZG91YnQgaWYNCnVzaW5nIGl0IGFzIGEgbnVtYmVyIGlzIHRoZSByaWdodCBhcHByb2Fj aCBhbmQgd29ydGggdGhlIHRyb3VibGUuDQoNCj4gV2h5IG5vdCBzaW1wbHkgdGhlIGZvbGxvd2lu Zz8NCj4gDQo+IGVudW0gew0KPiAgwqDCoMKgwqBYRFBfUlNTX1RZUEVfTk9ORSA9IDAsDQo+ICDC oMKgwqDCoFhEUF9SU1NfVFlQRV9JUFY0ID0gQklUKDApLA0KPiAgwqDCoMKgwqBYRFBfUlNTX1RZ UEVfSVBWNiA9IEJJVCgxKSwNCj4gIMKgwqDCoMKgLyogSVB2NiB3aXRoIGV4dGVuc2lvbiBoZWFk ZXIuICovDQo+ICDCoMKgwqDCoC8qIGxldCdzIG5vdGUgXl5eIGl0IGluIHRoZSBVQVBJPyAqLw0K PiAgwqDCoMKgwqBYRFBfUlNTX1RZUEVfSVBWNl9FWCA9IEJJVCgyKSwNCj4gIMKgwqDCoMKgWERQ X1JTU19UWVBFX1VEUCA9IEJJVCgzKSwNCj4gIMKgwqDCoMKgWERQX1JTU19UWVBFX1RDUCA9IEJJ VCg0KSwNCj4gIMKgwqDCoMKgWERQX1JTU19UWVBFX1NDVFAgPSBCSVQoNSksDQoNCldlIGtub3cg dGhlc2UgYml0cyBmb3IgVURQLCBUQ1AsIFNDVFAgKGFuZCBJUFNFQykgYXJlIGV4Y2x1c2l2ZSwg dGhleQ0KY2Fubm90IGJlIHNldCBhdCB0aGUgc2FtZSB0aW1lLCBlLmcuIGFzIGEgcGFja2V0IGNh bm5vdCBib3RoIGJlIFVEUCBhbmQNClRDUC4gIFRodXMsIHVzaW5nIHRoZXNlIGJpdHMgYXMgYSBu dW1iZXIgbWFrZSBzZW5zZSB0byBtZSwgYW5kIGlzIG1vcmUNCmNvbXBhY3QuDQoNClRoaXMgQklU KCkgYXBwcm9hY2ggYWxzbyBoYXZlIHRoZSBpc3N1ZSBvZiBleHRlbmRpbmcgaXQgbGF0ZXIgKGZv cndhcmQNCmNvbXBhdGliaWxpdHkpLiAgQXMgbWVudGlvbmVkIGEgY29tbW9uIHRhc2sgd2lsbCBi ZSB0byBjaGVjayBpZg0KaGFzaC10eXBlIGlzIGEgTDQgdHlwZS4gIFNlZSBtbHg1IFtwYXRjaCA0 LzRdIG5lZWRlZCB0byBleHRlbmQgd2l0aA0KSVBTRUMuIE5vdGljZSBob3cgbXkgWERQX1JTU19U WVBFX0w0X01BU0sgY292ZXJzIGFsbCB0aGUgYml0cyB0aGF0IHRoaXMNCmNhbiBiZSBleHRlbmRl ZCB3aXRoIG5ldyBMNCB0eXBlcywgc3VjaCB0aGF0IGV4aXN0aW5nIHByb2dzIHdpbGwgc3RpbGwN CndvcmsgY2hlY2tpbmcgZm9yIEw0IGNoZWNrLiAgSXQgY2FuIG9mLWNhdXNlIGJlIHNvbHZlZCBp biB0aGUgc2FtZSB3YXkNCmZvciB0aGlzIEJJVCgpIGFwcHJvYWNoIGJ5IHJlc2VydmluZyBzb21l IGJpdHMgdXBmcm9udCBpbiBhIG1hc2suDQoNCj4gfQ0KPiANCj4gQW5kIHRoZW4gdXNpbmcgWERQ X1JTU19UWVBFX0lQVjR8WERQX1JTU19UWVBFX1VEUCB2cyANCj4gWERQX1JTU19UWVBFX0lQVjZ8 WFhYID8NCg0KRG8gbm90aWNlLCB0aGF0IEkgYWxyZWFkeSBkb2VzIHNvbWUgbGV2ZWwgb2Ygb3In aW5nICgifCIpIGluIHRoaXMNCnByb3Bvc2FsLiAgVGhlIG1haW4gZGlmZmVyZW5jZSBpcyB0aGF0 IEkgaGlkZSB0aGlzIGZyb20gdGhlIGRyaXZlciwgYW5kDQpraW5kIG9mIHByZS1jb21iaW5lIHRo ZSB2YWxpZCBjb21iaW5hdGlvbiAoZW51bSdzKSBkcml2ZXJzIGNhbiBzZWxlY3QNCmZyb20uIEkg ZG8gZ2V0IHRoZSBwb2ludCwgYW5kIEkgdGhpbmsgSSB3aWxsIGNvbWUgdXAgd2l0aCBhIGNvbWJp bmVkDQpzb2x1dGlvbiBiYXNlZCBvbiB5b3VyIGlucHV0Lg0KDQoNClRoZSBSU1MgaGFzaGluZyB0 eXBlcyBhbmQgY29tYmluYXRpb25zIGNvbWVzIGZyb20gTSQgc3RhbmRhcmRzOg0KICBbMV0gDQpo dHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy1oYXJkd2FyZS9kcml2ZXJz L25ldHdvcmsvcnNzLWhhc2hpbmctdHlwZXMjaXB2NC1oYXNoLXR5cGUtY29tYmluYXRpb25zDQoN Cg0KPj4gVGhpcyBwcm9wb3NhbCBjaGFuZ2UgdGhlIGtmdW5jIEFQSSBicGZfeGRwX21ldGFkYXRh X3J4X2hhc2goKSB0byByZXR1cm4NCj4+IHRoaXMgUlNTIGhhc2ggdHlwZSBvbiBzdWNjZXNzLg0K PiANCj4+IFNpZ25lZC1vZmYtYnk6IEplc3BlciBEYW5nYWFyZCBCcm91ZXIgPGJyb3VlckByZWRo YXQuY29tPg0KPj4gLS0tDQo+PiDCoCBpbmNsdWRlL25ldC94ZHAuaCB8wqDCoCA1MSANCj4+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gwqAg bmV0L2NvcmUveGRwLmPCoMKgwqAgfMKgwqDCoCA0ICsrKy0NCj4+IMKgIDIgZmlsZXMgY2hhbmdl ZCwgNTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiANCj4+IGRpZmYgLS1naXQgYS9p bmNsdWRlL25ldC94ZHAuaCBiL2luY2x1ZGUvbmV0L3hkcC5oDQo+PiBpbmRleCA1MzkzYjNlYmU1 NmUuLjYzZjQ2MmY1ZWE3ZiAxMDA2NDQNCj4+IC0tLSBhL2luY2x1ZGUvbmV0L3hkcC5oDQo+PiAr KysgYi9pbmNsdWRlL25ldC94ZHAuaA0KPj4gQEAgLTgsNiArOCw3IEBADQo+IA0KPj4gwqAgI2lu Y2x1ZGUgPGxpbnV4L3NrYnVmZi5oPiAvKiBza2Jfc2hhcmVkX2luZm8gKi8NCj4+IMKgICNpbmNs dWRlIDx1YXBpL2xpbnV4L25ldGRldi5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5o Pg0KPiANCj4+IMKgIC8qKg0KPj4gwqDCoCAqIERPQzogWERQIFJYLXF1ZXVlIGluZm9ybWF0aW9u DQo+PiBAQCAtMzk2LDYgKzM5Nyw1NiBAQCBYRFBfTUVUQURBVEFfS0ZVTkNfeHh4DQo+PiDCoCBN QVhfWERQX01FVEFEQVRBX0tGVU5DLA0KPj4gwqAgfTsNCj4gDQo+PiArLyogRm9yIHBhcnRpdGlv bmluZyBvZiB4ZHBfcnNzX2hhc2hfdHlwZSAqLw0KPj4gKyNkZWZpbmUgUlNTX0wzwqDCoMKgwqDC oMKgwqAgR0VOTUFTSygyLDApIC8qIDMtYml0cyA9IHZhbHVlcyBiZXR3ZWVuIDEtNyAqLw0KPj4g KyNkZWZpbmUgTDRfQklUwqDCoMKgwqDCoMKgwqAgQklUKDMpwqDCoMKgwqDCoMKgIC8qIDEtYml0 IC0gTDQgaW5kaWNhdGlvbiAqLw0KPj4gKyNkZWZpbmUgUlNTX0w0X0lQVjTCoMKgwqAgR0VOTUFT Syg2LDQpIC8qIDMtYml0cyAqLw0KPj4gKyNkZWZpbmUgUlNTX0w0X0lQVjbCoMKgwqAgR0VOTUFT Syg5LDcpIC8qIDMtYml0cyAqLw0KPj4gKyNkZWZpbmUgUlNTX0w0wqDCoMKgwqDCoMKgwqAgR0VO TUFTSyg5LDMpIC8qID0gNy1iaXRzIC0gY292ZXJpbmcgTDQgDQo+PiBJUFY0K0lQVjYgKi8NCj4+ ICsjZGVmaW5lIEw0X0lQVjZfRVhfQklUwqDCoMKgIEJJVCg5KcKgwqDCoMKgwqDCoCAvKiAxLWJp dCAtIEw0IElQdjYgd2l0aCANCj4+IEV4dGVuc2lvbiBoZHIgKi8NCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDExLWJpdHMgaW4gdG90YWwgKi8NCj4+ICsN Cj4+ICsvKiBUaGUgWERQIFJTUyBoYXNoIHR5cGUgKHhkcF9yc3NfaGFzaF90eXBlKSBjYW4gYm90 aCBiZSBzZWVuIGFzIGEgbnVtYmVyIHRoYXQNCj4+ICsgKiBpcyBvcmRlcmVkIGFjY29yZGluZyBi eSBJU08gbGF5ZXIsIGFuZCBjYW4gYmUgYml0IG1hc2tlZCB0byBzZXBhcmF0ZSBJUHY0IGFuZA0K Pj4gKyAqIElQdjYgdHlwZXMgZm9yIEw0IHByb3RvY29scy4gUm9vbSBpcyBhdmFpbGFibGUgZm9y IGV4dGVuZGluZyBsYXRlciB3aGlsZQ0KPj4gKyAqIGtlZXBpbmcgYWJvdmUgcHJvcGVydGllcywg YXMgdGhpcyBuZWVkIHRvIGNvdmVyIE5JQyBoYXJkd2FyZSBSU1MgdHlwZXMuDQo+PiArICovDQo+ PiArZW51bSB4ZHBfcnNzX2hhc2hfdHlwZSB7DQo+PiArwqDCoMKgIFhEUF9SU1NfVFlQRV9OT05F wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IDAsDQo+PiArwqDCoMKgIFhEUF9SU1NfVFlQRV9MMsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gWERQX1JTU19UWVBFX05PTkUsDQo+PiArDQo+PiAr wqDCoMKgIFhEUF9SU1NfVFlQRV9MM19NQVNLwqDCoMKgwqDCoMKgwqDCoCA9IFJTU19MMywNCj4+ ICvCoMKgwqAgWERQX1JTU19UWVBFX0wzX0lQVjTCoMKgwqDCoMKgwqDCoMKgID0gRklFTERfUFJF UF9DT05TVChSU1NfTDMsIDEpLA0KPj4gK8KgwqDCoCBYRFBfUlNTX1RZUEVfTDNfSVBWNsKgwqDC oMKgwqDCoMKgwqAgPSBGSUVMRF9QUkVQX0NPTlNUKFJTU19MMywgMiksDQo+PiArwqDCoMKgIFhE UF9SU1NfVFlQRV9MM19JUFY2X0VYwqDCoMKgwqDCoCA9IEZJRUxEX1BSRVBfQ09OU1QoUlNTX0wz LCA0KSwNCj4+ICsNCj4+ICvCoMKgwqAgWERQX1JTU19UWVBFX0w0X01BU0vCoMKgwqDCoMKgwqDC oMKgID0gUlNTX0w0LA0KPj4gK8KgwqDCoCBYRFBfUlNTX1RZUEVfTDRfU0hJRlTCoMKgwqDCoMKg wqDCoCA9IF9fYmZfc2hmKFJTU19MNCksDQo+PiArwqDCoMKgIFhEUF9SU1NfVFlQRV9MNF9NQVNL X0VYwqDCoMKgwqDCoCA9IFJTU19MNCB8IEw0X0lQVjZfRVhfQklULA0KPj4gKw0KPj4gK8KgwqDC oCBYRFBfUlNTX1RZUEVfTDRfSVBWNF9NQVNLwqDCoMKgID0gUlNTX0w0X0lQVjQsDQo+PiArwqDC oMKgIFhEUF9SU1NfVFlQRV9MNF9CSVTCoMKgwqDCoMKgwqDCoMKgwqAgPSBMNF9CSVQsDQo+PiAr wqDCoMKgIFhEUF9SU1NfVFlQRV9MNF9JUFY0X1RDUMKgwqDCoMKgID0gTDRfQklUfEZJRUxEX1BS RVBfQ09OU1QoUlNTX0w0X0lQVjQsIDEpLA0KPj4gK8KgwqDCoCBYRFBfUlNTX1RZUEVfTDRfSVBW NF9VRFDCoMKgwqDCoCA9IEw0X0JJVHxGSUVMRF9QUkVQX0NPTlNUKFJTU19MNF9JUFY0LCAyKSwN Cj4+ICvCoMKgwqAgWERQX1JTU19UWVBFX0w0X0lQVjRfU0NUUMKgwqDCoCA9IEw0X0JJVHxGSUVM RF9QUkVQX0NPTlNUKFJTU19MNF9JUFY0LCAzKSwNCj4+ICsNCj4+ICvCoMKgwqAgWERQX1JTU19U WVBFX0w0X0lQVjZfTUFTS8KgwqDCoCA9IFJTU19MNF9JUFY2LA0KPj4gK8KgwqDCoCBYRFBfUlNT X1RZUEVfTDRfSVBWNl9UQ1DCoMKgwqDCoCA9IEw0X0JJVHxGSUVMRF9QUkVQX0NPTlNUKFJTU19M NF9JUFY2LCAxKSwNCj4+ICvCoMKgwqAgWERQX1JTU19UWVBFX0w0X0lQVjZfVURQwqDCoMKgwqAg PSBMNF9CSVR8RklFTERfUFJFUF9DT05TVChSU1NfTDRfSVBWNiwgMiksDQo+PiArwqDCoMKgIFhE UF9SU1NfVFlQRV9MNF9JUFY2X1NDVFDCoMKgwqAgPSBMNF9CSVR8RklFTERfUFJFUF9DT05TVChS U1NfTDRfSVBWNiwgMyksDQo+PiArDQo+PiArwqDCoMKgIFhEUF9SU1NfVFlQRV9MNF9JUFY2X0VY X01BU0sgPSBMNF9JUFY2X0VYX0JJVCwNCj4+ICvCoMKgwqAgWERQX1JTU19UWVBFX0w0X0lQVjZf VENQX0VYwqAgPSBYRFBfUlNTX1RZUEVfTDRfSVBWNl9UQ1B8TDRfSVBWNl9FWF9CSVQsDQo+PiAr wqDCoMKgIFhEUF9SU1NfVFlQRV9MNF9JUFY2X1VEUF9FWMKgID0gWERQX1JTU19UWVBFX0w0X0lQ VjZfVURQfEw0X0lQVjZfRVhfQklULA0KPj4gK8KgwqDCoCBYRFBfUlNTX1RZUEVfTDRfSVBWNl9T Q1RQX0VYID0gWERQX1JTU19UWVBFX0w0X0lQVjZfU0NUUHxMNF9JUFY2X0VYX0JJVCwNCj4+ICt9 Ow0KPj4gKyN1bmRlZiBSU1NfTDMNCj4+ICsjdW5kZWYgTDRfQklUDQo+PiArI3VuZGVmIFJTU19M NF9JUFY0DQo+PiArI3VuZGVmIFJTU19MNF9JUFY2DQo+PiArI3VuZGVmIFJTU19MNA0KPj4gKyN1 bmRlZiBMNF9JUFY2X0VYX0JJVA0KPj4gKw0KPj4gwqAgI2lmZGVmIENPTkZJR19ORVQNCj4+IMKg IHUzMiBicGZfeGRwX21ldGFkYXRhX2tmdW5jX2lkKGludCBpZCk7DQo+PiDCoCBib29sIGJwZl9k ZXZfYm91bmRfa2Z1bmNfaWQodTMyIGJ0Zl9pZCk7DQo+PiBkaWZmIC0tZ2l0IGEvbmV0L2NvcmUv eGRwLmMgYi9uZXQvY29yZS94ZHAuYw0KPj4gaW5kZXggNzEzMzAxN2JjZDc0Li44MWQ0MWRmMzA2 OTUgMTAwNjQ0DQo+PiAtLS0gYS9uZXQvY29yZS94ZHAuYw0KPj4gKysrIGIvbmV0L2NvcmUveGRw LmMNCj4+IEBAIC03MjEsMTIgKzcyMSwxNCBAQCBfX2JwZl9rZnVuYyBpbnQgDQo+PiBicGZfeGRw X21ldGFkYXRhX3J4X3RpbWVzdGFtcChjb25zdCBzdHJ1Y3QgeGRwX21kICpjdHgsIHU2NCAqdGlt DQo+PiDCoMKgICogQGhhc2g6IFJldHVybiB2YWx1ZSBwb2ludGVyLg0KPj4gwqDCoCAqDQo+PiDC oMKgICogUmV0dXJuOg0KPj4gLSAqICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYGAtZXJybm9g YCBvbiBlcnJvci4NCj4+ICsgKiAqIFJldHVybnMgKHBvc2l0aXZlKSBSU1MgaGFzaCAqKnR5cGUq KiBvbiBzdWNjZXNzIG9yIGBgLWVycm5vYGAgb24gDQo+PiBlcnJvci4NCj4+ICsgKiAqIGBgZW51 bSB4ZHBfcnNzX2hhc2hfdHlwZWBgIDogUlNTIGhhc2ggdHlwZQ0KPj4gwqDCoCAqICogYGAtRU9Q Tk9UU1VQUGBgIDogbWVhbnMgZGV2aWNlIGRyaXZlciBkb2Vzbid0IGltcGxlbWVudCBrZnVuYw0K Pj4gwqDCoCAqICogYGAtRU5PREFUQWBgwqDCoMKgIDogbWVhbnMgbm8gUlgtaGFzaCBhdmFpbGFi bGUgZm9yIHRoaXMgZnJhbWUNCj4+IMKgwqAgKi8NCj4+IMKgIF9fYnBmX2tmdW5jIGludCBicGZf eGRwX21ldGFkYXRhX3J4X2hhc2goY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCANCj4+IHUzMiAq aGFzaCkNCj4+IMKgIHsNCj4+ICvCoMKgwqAgQlRGX1RZUEVfRU1JVChlbnVtIHhkcF9yc3NfaGFz aF90eXBlKTsNCj4+IMKgwqDCoMKgwqAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPj4gwqAgfQ0KPiAN Cj4gDQo+IA0KDQo=