From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8FD0940215 for ; Mon, 21 Mar 2022 22:29:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DD3A968AD15; Tue, 22 Mar 2022 00:29:24 +0200 (EET) Received: from mail8.parnet.fi (mail8.parnet.fi [77.234.108.134]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CF81468A3AD for ; Tue, 22 Mar 2022 00:29:17 +0200 (EET) Received: from mail9.parnet.fi (mail9.parnet.fi [77.234.108.21]) by mail8.parnet.fi with ESMTP id 22LMTGQU013111-22LMTGQV013111; Tue, 22 Mar 2022 00:29:17 +0200 Received: from foo.martin.st (host-97-187.parnet.fi [77.234.97.187]) by mail9.parnet.fi (Postfix) with ESMTPS id C5DDCA1439; Tue, 22 Mar 2022 00:29:16 +0200 (EET) Date: Tue, 22 Mar 2022 00:29:13 +0200 (EET) From: =?ISO-8859-15?Q?Martin_Storsj=F6?= To: Ben Avison In-Reply-To: Message-ID: <7b13ea3e-f6b9-7a43-41dc-1f567bbe061@martin.st> References: <20220317185819.466470-1-bavison@riscosopen.org> MIME-Version: 1.0 X-FE-Policy-ID: 3:14:2:SYSTEM X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 0/6] avcodec/vc1: Arm optimisations X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: FFmpeg development discussions and patches Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gTW9uLCAyMSBNYXIgMjAyMiwgQmVuIEF2aXNvbiB3cm90ZToKCj4KPiBPbiAxOS8wMy8yMDIy IDIzOjA2LCBNYXJ0aW4gU3RvcnNqw7Ygd3JvdGU6Cj4+IEFzIHlvdSBhcmUgd3JpdGluZyBhc3Nl bWJseSBmb3IgdGhlc2UgZnVuY3Rpb25zLCBJIHdvdWxkIHZlcnkgbXVjaCAKPj4gYXBwcmVjaWF0 ZSBpZiB5b3UgY291bGQgYWRkIGNoZWNrYXNtIHRlc3RzIGZvciBhbGwgdGhlIGZ1bmN0aW9ucyB5 b3UncmUgCj4+IGltcGxlbWVudGluZy4gSSBzZWUgdGhhdCB0aGVyZSBleGlzdHMgYSB0ZXN0IGZv ciB0aGUgYmxvY2tkc3AgZnVuY3Rpb25zLCAKPj4gYnV0IGFsbCB0aGUgb3RoZXIgb25lcyBhcmUg bWlzc2luZyBhIHRlc3QuCj4KPiBJIHRoaW5rIEknZCBoYXZlIGEgYml0IG9mIGEgbGVhcm5pbmcg Y3VydmUgYWhlYWQgb2YgbWUgdGhlcmUhIEkgZGlkIHdyaXRlIG15IAo+IG93biBmdXp6IHRlc3Rl cnMgdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIG15IGFzc2VtYmx5IGltcGxlbWVudGF0aW9ucywg YW5kIEkgCj4gY291bGQgc2hhcmUgdGhlbSAodGhleSdkIHByb2JhYmx5IG5lZWQgYSBiaXQgb2Yg dGlkeWluZyB1cCBzaW5jZSBJIHdhc24ndCAKPiBpbnRlbmRpbmcgdGhlbSBmb3IgcHVibGljIGNv bnN1bXB0aW9uKSBidXQgdGhleSB3ZXJlIHdyaXR0ZW4gaW4gaWdub3JhbmNlIG9mIAo+IHRoZSBj aGVja2FzbSBmcmFtZXdvcmssIHNvIHByb2JhYmx5IHdvdWxkbid0IHNsb3QgaW4gbmVhdGx5Lgo+ Cj4gSXMgdGhlcmUgYW55IHdyaXRldXAgb2YgY2hlY2thc20gYW55d2hlcmUsIGRpc2N1c3Npbmcg aG93IGl0J3MgdXNlZCwgd2hhdCAKPiBzb3J0cyBvZiB0aGluZ3MgaXQgdGVzdHMsIGFueSBzcGVl ZC9tZW1vcnkgbGltaXRzIHRoYXQgdGVzdHMgc2hvdWxkIHRyeSB0byAKPiBhZGhlcmUgdG8gLSB0 aGF0IHNvcnQgb2YgdGhpbmc/CgpJJ20gbm90IGF3YXJlIG9mIGFueSBndWlkZSBpbiBpdHNlbGYs IGJ1dCBJIGNhbiB0cnkgdG8gZG8gYSBzaG9ydCB3cml0ZXVwIApoZXJlLgoKQ2hlY2thc20gaXMg ZXNzZW50aWFsbHkgYSB1bml0IHRlc3QgZnJhbWV3b3JrIGZvciBhc3NlbWJseSBmdW5jdGlvbnMu IEEgCnRlc3QgcnVucyB0d28gdmVyc2lvbnMgb2YgdGhlIHNhbWUgZnVuY3Rpb24sIG9uZSByZWZl cmVuY2UgKGUuZy4gQyAKaW1wbGVtZW50YXRpb24pIGFuZCBvbmUgdGVzdCB2ZXJzaW9uIChlLmcu IE5FT04gaW1wbGVtZW50YXRpb24pIGFnYWluc3QgCnJhbmRvbWlzaCBpbnB1dCBkYXRhLCBhbmQg Y29tcGFyZXMgdGhlIG91dHB1dCB0byBtYWtlIHN1cmUgdGhhdCBpdCBtYXRjaGVzIAooZm9yIHRo ZSByZWxldmFudCBwYXJ0IG9mIHRoZSBvdXRwdXQgYnVmZmVyKS4KCkZvciBlYWNoIHRlc3QsIHRo ZSBtYWluIHBvaW50IGxpZXMgaW4ga25vd2luZyB3aGF0IHRoZSBleHBlY3RlZC92YWxpZCAKcmFu Z2VzIG9mIGlucHV0cyBhcmUsIHNvIHRoYXQgeW91IHBpY2sgcmFuZG9tIGlucHV0cyB0aGF0IGFy ZSB2YWxpZCAtIGFuZCAKdGVzdCBzcGVjaWZpY2FsbHkgdGhlIGUuZy4gYnVmZmVyIHNpemVzIHRo YXQgYXJlIHVzZWQgaW4gcHJhY3RpY2UgYnkgdGhlIApkZWNvZGVyLgoKSWYgYSBmdW5jdGlvbiB1 c3VhbGx5IGhhcyBlLmcuIGRpZmZlcmVudCBjb2RlcGF0aHMgaW50ZXJuYWxseSwgZGVwZW5kaW5n IApvbiBzb21lIGlucHV0IHZhbHVlcywgeW91IGNhbiBtYWtlIHRoZSB0ZXN0IGV4ZXJjaXNlIGFs bCB0aGUgZGlmZmVyZW50IApjb2RlcGF0aHMuIE9yIGlmIHRoZSBmdW5jdGlvbiBoYXMgcG90ZW50 aWFsIG92ZXJmbG93cyBpbiBzb21lIGNhc2UsIHlvdSAKY2FuIG1ha2UgcGFydCBvZiB0aGUgaW5w dXQgYnVmZmVyIGFsd2F5cyBjb250YWluIHRoZSB3b3JzdC1jYXNlIHNjZW5hcmlvLCAKc28gdGhh dCBlYWNoIHJ1biBhbHdheXMgdGVzdHMgZm9yIHRoZSBvdmVyZmxvd3MsIGV2ZW4gaWYgdGhlIHJl c3Qgb2YgdGhlIApidWZmZXJzIGFyZSByYW5kb20gZGF0YS4KCkFub3RoZXIgYXNwZWN0IG9mIHRl c3RzIGlzIHdoYXQgcGFydCBvZiB0aGUgb3V0cHV0IHRvIGNoZWNrLiBFLmcuIApmdW5jdGlvbnMg aW4gdmlkZW8gY29kZWNzIG9mdGVuIHdyaXRlIGEgcmVjdGFuZ3VsYXIgYmxvY2sgaW4gYSBidWZm ZXIuIEF0IAp0aGUgdmVyeSBsZWFzdCwgYSB0ZXN0IGNhbiBjaGVjayB0aGF0IHRoZSBjb250ZW50 cyB3aXRoaW4gdGhlIGV4cGVjdGVkIApyZWdpb24gb2YgdGhlIG91dHB1dCBidWZmZXIgbWF0Y2hl cy4gQnV0IHRlc3RzIGNhbiBhbHNvIChvcHRpb25hbGx5KSB0YWtlIAppdCBvbmUgc3RlcCBmdXJ0 aGVyLCBhbmQgY2hlY2sgdGhhdCBlLmcuIHRoZSBmdW5jdGlvbiBkaWRuJ3QgYWNjaWRlbnRhbGx5 IAp3cml0ZSBvdXRzaWRlIG9mIHRoZSBlZGdlcyBvZiB0aGUgaW5kZW5kZWQgcmVjdGFuZ2xlIGlu IHRoZSBvdXRwdXQgYnVmZmVyLiAKT3IgaW4gc29tZSBjYXNlcyBpdCdzIGV4cGVjdGVkIHRoYXQg YSBmdW5jdGlvbiBtYXkgb3ZlcndyaXRlIGUuZy4gdXAgdG8gMTYgCmJ5dGVzIHBhc3QgdGhlIGVu ZCBvZiB0aGUgcGF5bG9hZCBpbiBlYWNoIHJvdyAtIHRoZW4geW91IGludGVudGlvbmFsbHkgCndv dWxkbid0IGNoZWNrIHRoYXQgYXJlYS4KCkFkZGl0aW9uYWxseSwgYWZ0ZXIgY29tcGFyaW5nIHRo ZSB0ZXN0ZWQgdmVyc2lvbiB3aXRoIHRoZSByZWZlcmVuY2UsIApjaGVja2FzbSBjYW4gYWxzbyBv cHRpb25hbGx5IGJlbmNobWFyayB5b3VyIGZ1bmN0aW9ucy4gVGhpcyBydW5zIHRoZSAKYmVuY2ht YXJrIHNwZWNpZmljYWxseSBvZiBvbmx5IHRoZSBhc3NlbWJseSBmdW5jdGlvbiwgbm90aGluZyBl bHNlLCBieSAKcnVubmluZyB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBpbnB1dCBwYXJhbWV0 ZXJzIGUuZy4gMTAwMCB0aW1lcy4gSXQgCmFsc28gbWVhc3VyZXMgdGhlIEMgdmVyc2lvbiBvZiB0 aGUgZnVuY3Rpb24sIHNvIHRoYXQgeW91IGNhbiBjb21wYXJlIAphZ2FpbnN0IHRoYXQgYW5kIHNl ZSB0aGUgc3BlZWR1cCBvZiB5b3VyIGFzc2VtYmx5IHdvcmssIGluIGlzb2xhdGlvbi4KCihPbiBs aW51eCBvbiBBUk0sIGl0IGJ5IGRlZmF1bHQgdXNlcyB0aGUgcGVyZiB0aW1lcnMuIElmIHlvdSBo YXZlIGVuYWJsZWQgCnVzZXIgbW9kZSBhY2Nlc3MgdG8gdGhlIGN5Y2xlIGNvdW50ZXIgcmVnaXN0 ZXJzLCB3aGljaCBJIGhpZ2hseSByZWNvbW1lbmQsIAphbmQgY29uZmlndXJlIHdpdGggLS1kaXNh YmxlLWxpbnV4LXBlcmYsIHlvdSBnZXQgbXVjaCBtb3JlIHByZWNpc2UgdGltaW5nIAotIHRvIHRo ZSBwb2ludCB0aGF0IHlvdSBjYW4gbWVhc3VyZSB0aGUgaW1wYWN0IG9mIGRpZmZlcmVudCBpbnN0 cnVjdGlvbiAKc2NoZWR1bGluZyBzZXR1cHMgb24gaW4tb3JkZXIgY29yZXMsIGxpa2UgdGhlIENv cnRleCBBNTMuKQoKQWRkaXRpb25hbGx5LCBmb3IgdGhlIHRlc3RpbmcgKGJ1dCBub3QgZm9yIGJl bmNobWFya2luZyksIHRoZSBmdW5jdGlvbnMgCmdldCB3cmFwcGVkIHdpdGggZXh0cmEgc2V0dXAg dG8gdHJ5IHRvIGZpbmQgbGluZ2VyaW5nIG5vbmZ1bmN0aW9uYWwgaXNzdWVzIAp0aGF0IGRvbid0 IHNob3cgdXAgd2hlbiB5b3UganVzdCBydW4gdGhlIGNvZGUuCgpFLmcuIG9uZSBjb21tb24gaXNz c3VlIGlzIHdpdGggZnVuY3Rpb25zIHRoYXQgdGFrZSBhIDMyIGJpdCB2YWx1ZSBhcyAKYXJndW1l bnQuIE9uIGEgNjQgYml0IGFyY2hpdGVjdHVyZSB3aXRoIGFyZ3VtZW50cyBpbiByZWdpc3RlcnMs IHRoZSB1cHBlciAKMzIgYml0cyBvZiBzdWNoIGEgcmVnaXN0ZXIgYXJlIHVuZGVmaW5lZCAtIHdo aWxlIGluIHByYWN0aWNlIHRoZXkncmUgb2Z0ZW4gCnplcm8uIFRoaXMgY2FuIGxlYWQgdG8gaXNz dWVzIGxhdGVyIGRvd24gdGhlIGxpbmUsIHdoZW4gZS5nLiBhIGRpZmZlcmVudCAKb3IgdXBkYXRl ZCBjb21waWxlciBzdWRkZW5seSBoYXBwZW5zIHRvIHBhc3Mgbm9uemVybyBiaXRzIGluIHRoZSB1 bmRlZmluZWQgCnBhcnQuIFRoZSB0ZXN0IHdyYXBwaW5nIHRyaWVzIHRvIGFycmFuZ2Ugc28gdGhh dCB0aGVzZSBiaXRzIGVuZCB1cCBhcyAKbm9uemVybywgdG8gY2F0Y2ggc3VjaCBoaWRkZW4gYnVn cy4KCkFkZGl0aW9uYWxseSwgaXQgY2hlY2tzIHRvIG1ha2Ugc3VyZSB5b3UndmUgcmVzdG9yZWQg YWxsIGNhbGxlZSBzYXZlZCAKcmVnaXN0ZXJzLiBJbiBtb3N0IGNhc2VzLCBpZiB5b3UgaGFwcGVu IHRvIGZvcmdldCB0byByZXN0b3JlIGUuZy4gYSBjYWxsZWUgCnNhdmVkIFNJTUQgcmVnaXN0ZXIs IHRoZSBlZmZlY3RzIG9mIGl0IG5vcm1hbGx5IGRvbid0IHNob3cgdXAgc29vbiAob3IgCmF0IGFs bCksIGJ1dCBtYXkgb25seSBzaG93IHVwIG11Y2ggbGF0ZXIgZGVwZW5kaW5nIG9uIHdoYXQgdGhl IGNvbXBpbGVyIApkaWQgaW4gYSBjYWxsaW5nIGZ1bmN0aW9uLiBCdXQgYWxsIGZ1bmN0aW9ucyBj b3ZlcmVkIGluIGNoZWNrYXNtIGdldCB0aGlzIApjaGVja2VkIGZvciBmcmVlLgoKCkFmdGVyIGJ1 aWxkaW5nIGNoZWNrYXNtLCBpZiB5b3UgcnVuIGUuZy4gLi90ZXN0cy9jaGVja2FzbS9jaGVja2Fz bSwgaXQgCnJ1bnMgYWxsIHRoZSB0ZXN0cyBmb3IgYWxsIGZ1bmN0aW9ucywgZm9yIGFsbCBTSU1E IGluc3RydWN0aW9uIHNldHMgCmF2YWlsYWJsZS4gKE9uIEFSTSB0aGVyZSdzIHVzdWFsbHkgb25s eSBORU9OLCBidXQgZS5nLiBvbiBYODYgaXQgZmlyc3QgCmVuYWJsZXMgb25seSBNTVgsIHRlc3Rz IGFsbCBmdW5jdGlvbnMgYXZhaWxhYmxlIHRoZXJlLCB0aGVuIGluY3JlYXNpbmcgCmxldmVscyB3 aXRoIFNTRTIsIFNTU0UzLCBldGMsIHRvIHRlc3QgYWxsIHBvdGVudGlhbCBpbXBsZW1lbnRhdGlv bnMuKSBJZiAKeW91IHJ1biBlLmcuIGNoZWNrYXNtIC0tdGVzdD1ibG9ja2RzcCBvciAtLXRlc3Q9 aDI2NGRzcCwgaXQgd2lsbCBvbmx5IHJ1biAKdGhlIHRlc3RzIGZvciB0aGF0IHN1YnN5c3RlbS4g SWYgeW91IGZ1cnRoZXIgYWRkIC0tYmVuY2g9aDI2NF9pZGN0LCBpdCAKd2lsbCBiZW5jaG1hcmsg YWxsIGZ1bmN0aW9ucyB3aXRoIGEgbmFtZSBzdGFydGluZyB3aXRoIGgyNjRfaWRjdC4KCgpPbmUg b2YgdGhlIHNpbXBsZXN0IHRlc3RzIHRvIGhhdmUgYSBsb29rIGF0LCB0byB1bmRlcnN0YW5kIHRo ZSBzdHJ1Y3R1cmUsIAppcyB0ZXN0cy9jaGVja2FzbS9ibG9ja2RzcC5jLiBGaXJzdCwgdGhlIGNw dSBmZWF0dXJlIG1hc2sgaXMgc2V0IHNvIHRoYXQgCmF2X2dldF9jcHVfZmxhZ3MoKSByZXR1cm5z IDAuIFRoZW4gdGhlIHRlc3QgbWFpbiBmdW5jdGlvbiwgCmNoZWNrYXNtX2NoZWNrX2Jsb2NrZHNw LCBpcyBjYWxsZWQsIHdoaWNoIGluaXRpYWxpemVzIHRoZSBEU1AgY29udGV4dCAKKHdoaWNoIHRo ZW4gb25seSBnZXRzIGFzc2lnbmVkIHRoZSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbiBvZiB0 aGUgCmZ1bmN0aW9uKS4gSW4gdGhpcyBjYXNlIHRoZSB0ZXN0IGRvZXMgbm90aGluZywgYXMgaXQg Y29tcGFyZXMgdGhlIApDIGltcGxlbWVudGF0aW9uIHdpdGggaXRzZWxmLiBUaGUgbmV4dCB0aW1l IGFyb3VuZCwgYXZfZ2V0X2NwdV9mbGFncyAKcmV0dXJucyBORU9OLCBhbmQgY2hlY2thc21fY2hl Y2tfYmxvY2tkc3AgZ2V0cyBjYWxsZWQgYWdhaW4sIHdoZXJlIHRoZSBEU1AgCmNvbnRleHQgbm93 IGdldHMgdGhlIE5FT04gZnVuY3Rpb24gYXNzaWduZWQuCgpJbiBibG9ja2RzcC5jLCB0aGUgZmly c3QgY2FsbCB0byBjaGVja19mdW5jKGguZnVuYywgCiJibG9ja2RzcC5jbGVhcl9ibG9jayIpIHN0 b3JlZCBhIGNvcHkgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uIHBvaW50ZXIsIAp0aGUgQyByZWZl cmVuY2UgZnVuY3Rpb24sIGluIGEgbWFwLiBPbiB0aGUgc2Vjb25kIGNhbGwgdG8gaXQsIGl0IGRp Z3MgdXAgCnRoZSBwcmV2aW91cyB2ZXJzaW9uIGFuZCBrZWVwcyB0aGUgbmV3IGN1cnJlbnQgdmVy c2lvbi4gVGhlc2UgZnVuY3Rpb24gCnBvaW50ZXJzIGFyZSB1c2VkIHZpYSB0aGUgbWFjcm9zIGNh bGxfcmVmKCkgYW5kIGNhbGxfbmV3KCksIHdpdGggdGhlIHNhbWUgCnBhcmFtZXRlcnMgYXMgaWYg eW91J2QgY2FsbCB0aGUgZnVuY3Rpb24gZGlyZWN0bHkuIEFmdGVyIHJ1bm5pbmcgCmJvdGgsIHlv dSBpbnNwZWN0IHRoZSBvdXRwdXQgb2YgdGhlbSB0byBzZWUgaWYgdGhleSBtYXRjaCwgYW5kIGlm IG5vdCAKeW91IGZhaWwgdGhlIHRlc3QuIEZpbmFsbHksIHRoZSBiZW5jaF9uZXcoKSBtYWNybyBj aGVja3MgaWYgeW91J3ZlIGFza2VkIAp0byBiZW5jaG1hcmsgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0 aW9uLiBJZiB0aGlzIGZ1bmN0aW9uIGlzIG9uZSBvZiB0aGUgCmZ1bmN0aW9ucyB0byBiZW5jaG1h cmssIGl0IHJ1bnMgaXQgTiB0aW1lcyB3aXRoIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLgoKRm9y IHlvdXIgcGF0Y2hlcywgdGhlIGV4aXN0aW5nIHRlc3RzIGluIGgyNjRkc3AsIHZwOGRzcCwgdnA5 ZHNwIHByb2JhYmx5IAphcmUgZ29vZCBleGFtcGxlcyBvZiBzdWNoIHRlc3RzLgoKQSBzbWFsbCBn b3RjaGEgd2hlbi9pZiB5b3UncmUgYWRkaW5nIGEgbmV3IGNoZWNrYXNtIHRlc3QgaW4gYSBuZXcg ZmlsZSwgCnVuZGVyIGEgbmV3IG5hbWUuIElmIHlvdSBqdXN0IHJ1biBjaGVja2FzbSB3aXRob3V0 IHBhcmFtZXRlcnMsIGl0IHJ1bnMgYWxsIAp0aGUgdGVzdHMgYnkgZGVmYXVsdCAoYXMgbG9uZyBh cyB0aGUgdGVzdCBpcyBob29rZWQgdXAgaW4gdGhlIG1haW4gdGVzdHNbXSAKYXJyYXkgaW4gY2hl Y2thc20uYykuIEJ1dCB3aGVuIHJ1bm5pbmcgZmF0ZSwgaXQgcnVucyBjaGVja2FzbSBpbmRpdmlk dWFsbHkgCndpdGggb25lIG1vZHVsZSBhdCBhIHRpbWUuIFNvIGlmIGFkZGluZyBhIG5ldyB0ZXN0 IG1vZHVsZSBpbiBjaGVja2FzbSwgYmUgCnN1cmUgdG8gYWRkIGl0IHRvIHRoZSB0ZXN0IGxpc3Rp bmcgaW4gdGVzdHMvZmF0ZS9jaGVja2FzbS5tYWsgdG9vLgoKClRoZSBpbnZlcnNlIHRyYW5zZm9y bXMgYXJlIHRyaWNreSB0byB0ZXN0LCBiZWNhdXNlIHlvdSBwcm9iYWJseSBjYW4ndCBmZWVkIAp0 aGVtIGFueSByYW5kb20gaW5wdXQgZGF0YS4gVGhlIGV4aXN0aW5nIGgyNjRkc3AsIHZwOGRzcCBh bmQgdnA5ZHNwIAppbnZlcnNlIHRyYW5zZm9ybSB0ZXN0cyB0YWtlIHJhbmRvbSBwaXhlbHMgYW5k IGRvIGEgbmFpdmUgZm9yd2FyZCAKdHJhbnNmb3JtIG9mIHRoZW0sIHNvIHRoYXQgeW91IG9ubHkg Z2V0IHRyYW5zZm9ybSBjb2VmZmljaWVudHMgd2l0aGluIHRoZSAKcG9zc2libGUgcmFuZ2UuCgpG b3IgZGVibG9ja2luZyBmaWx0ZXJzLCB0aG9zZSB0ZXN0cyBzdGFydCB3aXRoIHJhbmRvbS1pc2gg aW5wdXQgZGF0YSwgYnV0IAp0cnkgdG8gYXJyYW5nZSBjb2VmZmljaWVudHMgaW4gYSB3YXkgc28g dGhhdCBlYWNoIGJsb2NrIGNvbnRhaW5zIGFsbCAKcG9zc2libGUgY29tYmluYXRpb25zIG9mIGRh dGEgKGFib3ZlIG9yIGJlbG93IHRoZSB0aHJlc2hvbGQgdmFsdWVzKS4gT3IgYSAKdGVzdCBjYW4g cnVuIHRoZSBmdW5jdGlvbnMgbXVsdGlwbGUgdGltZXMsIHdpdGggaW5wdXQgZGF0YSBhcnJhbmdl ZCB0byAKdHJpZ2dlciBlYWNoIHNwZWNpYWwgY2FzZS4KCkZvciB0aGUgdW5lc2NhcGUgZnVuY3Rp b24sIEknbSBub3Qgc3VyZSBpZiB3ZSBoYXZlIGFueSBnb29kIGV4YW1wbGVzIG9mIApleGlzdGlu ZyB0ZXN0Y2FzZXMgdGhhdCB3b3JrIG9uIGEgc2ltaWxhciBmdW5jdGlvbiB0aG91Z2guIFRyeSB0 byBjb21lIHVwIAp3aXRoIGFsbCBjYXNlcyBvZiBpbnRlcmVzdGluZyBpbnB1dCB0byB0aGUgZnVu Y3Rpb24gKHNob3J0IGJ1ZmZlcnMsIGxvbmcgCmJ1ZmZlcnMsIG1vZC00L25vbi1tb2QtNCBsZW5n dGgsIG5vdGhpbmcgdG8gdW5lc2NhcGUsIGxvdHMgb2YgdGhpbmdzIHRvIAp1bmVzY2FwZSBjbG9z ZSB0b2dldGhlcikuCgoKPj4gVGhlIG90aGVyIG1haW4gaXNzdWUgSSdkIGxpa2UgdG8gcmVxdWVz dCBpcyB0byBpbmRlbnQgdGhlIGFzc2VtYmx5IAo+PiBzaW1pbGFybHkgdG8gdGhlIHJlc3Qgb2Yg dGhlIGV4aXN0aW5nIGFzc2VtYmx5LiBGb3IgdGhlIDMyIGJpdCBhc3NlbWJseSwgCj4+IHlvdXIg cGF0Y2hlcyBkbyBtYXRjaCB0aGUgc3Vycm91bmRpbmcgY29kZSwgYnV0IGZvciB0aGUgNjQgYml0 IGFzc2VtYmx5LCAKPj4geW91ciBwYXRjaGVzIGFsaWduIHRoZSBvcGVyYW5kcyBjb2x1bW4gZGlm ZmVyZW50bHkgdGhhbiB0aGUgcmVzdC4KPgo+IFNpbmNlIEkgd2FzIGNyZWF0aW5nIG5ldyBzb3Vy Y2UgZmlsZXMgZm9yIHRoZSA2NC1iaXQgc3R1ZmYsIEkgYXNzdW1lZCBJIGhhZCBhIAo+IGJpdCBv ZiBsZWV3YXkgaW4gaW5kZW50YXRpb24gc3R5bGUgLSBidXQgSSBjYW4gZWFzaWx5IGNoYW5nZSBp dC4KCk9rLCB0aGFua3MsIHRoYXQnZCBiZSBhcHByZWNpYXRlZC4gWWVhaCBJIHRyeSB0byBtYWlu dGFpbiBjb25zaXN0ZW5jeSAKYWNyb3NzIGZpbGVzIGhlcmUuCgo+IEZvciB3aGF0IGl0J3Mgd29y dGgsIHRoZSBvcGNvZGVzIGluIEFBcmNoNjQgYXJlIHNpZ25pZmljYW50bHkgc2hvcnRlciB0aGFu IGluIAo+IEFBcmNoMzIsIHNpbmNlIHRoZSB2ZWN0b3IgZWxlbWVudCBzaXplIHF1YWxpZmllcnMg Z28gb24gdGhlIG9wZXJhbmRzIGluc3RlYWQgCj4gb2YgdGhlIG9wY29kZXMsIHNvIHRoZXJlJ3Mg bGVzcyBuZWVkIGZvciBleHRyYSBpbmRlbnRhdGlvbi4KCll1cCwgdGhhdCdzIHRydWUuIEJ1dCBm b3IgZnVuY3Rpb25zIHdoZXJlIGluc3RydWN0aW9uLWxpa2UgbWFjcm9zIGFyZSAKdXNlZCwgdGhl IG1hY3JvIG5hbWVzIG9mdGVuIGFyZSBhIGJpdCBsb25nZXIgdGhhbiByZWd1bGFyIGluc3RydWN0 aW9ucywgc28gCnRoZXJlIHRoZSBleHRyYSBzcGFjZSBpcyBhcHByZWNpYXRlZC4gQW5kIGNvbnNp c3RlbmN5IGlzIHN0aWxsIG5pY2Ugd2hlbiAKYm90aCAzMiBhbmQgNjQgYml0IGFybSB1c2UgdGhl IHNhbWUgaW5kZW50YXRpb24gc3R5bGU7IGluIG1hbnkgY2FzZXMsIGNvZGUgCmlzIHBvcnRlZCBi ZXR3ZWVuIHRoZSB0d28gYnkganVzdCBjb3B5aW5nIGFuZCBzbGlnaHRseSBhZGp1c3RpbmcvcmV3 cml0aW5nIAplLmcuIHJlZ2lzdGVyIG5hbWVzIGFuZCB0d2Vha2luZyBpbnN0cnVjdGlvbiBuYW1l cy4KCj4+IEZpbmFsbHksIHRoZSAzMiBiaXQgYXNzZW1ibHkgZmFpbHMgdG8gYnVpbGQgZm9yIG1l IGJvdGggd2l0aCAocmVjZW50KSBjbGFuZyAKPj4gYW5kIG9sZCBiaW51dGlscywgd2l0aCBlcnJv cnMgbGlrZSB0aGVzZToKPj4gCj4+IHNyYy9saWJhdmNvZGVjL2FybS92YzFkc3BfbmVvbi5TOiBB c3NlbWJsZXIgbWVzc2FnZXM6Cj4+IHNyYy9saWJhdmNvZGVjL2FybS92YzFkc3BfbmVvbi5TOjE1 Nzk6IEVycm9yOiBiYWQgdHlwZSBmb3Igc2NhbGFyIC0tIGB2bW92IAo+PiByMCxkNFsxXScKPgo+ IFRoYW5rcyAtIHRoZSBBcm12OC1BIEFSTSBzYXlzIChzZWN0aW9uIEY2LjEuMTM5KSB0aGF0IHRo ZSBkYXRhIHR5cGUgY2FuIGJlIAo+IG9taXR0ZWQgaGVyZSwgYW5kIGluIHRoYXQgY2FzZSBpdCBp cyBlcXVpdmFsZW50IHRvICczMicsIHNvIHRoYXQncyBhIGJ1ZyBpbiAKPiBjbGFuZy4gQnV0IGVh c3kgdG8gd29yayBhcm91bmQuCgpPaywgZ29vZC4gWWVhaCwgYnVncyBvciBub3QsIHdlIHRyeSB0 byBzdGljayB3aXRoIHRoZSBzdWJzZXQgb2YgYXNzZW1ibHkgCnRoYXQgYnVpbGRzIG9uIGFsbCB0 b29sY2hhaW5zIHRoYXQgcmVndWxhcmx5IGFyZSB1c2VkIHRvIGJ1aWxkaW5nLgoKPj4gT2gsIHNp ZGVub3RlIC0gSSBkbyBzZWUgdGhhdCB0aGUgbGFzdCBwYXRjaCBpbiB0aGUgc2V0IHVzZXMgbXVj aCBtb3JlCj4+IGluY29uc2lzdGVudCBpbmRlbnRhdGlvbiwgd2l0aCB2YXJ5aW5nIGluZGVudGF0 aW9uIGJldHdlZW4gbGluZXMuIElzCj4+IHRoaXMgaW50ZW50aW9uYWwgdG8gc2lnbmlmeSBzb21l IHN0cnVjdHVyZSBpbiB0aGUgY29kZSwgb3IganVzdAo+PiBhY2NpZGVudGFsPwo+Cj4gVGhhdCB3 YXMgZGVsaWJlcmF0ZSEgVGhlIGlubmVyIGxvb3AgdGhlcmUgaXMgdW5yb2xsZWQgeDIsIGFuZCB0 aGVuIGFkamFjZW50IAo+IGl0ZXJhdGlvbnMgYXJlIG92ZXJsYXBwZWQgMTgwIGRlZ3JlZXMgb3V0 IG9mIHBoYXNlLiBUaGlzIGlzIGJlY2F1c2UgZWFjaCAKPiBpdGVyYXRpb24gc3RhcnRzIG9mZiBi dXN5LCB3aXRoIGxvdHMgb2YgaW5zdHJ1Y3Rpb25zIHRvIGV4ZWN1dGUsIGtlZXBpbmcgCj4gcGlw ZWxpbmVzIGZ1bGwsIGFuZCB0b3dhcmRzIHRoZSBlbmQsIGl0IHRoaW5zIG91dCwgbWVhbmluZyB3 ZSBjYW4gYmVuZWZpdCBieSAKPiB1c2luZyB3aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBzdGFsbHMg dG8gc3BlY3VsYXRpdmVseSBzdGFydCB0byBwcm9jZXNzIHRoZSAKPiBuZXh0IGl0ZXJhdGlvbiBi ZWZvcmUgd2UndmUgY29tcGxldGVkIHRoZSBjdXJyZW50IG9uZS4KPgo+IEVmZmVjdGl2ZWx5LCBp ZiB5b3Ugb25seSByZWFkIGEgc2VyaWVzIG9mIGluc3RydWN0aW9ucyB3aXRoIG1hdGNoaW5nIAo+ IGluZGVudGF0aW9uLCB5b3UgZ2V0IG9uZSBsb2dpY2FsIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcCAt IGZvciBleGFtcGxlLCBpbiB0aGUgCj4gQUFyY2gzMiB2ZXJzaW9uLCB5b3UgY2FuIGZvbGxvdyB0 aHJvdWdoIHRoZSBwcm9jZXNzIGZyb20gbG9hZGluZyB0aGUgc291cmNlIAo+IGJ1ZmZlciBpbnRv IHExMCAobGluZSAxODQ5KSB1bnRpbCB3ZSBzdG9yZSBmcm9tIGl0IHRvIHRoZSBkZXN0aW5hdGlv biBidWZmZXIsIAo+IGhhdmluZyBkZXRlcm1pbmVkIHRoYXQgaXQgZG9lc24ndCBjb250YWluIHRo ZSBzdGFydCBvZiBhbnkgZXNjYXBlIHNlcXVlbmNlcyAKPiAobGluZSAxODkwKS4KPgo+IEl0J3Mg YSB0cmljayBJJ3ZlIHNlZW4gdXNlZCBhIGZldyB0aW1lcyBlbHNld2hlcmUsIHdoaWNoIGlzIHdo eSBJIGRpZG4ndCAKPiBib3RoZXIgZXhwbGFpbmluZyBpdCBpbiBhIGNvbW1lbnQuIEkgY291bGQg YWRkIG9uZSwgb3IgaWYgeW91IHN0aWxsIGRvbid0IAo+IGxpa2UgaXQgb25jZSB5b3UndmUgdW5k ZXJzdG9vZCB3aGF0IGl0IG1lYW5zLCBJJ2QgYmUgaGFwcHkgdG8gdGFrZSBpdCBvdXQuCgpSaWdo dCwgSSBzZWUuIChJIGRpZG4ndCB0cnkgdG8gcmVhZCB0aGUgY29kZSBhbmQgZm9sbG93IGl0IHll dCwgSSBqdXN0IApicm93c2VkIHlvdXIgcGF0Y2hlcyBhbmQgdGVzdGJ1aWx0IHRoZW0uKSBJIHRo aW5rIGl0IGNhbiBiZSB2YWx1YWJsZSB0byAKa2VlcCB0aGlzIG5vbnN0YW5kYXJkIGluZGVudGF0 aW9uIGFzIGEgcmVhZGFiaWxpdHkvbWFpbnRhaW5hYmlsaXR5IGFpZCAKdGhlbi4gKEJ1dCBkbyBz aGlmdCB0aGUgb3BlcmFuZCBjb2x1bW4gOCBjaGFycyB0byB0aGUgcmlnaHQgZm9yIHRoZSA2NCBi aXQgCnZlcnNpb24uKQoKLy8gTWFydGluCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZm bXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVs CgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVs LXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K