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 52E8F4B76D for ; Wed, 12 Jun 2024 20:52:34 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D2B6B68D9B6; Wed, 12 Jun 2024 23:52:31 +0300 (EEST) Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A13A68D85E for ; Wed, 12 Jun 2024 23:52:25 +0300 (EEST) Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a6f0dc80ab9so48664366b.2 for ; Wed, 12 Jun 2024 13:52:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718225544; x=1718830344; darn=ffmpeg.org; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=fyr1D+TBn5r12S13OlmhIoL3mnYSkkQ01ZOtjWT77TQ=; b=WTos1FYRuM6ghlVvnHsC2/l2v1RcRi/8od4FBr8xW42nVKJnGrB3fwC/rDe59+3sof kFEPUygpTQL6GZq0vWSteCPiB8kPXKpIf852x1gjqCD5NSf5K4p0PCen5RKVOCYdCmXY 6ReSAMVt9MjgQJvBqGg6yqWS1UK4DQLC7wOb3pMxJ+pHnMFQnki6zHEaE+8yT71SHIjJ 4hw5i8X+AWjRWhYzQUiDliMLCoHZOh59xYAiO87uv8DhtF66iRTvuoLrE+wvrOiUfPiq ndRrj8QlUXNsfbBHZzWoxAdZuEs3uydvDqeqHwrjmH4nVe95TbQTG3nmN6YBkiipWUu2 7CdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718225544; x=1718830344; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fyr1D+TBn5r12S13OlmhIoL3mnYSkkQ01ZOtjWT77TQ=; b=DpS+c+tTyJGPDXZd+Pw80YeDqvtgIevOTx99yE00bmuggJxaS+XseBobtLKHsou7cK auiuxkkdc0n9R/GKa7j9cv0D4qba8nXaZgVu/jCKk1Zf0lVn9HahAlvVa4bysrIljH3W 6oL5jdWV2dpmKwJY+TSVjsxG0ZV8ii86zNDp/rEvtF49HmaURuoWaQl0bzUFcdyOS5ZT e7aWlV6OtqJgRMKNjGylgVP9veQjzDRb1rNSvYPMK5GqnfdTVARG/3gKXWnJWygBh77h MIIV/JYUHZJ9Kt2zc8A4d6IjKHDhS7B/SurJdw3ylm9n/njEKJeeFgWGmgwMKHv9f3Qu YNNg== X-Gm-Message-State: AOJu0YytMrR0bdeuMlE1MS3hThqbqnEIbwJRB/1eWJB/O+5LoXf001co JC3hZgThG1rX/JuYDATQOXLtsAbUN+dbIsHGaEiSooBMyftTb6SJWESpjA== X-Google-Smtp-Source: AGHT+IEBv+P2mnR+FqNP2Y4LjTEVS37yL29wpNyAqQhtwgvgWF68Fo6i+N+tObArpEh/SxrMnud64Q== X-Received: by 2002:a17:906:4c46:b0:a68:67e4:7f0d with SMTP id a640c23a62f3a-a6f47c7d9admr178945966b.2.1718225543716; Wed, 12 Jun 2024 13:52:23 -0700 (PDT) Received: from mariano (dynamic-adsl-84-220-189-10.clienti.tiscali.it. [84.220.189.10]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f0d7b35d5sm601795766b.192.2024.06.12.13.52.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jun 2024 13:52:22 -0700 (PDT) Received: by mariano (Postfix, from userid 1000) id B23E3BFCE8; Wed, 12 Jun 2024 22:52:00 +0200 (CEST) Date: Wed, 12 Jun 2024 22:52:00 +0200 From: Stefano Sabatini To: FFmpeg development discussions and patches Message-ID: Mail-Followup-To: FFmpeg development discussions and patches , Andrew Sayers References: <20240418150614.3952107-1-ffmpeg-devel@pileofstuff.org> <20240604144919.213799-1-ffmpeg-devel@pileofstuff.org> <20240604144919.213799-2-ffmpeg-devel@pileofstuff.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240604144919.213799-2-ffmpeg-devel@pileofstuff.org> User-Agent: Mutt/2.1.4 (2021-12-11) Subject: Re: [FFmpeg-devel] [PATCH v6 1/4] doc: Explain what "context" means 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: Andrew Sayers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gZGF0ZSBUdWVzZGF5IDIwMjQtMDYtMDQgMTU6NDc6MjEgKzAxMDAsIEFuZHJldyBTYXllcnMg d3JvdGU6Cj4gRGVyaXZlZCBmcm9tIGV4cGxhbmF0aW9ucyBraW5kbHkgcHJvdmlkZWQgYnkgU3Rl ZmFubyBTYWJhdGluaSBhbmQgb3RoZXJzOgo+IGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwv ZmZtcGVnLWRldmVsLzIwMjQtQXByaWwvMzI1OTAzLmh0bWwKPiAtLS0KPiAgZG9jL2NvbnRleHQu bWQgfCA0MzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ICAxIGZpbGUgY2hhbmdlZCwgNDMwIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRvYy9jb250ZXh0Lm1kCj4gZGlmZiAtLWdpdCBhL2RvYy9jb250ZXh0Lm1kIGIvZG9jL2Nv bnRleHQubWQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLmJkOGNi NTg2OTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZG9jL2NvbnRleHQubWQKPiBAQCAtMCwwICsx LDQzMCBAQAo+ICtAcGFnZSBDb250ZXh0IEludHJvZHVjdGlvbiB0byBjb250ZXh0cwo+ICsKPiAr QHRhYmxlb2Zjb250ZW50cwo+ICsKPiArRkZtcGVnIHVzZXMgdGhlIHRlcm0g4oCcY29udGV4dOKA nSB0byByZWZlciB0byBhbiBpZGlvbQo+ICt5b3UgaGF2ZSBwcm9iYWJseSB1c2VkIGJlZm9yZToK PiArCj4gK2BgYGMKPiArLy8gQyBzdHJ1Y3RzIG9mdGVuIHNoYXJlIGNvbnRleHQgYmV0d2VlbiBm dW5jdGlvbnM6Cj4gKwo+ICtGSUxFICpteV9maWxlOyAvLyBteV9maWxlIHN0b3JlcyBpbmZvcm1h dGlvbiBhYm91dCBhIGZpbGVoYW5kbGUKPiArCj4gK3ByaW50ZihteV9maWxlLCAiaGVsbG8gIik7 IC8vIG15X2ZpbGUgcHJvdmlkZXMgY29udGV4dCB0byB0aGlzIGZ1bmN0aW9uLAo+ICtwcmludGYo bXlfZmlsZSwgIndvcmxkISIpOyAvLyBhbmQgYWxzbyB0byB0aGlzIGZ1bmN0aW9uCj4gK2BgYAo+ ICsKPiArYGBgcHl0aG9uCj4gKyMgUHl0aG9uIGNsYXNzZXMgcHJvdmlkZSBjb250ZXh0IGZvciB0 aGUgbWV0aG9kcyB0aGV5IGNvbnRhaW46Cj4gKwo+ICtjbGFzcyBNeUNsYXNzOgo+ICsgICAgZGVm IHByaW50KHNlbGYsbWVzc2FnZSk6Cj4gKyAgICAgICAgaWYgc2VsZi5wcmV2X21lc3NhZ2UgIT0g bWVzc2FnZToKPiArICAgICAgICAgICAgc2VsZi5wcmV2X21lc3NhZ2UgPSBtZXNzYWdlCj4gKyAg ICAgICAgICAgIHByaW50KG1lc3NhZ2UpCj4gK2BgYAo+ICsKPiArPCEtLSBtYXJrZWQgImMiIGJl Y2F1c2UgRG94eWdlbiBkb2Vzbid0IHN1cHBvcnQgSlMgaGlnaGxpZ2h0aW5nOiAtLT4KPiArYGBg Ywo+ICsvLyBNYW55IEphdmFTY3JpcHQgY2FsbGJhY2tzIGFjY2VwdCBhbiBvcHRpb25hbCBjb250 ZXh0IGFyZ3VtZW50Ogo+ICsKPiArY29uc3QgbXlfb2JqZWN0ID0ge307Cj4gKwo+ICtteV9hcnJh eS5mb3JFYWNoKGZ1bmN0aW9uXzEsIG15X29iamVjdCk7Cj4gK215X2FycmF5LmZvckVhY2goZnVu Y3Rpb25fMiwgbXlfb2JqZWN0KTsKPiArYGBgCj4gKwo+ICtCZSBjYXJlZnVsIGNvbXBhcmluZyBG Rm1wZWcgY29udGV4dHMgdG8gdGhpbmdzIHlvdSdyZSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggLQo+ ICtGRm1wZWcgbWF5IHNvbWV0aW1lcyBoYXBwZW4gdG8gcmV1c2Ugd29yZHMgeW91IHJlY29nbmlz ZSwgYnV0IG1lYW4gc29tZXRoaW5nCj4gK2NvbXBsZXRlbHkgZGlmZmVyZW50LiAgRm9yIGV4YW1w bGUsIHRoZSBBVkNsYXNzIHN0cnVjdCBoYXMgbm90aGluZyB0byBkbyB3aXRoCj4gK1tvYmplY3Qt b3JpZW50ZWQgY2xhc3Nlc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2xhc3NfKGNv bXB1dGVyX3Byb2dyYW1taW5nKSkuCj4gKwo+ICtJZiB5b3UndmUgdXNlZCBjb250ZXh0cyBpbiBv dGhlciBDIHByb2plY3RzLCB5b3UgbWF5IHdhbnQgdG8gcmVhZAo+ICtAcmVmIENvbnRleHRfY29t cGFyaXNvbiBiZWZvcmUgdGhlIHJlc3Qgb2YgdGhlIGRvY3VtZW50LgoKTXkgaW1wcmVzc2lvbiBp cyB0aGF0IHRoaXMgaXMgZ3Jvd2luZyBvdXQgb2Ygc2NvcGUgZm9yIGEKcmVmZXJlbmNlLiBUaGUg ZG94eSBpcyBhIHJlZmVyZW5jZSwgdGhlcmVmb3JlIGl0IHNob3VsZCBiZSBjbGVhbiBhbmQKdGVy c2UsIGFuZCB3ZSBzaG91bGQgYXZvaWQgYWRkaW5nIHRvbyBtdWNoIGluZm9ybWF0aW9uLCBlbm91 Z2gKaW5mb3JtYXRpb24gc2hvdWxkIGJlIHJpZ2h0IGVub3VnaC4gSW4gZmFjdCwgYSByZWZlcmVu Y2UgaXMgZGlmZmVyZW50CmZyb20gYSB0dXRvcmlhbCwgYW5kIG11Y2ggZGlmZmVyZW50IGZyb20g YSBDIHR1dG9yaWFsLiBBbHNvIHRoaXMgaXMKbm90IGEgdHJlYXRpc2UgY29tcGFyaW5nIGRpZmZl cmVudCBsYW5ndWFnZXMgYW5kIGZyYW1ld29ya3MsIGFzIHRoaXMKd291bGQgY29uZnVzZSBiZWdp bm5lcnMgYW5kIHdvdWxkIGFubm95IGV4cGVyaWVuY2VkIGRldmVsb3BlcnMuCgpJIHByb3Bvc2Ug dG8gY3V0IHRoaXMgcGF0Y2ggdG8gcHJvdmlkZSB0aGUgbWluaW1hbCBpbmZvcm1hdGlvbiB5b3Ug Y2FuCmV4cGVjdCBpbiBhIHJlZmVyZW5jZSwgYnV0IG5vdCBtb3JlIHRoYW4gdGhhdC4gQWRkaXRp b24gY2FuIGJlIGFkZGVkCmxhdGVyLCBidXQgSSB0aGluayB3ZSBzaG91bGQgdHJ5IHRvIGF2b2lk IGFueSB1bm5lY2Vzc2FyeSBjb250ZW50LCBpbgp0aGUgc3Bpcml0IG9mIGtlZXBpbmcgdGhpcyBh IHJlZmVyZW5jZS4gTW9yZSBleHRlbnNpdmUgZGlzY3Vzc2lvbnMKbWlnaHQgYmUgZG9uZSBpbiBh IHNlcGFyYXRlIHBsYWNlICh0aGUgd2lraSwgYSBibG9nIHBvc3QgZXRjLiksIGJ1dCBpbgp0aGUg c3Bpcml0IG9mIGEga2VlcGluZyB0aGlzIGEgcmVmZXJlbmNlIHRoZXkgc2hvdWxkIG5vdCBiZSBw dXQgaGVyZS4KCj4gKwo+ICtAc2VjdGlvbiBDb250ZXh0X2dlbmVyYWwg4oCcQ29udGV4dOKAnSBh cyBhIGdlbmVyYWwgY29uY2VwdAo+ICsKPiArQHBhcgo+ICtBIGNvbnRleHQgaXMgYW55IGRhdGEg c3RydWN0dXJlIHVzZWQgYnkgc2V2ZXJhbCBmdW5jdGlvbnMKPiArKG9yIHNldmVyYWwgaW5zdGFu Y2VzIG9mIHRoZSBzYW1lIGZ1bmN0aW9uKSB0aGF0IGFsbCBvcGVyYXRlIG9uIHRoZSBzYW1lIGVu dGl0eS4KPiArCj4gK0luIHRoZSBicm9hZGVzdCBzZW5zZSwg4oCcY29udGV4dOKAnSBpcyBqdXN0 IGEgd2F5IHRvIHRoaW5rIGFib3V0IGNvZGUuCgo+ICtZb3UgY2FuIGV2ZW4gdXNlIGl0IHRvIHRo aW5rIGFib3V0IGNvZGUgd3JpdHRlbiBieSBwZW9wbGUgd2hvIGhhdmUgbmV2ZXIKPiAraGVhcmQg dGhlIHRlcm0sIG9yIHdobyB3b3VsZCBkaXNhZ3JlZSB3aXRoIHlvdSBhYm91dCB3aGF0IGl0IG1l YW5zLgo+ICtDb25zaWRlciB0aGUgZm9sbG93aW5nIHNuaXBwZXQ6Cj4gKwo+ICtgYGBjCj4gK3N0 cnVjdCBEdWFsV3JpdGVyIHsKPiArICAgIGludCBmZDEsIGZkMjsKPiArfTsKPiArCj4gK3NzaXpl X3Qgd3JpdGVfdG9fdHdvX2ZpbGVzKAo+ICsgICAgc3RydWN0IER1YWxXcml0ZXIgKm15X3dyaXRl ciwKPiArICAgIHVpbnQ4X3QgKmJ1ZiwKPiArICAgIGludCBidWZfc2l6ZQo+ICspIHsKPiArCj4g KyAgICBzc2l6ZV90IGJ5dGVzX3dyaXR0ZW5fMSA9IHdyaXRlKG15X3dyaXRlci0+ZmQxLCBidWYs IGJ1Zl9zaXplKTsKPiArICAgIHNzaXplX3QgYnl0ZXNfd3JpdHRlbl8yID0gd3JpdGUobXlfd3Jp dGVyLT5mZDIsIGJ1ZiwgYnVmX3NpemUpOwo+ICsKPiArICAgIGlmICggYnl0ZXNfd3JpdHRlbl8x ICE9IGJ5dGVzX3dyaXR0ZW5fMiApIHsKPiArICAgICAgICAvLyAuLi4gaGFuZGxlIHRoaXMgZWRn ZSBjYXNlIC4uLgo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiBieXRlc193cml0dGVuXzE7Cj4g Kwo+ICt9Cj4gKwo+ICtpbnQgbWFpbigpIHsKPiArCj4gKyAgICBzdHJ1Y3QgRHVhbFdyaXRlciBt eV93cml0ZXI7Cj4gKyAgICBteV93cml0ZXIuZmQxID0gb3BlbigiZmlsZTEiLCAwNjQ0LCAid2Ii KTsKPiArICAgIG15X3dyaXRlci5mZDIgPSBvcGVuKCJmaWxlMiIsIDA2NDQsICJ3YiIpOwo+ICsK PiArICAgIHdyaXRlX3RvX3R3b19maWxlcygmbXlfd3JpdGVyLCAiaGVsbG8gIiwgc2l6ZW9mKCJo ZWxsbyAiKSk7Cj4gKyAgICB3cml0ZV90b190d29fZmlsZXMoJm15X3dyaXRlciwgIndvcmxkISIs IHNpemVvZigid29ybGQhIikpOwo+ICsKPiArICAgIGNsb3NlKCBteV93cml0ZXIuZmQxICk7Cj4g KyAgICBjbG9zZSggbXlfd3JpdGVyLmZkMiApOwo+ICsKPiArfQo+ICtgYGAKPiArCj4gK1RoZSB0 ZXJtIOKAnGNvbnRleHTigJ0gZG9lc24ndCBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHNuaXBwZXQu ICBCdXQgYER1YWxXcml0ZXJgCj4gK2lzIHBhc3NlZCB0byBzZXZlcmFsIGluc3RhbmNlcyBvZiBg d3JpdGVfdG9fdHdvX2ZpbGVzKClgIHRoYXQgb3BlcmF0ZSBvbgo+ICt0aGUgc2FtZSBlbnRpdHks IHNvIGl0IGZpdHMgdGhlIGRlZmluaXRpb24gb2YgYSBjb250ZXh0Lgo+ICsKPiArV2hlbiByZWFk aW5nIGNvZGUgdGhhdCBpc24ndCBleHBsaWNpdGx5IGRlc2NyaWJlZCBpbiB0ZXJtcyBvZiBjb250 ZXh0cywKPiArcmVtZW1iZXIgdGhhdCB5b3VyIGludGVycHJldGF0aW9uIG1heSBkaWZmZXIgZnJv bSBvdGhlciBwZW9wbGUncy4KPiArRm9yIGV4YW1wbGUsIEZGbXBlZydzIGF2aW9fYWxsb2NfY29u dGV4dCgpIGFjY2VwdHMgYSBzZXQgb2YgY2FsbGJhY2sgZnVuY3Rpb25zCj4gK2FuZCBhbiBgb3Bh cXVlYCBhcmd1bWVudCAtIGV2ZW4gdGhvdWdoIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0byAq cmV0dXJuKgo+ICthIGNvbnRleHQsIGl0IGRvZXMgbm90IHJlcXVpcmUgYG9wYXF1ZWAgdG8gKnBy b3ZpZGUqIGNvbnRleHQgZm9yIHRoZSBjYWxsYmFjawo+ICtmdW5jdGlvbnMuICBTbyB5b3UgY291 bGQgY2hvb3NlIHRvIHBhc3MgYSBzdHJ1Y3QgbGlrZSBgRHVhbFdyaXRlcmAgYXMgdGhlCj4gK2Bv cGFxdWVgIGFyZ3VtZW50LCBvciB5b3UgY291bGQgcGFzcyBjYWxsYmFja3MgdGhhdCB1c2UgYHN0 ZGluYCBhbmQgYHN0ZG91dGAKPiArYW5kIGp1c3QgcGFzcyBhIGBOVUxMYCBhcmd1bWVudCBmb3Ig YG9wYXF1ZWAuCgpJJ2Qgc2tpcCBhbGwgdGhpcyBwYXJ0LCBhcyB3ZSBhc3N1bWUgdGhlIHJlYWRl ciBpcyBhbHJlYWR5IGZhbWlsaWFyCndpdGggQyBsYW5ndWFnZSBhbmQgd2l0aCBkYXRhIGVuY2Fw c3VsYXRpb24gdGhyb3VnaCBzdHJ1Y3QsIGlmIGhlIGlzCm5vdCB0aGlzIGlzIG5vdCB0aGUgcmln aHQgcGxhY2Ugd2hlcmUgdG8gdGVhY2ggYWJvdXQgQyBsYW5ndWFnZQpmdW5kYW1lbnRhbHMuCgo+ ICsKPiArV2hlbiByZWFkaW5nIGNvZGUgdGhhdCAqaXMqIGV4cGxpY2l0bHkgZGVzY3JpYmVkIGlu IHRlcm1zIG9mIGNvbnRleHRzLAo+ICtyZW1lbWJlciB0aGF0IHRoZSB0ZXJtJ3MgbWVhbmluZyBp cyBndWFyYW50ZWVkIGJ5ICp0aGUgcHJvamVjdCdzIGNvbW11bml0eSosCj4gK25vdCAqdGhlIGxh bmd1YWdlIGl0J3Mgd3JpdHRlbiBpbiouICBUaGF0IG1lYW5zIGd1YXJhbnRlZXMgbWF5IGJlIG1v cmUgZmxleGlibGUKPiArYW5kIGNoYW5nZSBtb3JlIG92ZXIgdGltZS4gIEZvciBleGFtcGxlLCBw cm9ncmFtbWluZyBsYW5ndWFnZXMgdGhhdCB1c2UKPiArW2VuY2Fwc3VsYXRpb25dKGh0dHBzOi8v ZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuY2Fwc3VsYXRpb25fKGNvbXB1dGVyX3Byb2dyYW1taW5n KSkKPiArd2lsbCBzaW1wbHkgcmVmdXNlIHRvIGNvbXBpbGUgY29kZSB0aGF0IHZpb2xhdGVzIGl0 cyBydWxlcyBhYm91dCBhY2Nlc3MsCj4gK3doaWxlIGNvbW11bml0aWVzIGNhbiBwdXQgdXAgd2l0 aCBzcGVjaWFsIGNhc2VzIGlmIHRoZXkgaW1wcm92ZSBjb2RlIHF1YWxpdHkuCj4gKwoKVGhpcyBs b29rcyBhIGJpdCB2YWd1ZSBzbyBJJ2QgcmF0aGVyIGRyb3AgdGhpcy4KCj4gK1RoZSBuZXh0IHNl Y3Rpb24gd2lsbCBkaXNjdXNzIHdoYXQgc3BlY2lmaWMgY29udmVudGlvbnMgRkZtcGVnIGRldmVs b3BlcnMgbWVhbgo+ICt3aGVuIHRoZXkgZGVzY3JpYmUgcGFydHMgb2YgdGhlaXIgY29kZSBhcyB1 c2luZyDigJxjb250ZXh0c+KAnS4KPiArCj4gK0BzZWN0aW9uIENvbnRleHRfZmZtcGVnIEZGbXBl ZyBjb250ZXh0cwo+ICsKPiArVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBzcGVjaWZpYyBjb250ZXh0 LXJlbGF0ZWQgY29udmVudGlvbnMgdXNlZCBpbiBGRm1wZWcuCj4gK1NvbWUgb2YgdGhlc2UgYXJl IHVzZWQgaW4gb3RoZXIgcHJvamVjdHMsIG90aGVycyBhcmUgdW5pcXVlIHRvIHRoaXMgcHJvamVj dC4KPiArCj4gK0BzdWJzZWN0aW9uIENvbnRleHRfaW5kaWNhdGluZyBJbmRpY2F0aW5nIGNvbnRl eHQ6IOKAnENvbnRleHTigJ0sIOKAnGN0eOKAnSBldGMuCj4gKwo+ICtgYGBjCj4gKy8vIENvbnRl eHQgc3RydWN0IG5hbWVzIHVzdWFsbHkgZW5kIHdpdGggYENvbnRleHRgOgo+ICtzdHJ1Y3QgQVZT b21lQ29udGV4dCB7Cj4gKyAgLi4uCj4gK307Cj4gKwo+ICsvLyBGdW5jdGlvbnMgYXJlIHVzdWFs bHkgbmFtZWQgYWZ0ZXIgdGhlaXIgY29udGV4dCwKPiArLy8gY29udGV4dCBwYXJhbWV0ZXJzIHVz dWFsbHkgY29tZSBmaXJzdCBhbmQgYXJlIG9mdGVuIGNhbGxlZCBgY3R4YDoKPiArdm9pZCBhdl9z b21lX2Z1bmN0aW9uKEFWU29tZUNvbnRleHQgKmN0eCwgLi4uKTsKPiArYGBgCj4gKwo+ICtGRm1w ZWcgc3RydWN0IG5hbWVzIHVzdWFsbHkgc2lnbmFsIHdoZXRoZXIgdGhleSBhcmUgY29udGV4dHMg KGUuZy4gQVZCU0ZDb250ZXh0Cj4gK29yIEFWQ29kZWNDb250ZXh0KS4gIEV4Y2VwdGlvbnMgdG8g dGhpcyBydWxlIGluY2x1ZGUgQVZNRDUsIHdoaWNoIGlzIG9ubHkKPiAraWRlbnRpZmllZCBhcyBh IGNvbnRleHQgYnkgQHJlZiBsaWJhdnV0aWwvbWQ1LmMgInRoZSBmdW5jdGlvbnMgdGhhdCBjYWxs IGl0Ii4KPiArCj4gK0Z1bmN0aW9uIG5hbWVzIHVzdWFsbHkgc2lnbmFsIHRoZSBjb250ZXh0IHRo ZXkncmUgYXNzb2NpYXRlZCB3aXRoIChlLmcuCj4gK2F2X21kNV9hbGxvYygpIG9yIGF2Y29kZWNf YWxsb2NfY29udGV4dDMoKSkuICBFeGNlcHRpb25zIHRvIHRoaXMgcnVsZSBpbmNsdWRlCj4gK0By ZWYgYXZmb3JtYXQuaCAiQVZGb3JtYXRDb250ZXh0J3MgZnVuY3Rpb25zIiwgbWFueSBvZiB3aGlj aCBiZWdpbiB3aXRoCj4gK2p1c3QgYGF2X2AuCj4gKwo+ICtGdW5jdGlvbnMgdXN1YWxseSBzaWdu YWwgdGhlaXIgY29udGV4dCBwYXJhbWV0ZXIgYnkgcHV0dGluZyBpdCBmaXJzdCBhbmQKPiArbmFt aW5nIGl0IHNvbWUgdmFyaWFudCBvZiBgY3R4YC4gIEV4Y2VwdGlvbnMgaW5jbHVkZSBhdl9ic2Zf YWxsb2MoKSwgd2hpY2ggcHV0cwo+ICtpdHMgY29udGV4dCBhcmd1bWVudCBzZWNvbmQgdG8gZW1w aGFzaXNlIGl0J3MgYW4gb3V0IHZhcmlhYmxlLgo+ICsKCj4gK1NvbWUgZnVuY3Rpb25zIGZpdCBh d2t3YXJkbHkgd2l0aGluIEZGbXBlZydzIGNvbnRleHQgaWRpb20sIHNvIHRoZXkgc2VuZCBtaXhl ZAo+ICtzaWduYWxzLiAgRm9yIGV4YW1wbGUsIGF2X2FtYmllbnRfdmlld2luZ19lbnZpcm9ubWVu dF9jcmVhdGVfc2lkZV9kYXRhKCkgY3JlYXRlcwo+ICthbiBBVkFtYmllbnRWaWV3aW5nRW52aXJv bm1lbnQgY29udGV4dCwgdGhlbiBhZGRzIGl0IHRvIHRoZSBzaWRlLWRhdGEgb2YgYW4KPiArQVZG cmFtZSBjb250ZXh0LiAgU28gaXRzIG5hbWUgaGludHMgYXQgb25lIGNvbnRleHQsIGl0cyBwYXJh bWV0ZXIgaGludHMgYXQKPiArYW5vdGhlciwgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGlzIHNpbGVu dCBvbiB0aGUgaXNzdWUuICBZb3UgbWlnaHQgcHJlZmVyIHRvCj4gK3RoaW5rIG9mIHN1Y2ggZnVu Y3Rpb25zIGFzIG5vdCBoYXZpbmcgYSBjb250ZXh0LCBvciBhcyDigJxyZWNlaXZpbmfigJ0gb25l IGNvbnRleHQKPiArYW5kIOKAnHByb2R1Y2luZ+KAnSBhbm90aGVyLgoKSSdkIHNraXAgdGhpcyBw YXJhZ3JhcGguIEluIGZhY3QsIEkgdGhpbmsgdGhhdCBBUEkgbWFrZXMgcGVyZmVjdApzZW5zZSwg T09QIGxhbmd1YWdlcyBhZG9wdCBzdWNoIGNvbnN0cnVjdHMgYWxsIHRoZSB0aW1lLCBmb3IgZXhh bXBsZQp0aGlzIGNvdWxkIGJlIGEgc3RhdGljIG1vZHVsZS9jbGFzcyBjb25zdHJ1Y3Rvci4gSW4g b3RoZXIgd29yZHMsIHdlCmFyZSBub3QgdGVsbGluZyBhbnl3aGVyZSB0aGF0IGFsbCBmdW5jdGlv bnMgc2hvdWxkIHRha2UgYSAiY29udGV4dCIgYXMKaXRzIGZpcnN0IGFyZ3VtZW50LCBhbmQgdGhl IGRvY3VtZW50YXRpb24gc3BlY2lmeSBleGFjdGx5IGhvdyB0aGlzCndvcmtzLCBpZiB5b3UgZmVl bCB0aGlzIGlzIG5vdCBjbGVhciBvciBzaWxlbnQgcHJvYmFibHkgdGhpcyBpcyBhIHNpZ24KdGhh dCB0aGF0IGZ1bmN0aW9uIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGV4dGVuZGVkLgoKPiArCj4g K0BzdWJzZWN0aW9uIENvbnRleHRfZGF0YV9oaWRpbmcgRGF0YSBoaWRpbmc6IHByaXZhdGUgY29u dGV4dHMKPiArCj4gK2BgYGMKPiArLy8gQ29udGV4dCBzdHJ1Y3RzIG9mdGVuIGhpZGUgcHJpdmF0 ZSBjb250ZXh0Ogo+ICtzdHJ1Y3QgQVZTb21lQ29udGV4dCB7Cj4gKyAgdm9pZCAqcHJpdl9kYXRh OyAvLyBzb21ldGltZXMganVzdCBjYWxsZWQgImludGVybmFsIgo+ICt9Owo+ICtgYGAKPiArCj4g K0NvbnRleHRzIHByZXNlbnQgYSBwdWJsaWMgaW50ZXJmYWNlLCBzbyBjaGFuZ2luZyBhIGNvbnRl eHQncyBtZW1iZXJzIGZvcmNlcwo+ICtldmVyeW9uZSB0aGF0IHVzZXMgdGhlIGxpYnJhcnkgdG8g YXQgbGVhc3QgcmVjb21waWxlIHRoZWlyIHByb2dyYW0sCj4gK2lmIG5vdCByZXdyaXRlIGl0IHRv IHJlbWFpbiBjb21wYXRpYmxlLiAgTWFueSBjb250ZXh0cyByZWR1Y2UgdGhpcyBwcm9ibGVtCj4g K2J5IGluY2x1ZGluZyBhIHByaXZhdGUgY29udGV4dCB3aXRoIGEgdHlwZSB0aGF0IGlzIG5vdCBl eHBvc2VkIGluIHRoZSBwdWJsaWMKPiAraW50ZXJmYWNlLiAgSGlkaW5nIGluZm9ybWF0aW9uIHRo aXMgd2F5IGVuc3VyZXMgaXQgY2FuIGJlIG1vZGlmaWVkIHdpdGhvdXQKPiArYWZmZWN0aW5nIGRv d25zdHJlYW0gc29mdHdhcmUuCj4gKwo+ICtQcml2YXRlIGNvbnRleHRzIG9mdGVuIHN0b3JlIHZh cmlhYmxlcyB1c2VycyBhcmVuJ3Qgc3VwcG9zZWQgdG8gc2VlCj4gKyhzaW1pbGFyIHRvIGFuIFtP T1BdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09iamVjdC1vcmllbnRlZF9wcm9ncmFt bWluZykKPiArcHJpdmF0ZSBibG9jayksIGJ1dCBjYW4gYmUgdXNlZCBmb3IgbW9yZSB0aGFuIGp1 c3QgYWNjZXNzIGNvbnRyb2wuICBUaGV5IGNhbgo+ICthbHNvIHN0b3JlIGluZm9ybWF0aW9uIHNo YXJlZCBiZXR3ZWVuIHNvbWUgYnV0IG5vdCBhbGwgaW5zdGFuY2VzIG9mIGEgY29udGV4dAo+ICso ZS5nLiBjb2RlYy1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5KSwgYW5kIEByZWYgQ29udGV4dF9hdm9w dGlvbnMKPiArIkFWT3B0aW9ucy1lbmFibGVkIHN0cnVjdHMiIGNhbiBwcm92aWRlIHVzZXIgY29u ZmlndXJhdGlvbiBvcHRpb25zIHRocm91Z2gKPiArdGhlIEByZWYgYXZvcHRpb25zICJBVk9wdGlv bnMgQVBJIi4KCkknbGwgc2tpcCB0aGlzIHNlY3Rpb24gYXMgd2VsbDogZGF0YSBoaWRpbmcgaXMg YSBjb21tb24gQyB0ZWNobmlxdWUsCmFuZCBBVk9wdGlvbnMgYXJlIGFscmVhZHkgY292ZXJlZCBs YXRlciBpbiB0aGUgZG9jdW1lbnQgb3IgaW4gYW5vdGhlcgpkZWRpY2F0ZWQgc2VjdGlvbi4KCj4g K0BzdWJzZWN0aW9uIENvbnRleHRfbGlmZXRpbWUgTWFuYWdlIGxpZmV0aW1lOiBjcmVhdGlvbiwg dXNlLCBkZXN0cnVjdGlvbgo+ICsKPiArYGBgYwo+ICt2b2lkIG15X2Z1bmN0aW9uKC4uLikgewo+ ICsKPiArICAgIC8vIENvbnRleHQgc3RydWN0cyBhcmUgYWxsb2NhdGVkIHRoZW4gaW5pdGlhbGl6 ZWQgd2l0aCBhc3NvY2lhdGVkIGZ1bmN0aW9uczoKPiArCj4gKyAgICBBVlNvbWVDb250ZXh0ICpj dHggPSBhdl9zb21lX2NvbnRleHRfYWxsb2MoLi4uKTsKPiArCj4gKyAgICAvLyAuLi4gY29uZmln dXJlIGN0eCAuLi4KPiArCj4gKyAgICBhdl9zb21lX2NvbnRleHRfaW5pdChjdHgsIC4uLik7Cj4g Kwo+ICsgICAgLy8gLi4uIHVzZSBjdHggLi4uCj4gKwo+ICsgICAgLy8gQ29udGV4dCBzdHJ1Y3Rz IGFyZSBjbG9zZWQgdGhlbiBmcmVlZCB3aXRoIGFzc29jaWF0ZWQgZnVuY3Rpb25zOgo+ICsKPiAr ICAgIGF2X3NvbWVfY29udGV4dF9jbG9zZShjdHgpOwo+ICsgICAgYXZfc29tZV9jb250ZXh0X2Zy ZWUoY3R4KTsKPiArCj4gK30KPiArYGBgCj4gK0ZGbXBlZyBjb250ZXh0cyBnbyB0aHJvdWdoIHRo ZSBmb2xsb3dpbmcgc3RhZ2VzIG9mIGxpZmU6Cj4gKwo+ICsxLiBhbGxvY2F0aW9uIChvZnRlbiBh IGZ1bmN0aW9uIHRoYXQgZW5kcyB3aXRoIGBfYWxsb2NgKQo+ICsgICAqIGEgcmFuZ2Ugb2YgbWVt b3J5IGlzIGFsbG9jYXRlZCBmb3IgdXNlIGJ5IHRoZSBzdHJ1Y3R1cmUKPiArICAgKiBtZW1vcnkg aXMgYWxsb2NhdGVkIG9uIGJvdW5kYXJpZXMgdGhhdCBpbXByb3ZlIGNhY2hpbmcKPiArICAgKiBt ZW1vcnkgaXMgcmVzZXQgdG8gemVyb2VzLCBzb21lIGludGVybmFsIHN0cnVjdHVyZXMgbWF5IGJl IGluaXRpYWxpemVkCj4gKzIuIGNvbmZpZ3VyYXRpb24gKGltcGxlbWVudGVkIGJ5IHNldHRpbmcg dmFsdWVzIGRpcmVjdGx5IG9uIHRoZSBjb250ZXh0KQo+ICsgICAqIG5vIGZ1bmN0aW9uIGZvciB0 aGlzIC0gY2FsbGluZyBjb2RlIHBvcHVsYXRlcyB0aGUgc3RydWN0dXJlIGRpcmVjdGx5Cj4gKyAg ICogbWVtb3J5IGlzIHBvcHVsYXRlZCB3aXRoIHVzZWZ1bCB2YWx1ZXMKPiArICAgKiBzaW1wbGUg Y29udGV4dHMgY2FuIHNraXAgdGhpcyBzdGFnZQo+ICszLiBpbml0aWFsaXphdGlvbiAob2Z0ZW4g YSBmdW5jdGlvbiB0aGF0IGVuZHMgd2l0aCBgX2luaXRgKQo+ICsgICAqIHNldHVwIGFjdGlvbnMg YXJlIHBlcmZvcm1lZCBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiAoZS5nLiBvcGVuaW5nIGZp bGVzKQo+ICs1LiBub3JtYWwgdXNhZ2UKPiArICAgKiBtb3N0IGZ1bmN0aW9ucyBhcmUgY2FsbGVk IGluIHRoaXMgc3RhZ2UKPiArICAgKiBkb2N1bWVudGF0aW9uIGltcGxpZXMgc29tZSBtZW1iZXJz IGFyZSBub3cgcmVhZC1vbmx5IChvciBub3QgdXNlZCBhdCBhbGwpCj4gKyAgICogc29tZSBjb250 ZXh0cyBhbGxvdyByZS1pbml0aWFsaXphdGlvbgo+ICs2LiBjbG9zaW5nIChvZnRlbiBhIGZ1bmN0 aW9uIHRoYXQgZW5kcyB3aXRoIGBfY2xvc2UoKWApCj4gKyAgICogdGVhcmRvd24gYWN0aW9ucyBh cmUgcGVyZm9ybWVkIChlLmcuIGNsb3NpbmcgZmlsZXMpCj4gKzcuIGRlYWxsb2NhdGlvbiAob2Z0 ZW4gYSBmdW5jdGlvbiB0aGF0IGVuZHMgd2l0aCBgX2ZyZWUoKWApCj4gKyAgICogbWVtb3J5IGlz IHJldHVybmVkIHRvIHRoZSBwb29sIG9mIGF2YWlsYWJsZSBtZW1vcnkKPiArCj4gK1RoaXMgY2Fu IG1pc2xlYWQgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1tZXJzLCB3aG8gZXhwZWN0IHNvbWV0aGlu ZyBtb3JlIGxpa2U6Cj4gKwo+ICsxLiBhbGxvY2F0aW9uICh1c3VhbGx5IGEgYG5ld2Aga2V5d29y ZCkKPiArICAgKiBhIHJhbmdlIG9mIG1lbW9yeSBpcyBhbGxvY2F0ZWQgZm9yIHVzZSBieSB0aGUg c3RydWN0dXJlCj4gKyAgICogbWVtb3J5ICptYXkqIGJlIHJlc2V0IChlLmcuIGZvciBzZWN1cml0 eSByZWFzb25zKQo+ICsyLiBpbml0aWFsaXphdGlvbiAodXN1YWxseSBhIGNvbnN0cnVjdG9yKQo+ ICsgICAqIG1lbW9yeSBpcyBwb3B1bGF0ZWQgd2l0aCB1c2VmdWwgdmFsdWVzCj4gKyAgICogcmVs YXRlZCBzZXR1cCBhY3Rpb25zIGFyZSBwZXJmb3JtZWQgYmFzZWQgb24gYXJndW1lbnRzIChlLmcu IG9wZW5pbmcgZmlsZXMpCj4gKzMuIG5vcm1hbCB1c2FnZQo+ICsgICAqIG1vc3QgZnVuY3Rpb25z IGFyZSBjYWxsZWQgaW4gdGhpcyBzdGFnZQo+ICsgICAqIGNvbXBpbGVyIGVuZm9yY2VzIHRoYXQg c29tZSBtZW1iZXJzIGFyZSByZWFkLW9ubHkgKG9yIHByaXZhdGUpCj4gKyAgICogbm8gZ29pbmcg YmFjayB0byB0aGUgcHJldmlvdXMgc3RhZ2UKPiArNC4gZmluYWxpemF0aW9uICh1c3VhbGx5IGEg ZGVzdHJ1Y3RvcikKPiArICAgKiB0ZWFyZG93biBhY3Rpb25zIGFyZSBwZXJmb3JtZWQgKGUuZy4g Y2xvc2luZyBmaWxlcykKPiArNS4gZGVhbGxvY2F0aW9uICh1c3VhbGx5IGEgYGRlbGV0ZWAga2V5 d29yZCkKPiArICAgKiBtZW1vcnkgaXMgcmV0dXJuZWQgdG8gdGhlIHBvb2wgb2YgYXZhaWxhYmxl IG1lbW9yeQo+ICsKPiArVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gZGlzY3Vzc2VzIEZG bXBlZydzIGRpZmZlcmVuY2VzIGZyb20gT09QLCB0byBoZWxwCj4gK29iamVjdC1vcmllbnRlZCBw cm9ncmFtbWVycyBhdm9pZCBtaXNjb25jZXB0aW9ucy4gIFlvdSBjYW4gc2FmZWx5IHNraXAgdGhp cwo+ICtzZWN0aW9uIGlmIHlvdSBhcmVuJ3QgZmFtaWxpYXIgd2l0aCB0aGUgT09QIGxpZmV0aW1l IGRlc2NyaWJlZCBhYm92ZS4KPiArCj4gK0ZGbXBlZydzIGFsbG9jYXRpb24gc3RhZ2UgaXMgYnJv YWRseSBzaW1pbGFyIHRvIHRoZSBPT1Agc3RhZ2Ugb2YgdGhlIHNhbWUgbmFtZS4KPiArQm90aCBz ZXQgYXNpZGUgc29tZSBtZW1vcnkgZm9yIHVzZSBieSBhIG5ldyBlbnRpdHksIGJ1dCBGRm1wZWcn cyBzdGFnZSBjYW4gYWxzbwo+ICtkbyBzb21lIGhpZ2hlci1sZXZlbCBvcGVyYXRpb25zLiAgRm9y IGV4YW1wbGUsIEByZWYgQ29udGV4dF9hdm9wdGlvbnMKPiArIkFWT3B0aW9ucy1lbmFibGVkIHN0 cnVjdHMiIHNldCB0aGVpciBBVkNsYXNzIG1lbWJlciBkdXJpbmcgYWxsb2NhdGlvbi4KPiArCj4g K0ZGbXBlZydzIGNvbmZpZ3VyYXRpb24gc3RhZ2UgaW52b2x2ZXMgc2V0dGluZyBhbnkgdmFyaWFi bGVzIHlvdSB3YW50IGJlZm9yZQo+ICt5b3Ugc3RhcnQgdXNpbmcgdGhlIGNvbnRleHQuICBDb21w bGljYXRlZCBGRm1wZWcgc3RydWN0dXJlcyBsaWtlIEFWQ29kZWNDb250ZXh0Cj4gK3RlbmQgdG8g aGF2ZSBtYW55IG1lbWJlcnMgeW91ICpjb3VsZCogc2V0LCBidXQgaW4gcHJhY3RpY2UgbW9zdCBw cm9ncmFtcyBzZXQKPiArZmV3IGlmIGFueSBvZiB0aGVtLiAgVGhlIGZyZWVmb3JtIGNvbmZpZ3Vy YXRpb24gc3RhZ2Ugd29ya3MgYmV0dGVyIHRoYW4gYnVuZGxpbmcKPiArdGhlc2UgaW50byB0aGUg aW5pdGlhbGl6YXRpb24gc3RhZ2UsIHdoaWNoIHdvdWxkIGxlYWQgdG8gZnVuY3Rpb25zIHdpdGgK PiAraW1wcmFjdGljYWxseSBtYW55IHBhcmFtZXRlcnMsIGFuZCB3b3VsZCBtZWFuIGVhY2ggbmV3 IG9wdGlvbiB3YXMgYW4KPiAraW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgQVBJLiAgT25lIHdh eSB0byB1bmRlcnN0YW5kIHRoZSBwcm9ibGVtIGlzIHRvIHJlYWQKPiArQHJlZiBDb250ZXh0X2F2 b3B0aW9ucyAidGhlIEFWT3B0aW9ucyBzZWN0aW9uIGJlbG93IiBhbmQgdGhpbmsgaG93IGEgY29u c3RydWN0b3IKPiArd291bGQgaGFuZGxlIHRob3NlIG9wdGlvbnMuCj4gKwo+ICtGRm1wZWcncyBp bml0aWFsaXphdGlvbiBzdGFnZSBpbnZvbHZlcyBjYWxsaW5nIGEgZnVuY3Rpb24gdGhhdCBzZXRz IHRoZSBjb250ZXh0Cj4gK3VwIGJhc2VkIG9uIHlvdXIgY29uZmlndXJhdGlvbi4KPiArCj4gK0ZG bXBlZydzIGZpcnN0IHRocmVlIHN0YWdlcyBkbyB0aGUgc2FtZSBqb2IgYXMgT09QJ3MgZmlyc3Qg dHdvIHN0YWdlcy4KPiArVGhpcyBjYW4gbWlzbGVhZCBvYmplY3Qtb3JpZW50ZWQgZGV2ZWxvcGVy cywgd2hvIGV4cGVjdCB0byBkbyBsZXNzIHdvcmsgaW4gdGhlCj4gK2FsbG9jYXRpb24gc3RhZ2Us IGFuZCBtb3JlIHdvcmsgaW4gdGhlIGluaXRpYWxpemF0aW9uIHN0YWdlLiAgVG8gc2ltcGxpZnkg dGhpcywKPiArbW9zdCBGRm1wZWcgY29udGV4dHMgcHJvdmlkZSBhIGNvbWJpbmVkIGFsbG9jYXRv ciBhbmQgaW5pdGlhbGl6ZXIgZnVuY3Rpb24uCj4gK0ZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHN1 ZmZpeGVzIGxpa2UgYF9hbGxvY2AsIGBfaW5pdGAsIGBfYWxsb2NfY29udGV4dGAgYW5kCj4gK2V2 ZW4gYF9vcGVuYCBjYW4gaW5kaWNhdGUgdGhlIGZ1bmN0aW9uIGRvZXMgYW55IGNvbWJpbmF0aW9u IG9mIGFsbG9jYXRpb24gYW5kCj4gK2luaXRpYWxpemF0aW9uLgo+ICsKPiArRkZtcGVnJ3MgImNs b3NpbmciIHN0YWdlIGlzIGJyb2FkbHkgc2ltaWxhciB0byBPT1AncyAiZmluYWxpemF0aW9uIiBz dGFnZSwKPiArYnV0IHNvbWUgY29udGV4dHMgYWxsb3cgcmUtaW5pdGlhbGl6YXRpb24gYWZ0ZXIg ZmluYWxpemF0aW9uLiAgRm9yIGV4YW1wbGUsCj4gK1N3ckNvbnRleHQgbGV0cyB5b3UgY2FsbCBz d3JfY2xvc2UoKSB0aGVuIHN3cl9pbml0KCkgdG8gcmV1c2UgYSBjb250ZXh0Lgo+ICtCZSBhd2Fy ZSB0aGF0IHNvbWUgRkZtcGVnIGZ1bmN0aW9ucyBoYXBwZW4gdG8gdXNlIHRoZSB3b3JkICJmaW5h bGl6ZSIgaW4gYSB3YXkKPiArdGhhdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBPT1Agc3Rh Z2UgKGUuZy4gYXZfYnNmX2xpc3RfZmluYWxpemUoKSkuCj4gKwo+ICtGRm1wZWcncyAiZGVhbGxv Y2F0aW9uIiBzdGFnZSBpcyBicm9hZGx5IHNpbWlsYXIgdG8gT09QLCBidXQgY2FuIHBlcmZvcm0g c29tZQo+ICtoaWdoZXItbGV2ZWwgZnVuY3Rpb25zIChzaW1pbGFyIHRvIHRoZSBhbGxvY2F0aW9u IHN0YWdlKS4KPiArCj4gK0Nsb3NpbmcgZnVuY3Rpb25zIHVzdWFsbHkgZW5kIHdpdGggIl9jbG9z ZSIsIHdoaWxlIGRlYWxsb2NhdGlvbgo+ICtmdW5jdGlvbnMgdXN1YWxseSBlbmQgd2l0aCAiX2Zy ZWUiLiAgVmVyeSBmZXcgY29udGV4dHMgbmVlZCB0aGUgZmxleGliaWxpdHkgb2YKPiArc2VwYXJh dGUgImNsb3NpbmciIGFuZCAiZGVhbGxvY2F0aW9uIiBzdGFnZXMsIHNvIG1hbnkgIl9mcmVlIiBm dW5jdGlvbnMKPiAraW1wbGljaXRseSBjbG9zZSB0aGUgY29udGV4dCBmaXJzdC4KCkFib3V0IHRo aXMgSSBoYXZlIG1peGVkIGZlZWxpbmdzLCBidXQgdG8gbWUgaXQgc291bmRzIGxpa2UgYS1wb3N0 ZXJpb3JpCnJhdGlvbmFsaXphdGlvbi4KCkkgZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYSBnZW5lcmFs IHJ1bGUgd2l0aCB0aGUgYWxsb2NhdGlvbi9jbG9zaW5nL2ZyZWUKcnVsZSBmb3IgdGhlIHZhcmlv dXMgRkZtcGVnIEFQSXMsIGFuZCBnaXZpbmcgdGhlIGltcHJlc3Npb24gdGhhdCB0aGlzCmlzIHRo ZSBjYXNlIG1pZ2h0IGJlIG1pc2xlYWRpbmcuIEluIHByYWN0aWNlIHRoZSB1c2VyIG5lZWRzIHRv IG1hc3Rlcgpvbmx5IGEgc2luZ2xlIEFQSSBhdCBhIHRpbWUgKGVuY29kZXJpbmcvZGVjb2Rpbmcs IG11eGluZy9kZW11eGluZywKZXRjLikgIGVhY2ggb25lIHdpdGggcG9zc2libHkgc2xpZ2h0IGRp ZmZlcmVuY2VzIGluIGhvdyB0aGUgdGVybQpjbG9zZS9hbGxvY2F0aW9uL2ZyZWUgYXJlIHVzZWQu IFRoaXMgaXMgcHJvYmFibHkgbm90IG9wdGltYWwsIGJ1dCBpbgpwcmFjdGljZSBpdCB3b3JrcyBh cyB0aGUgdXNlciBkbyBub3QgcmVhbGx5IG5lZWQgdG8ga25vdyBhbGwgdGhlCnBvc3NpYmxlIHVz ZXMgb2YgdGhlIEFQSSAoc2hlIHdpbGwgd29yayB0aHJvdWdoIHdoYXQgc2hlIGlzIGludGVyZXN0 ZWQKZm9yIHRoZSBqb2IgYXQgaGFuZCkuCgo+ICsKPiArQHN1YnNlY3Rpb24gQ29udGV4dF9hdm9w dGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zOiBBVk9wdGlvbnMtZW5hYmxlZCBzdHJ1Y3RzCj4g KwoKPiArVGhlIEByZWYgYXZvcHRpb25zICJBVk9wdGlvbnMgQVBJIiBpcyBhIGZyYW1ld29yayB0 byBjb25maWd1cmUgdXNlci1mYWNpbmcKPiArb3B0aW9ucywgZS5nLiBvbiB0aGUgY29tbWFuZC1s aW5lIG9yIGluIEdVSSBjb25maWd1cmF0aW9uIGZvcm1zLgoKVGhpcyBsb29rcyB3cm9uZy4gQVZP cHRpb25zIGlzIG5vdCBhdCBhbGwgYWJvdXQgQ0xJIG9yIEdVSSBvcHRpb25zLCBpcwpqdXN0IHNv bWUgd2F5IHRvIHNldC9nZXQgZmllbGRzICh0aGF0IGlzICJvcHRpb25zIikgZGVmaW5lZCBpbiBh CnN0cnVjdCAoYSBjb250ZXh0KSB1c2luZyBhIGhpZ2ggbGV2ZWwgQVBJIGluY2x1ZGluZzogc2V0 dGluZyBtdWx0aXBsZQpvcHRpb25zIGF0IG9uY2UgKHRocm91Z2ggYSB0ZXh0dWFsIGVuY29kaW5n IG9yIGEgZGljdGlvbmFyeSksCmlucHV0L3JhbmdlIHZhbGlkYXRpb24sIHNldHRpbmcgbW9yZSBm aWVsZHMgYmFzZWQgb24gYSBzaW5nbGUgb3B0aW9uCihlLmcuIHRoZSBzaXplKSBldGMuCgpUaGVu IHlvdSBjYW4gcXVlcnkgdGhlIG9wdGlvbnMgaW4gYSBnaXZlbiBzdHJ1Y3QgYW5kIGNyZWF0ZQpj b3JyZXNwb25kaW5nIG9wdGlvbnMgaW4gYSBVSSwgYnV0IHRoaXMgaXMgbm90IHRoZSBwb2ludCBv ZiBBVk9wdGlvbnMuCgo+ICtUbyB1bmRlcnN0YW5kIEZGbXBlZydzIGNvbmZpZ3VyYXRpb24gcmVx dWlyZW1lbnRzLCBydW4gYGZmbXBlZyAtaCBmdWxsYCBvbiB0aGUKPiArY29tbWFuZC1saW5lLCB0 aGVuIGFzayB5b3Vyc2VsZiBob3cgeW91IHdvdWxkIGltcGxlbWVudCBhbGwgdGhvc2Ugb3B0aW9u cwo+ICt3aXRoIHRoZSBDIHN0YW5kYXJkIFtgZ2V0b3B0YCBmdW5jdGlvbl0oaHR0cHM6Ly9lbi53 aWtpcGVkaWEub3JnL3dpa2kvR2V0b3B0KS4KPiArWW91IGNhbiBhbHNvIGFzayB0aGUgc2FtZSBx dWVzdGlvbiBmb3Igb3RoZXIgYXBwcm9hY2hlcyAtIGZvciBleGFtcGxlLCBob3cgd291bGQKPiAr eW91IG1haW50YWluIGEgR1VJIHdpdGggMTUsMDAwKyBjb25maWd1cmF0aW9uIG9wdGlvbnM/Cj4g Kwo+ICtNb3N0IHNvbHV0aW9ucyBhc3N1bWUgeW91IGNhbiBqdXN0IHB1dCBhbGwgb3B0aW9ucyBp biBhIHNpbmdsZSBjb2RlIGJsb2NrLAo+ICt3aGljaCBpcyB1bndvcmthYmxlIGF0IEZGbXBlZydz IHNjYWxlLiAgSW5zdGVhZCwgd2Ugc3BsaXQgY29uZmlndXJhdGlvbgo+ICthY3Jvc3MgbWFueSAq QVZPcHRpb25zLWVuYWJsZWQgc3RydWN0cyosIHdoaWNoIHVzZSB0aGUgQHJlZiBhdm9wdGlvbnMK PiArIkFWT3B0aW9ucyBBUEkiIHRvIGluc3BlY3QgYW5kIGNvbmZpZ3VyZSBvcHRpb25zLCBpbmNs dWRpbmcgaW4gcHJpdmF0ZSBjb250ZXh0cy4KPiArCj4gK0FWT3B0aW9ucy1hY2Nlc3NpYmxlIG1l bWJlcnMgb2YgYSBjb250ZXh0IHNob3VsZCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZQo+ICtAcmVm IGF2b3B0aW9ucyAiQVZPcHRpb25zIEFQSSIgd2hlbmV2ZXIgcG9zc2libGUsIGV2ZW4gaWYgdGhl eSdyZSBub3QgaGlkZGVuCj4gK2luIGEgcHJpdmF0ZSBjb250ZXh0LiAgVGhhdCBlbnN1cmVzIHZh bHVlcyBhcmUgdmFsaWRhdGVkIGFzIHRoZXkncmUgc2V0LCBhbmQKPiArbWVhbnMgeW91IHdvbid0 IGhhdmUgdG8gZG8gYXMgbXVjaCB3b3JrIGlmIGEgZnV0dXJlIHZlcnNpb24gb2YgRkZtcGVnIGNo YW5nZXMKPiArdGhlIGFsbG93ZWQgdmFsdWVzLgo+ICsKCj4gK0FsdGhvdWdoIG5vdCBzdHJpY3Rs eSByZXF1aXJlZCwgaXQgaXMgYmVzdCB0byBvbmx5IG1vZGlmeSBvcHRpb25zIGR1cmluZwo+ICt0 aGUgY29uZmlndXJhdGlvbiBzdGFnZS4gIEluaXRpYWxpemVkIHN0cnVjdHMgbWF5IGJlIGFjY2Vz c2VkIGJ5IGludGVybmFsCj4gK0ZGbXBlZyB0aHJlYWRzLCBhbmQgbW9kaWZ5aW5nIHRoZW0gY2Fu IGNhdXNlIHdlaXJkIGludGVybWl0dGVudCBidWdzLgo+ICsKPiArQHN1YnNlY3Rpb24gQ29udGV4 dF9sb2dnaW5nIExvZ2dpbmc6IEFWQ2xhc3MgY29udGV4dCBzdHJ1Y3R1cmVzCj4gKwo+ICtGRm1w ZWcncyBAcmVmIGxhdnVfbG9nICJsb2dnaW5nIGZhY2lsaXR5IiBuZWVkcyB0byBiZSBzaW1wbGUg dG8gdXNlLAo+ICtidXQgZmxleGlibGUgZW5vdWdoIHRvIGxldCBwZW9wbGUgZGVidWcgcHJvYmxl bXMuICBBbmQgbXVjaCBsaWtlIG9wdGlvbnMsCj4gK2l0IG5lZWRzIHRvIHdvcmsgdGhlIHNhbWUg YWNyb3NzIGEgd2lkZSB2YXJpZXR5IG9mIHVucmVsYXRlZCBzdHJ1Y3RzLgo+ICsKPiArRkZtcGVn IHN0cnVjdHMgdGhhdCBzdXBwb3J0IHRoZSBsb2dnaW5nIGZyYW1ld29yayBhcmUgY2FsbGVkICpA cmVmIEFWQ2xhc3MKPiArY29udGV4dCBzdHJ1Y3R1cmVzKi4gIFRoZSBuYW1lIEByZWYgQVZDbGFz cyB3YXMgY2hvc2VuIGVhcmx5IGluIEZGbXBlZydzCj4gK2RldmVsb3BtZW50LCBidXQgaW4gcHJh Y3RpY2UgaXQgb25seSBjYW1lIHRvIHN0b3JlIGluZm9ybWF0aW9uIGFib3V0Cj4gK2xvZ2dpbmcs IGFuZCBhYm91dCBvcHRpb25zLgoKT1RPSCBoYW5kIEFWT3B0aW9ucyBhbmQgbG9nZ2luZyBzaG91 bGQgYmUgZGlzY3Vzc2VkIGluIHRoZSByZWxldmFudApmaWxlcywgdG8gYXZvaWQgZHVwbGljYXRp b24uCgo+ICsKPiArQHNlY3Rpb24gQ29udGV4dF9mdXJ0aGVyIEZ1cnRoZXIgaW5mb3JtYXRpb24g YWJvdXQgY29udGV4dHMKPiArCj4gK1NvIGZhciwgdGhpcyBkb2N1bWVudCBoYXMgcHJvdmlkZWQg YSB0aGVvcmV0aWNhbCBndWlkZSB0byBGRm1wZWcgY29udGV4dHMuCj4gK1RoaXMgZmluYWwgc2Vj dGlvbiBwcm92aWRlcyBzb21lIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMgdG8gdGhlIHRvcGljLAo+ ICt3aGljaCBtYXkgaGVscCByb3VuZCBvdXQgeW91ciB1bmRlcnN0YW5kaW5nLgo+ICsKPiArQHN1 YnNlY3Rpb24gQ29udGV4dF9leGFtcGxlIExlYXJuaW5nIGJ5IGV4YW1wbGU6IGNvbnRleHQgZm9y IGEgY29kZWMKPiArCj4gK0l0IGNhbiBoZWxwIHRvIGxlYXJuIGNvbnRleHRzIGJ5IGRvaW5nIGEg ZGVlcCBkaXZlIGludG8gYSBzcGVjaWZpYyBzdHJ1Y3QuCj4gK1RoaXMgc2VjdGlvbiB3aWxsIGRp c2N1c3MgQVZDb2RlY0NvbnRleHQgLSBhbiBBVk9wdGlvbnMtZW5hYmxlZCBzdHJ1Y3QKPiArdGhh dCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBlbmNvZGluZyBvciBkZWNvZGluZyBvbmUgc3Ry ZWFtIG9mIGRhdGEKPiArKGUuZy4gdGhlIHZpZGVvIGluIGEgbW92aWUpLgo+ICsKPiArVGhlIG5h bWUgIkFWQ29kZWNDb250ZXh0IiB0ZWxscyB1cyB0aGlzIGlzIGEgY29udGV4dC4gIE1hbnkgb2YK PiArQHJlZiBsaWJhdmNvZGVjL2F2Y29kZWMuaCAiaXRzIGZ1bmN0aW9ucyIgc3RhcnQgd2l0aCBh biBgYXZjdHhgIHBhcmFtZXRlciwKPiAraW5kaWNhdGluZyB0aGlzIHBhcmFtZXRlciBwcm92aWRl cyBjb250ZXh0IGZvciB0aGF0IGZ1bmN0aW9uLgo+ICsKPiArQVZDb2RlY0NvbnRleHQ6OmludGVy bmFsIGNvbnRhaW5zIHRoZSBwcml2YXRlIGNvbnRleHQuICBGb3IgZXhhbXBsZSwKPiArY29kZWMt c3BlY2lmaWMgaW5mb3JtYXRpb24gbWlnaHQgYmUgc3RvcmVkIGhlcmUuCj4gKwo+ICtBVkNvZGVj Q29udGV4dCBpcyBhbGxvY2F0ZWQgd2l0aCBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKCksIGluaXRp YWxpemVkIHdpdGgKPiArYXZjb2RlY19vcGVuMigpLCBhbmQgZnJlZWQgd2l0aCBhdmNvZGVjX2Zy ZWVfY29udGV4dCgpLiAgTW9zdCBvZiBpdHMgbWVtYmVycwo+ICthcmUgY29uZmlndXJlZCB3aXRo IHRoZSBAcmVmIGF2b3B0aW9ucyAiQVZPcHRpb25zIEFQSSIsIGJ1dCBmb3IgZXhhbXBsZSB5b3UK PiArY2FuIHNldCBBVkNvZGVjQ29udGV4dDo6ZHJhd19ob3Jpel9iYW5kKCkgaWYgeW91ciBwcm9n cmFtIGhhcHBlbnMgdG8gbmVlZCBpdC4KPiArCj4gK0FWQ29kZWNDb250ZXh0IHByb3ZpZGVzIGFu IGFic3RyYWN0IGludGVyZmFjZSB0byBtYW55IGRpZmZlcmVudCAqY29kZWNzKi4KPiArT3B0aW9u cyBzdXBwb3J0ZWQgYnkgbWFueSBjb2RlY3MgKGUuZy4gImJpdHJhdGUiKSBhcmUga2VwdCBpbiBB VkNvZGVjQ29udGV4dAo+ICthbmQgZXhwb3NlZCB3aXRoIEFWT3B0aW9ucy4gIE9wdGlvbnMgdGhh dCBhcmUgc3BlY2lmaWMgdG8gb25lIGNvZGVjIGFyZQo+ICtzdG9yZWQgaW4gdGhlIHByaXZhdGUg Y29udGV4dCwgYW5kIGFsc28gZXhwb3NlZCB3aXRoIEFWT3B0aW9ucy4KPiArCj4gK0FWQ29kZWND b250ZXh0Ojphdl9jbGFzcyBjb250YWlucyBsb2dnaW5nIG1ldGFkYXRhIHRvIGVuc3VyZSBhbGwg Y29kZWMtcmVsYXRlZAo+ICtlcnJvciBtZXNzYWdlcyBsb29rIHRoZSBzYW1lLCBwbHVzIGltcGxl bWVudGF0aW9uIGRldGFpbHMgYWJvdXQgb3B0aW9ucy4KPiArCj4gK1RvIHN1cHBvcnQgYSBzcGVj aWZpYyBjb2RlYywgQVZDb2RlY0NvbnRleHQncyBwcml2YXRlIGNvbnRleHQgaXMgc2V0IHRvCj4g K2FuIGVuY29kZXItc3BlY2lmaWMgZGF0YSB0eXBlLiAgRm9yIGV4YW1wbGUsIHRoZSB2aWRlbyBj b2RlYwo+ICtbSC4yNjRdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FkdmFuY2VkX1Zp ZGVvX0NvZGluZykgaXMgc3VwcG9ydGVkIHZpYQo+ICtbdGhlIHgyNjQgbGlicmFyeV0oaHR0cHM6 Ly93d3cudmlkZW9sYW4ub3JnL2RldmVsb3BlcnMveDI2NC5odG1sKSwgYW5kCj4gK2ltcGxlbWVu dGVkIGluIFgyNjRDb250ZXh0LiAgQWx0aG91Z2ggaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRp b24sIFgyNjRDb250ZXh0Cj4gK2lzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLiAgVGhhdCBt ZWFucyBGRm1wZWcncyBAcmVmIGZmbXBlZ192ZXJzaW9uaW5nCj4gKyJzdHJpY3QgcnVsZXMgYWJv dXQgY2hhbmdpbmcgcHVibGljIHN0cnVjdHMiIGFyZW4ndCBhcyBpbXBvcnRhbnQgaGVyZSwgc28g YQo+ICt2ZXJzaW9uIG9mIEZGbXBlZyBjb3VsZCBtb2RpZnkgWDI2NENvbnRleHQgb3IgcmVwbGFj ZSBpdCB3aXRoIGFub3RoZXIgdHlwZQo+ICthbHRvZ2V0aGVyLiAgQW4gYWR2ZXJzZSBsZWdhbCBy dWxpbmcgb3Igc2VjdXJpdHkgcHJvYmxlbSBjb3VsZCBldmVuIGZvcmNlIHVzIHRvCj4gK3N3aXRj aCB0byBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGxpYnJhcnkgd2l0aG91dCBhIG1ham9yIHZlcnNp b24gYnVtcC4KPiArCj4gK1RoZSBkZXNpZ24gb2YgQVZDb2RlY0NvbnRleHQgcHJvdmlkZXMgc2V2 ZXJhbCBpbXBvcnRhbnQgZ3VhcmFudGVlczoKPiArCj4gKy0gbGV0cyB5b3UgdXNlIHRoZSBzYW1l IGludGVyZmFjZSBmb3IgYW55IGNvZGVjCj4gKy0gc3VwcG9ydHMgY29tbW9uIGVuY29kZXIgb3B0 aW9ucyBsaWtlICJiaXRyYXRlIiB3aXRob3V0IGR1cGxpY2F0aW5nIGNvZGUKPiArLSBzdXBwb3J0 cyBlbmNvZGVyLXNwZWNpZmljIG9wdGlvbnMgbGlrZSAicHJvZmlsZSIgd2l0aG91dCBidWxraW5n IG91dCB0aGUgcHVibGljIGludGVyZmFjZQo+ICstIGV4cG9zZXMgYm90aCB0eXBlcyBvZiBvcHRp b25zIHRvIHVzZXJzLCB3aXRoIGhlbHAgdGV4dCBhbmQgZGV0ZWN0aW9uIG9mIG1pc3Npbmcgb3B0 aW9ucwo+ICstIHByb3ZpZGVzIHVuaWZvcm0gbG9nZ2luZyBvdXRwdXQKPiArLSBoaWRlcyBpbXBs ZW1lbnRhdGlvbiBkZXRhaWxzIChlLmcuIGl0cyBlbmNvZGluZyBidWZmZXIpCj4gKwoKPiArQHN1 YnNlY3Rpb24gQ29udGV4dF9jb21wYXJpc29uIExlYXJuaW5nIGJ5IGNvbXBhcmlzb246IEZGbXBl ZyB2cy4gQ3VybCBjb250ZXh0cwoKQWJvdXQgdGhpcywgSSdtIHN0aWxsIG5vdCByZWFsbHkgY29u dmluY2VkIHRoYXQgdGhpcyBzaG91bGQgYmUgcGFydCBvZgphIHJlZmVyZW5jZSwgaW4gdGhlIHNl bnNlIHRoYXQgaXQgaXMgYWRkaW5nIG1vcmUgaW5mb3JtYXRpb24gdGhhbgpyZWFsbHkgbmVlZGVk IGFuZCBpdCB0cmVhdHMgY29uY2VwdHMgcmVsYXRlZCB0byB0aGUgQyBsYW5ndWFnZSByYXRoZXIK dGhhbiB0byB0aGUgRkZtcGVnIEFQSSBpdHNlbGYuCgpbLi4uXQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZm bXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWls CmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmli ZSIuCg==