Return-Path: <tiff-bounces@lists.osgeo.org>
Delivered-To: even.rouault@spatialys.com
Received: from spool.mail.gandi.net (spool5.mail.gandi.net [217.70.178.214])
	by nmboxes134.sd4.0x35.net (Postfix) with ESMTP id 3C5D3617A9
	for <even.rouault@spatialys.com>; Tue, 15 Jan 2019 20:08:39 +0000 (UTC)
Received: from lists.osgeo.org (osgeo6.osgeo.osuosl.org [140.211.15.3])
	by spool.mail.gandi.net (Postfix) with ESMTPS id BF11FD80D23
	for <even.rouault@spatialys.com>; Tue, 15 Jan 2019 20:08:38 +0000 (UTC)
Received: from osgeo6.osgeo.osuosl.org (localhost [127.0.0.1])
	by lists.osgeo.org (Postfix) with ESMTP id DF8E26067B6C;
	Tue, 15 Jan 2019 12:08:35 -0800 (PST)
Received: from smtp.centurylink.net (mail.onyx.syn-alias.com [206.152.134.66])
 by lists.osgeo.org (Postfix) with ESMTPS id 957536067B6A
 for <tiff@lists.osgeo.org>; Tue, 15 Jan 2019 12:08:34 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; d=centurylink.net; s=ctl201402;
 c=relaxed/simple; q=dns/txt; i=@centurylink.net; t=1547582913;
 h=From:Subject:Date:To:MIME-Version:Content-Type;
 bh=SEjUvuBdY4F+leyzT07MIReyW/0=;
 b=XyvhUh9COqKrG0+KcXvJCsHXp4CogNpsf0eARyjeYLg9oCpveIf/Lkh71vOQbOxV
 AuWhgZOq5A42H+wsiByRbA2F7sjY0B+ShJqg5lsZPYJSKL2crIleYVu0RF0pp2ff
 BXAoB+SpECAkRubAQyaNsQ+PSKZRM7TSKeYm18FZx5OOiOeuVYIo86/CYc+1AFS8
 xhACqZ3DWkm7M+vKSHEsMfy2x6WROkIn/OmMMvJpRige2vdad2CYyuE4oFsu4u43
 9HUN8HeYP2zK8yl6u9VhK2SVjtGoR1ny49Sj2JtMzhmqQ3BM9zOTiaUk8A5SsKi5
 Odt5tUtJQ7ajFNQG6B3DOw==;
X_CMAE_Category: , ,
X-CNFS-Analysis: v=2.3 cv=I/8bu+og c=1 sm=1 tr=0
 a=pRXXfzkyLSJ3WBxnX0GlUA==:117 a=pRXXfzkyLSJ3WBxnX0GlUA==:17
 a=KGjhK52YXX0A:10 a=IkcTkHD0fZMA:10 a=3JhidrIBZZsA:10 a=CWC5fGzGQ7sA:10
 a=tx7JrHvRAAAA:8 a=VIQkvXxeE6NL_xwu5yIA:9 a=g0YKT37KflbXAIik:21
 a=orgO7_Pp6vbaFSoO:21 a=QEXdDO2ut3YA:10 a=c7vTru0rk6s1BW9HYb0G:22
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
X-Authed-Username: cmljaGFyZC5ub2xkZUBjZW50dXJ5bGluay5uZXQ=
Authentication-Results: smtp04.onyx.dfw.sync.lan
 smtp.user=richard.nolde@centurylink.net; auth=pass (LOGIN)
Received: from [70.59.12.79] ([70.59.12.79:44742] helo=inspiron.wriverody.net)
 by smtp.centurylink.net (envelope-from
 <richard.nolde@centurylink.net>)
 (ecelerity 3.6.25.56547 r(Core:3.6.25.0)) with ESMTPSA (cipher=AES128-SHA) 
 id 55/84-14691-1CD3E3C5; Tue, 15 Jan 2019 15:08:33 -0500
To: Binarus <lists@binarus.de>, tiff@lists.osgeo.org
References: <ea80c183-4e43-783a-40f9-e086b06fac38@binarus.de>
From: Richard Nolde <richard.nolde@centurylink.net>
Message-ID: <e20597bf-1fa3-3c47-6d63-7608bdc77933@centurylink.net>
Date: Tue, 15 Jan 2019 13:08:32 -0700
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <ea80c183-4e43-783a-40f9-e086b06fac38@binarus.de>
Content-Language: en-US
Subject: Re: [Tiff] tiffcp altering image contents - reworded,
 simplified and with example
X-BeenThere: tiff@lists.osgeo.org
X-Mailman-Version: 2.1.20
Precedence: list
List-Id: TIFF and libtiff discussion <tiff.lists.osgeo.org>
List-Unsubscribe: <https://lists.osgeo.org/mailman/options/tiff>,
 <mailto:tiff-request@lists.osgeo.org?subject=unsubscribe>
List-Post: <mailto:tiff@lists.osgeo.org>
List-Help: <mailto:tiff-request@lists.osgeo.org?subject=help>
List-Subscribe: <https://lists.osgeo.org/mailman/listinfo/tiff>,
 <mailto:tiff-request@lists.osgeo.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: tiff-bounces@lists.osgeo.org
Sender: "Tiff" <tiff-bounces@lists.osgeo.org>
X-GND-Status: LEGIT

T24gMS8xNS8xOSAxOjQ0IEFNLCBCaW5hcnVzIHdyb3RlOgo+IERlYXIgQm9iLCBSaWNoYXJkIGFu
ZCBEYW4sCj4KPiB0aGFuayB5b3UgdmVyeSBtdWNoIGZvciB5b3VyIGhlbHAgc28gZmFyLgo+Cj4g
SSB0aGluayBJIGNhbiBkcmFzdGljYWxseSByZXdvcmQgYW5kIHNpbXBsaWZ5IG15IHF1ZXN0aW9u
LCBhbmQgSSBoYXZlCj4gYXR0YWNoZWQgdHdvIGV4YW1wbGUgaW1hZ2VzIHNvIHRoYXQgeW91IGNh
biByZXByb2R1Y2UgdGhlIHByb2JsZW0uCj4KPiBMZXQncyBpZ25vcmUgdGhlIGlzc3VlcyB3aGlj
aCBhcmlzZSBmcm9tIHNvdXJjZSBpbWFnZSB0eXBlcyBiZWluZwo+IGRpZmZlcmVudCwgYW5kIGZv
Y3VzIG9uIGV4YWN0bHkgb25lIHR5cGUgb2YgaW1hZ2U6IDI0IEJQUCwgSlBFRy1jb21wcmVzc2Vk
Lgo+Cj4gSXQgc2VlbXMgdGhhdCB0aWZmY3AgYWx0ZXJzIHRoZSBpbWFnZSBkYXRhIHdoZW4gbWVy
Z2luZyBvciBjb3B5aW5nIHN1Y2gKPiBpbWFnZXMsIGluIGNvbnRyYXN0IHRvIHdoYXQgdGhlIG1h
bnVhbCBwcm9taXNlcywgYW5kIGFkZGluZyBmdXJ0aGVyCj4gZGVncmFkYXRpb24gd2l0aCBlYWNo
IGFjdGlvbiAoaS5lLiBpbiBlYWNoIHByb2Nlc3Npbmcgc3RlcCkuCj4KPiBBcyBhbiBleGFtcGxl
LCBwbGVhc2UgY29uc2lkZXIgdGhlIGF0dGFjaGVkIGZpbGVzICJpbi50aWYiIGFuZCAib3V0LnRp
ZiIuCj4KPiAiaW4udGlmIiBpcyBhbiBpbWFnZSB3aGljaCB3ZSBtaWdodCBnZXQgZnJvbSBlbHNl
d2hlcmUgb3Igd2hpY2ggbWUgbWlnaHQKPiBwcm9kdWNlIHVzaW5nIG91ciBvd24gd29ya2Zsb3cs
IGkuZS4gaXQgaXMgb3VyICJzb3VyY2UgZmlsZSIuIEl0IGlzIGEKPiBUSUZGIGltYWdlLCAyNCBC
UFAsIEpQRUctY29tcHJlc3NlZC4KPgo+ICJvdXQudGlmIiBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRp
ZmZjcCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToKPgo+IHRpZmZjcCBpbi50aWYg
b3V0LnRpZgo+Cj4gQXMgeW91IGNhbiBzZWUsICJvdXQudGlmIiBpcyBhYm91dCBoYWxmIHRoZSBz
aXplIG9mICJpbi50aWYiLCBtZWFuaW5nCj4gdGhhdCBhIGxvdCBvZiBpbmZvcm1hdGlvbiBoYXMg
YmVlbiBsb3N0IGV2ZW4gdGhvdWdoIHRoaXMgaXMgYSBzaW1wbGUKPiBjb3B5IHdpdGggbm8gbWVy
Z2luZyBvciBvdGhlciBwcm9jZXNzaW5nIQo+Cj4gRm9sbG93aW5nIERhbidzIGFkdmljZSwgSSBk
aWQKPgo+IHRpZmZpbmZvIC1zIGluLnRpZgo+Cj4gYW5kCj4KPiB0aWZmaW5mbyAtcyBvdXQudGlm
Cj4KPiBUaGUgcmVzdWx0cyAocGxlYXNlIGNvbnNpZGVyIGF0dGFjaG1lbnRzIGluLnR4dCBhbmQg
b3V0LnR4dCkgY2xlYXJseQo+IHNob3cgdGhhdCB0aGUgbnVtYmVyIG9mIHN0cmlwZXMgaGFzIGJl
ZW4ga2VwdCwgYnV0IHRoZSBzaXplIG9mIGVhY2gKPiBzdHJpcGUgaGFzIGJlZW4gZGVjcmVhc2Vk
IGJ5IGFib3V0IDUwJSwgbWVhbmluZyB0aGF0IHRoZSBpbWFnZSBzaXplCj4gcmVkdWN0aW9uIGlz
IG5vdCBqdXN0IGR1ZSB0byBnYXJiYWdlIGNvbGxlY3Rpb24sIGJ1dCB0aGF0IHJlYWwgZGF0YSBo
YXMKPiBiZWVuIGxvc3QuCj4KPiBJbiB0dXJuLCB0aGlzIG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBi
ZSBuZXcgZGVncmFkYXRpb24gY2F1c2VkIGJ5IHRpZmZjcAo+IGluIGV2ZXJ5IHByb2Nlc3Npbmcg
KG1lcmdpbmcpIHN0ZXAgd2l0aCBzdWNoIGltYWdlcy4KPgo+IEkgc3VzcGVjdCB0aGF0IHRpZmZj
cCByZWFkcyAiaW4udGlmIiwgZGVjb21wcmVzc2VzIGl0IHRvIG1lbW9yeSwgYW5kCj4gcmUtY29t
cHJlc3NlcyBpdCB3aGVuIHdyaXRpbmcgIm91dC50aWYiLiBXaGlsZSB0aGlzIHdvdWxkIGJlIE9L
IHdoZW4KPiBwcm9jZXNzaW5nIGltYWdlcyB3aGljaCBhcmUgY29tcHJlc3NlZCB1c2luZyBsb3Nz
bGVzcyBtZXRob2RzIChaSVAsIExaVywKPiBhbmQgc28gb24pLCBpdCBpcyBjb25kZW1uZWQgdG8g
Z28gaG9ycmlibHkgd3Jvbmcgd2hlbiBwcm9jZXNzaW5nCj4gSlBFRy1jb21wcmVzc2VkIGltYWdl
cy4KPgo+IElzIHRoZXJlIGEgd2F5IHRvIHNvbHZlIHRoYXQgcHJvYmxlbT8KPgo+IFRoYW5rIHlv
dSB2ZXJ5IG11Y2ggYWdhaW4sCj4KPiBCaW5hcnVzCgpJJ3ZlIGRvbmUgYSBsaXR0bGUgcG9raW5n
IGF0IHRoZSBmaWxlcyB0byBzZWUgZXhhY3RseSB3aGF0IGNoYW5nZXMKYmV0d2VlbiBpbi50aWYg
YW5kIG91dC50aWYuIFRoZSBzaW1wbGVzdCB3YXkgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24gaXMK
d2l0aCB0aGUgdGlmZmR1bXAgY29tbWFuZCB3aGljaCBnaXZlcyB0aGUgc3RyaXAgY291bnRzLCBv
ZmZzZXRzIGFuZCBKUEVHCnRhYmxlcyBhbG9uZyB3aXRoIHRoZSB1c3VhbCB0YWdzLgoKdGlmZmR1
bXAgLW0gNTEyIGluLnRpZiBvdXQudGlmIHwgc29ydCAtYiAtbiB8IGxlc3MKClRoZSB2YWx1ZSA1
MTIgaXMganVzdCBhbiBhcmJpdHJhcmlseSBsYXJnZSBudW1iZXIgZ3VhcmFudGVlZCB0byBwcmlu
dAphbGwgdGhlIHN0cmlwIG9mZnNldHMuIElmIHJ1biB0aGUgc2FtZSBjb21tYW5kIGJ1dCBwaXBl
IHRoZSBvdXRwdXQgdG8gfApncmVwIEpQRUcgaW5zdGVhZCBvZiBsZXNzLCBpdCBpcyBjbGVhciB0
aGUgSlBFRyB0YWJsZXMgYXJlIGRpZmZlcmVudCBpbgp0aGUgb3V0cHV0IGltYWdlIHNvIHRoZSBZ
Q0JDUiBkYXRhIGlzIGluIGZhY3QgYmVpbmcgcmVjb2RlZC4gVGhpcyBpcwphbHNvIGluZGljYXRl
ZCBieSBzbWFsbGVyIHN0cmlwIHNpemVzIGFuZCBkaWZmZXJlbnQgc3RyaXAgb2Zmc2V0cy4KCk5l
eHQsIEkgdHJpZWQgdXNpbmcgd2l0aCB0aGUgb3B0aW9uIHRvIHByb2R1Y2UgUkdCIGVuY29kZWQg
ZGF0YSByYXRoZXIKdGhhbiBZQ2JDciBlbmNvZGVkIGRhdGEgYW5kIGl0IGZhaWxzIHdpdGggYW4g
ZXJyb3IgZnJvbSB0aGUgSlBFRyBsaWJyYXJ5LgoKdGlmZmNwIC1jIGpwZWc6cjoxMDAgaW4udGlm
IG91dC1SR0ItMTAwLnRpZgpKUEVHTGliOiBXYXJuaW5nLCBBcHBsaWNhdGlvbiB0cmFuc2ZlcnJl
ZCB0b28gbWFueSBzY2FubGluZXMuCm91dC1SR0ItMTAwLnRpZjogRXJyb3IsIGNhbid0IHdyaXRl
IHN0cmlwIDAuCgpOZXh0LCBJIHRyaWVkIHVzaW5nIHRpZmZjcm9wLCBteSBlbmhhbmNlZCB2ZXJz
aW9uIG9mIHRpZmZjcCB3aGljaCBoYXMKc2xpZ2h0bHkgZGlmZmVyZW50IHBhcnNpbmcgb2YgdGhl
IGpwZWcgb3B0aW9uczoKCnRpZmZjcm9wIC1jIGpwZWc6cmdiOjEwMCBpbi50aWYgb3V0LVJHQi0x
MDAudGlmCgpObyBlcnJvcnMgcmVwb3J0ZWQgYW5kIHRoZSBvdXRwdXQgZmlsZSBsb29rcyBmaW5l
LgoKwqB0aWZmaW5mbyBvdXQtUkdCLTEwMC50aWYKVElGRiBEaXJlY3RvcnkgYXQgb2Zmc2V0IDB4
MzBjMTQ2ICgzMTk1MjA2KQrCoCBJbWFnZSBXaWR0aDogMzUwNCBJbWFnZSBMZW5ndGg6IDIzMzYK
wqAgUmVzb2x1dGlvbjogNzIsIDcyIHBpeGVscy9pbmNoCsKgIEJpdHMvU2FtcGxlOiA4CsKgIFNh
bXBsZSBGb3JtYXQ6IHVuc2lnbmVkIGludGVnZXIKwqAgQ29tcHJlc3Npb24gU2NoZW1lOiBKUEVH
CsKgIFBob3RvbWV0cmljIEludGVycHJldGF0aW9uOiBZQ2JDcgrCoCBPcmllbnRhdGlvbjogcm93
IDAgdG9wLCBjb2wgMCBsaHMKwqAgU2FtcGxlcy9QaXhlbDogMwrCoCBSb3dzL1N0cmlwOiAxNgrC
oCBQbGFuYXIgQ29uZmlndXJhdGlvbjogc2luZ2xlIGltYWdlIHBsYW5lCsKgIFBhZ2UgTnVtYmVy
OiAwLTEKwqAgUmVmZXJlbmNlIEJsYWNrL1doaXRlOgrCoMKgwqDCoCAwOsKgwqDCoMKgIDDCoMKg
IDI1NQrCoMKgwqDCoCAxOsKgwqAgMTI4wqDCoCAyNTUKwqDCoMKgwqAgMjrCoMKgIDEyOMKgwqAg
MjU1CsKgIERvY3VtZW50TmFtZTogaW5fb3V0LnRpZgrCoCBTb2Z0d2FyZTogR3JhcGhpY3NNYWdp
Y2sgMS4zLjI1IDIwMTYtMDktMDUgUTE2Cmh0dHA6Ly93d3cuR3JhcGhpY3NNYWdpY2sub3JnLwrC
oCBKUEVHIFRhYmxlczogKDU3NCBieXRlcykKClNvIGV2ZW4gaWYgeW91IHNwZWNpZnkgUkdCLCB5
b3UgYXJlIGdvaW5nIHRvIGdldCBZQ2JDciBlbmNvZGVkIGRhdGEuClRoaXMgaXMgY29uZmlybWVk
IGJ5IHJ1bm5pbmcgdGlmZmNyb3AgYW5kIGV4cGxpY2l0bHkgYXNraW5nIGZvciByYXcKWUNiQ3Ig
ZGF0YQoKdGlmZmNyb3AgLWMganBlZzpyYXc6MTAwIGluLnRpZiBvdXQtWUNiQ3ItMTAwLnRpZgoK
Zm9sbG93ZWQgYnkgY21wIC1iIC1sIG91dC1SR0ItMTAwLnRpZiBvdXQtWUNiQ3ItMTAwLnRpZgpl
Y2hvICQ/CjAKCkkndmUgdHJpZWQgZXZlcnkgcG9zc2libGUgY29tYmluYXRpb24gb2YgY29weWlu
ZyBhIEpQRUcgY29tcHJlc3NlZCBpbnB1dApmaWxlIHRvIGFub3RoZXIgSlBFRyBjb21wcmVzc2Vk
IG91dHB1dCBmaWxlIGFuZCB5b3Ugd2lsbCBhbHdheXMgZ2V0CllDYkNyIGVuY29kZWQgb3V0cHV0
LsKgIFRpZmZjcm9wIGhhcyBleHRlbnNpdmUgZGVidWdnaW5nIG9wdGlvbnMgaWYKY29tcGlsZWQg
d2l0aCB0aGUgREVCVUcyIGVudmlyb25tZW50IHZhcmlhYmxlIHNldAoKI2lmZGVmIERFQlVHMgrC
oCBjaGFyIGNvbXByZXNzaW9uaWRbMTZdOwoKwqAgc3dpdGNoIChpbnB1dF9jb21wcmVzc2lvbikK
wqDCoMKgIHsKwqDCoMKgIGNhc2UgQ09NUFJFU1NJT05fTk9ORTrCoMKgwqDCoMKgIC8qIDHCoCBk
dW1wIG1vZGUgKi8KwqDCoMKgwqDCoMKgwqDCoCBzdHJjcHkgKGNvbXByZXNzaW9uaWQsICJOb25l
L2R1bXAiKTsKwqDCoMKgwqDCoMKgwqDCoCBicmVhazvCoMKgwqDCoMKgwqDCoMKgCsKgwqDCoCBj
YXNlIENPTVBSRVNTSU9OX0NDSVRUUkxFOsKgwqDCoCAvKiAyIENDSVRUIG1vZGlmaWVkIEh1ZmZt
YW4gUkxFICovCsKgwqDCoMKgwqDCoMKgwqAgc3RyY3B5IChjb21wcmVzc2lvbmlkLCAiSHVmZm1h
biBSTEUiKTsKwqDCoMKgwqDCoMKgwqDCoCBicmVhazvCoMKgwqDCoMKgwqDCoMKgCsKgwqDCoCBj
YXNlIENPTVBSRVNTSU9OX0NDSVRURkFYMzrCoMKgIC8qIDMgQ0NJVFQgR3JvdXAgMyBmYXggZW5j
b2RpbmcgKi8KwqDCoMKgwqDCoMKgwqDCoCBzdHJjcHkgKGNvbXByZXNzaW9uaWQsICJHcm91cDMg
RmF4Iik7CsKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7wqDCoMKgwqDCoMKgwqDCoArCoMKgwqAgY2Fz
ZSBDT01QUkVTU0lPTl9DQ0lUVEZBWDQ6wqDCoCAvKiA0IENDSVRUIEdyb3VwIDQgZmF4IGVuY29k
aW5nICovCsKgwqDCoMKgwqDCoMKgwqAgc3RyY3B5IChjb21wcmVzc2lvbmlkLCAiR3JvdXA0IEZh
eCIpOwrCoMKgwqDCoMKgwqDCoMKgIGJyZWFrO8KgwqDCoMKgwqDCoMKgwqAKwqDCoMKgIGNhc2Ug
Q09NUFJFU1NJT05fTFpXOsKgwqDCoMKgwqDCoMKgwqAgLyogNSBMZW1wZWwtWml2wqAgJiBXZWxj
aCAqLwrCoMKgwqDCoMKgwqDCoMKgIHN0cmNweSAoY29tcHJlc3Npb25pZCwgIkxaVyIpOwrCoMKg
wqDCoMKgwqDCoMKgIGJyZWFrO8KgwqDCoMKgwqDCoMKgwqAKwqDCoMKgIGNhc2UgQ09NUFJFU1NJ
T05fT0pQRUc6wqDCoMKgwqDCoMKgIC8qIDYgITYuMCBKUEVHICovCsKgwqDCoMKgwqDCoMKgwqAg
c3RyY3B5IChjb21wcmVzc2lvbmlkLCAiT2xkIEpwZWciKTsKwqDCoMKgwqDCoMKgwqDCoCBicmVh
azvCoMKgwqDCoMKgwqDCoMKgCsKgwqDCoCBjYXNlIENPTVBSRVNTSU9OX0pQRUc6wqDCoMKgwqDC
oMKgwqAgLyogNyAlSlBFRyBEQ1QgY29tcHJlc3Npb24gKi8KwqDCoMKgwqDCoMKgwqDCoCBzdHJj
cHkgKGNvbXByZXNzaW9uaWQsICJOZXcgSnBlZyIpOwrCoMKgwqDCoMKgwqDCoMKgIGJyZWFrO8Kg
wqDCoMKgwqDCoMKgCgpJIGZvdW5kIHRoZSBmb2xsb3dpbmcgbm90ZSB3aGlsZSBzZWFyY2hpbmcg
Zm9yIGEgd2F5IHRvIGNvcHkgSlBFRyBpbgpUSUZGIGRhdGEgd2l0aG91dCByZWNvbXByZXNzaW5n
OgoKT2xkIHN0eWxlIFRJRkYtSlBFRyAoY29tcHJlc3Npb24gdHlwZSA2KSBiYXNpY2FsbHkgc3R1
ZmZlZCBhIG5vcm1hbCBKRklGCmZpbGUgaW5zaWRlIG9mIGEgVElGRiB3cmFwcGVyLiBUaGUgbmV3
ZXIgc3R5bGUgVElGRi1KUEVHIChjb21wcmVzc2lvbgp0eXBlIDcpIGFsbG93cyB0aGUgSlBFRyB0
YWJsZSBkYXRhIChIdWZmbWFuLCBxdWFudGl6YXRpb24pLCB0byBiZSBzdG9yZWQKaW4gYSBzZXBh
cmF0ZSB0YWcgKDB4MDE1QiBKUEVHVGFibGVzKS4gVGhpcyBhbGxvd3MgeW91IHRvIHB1dCBzdHJp
cHMgb2YKSlBFRyBkYXRhIHdpdGggU09JL0VPSSBtYXJrZXJzIGluIHRoZSBmaWxlIHdpdGhvdXQg
aGF2aW5nIHRvIHJlcGVhdCB0aGUKSHVmZm1hbiBhbmQgUXVhbnRpemF0aW9uIHRhYmxlcy4gVGhp
cyBpcyBwcm9iYWJseSB3aGF0IHlvdSdyZSBzZWVpbmcKd2l0aCB5b3VyIGZpbGUuIFRoZSBpbmRp
dmlkdWFsIHN0cmlwcyBiZWdpbiB3aXRoIHRoZSBzZXF1ZW5jZSBGRkQ4LCBidXQKYXJlIG1pc3Np
bmcgdGhlIEh1ZmZtYW4gYW5kIHF1YW50aXphdGlvbiB0YWJsZXMuIFRoaXMgaXMgdGhlIHdheSB0
aGF0ClBob3Rvc2hvcCBwcm9kdWN0cyB1c3VhbGx5IHdyaXRlIHRoZSBmaWxlcy4KCkFub3RoZXIg
cG9ydGlvbiBvZiB0aGUgdGlmZmNyb3Agc291cmNlIGNvZGU6CgouLi4KCsKgIGlmIChpbnB1dF9j
b21wcmVzc2lvbiA9PSBDT01QUkVTU0lPTl9KUEVHKQrCoMKgwqAge8KgIC8qIEZvcmNlIGNvbnZl
cnNpb24gdG8gUkdCICovCsKgwqDCoCBqcGVnY29sb3Jtb2RlID0gSlBFR0NPTE9STU9ERV9SR0I7
CsKgwqDCoCBUSUZGU2V0RmllbGQoaW4sIFRJRkZUQUdfSlBFR0NPTE9STU9ERSwgSlBFR0NPTE9S
TU9ERV9SR0IpOwrCoMKgwqAgfQrCoCAvKiBUaGUgY2xhdXNlIHVwIHRvIHRoZSByZWFkIHN0YXRl
bWVudCBpcyB0YWtlbiBmcm9tIFRvbSBMYW5lJ3MgdGlmZmNwCnBhdGNoICovCsKgIGVsc2UKwqDC
oMKgIHvCoMKgIC8qIE90aGVyd2lzZSwgY2FuJ3QgaGFuZGxlIHN1YnNhbXBsZWQgaW5wdXQgKi8K
wqDCoMKgIGlmIChpbnB1dF9waG90b21ldHJpYyA9PSBQSE9UT01FVFJJQ19ZQ0JDUikKwqDCoMKg
wqDCoCB7CsKgwqDCoMKgwqAgVElGRkdldEZpZWxkRGVmYXVsdGVkKGluLCBUSUZGVEFHX1lDQkNS
U1VCU0FNUExJTkcsCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgJnN1YnNhbXBsaW5nX2hvcml6LCAmc3Vic2FtcGxpbmdfdmVydCk7CsKgwqDCoMKg
wqAgaWYgKHN1YnNhbXBsaW5nX2hvcml6ICE9IDEgfHwgc3Vic2FtcGxpbmdfdmVydCAhPSAxKQrC
oMKgwqDCoMKgwqDCoCB7CsKgwqDCoMKgwqDCoMKgIFRJRkZFcnJvcigibG9hZEltYWdlIiwKwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJDYW4ndCBjb3B5L2NvbnZlcnQgc3Vic2FtcGxl
ZCBpbWFnZSB3aXRoIHN1YnNhbXBsaW5nICVkCmhvcml6ICVkIHZlcnQiLArCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgc3Vic2FtcGxpbmdfaG9yaXosIHN1YnNhbXBsaW5nX3ZlcnQpOwrC
oMKgwqDCoMKgwqDCoCByZXR1cm4gKC0xKTsKwqDCoMKgwqDCoMKgwqAgfQrCoMKgwqDCoMKgwqDC
oCB9CsKgwqDCoCB9CgouLi4KCsKgIGlmIChjb21wcmVzc2lvbiAhPSAodWludDE2KS0xKQrCoMKg
wqAgVElGRlNldEZpZWxkKG91dCwgVElGRlRBR19DT01QUkVTU0lPTiwgY29tcHJlc3Npb24pOwrC
oCBlbHNlCsKgwqDCoCB7IC8qIE9KUEVHIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgZm9yIHdyaXRp
bmcgc28gdXBncmFkZSB0byBKUEVHICovCsKgwqDCoCBpZiAoaW5wdXRfY29tcHJlc3Npb24gPT0g
Q09NUFJFU1NJT05fT0pQRUcpCsKgwqDCoMKgwqAgewrCoMKgwqDCoMKgIGNvbXByZXNzaW9uID0g
Q09NUFJFU1NJT05fSlBFRzsKwqDCoMKgwqDCoCBqcGVnY29sb3Jtb2RlID0gSlBFR0NPTE9STU9E
RV9SQVc7CsKgwqDCoMKgwqAgVElGRlNldEZpZWxkKG91dCwgVElGRlRBR19DT01QUkVTU0lPTiwg
Q09NUFJFU1NJT05fSlBFRyk7CsKgwqDCoMKgwqAgfQrCoMKgwqAgZWxzZSAvKiBVc2UgdGhlIGNv
bXByZXNzaW9uIGZyb20gdGhlIGlucHV0IGZpbGUgKi8KwqDCoMKgwqDCoCBDb3B5RmllbGQoVElG
RlRBR19DT01QUkVTU0lPTiwgY29tcHJlc3Npb24pOwrCoMKgwqAgfQoKwqAgaWYgKGNvbXByZXNz
aW9uID09IENPTVBSRVNTSU9OX0pQRUcpCsKgwqDCoCB7CsKgwqDCoCBpZiAoKGlucHV0X3Bob3Rv
bWV0cmljID09IFBIT1RPTUVUUklDX1BBTEVUVEUpIHx8wqAgLyogY29sb3IgbWFwCmluZGV4ZWQg
Ki8KwqDCoMKgwqDCoMKgwqAgKGlucHV0X3Bob3RvbWV0cmljID09IFBIT1RPTUVUUklDX01BU0sp
KcKgwqDCoMKgwqDCoCAvKiBob2xkb3V0IG1hc2sgKi8KwqDCoMKgwqDCoCB7CsKgwqDCoMKgwqAg
VElGRkVycm9yICgid3JpdGVTaW5nbGVTZWN0aW9uIiwKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgIkpQRUcgY29tcHJlc3Npb24gY2Fubm90IGJlIHVzZWQgd2l0aCAlcyBpbWFnZSBk
YXRhIiwKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGlucHV0X3Bob3RvbWV0cmlj
ID09IFBIT1RPTUVUUklDX1BBTEVUVEUpID8KwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgInBhbGV0dGUiIDogIm1hc2siKTsKwqDCoMKgwqDCoCByZXR1cm4gKC0xKTsKwqDCoMKgwqDC
oCB9CsKgwqDCoCBpZiAoKGlucHV0X3Bob3RvbWV0cmljID09IFBIT1RPTUVUUklDX1JHQikgJiYK
wqDCoMKgwqDCoMKgwqAgKGpwZWdjb2xvcm1vZGUgPT0gSlBFR0NPTE9STU9ERV9SR0IpKQrCoMKg
wqDCoMKgIFRJRkZTZXRGaWVsZChvdXQsIFRJRkZUQUdfUEhPVE9NRVRSSUMsIFBIT1RPTUVUUklD
X1lDQkNSKTsKwqDCoMKgIGVsc2UKwqDCoMKgwqDCoMKgwqAgVElGRlNldEZpZWxkKG91dCwgVElG
RlRBR19QSE9UT01FVFJJQywgaW5wdXRfcGhvdG9tZXRyaWMpOwrCoMKgwqAgfQoKVGhlIHBvaW50
IG9mIHRoaXMgaXMgdGhhdCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYW55d2F5IHRvIGZvcmNl
CmxpYnRpZmYgdG8gbm90IHJlLWVuY29kZSB0aGUgZGF0YSwgYnV0IHRoaXMgaXMgZHVlIHRvIGEg
Y2hhbmdlIGluIHRoZQp3YXkgTGliVElGRiBpbnRlcmFjdHMgd2l0aCB0aGUgSlBFRyBzdWJzeXN0
ZW0uIEkgZG9uJ3Qga25vdyB3aHkgdGhpcyBpcwpzbyBhbmQgSSBjb3VsZCBiZSB3cm9uZywgYnV0
IG5laXRoZXIgdGlmZmNwIG5vciB0aWZmY3JvcCBzZWVtcyB0byBiZQp3aWxsaW5nIHRvIGNvcHkg
aW5wdXQgdG8gb3V0cHV0IHdpdGhvdXQgcmVjb2RpbmcuIEkndmUgc3R1ZGllZCB0aGUKdGlmZmNw
IGFuZCB0aWZmY3JvcCBzb3VyY2UgY29kZSBhZ2FpbiBhbmQgSSBjYW5ub3Qgc2VlIGFueSB3YXkg
dG8gY2hhbmdlCnRoYXQgYmVoYXZpb3IgdW5sZXNzIHlvdSBjb3VsZCBhZGQgYW4gb3V0cHV0IG9w
dGlvbiB0aGF0IHVzZWQKVElGRldyaXRlUmF3U3RyaXAgaW5zdGVhZCBvZiBUSUZGV3JpdGVFbmNv
ZGVkU3RyaXAgb3IgVElGRldyaXRlU2NhbmxpbmUKYW5kIEknbSBub3Qgc3VyZSBub3cgdGhhdCB3
b3VsZCB3b3JrIHdpdGggSlBFRyBkYXRhIHNpbmNlIHRoZSByYXcgZGF0YQpoYXMgdG8gYmUgaW50
ZXJwcmV0ZWQgd2l0aCB0aGUgSlBFRyB0YWJsZSBkYXRhLgoKSXQgbG9va3MgdG8gbWUgdGhhdCB5
b3UgYXJlIGdvaW5nIHRvIGhhdmUgdG8gcHJvY2VzcyB5b3VyIGRhdGEgaW4gYQpzaW5nbGUgcGFz
cyBpZiB5b3UgdXNlIEpQRUcgZW5jb2RpbmcuIFRoZSBuZXh0IGJlc3Qgb3B0aW9uIHdvdWxkIGJl
IFppcAooRGVmbGF0ZSkgZW5jb2Rpbmcgd2l0aCBob3Jpem9udGFsIHByZWRpY3RvciBzZXQgdG8g
Mi4gSSB1c2VkIGEgc2FtcGxlCmZpbGUgaGVyZSB0aGF0IHdhcyBwcm9kdWNlZCBieSBSYXdUaGVy
YXBlZSBhcyBhbiA4IGJpdCBSR0IgVGlmZiBmaWxlCndpdGggRGVmbGF0ZSBjb21wcmVzc2lvbi4g
QmFzZWQgb24gdGhlIHNpemVzIGJlbG93LCBpdCBsb29rcyBsaWtlIHRpZmZjcAp1c2VzIGxldmVs
IHA5IChzbG93ZXN0IGJ1dCBiZXN0IGNvbXByZXNzaW9uKSBhcyB0aGUgZGVmYXVsdCBidXQgd2l0
aG91dAp0aGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNpbmcgdmFsdWUgb2YgMiB3aGljaCByZWR1Y2Vz
IHRoZSBmaWxlIHNpemUKc2xpZ2h0bHksIGF0IGxlYXN0IGZvciBteSB0ZXN0IGZpbGUuCgpscyAt
bFMgRDIwMjAwMC04Yml0KnRpZiB8IGF3ayAnIHsgcHJpbnRmICgiU2l6ZTogJThkIFJhdGlvOiAl
NS4yZsKgCiVzXG4iLCAkNSwgJDUvMTkyMDM0MiwgJDkpfScKClNpemU6wqAgMTkyMDM0MiBSYXRp
bzrCoCAxLjAwwqAgRDIwMjAwMC04Yml0LW5vbmUtY29tcHJlc3MudGlmClNpemU6wqAgMTYyNDgy
MCBSYXRpbzrCoCAwLjg1wqAgRDIwMjAwMC04Yml0LWx6dy1jb21wcmVzcy50aWYKU2l6ZTrCoCAx
MzQ5NTM4IFJhdGlvOsKgIDAuNzDCoCBEMjAyMDAwLThiaXQtemlwLWNvbXByZXNzLnRpZgpTaXpl
OsKgIDEzNDk1MzggUmF0aW86wqAgMC43MMKgIEQyMDIwMDAtOGJpdC16aXAtcDktY29tcHJlc3Mu
dGlmClNpemU6wqAgMTM0MjY5OCBSYXRpbzrCoCAwLjcwwqAgRDIwMjAwMC04Yml0LnRpZgpTaXpl
OsKgIDEwMzU1MDQgUmF0aW86wqAgMC41NMKgIEQyMDIwMDAtOGJpdC16aXAtMi1wOS1jb21wcmVz
cy50aWYKU2l6ZTogwqAgNDIyMDQwIFJhdGlvOsKgIDAuMjLCoCBEMjAyMDAwLThiaXQtanBlZy0x
MDAtY29tcHJlc3MudGlmCgpJJ20gaW52ZXN0aWdhdGluZyBvbiBvbGQgdXRpbGl0eSBjYWxsZWQg
dGlmZnRvb2wgdG8gc2VlIGhvdyBpdCB3b3VsZApkZWFsIHdpdGggeW91ciBkYXRhIGJ1dCBJJ20g
aGF2aW5nIGEgYml0IG9mIGRpZmZpY3VsdHkgYnVpbGRpbmcgaXQgc2luY2UKaXQgaXMgc29tZSAx
NCB5ZWFycyBvbGQgYW5kIHRoZSBNYWtlZmlsZSBpcyBnb2luZyB0byB0YWtlIHNvbWUgaGFja2lu
Zwp0byBnZXQgY29uZmlndXJlZCBmb3IgYSBtb2Rlcm4gTGludXggc3lzdGVtLgoKUmljaGFyZAoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClRpZmYgbWFp
bGluZyBsaXN0ClRpZmZAbGlzdHMub3NnZW8ub3JnCmh0dHBzOi8vbGlzdHMub3NnZW8ub3JnL21h
aWxtYW4vbGlzdGluZm8vdGlmZgo=

