Delivered-To: j.glisse@gmail.com
Received: by 10.142.248.33 with SMTP id v33cs108118wfh;
        Fri, 27 Jan 2012 09:18:53 -0800 (PST)
Received: by 10.224.72.207 with SMTP id n15mr167333qaj.14.1327684732553;
        Fri, 27 Jan 2012 09:18:52 -0800 (PST)
Return-Path: <dri-devel-bounces+glisse=freedesktop.org@lists.freedesktop.org>
Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177])
        by mx.google.com with ESMTP id gc3si7224679qab.84.2012.01.27.09.18.51;
        Fri, 27 Jan 2012 09:18:52 -0800 (PST)
Received-SPF: pass (google.com: domain of dri-devel-bounces+glisse=freedesktop.org@lists.freedesktop.org designates 131.252.210.177 as permitted sender) client-ip=131.252.210.177;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of dri-devel-bounces+glisse=freedesktop.org@lists.freedesktop.org designates 131.252.210.177 as permitted sender) smtp.mail=dri-devel-bounces+glisse=freedesktop.org@lists.freedesktop.org; dkim=neutral (body hash did not verify) header.i=@gmail.com
Received: by gabe.freedesktop.org (Postfix)
	id 969E4A0D14; Fri, 27 Jan 2012 09:18:51 -0800 (PST)
Delivered-To: glisse@freedesktop.org
Received: from gabe.freedesktop.org (localhost [127.0.0.1])
	by gabe.freedesktop.org (Postfix) with ESMTP id 89C92A0D13
	for <glisse@freedesktop.org>; Fri, 27 Jan 2012 09:18:51 -0800 (PST)
X-Original-To: dri-devel@lists.freedesktop.org
Delivered-To: dri-devel@lists.freedesktop.org
Received: from mail-qy0-f177.google.com (mail-qy0-f177.google.com
	[209.85.216.177])
	by gabe.freedesktop.org (Postfix) with ESMTP id 5DF759EBF3
	for <dri-devel@lists.freedesktop.org>;
	Fri, 27 Jan 2012 09:18:07 -0800 (PST)
Received: by qcsc14 with SMTP id c14so1139988qcs.36
	for <dri-devel@lists.freedesktop.org>;
	Fri, 27 Jan 2012 09:18:06 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references
	:mime-version:content-type:content-transfer-encoding;
	bh=mH4/JcDQ6XSbJXzv4b8Lw6A1x+7KVyZRbJ9e3BhtGTs=;
	b=AcT2eJukhHempVM1Liw7Tdinagqrtdj2RFngliCjZANAoT5zB7HRucP8JJmp3ICMk+
	ERqMp3MQpak1FsQuaCi4XmAKQOKBNtK8yaJDvC77q+sPq58Zfda2DX64UR7MfCK2QA6N
	ZVkAis0HggmzIsVsRMRBpOaeZktoiuFFsGdfw=
Received: by 10.229.135.74 with SMTP id m10mr2905650qct.89.1327684686837;
	Fri, 27 Jan 2012 09:18:06 -0800 (PST)
Received: from localhost.localdomain
	(static-74-96-105-49.washdc.fios.verizon.net. [74.96.105.49])
	by mx.google.com with ESMTPS id s18sm16162691qaz.15.2012.01.27.09.18.05
	(version=SSLv3 cipher=OTHER); Fri, 27 Jan 2012 09:18:06 -0800 (PST)
From: alexdeucher@gmail.com
To: dri-devel@lists.freedesktop.org
Subject: [PATCH] drm/radeon/kms: add support for streamout v7
Date: Fri, 27 Jan 2012 12:17:59 -0500
Message-Id: <1327684679-14730-1-git-send-email-alexdeucher@gmail.com>
X-Mailer: git-send-email 1.7.7.5
In-Reply-To: <1327681232-5550-1-git-send-email-alexdeucher@gmail.com>
References: <1327681232-5550-1-git-send-email-alexdeucher@gmail.com>
MIME-Version: 1.0
Cc: Alex Deucher <alexander.deucher@amd.com>
X-BeenThere: dri-devel@lists.freedesktop.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: Direct Rendering Infrastructure - Development
	<dri-devel.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/options/dri-devel>,
	<mailto:dri-devel-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dri-devel>
List-Post: <mailto:dri-devel@lists.freedesktop.org>
List-Help: <mailto:dri-devel-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dri-devel>,
	<mailto:dri-devel-request@lists.freedesktop.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: dri-devel-bounces+glisse=freedesktop.org@lists.freedesktop.org
Errors-To: dri-devel-bounces+glisse=freedesktop.org@lists.freedesktop.org

RnJvbTogTWFyZWsgT2zFocOhayA8bWFyYWVvQGdtYWlsLmNvbT4KCnYyOiBhZ2Q1ZjogYWRkIHN0
cm1vdXQgQ1MgY2hlY2tpbmcsIGNvcHlfZHcgcmVnaXN0ZXIgY2hlY2tpbmcKCnYzOiBhZ2Q1Zjog
ZG9uJ3QgdXNlIGNzX2NoZWNrX3JlZygpIGZvciBjb3B5X2R3IGNoZWNraW5nIGFzIGl0CndpbGwg
aW5jb3JyZWN0bHkgcGF0Y2ggdGhlIGNvbW1hbmQgc3RyZWFtIGZvciBjZXJ0YWluIHJlZ3MuCgp2
NDogYWdkNWY6IGFkZCB3YXJuaW5nIGlmIHNhZmUgcmVnIGNoZWNrIGZhaWxzIGZvciBjb3B5X2R3
Cgp2NTogYWdkNWY6IGFkZCBzdHJpY3RlciBjaGVja2luZyBmb3IgNnh4Lzd4eAoKdjY6IGFnZDVm
OiBhZGQgcmFuZ2UgY2hlY2tpbmcgZm9yIGNvcHlfZHcgb24gZWcrLAphZGQgc3hfc3VyZmFjZV9z
eW5jIHRvIHNhZmUgcmVnIGxpc3QgZm9yIDd4eC4KCnY3OiBhZ2Q1ZjogYWRkIHN0cmljdGVyIGNo
ZWNraW5nIGZvciBlZysKClNpZ25lZC1vZmYtYnk6IE1hcmVrIE9sxaHDoWsgPG1hcmFlb0BnbWFp
bC5jb20+ClNpZ25lZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1k
LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbl9jcy5jICAgICB8ICAx
ODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24v
ZXZlcmdyZWVuZC5oICAgICAgIHwgICAgOSArKwogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAw
X2NzLmMgICAgICAgICAgfCAgMTc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVy
cy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oICAgICAgICAgICAgfCAgICA2ICsKIGRyaXZlcnMvZ3B1
L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jICAgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUvZHJt
L3JhZGVvbi9yZWdfc3Jjcy9jYXltYW4gICAgfCAgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0vcmFk
ZW9uL3JlZ19zcmNzL2V2ZXJncmVlbiB8ICAgMTAgKysKIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24v
cmVnX3NyY3MvcjYwMCAgICAgIHwgICAxMSArKwogOCBmaWxlcyBjaGFuZ2VkLCA0MDcgaW5zZXJ0
aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFk
ZW9uL2V2ZXJncmVlbl9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9ldmVyZ3JlZW5fY3Mu
YwppbmRleCBmNzQ0MmU2Li4yYzM1OTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFk
ZW9uL2V2ZXJncmVlbl9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdyZWVu
X2NzLmMKQEAgLTYwLDYgKzYwLDEwIEBAIHN0cnVjdCBldmVyZ3JlZW5fY3NfdHJhY2sgewogCXUz
MgkJCWNiX3NoYWRlcl9tYXNrOwogCXUzMgkJCXZndF9zdHJtb3V0X2NvbmZpZzsKIAl1MzIJCQl2
Z3Rfc3RybW91dF9idWZmZXJfY29uZmlnOworCXN0cnVjdCByYWRlb25fYm8JKnZndF9zdHJtb3V0
X2JvWzRdOworCXU2NAkJCXZndF9zdHJtb3V0X2JvX21jWzRdOworCXUzMgkJCXZndF9zdHJtb3V0
X2JvX29mZnNldFs0XTsKKwl1MzIJCQl2Z3Rfc3RybW91dF9zaXplWzRdOwogCXUzMgkJCWRiX2Rl
cHRoX2NvbnRyb2w7CiAJdTMyCQkJZGJfZGVwdGhfdmlldzsKIAl1MzIJCQlkYl9kZXB0aF9zaXpl
OwpAQCAtMTU5LDE2ICsxNjMsNDEgQEAgc3RhdGljIHZvaWQgZXZlcmdyZWVuX2NzX3RyYWNrX2lu
aXQoc3RydWN0IGV2ZXJncmVlbl9jc190cmFjayAqdHJhY2spCiAJdHJhY2stPmRiX3Nfd3JpdGVf
b2Zmc2V0ID0gMHhGRkZGRkZGRjsKIAl0cmFjay0+ZGJfc19yZWFkX2JvID0gTlVMTDsKIAl0cmFj
ay0+ZGJfc193cml0ZV9ibyA9IE5VTEw7CisKKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJ
CXRyYWNrLT52Z3Rfc3RybW91dF9zaXplW2ldID0gMDsKKwkJdHJhY2stPnZndF9zdHJtb3V0X2Jv
W2ldID0gTlVMTDsKKwkJdHJhY2stPnZndF9zdHJtb3V0X2JvX29mZnNldFtpXSA9IDB4RkZGRkZG
RkY7CisJCXRyYWNrLT52Z3Rfc3RybW91dF9ib19tY1tpXSA9IDB4RkZGRkZGRkY7CisJfQogfQog
CiBzdGF0aWMgaW50IGV2ZXJncmVlbl9jc190cmFja19jaGVjayhzdHJ1Y3QgcmFkZW9uX2NzX3Bh
cnNlciAqcCkKIHsKIAlzdHJ1Y3QgZXZlcmdyZWVuX2NzX3RyYWNrICp0cmFjayA9IHAtPnRyYWNr
OworCWludCBpLCBqOwogCi0JLyogd2UgZG9uJ3Qgc3VwcG9ydCBzdHJlYW0gb3V0IGJ1ZmZlciB5
ZXQgKi8KLQlpZiAodHJhY2stPnZndF9zdHJtb3V0X2NvbmZpZyB8fCB0cmFjay0+dmd0X3N0cm1v
dXRfYnVmZmVyX2NvbmZpZykgewotCQlkZXZfd2FybihwLT5kZXYsICJ0aGlzIGtlcm5lbCBkb2Vz
bid0IHN1cHBvcnQgU01YIG91dHB1dCBidWZmZXJcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkv
KiBjaGVjayBzdHJlYW1vdXQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCWlmICh0
cmFjay0+dmd0X3N0cm1vdXRfY29uZmlnICYgKDEgPDwgaSkpIHsKKwkJCWZvciAoaiA9IDA7IGog
PCA0OyBqKyspIHsKKwkJCQlpZiAoKHRyYWNrLT52Z3Rfc3RybW91dF9idWZmZXJfY29uZmlnID4+
IChpICogNCkpICYgKDEgPDwgaikpIHsKKwkJCQkJaWYgKHRyYWNrLT52Z3Rfc3RybW91dF9ib1tq
XSkgeworCQkJCQkJdTY0IG9mZnNldCA9ICh1NjQpdHJhY2stPnZndF9zdHJtb3V0X2JvX29mZnNl
dFtqXSArCisJCQkJCQkJKHU2NCl0cmFjay0+dmd0X3N0cm1vdXRfc2l6ZVtqXTsKKwkJCQkJCWlm
IChvZmZzZXQgPiByYWRlb25fYm9fc2l6ZSh0cmFjay0+dmd0X3N0cm1vdXRfYm9baV0pKSB7CisJ
CQkJCQkJRFJNX0VSUk9SKCJzdHJlYW1vdXQgJWQgYm8gdG9vIHNtYWxsOiAweCVsbHgsIDB4JWx4
XG4iLAorCQkJCQkJCQkgIGosIG9mZnNldCwKKwkJCQkJCQkJICByYWRlb25fYm9fc2l6ZSh0cmFj
ay0+dmd0X3N0cm1vdXRfYm9bal0pKTsKKwkJCQkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCQkJCX0K
KwkJCQkJfSBlbHNlIHsKKwkJCQkJCWRldl93YXJuKHAtPmRldiwgIk5vIGJ1ZmZlciBmb3Igc3Ry
ZWFtb3V0ICVkXG4iLCBqKTsKKwkJCQkJCXJldHVybiAtRUlOVkFMOworCQkJCQl9CisJCQkJfQor
CQkJfQorCQl9CiAJfQogCiAJLyogWFhYIGZpbGwgaW4gKi8KQEAgLTU5Nyw2ICs2MjYsMzggQEAg
c3RhdGljIGludCBldmVyZ3JlZW5fY3NfY2hlY2tfcmVnKHN0cnVjdCByYWRlb25fY3NfcGFyc2Vy
ICpwLCB1MzIgcmVnLCB1MzIgaWR4KQogCWNhc2UgVkdUX1NUUk1PVVRfQlVGRkVSX0NPTkZJRzoK
IAkJdHJhY2stPnZndF9zdHJtb3V0X2J1ZmZlcl9jb25maWcgPSByYWRlb25fZ2V0X2liX3ZhbHVl
KHAsIGlkeCk7CiAJCWJyZWFrOworCWNhc2UgVkdUX1NUUk1PVVRfQlVGRkVSX0JBU0VfMDoKKwlj
YXNlIFZHVF9TVFJNT1VUX0JVRkZFUl9CQVNFXzE6CisJY2FzZSBWR1RfU1RSTU9VVF9CVUZGRVJf
QkFTRV8yOgorCWNhc2UgVkdUX1NUUk1PVVRfQlVGRkVSX0JBU0VfMzoKKwkJciA9IGV2ZXJncmVl
bl9jc19wYWNrZXRfbmV4dF9yZWxvYyhwLCAmcmVsb2MpOworCQlpZiAocikgeworCQkJZGV2X3dh
cm4ocC0+ZGV2LCAiYmFkIFNFVF9DT05URVhUX1JFRyAiCisJCQkJCSIweCUwNFhcbiIsIHJlZyk7
CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQl0bXAgPSAocmVnIC0gVkdUX1NUUk1PVVRfQlVG
RkVSX0JBU0VfMCkgLyAxNjsKKwkJdHJhY2stPnZndF9zdHJtb3V0X2JvX29mZnNldFt0bXBdID0g
cmFkZW9uX2dldF9pYl92YWx1ZShwLCBpZHgpIDw8IDg7CisJCWliW2lkeF0gKz0gKHUzMikoKHJl
bG9jLT5sb2JqLmdwdV9vZmZzZXQgPj4gOCkgJiAweGZmZmZmZmZmKTsKKwkJdHJhY2stPnZndF9z
dHJtb3V0X2JvW3RtcF0gPSByZWxvYy0+cm9iajsKKwkJdHJhY2stPnZndF9zdHJtb3V0X2JvX21j
W3RtcF0gPSByZWxvYy0+bG9iai5ncHVfb2Zmc2V0OworCQlicmVhazsKKwljYXNlIFZHVF9TVFJN
T1VUX0JVRkZFUl9TSVpFXzA6CisJY2FzZSBWR1RfU1RSTU9VVF9CVUZGRVJfU0laRV8xOgorCWNh
c2UgVkdUX1NUUk1PVVRfQlVGRkVSX1NJWkVfMjoKKwljYXNlIFZHVF9TVFJNT1VUX0JVRkZFUl9T
SVpFXzM6CisJCXRtcCA9IChyZWcgLSBWR1RfU1RSTU9VVF9CVUZGRVJfU0laRV8wKSAvIDE2Owor
CQkvKiBzaXplIGluIHJlZ2lzdGVyIGlzIERXcywgY29udmVydCB0byBieXRlcyAqLworCQl0cmFj
ay0+dmd0X3N0cm1vdXRfc2l6ZVt0bXBdID0gcmFkZW9uX2dldF9pYl92YWx1ZShwLCBpZHgpICog
NDsKKwkJYnJlYWs7CisJY2FzZSBDUF9DT0hFUl9CQVNFOgorCQlyID0gZXZlcmdyZWVuX2NzX3Bh
Y2tldF9uZXh0X3JlbG9jKHAsICZyZWxvYyk7CisJCWlmIChyKSB7CisJCQlkZXZfd2FybihwLT5k
ZXYsICJtaXNzaW5nIHJlbG9jIGZvciBDUF9DT0hFUl9CQVNFICIKKwkJCQkJIjB4JTA0WFxuIiwg
cmVnKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWliW2lkeF0gKz0gKHUzMikoKHJlbG9j
LT5sb2JqLmdwdV9vZmZzZXQgPj4gOCkgJiAweGZmZmZmZmZmKTsKIAljYXNlIENCX1RBUkdFVF9N
QVNLOgogCQl0cmFjay0+Y2JfdGFyZ2V0X21hc2sgPSByYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGlk
eCk7CiAJCWJyZWFrOwpAQCAtMTAxNCw2ICsxMDc1LDMyIEBAIHN0YXRpYyBpbnQgZXZlcmdyZWVu
X2NoZWNrX3RleHR1cmVfcmVzb3VyY2Uoc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsICB1MzIg
aWR4CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBib29sIGV2ZXJncmVlbl9pc19zYWZlX3JlZyhz
dHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCwgdTMyIHJlZywgdTMyIGlkeCkKK3sKKwl1MzIgbGFz
dF9yZWcsIG0sIGk7CisKKwlpZiAocC0+cmRldi0+ZmFtaWx5ID49IENISVBfQ0FZTUFOKQorCQls
YXN0X3JlZyA9IEFSUkFZX1NJWkUoY2F5bWFuX3JlZ19zYWZlX2JtKTsKKwllbHNlCisJCWxhc3Rf
cmVnID0gQVJSQVlfU0laRShldmVyZ3JlZW5fcmVnX3NhZmVfYm0pOworCisJaSA9IChyZWcgPj4g
Nyk7CisJaWYgKGkgPj0gbGFzdF9yZWcpIHsKKwkJZGV2X3dhcm4ocC0+ZGV2LCAiZm9yYmlkZGVu
IHJlZ2lzdGVyIDB4JTA4eCBhdCAlZFxuIiwgcmVnLCBpZHgpOworCQlyZXR1cm4gZmFsc2U7CisJ
fQorCW0gPSAxIDw8ICgocmVnID4+IDIpICYgMzEpOworCWlmIChwLT5yZGV2LT5mYW1pbHkgPj0g
Q0hJUF9DQVlNQU4pIHsKKwkJaWYgKCEoY2F5bWFuX3JlZ19zYWZlX2JtW2ldICYgbSkpCisJCQly
ZXR1cm4gdHJ1ZTsKKwl9IGVsc2UgeworCQlpZiAoIShldmVyZ3JlZW5fcmVnX3NhZmVfYm1baV0g
JiBtKSkKKwkJCXJldHVybiB0cnVlOworCX0KKwlkZXZfd2FybihwLT5kZXYsICJmb3JiaWRkZW4g
cmVnaXN0ZXIgMHglMDh4IGF0ICVkXG4iLCByZWcsIGlkeCk7CisJcmV0dXJuIGZhbHNlOworfQor
CiBzdGF0aWMgaW50IGV2ZXJncmVlbl9wYWNrZXQzX2NoZWNrKHN0cnVjdCByYWRlb25fY3NfcGFy
c2VyICpwLAogCQkJCSAgIHN0cnVjdCByYWRlb25fY3NfcGFja2V0ICpwa3QpCiB7CkBAIC0xNDUx
LDYgKzE1MzgsMTAwIEBAIHN0YXRpYyBpbnQgZXZlcmdyZWVuX3BhY2tldDNfY2hlY2soc3RydWN0
IHJhZGVvbl9jc19wYXJzZXIgKnAsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCQlicmVhazsK
KwljYXNlIFBBQ0tFVDNfU1RSTU9VVF9CVUZGRVJfVVBEQVRFOgorCQlpZiAocGt0LT5jb3VudCAh
PSA0KSB7CisJCQlEUk1fRVJST1IoImJhZCBTVFJNT1VUX0JVRkZFUl9VUERBVEUgKGludmFsaWQg
Y291bnQpXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCS8qIFVwZGF0aW5nIG1lbW9y
eSBhdCBEU1RfQUREUkVTUy4gKi8KKwkJaWYgKGlkeF92YWx1ZSAmIDB4MSkgeworCQkJdTY0IG9m
ZnNldDsKKwkJCXIgPSBldmVyZ3JlZW5fY3NfcGFja2V0X25leHRfcmVsb2MocCwgJnJlbG9jKTsK
KwkJCWlmIChyKSB7CisJCQkJRFJNX0VSUk9SKCJiYWQgU1RSTU9VVF9CVUZGRVJfVVBEQVRFICht
aXNzaW5nIGRzdCByZWxvYylcbiIpOworCQkJCXJldHVybiAtRUlOVkFMOworCQkJfQorCQkJb2Zm
c2V0ID0gcmFkZW9uX2dldF9pYl92YWx1ZShwLCBpZHgrMSk7CisJCQlvZmZzZXQgKz0gKCh1NjQp
KHJhZGVvbl9nZXRfaWJfdmFsdWUocCwgaWR4KzIpICYgMHhmZikpIDw8IDMyOworCQkJaWYgKChv
ZmZzZXQgKyA0KSA+IHJhZGVvbl9ib19zaXplKHJlbG9jLT5yb2JqKSkgeworCQkJCURSTV9FUlJP
UigiYmFkIFNUUk1PVVRfQlVGRkVSX1VQREFURSBkc3QgYm8gdG9vIHNtYWxsOiAweCVsbHgsIDB4
JWx4XG4iLAorCQkJCQkgIG9mZnNldCArIDQsIHJhZGVvbl9ib19zaXplKHJlbG9jLT5yb2JqKSk7
CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlpYltpZHgrMV0gKz0gKHUzMikocmVsb2Mt
PmxvYmouZ3B1X29mZnNldCAmIDB4ZmZmZmZmZmYpOworCQkJaWJbaWR4KzJdICs9IHVwcGVyXzMy
X2JpdHMocmVsb2MtPmxvYmouZ3B1X29mZnNldCkgJiAweGZmOworCQl9CisJCS8qIFJlYWRpbmcg
ZGF0YSBmcm9tIFNSQ19BRERSRVNTLiAqLworCQlpZiAoKChpZHhfdmFsdWUgPj4gMSkgJiAweDMp
ID09IDIpIHsKKwkJCXU2NCBvZmZzZXQ7CisJCQlyID0gZXZlcmdyZWVuX2NzX3BhY2tldF9uZXh0
X3JlbG9jKHAsICZyZWxvYyk7CisJCQlpZiAocikgeworCQkJCURSTV9FUlJPUigiYmFkIFNUUk1P
VVRfQlVGRkVSX1VQREFURSAobWlzc2luZyBzcmMgcmVsb2MpXG4iKTsKKwkJCQlyZXR1cm4gLUVJ
TlZBTDsKKwkJCX0KKwkJCW9mZnNldCA9IHJhZGVvbl9nZXRfaWJfdmFsdWUocCwgaWR4KzMpOwor
CQkJb2Zmc2V0ICs9ICgodTY0KShyYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGlkeCs0KSAmIDB4ZmYp
KSA8PCAzMjsKKwkJCWlmICgob2Zmc2V0ICsgNCkgPiByYWRlb25fYm9fc2l6ZShyZWxvYy0+cm9i
aikpIHsKKwkJCQlEUk1fRVJST1IoImJhZCBTVFJNT1VUX0JVRkZFUl9VUERBVEUgc3JjIGJvIHRv
byBzbWFsbDogMHglbGx4LCAweCVseFxuIiwKKwkJCQkJICBvZmZzZXQgKyA0LCByYWRlb25fYm9f
c2l6ZShyZWxvYy0+cm9iaikpOworCQkJCXJldHVybiAtRUlOVkFMOworCQkJfQorCQkJaWJbaWR4
KzNdICs9ICh1MzIpKHJlbG9jLT5sb2JqLmdwdV9vZmZzZXQgJiAweGZmZmZmZmZmKTsKKwkJCWli
W2lkeCs0XSArPSB1cHBlcl8zMl9iaXRzKHJlbG9jLT5sb2JqLmdwdV9vZmZzZXQpICYgMHhmZjsK
KwkJfQorCQlicmVhazsKKwljYXNlIFBBQ0tFVDNfQ09QWV9EVzoKKwkJaWYgKHBrdC0+Y291bnQg
IT0gNCkgeworCQkJRFJNX0VSUk9SKCJiYWQgQ09QWV9EVyAoaW52YWxpZCBjb3VudClcbiIpOwor
CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJaWYgKGlkeF92YWx1ZSAmIDB4MSkgeworCQkJdTY0
IG9mZnNldDsKKwkJCS8qIFNSQyBpcyBtZW1vcnkuICovCisJCQlyID0gZXZlcmdyZWVuX2NzX3Bh
Y2tldF9uZXh0X3JlbG9jKHAsICZyZWxvYyk7CisJCQlpZiAocikgeworCQkJCURSTV9FUlJPUigi
YmFkIENPUFlfRFcgKG1pc3Npbmcgc3JjIHJlbG9jKVxuIik7CisJCQkJcmV0dXJuIC1FSU5WQUw7
CisJCQl9CisJCQlvZmZzZXQgPSByYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGlkeCsxKTsKKwkJCW9m
ZnNldCArPSAoKHU2NCkocmFkZW9uX2dldF9pYl92YWx1ZShwLCBpZHgrMikgJiAweGZmKSkgPDwg
MzI7CisJCQlpZiAoKG9mZnNldCArIDQpID4gcmFkZW9uX2JvX3NpemUocmVsb2MtPnJvYmopKSB7
CisJCQkJRFJNX0VSUk9SKCJiYWQgQ09QWV9EVyBzcmMgYm8gdG9vIHNtYWxsOiAweCVsbHgsIDB4
JWx4XG4iLAorCQkJCQkgIG9mZnNldCArIDQsIHJhZGVvbl9ib19zaXplKHJlbG9jLT5yb2JqKSk7
CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlpYltpZHgrMV0gKz0gKHUzMikocmVsb2Mt
PmxvYmouZ3B1X29mZnNldCAmIDB4ZmZmZmZmZmYpOworCQkJaWJbaWR4KzJdICs9IHVwcGVyXzMy
X2JpdHMocmVsb2MtPmxvYmouZ3B1X29mZnNldCkgJiAweGZmOworCQl9IGVsc2UgeworCQkJLyog
U1JDIGlzIGEgcmVnLiAqLworCQkJcmVnID0gcmFkZW9uX2dldF9pYl92YWx1ZShwLCBpZHgrMSkg
PDwgMjsKKwkJCWlmICghZXZlcmdyZWVuX2lzX3NhZmVfcmVnKHAsIHJlZywgaWR4KzEpKQorCQkJ
CXJldHVybiAtRUlOVkFMOworCQl9CisJCWlmIChpZHhfdmFsdWUgJiAweDIpIHsKKwkJCXU2NCBv
ZmZzZXQ7CisJCQkvKiBEU1QgaXMgbWVtb3J5LiAqLworCQkJciA9IGV2ZXJncmVlbl9jc19wYWNr
ZXRfbmV4dF9yZWxvYyhwLCAmcmVsb2MpOworCQkJaWYgKHIpIHsKKwkJCQlEUk1fRVJST1IoImJh
ZCBDT1BZX0RXIChtaXNzaW5nIGRzdCByZWxvYylcbiIpOworCQkJCXJldHVybiAtRUlOVkFMOwor
CQkJfQorCQkJb2Zmc2V0ID0gcmFkZW9uX2dldF9pYl92YWx1ZShwLCBpZHgrMyk7CisJCQlvZmZz
ZXQgKz0gKCh1NjQpKHJhZGVvbl9nZXRfaWJfdmFsdWUocCwgaWR4KzQpICYgMHhmZikpIDw8IDMy
OworCQkJaWYgKChvZmZzZXQgKyA0KSA+IHJhZGVvbl9ib19zaXplKHJlbG9jLT5yb2JqKSkgewor
CQkJCURSTV9FUlJPUigiYmFkIENPUFlfRFcgZHN0IGJvIHRvbyBzbWFsbDogMHglbGx4LCAweCVs
eFxuIiwKKwkJCQkJICBvZmZzZXQgKyA0LCByYWRlb25fYm9fc2l6ZShyZWxvYy0+cm9iaikpOwor
CQkJCXJldHVybiAtRUlOVkFMOworCQkJfQorCQkJaWJbaWR4KzNdICs9ICh1MzIpKHJlbG9jLT5s
b2JqLmdwdV9vZmZzZXQgJiAweGZmZmZmZmZmKTsKKwkJCWliW2lkeCs0XSArPSB1cHBlcl8zMl9i
aXRzKHJlbG9jLT5sb2JqLmdwdV9vZmZzZXQpICYgMHhmZjsKKwkJfSBlbHNlIHsKKwkJCS8qIERT
VCBpcyBhIHJlZy4gKi8KKwkJCXJlZyA9IHJhZGVvbl9nZXRfaWJfdmFsdWUocCwgaWR4KzMpIDw8
IDI7CisJCQlpZiAoIWV2ZXJncmVlbl9pc19zYWZlX3JlZyhwLCByZWcsIGlkeCszKSkKKwkJCQly
ZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlicmVhazsKIAljYXNlIFBBQ0tFVDNfTk9QOgogCQlicmVh
azsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9ldmVyZ3Jl
ZW5kLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbmQuaAppbmRleCA3NDcxM2Q0
Li41MGQyMGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbmQu
aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbmQuaApAQCAtNzcsNiArNzcs
NyBAQAogCiAjZGVmaW5lCUNPTkZJR19NRU1TSVpFCQkJCQkweDU0MjgKIAorI2RlZmluZQlDUF9D
T0hFUl9CQVNFCQkJCQkweDg1RjgKICNkZWZpbmUgQ1BfTUVfQ05UTAkJCQkJMHg4NkQ4CiAjZGVm
aW5lCQlDUF9NRV9IQUxUCQkJCQkoMSA8PCAyOCkKICNkZWZpbmUJCUNQX1BGUF9IQUxUCQkJCQko
MSA8PCAyNikKQEAgLTk0OCw2ICs5NDksMTQgQEAKICNkZWZpbmUgU1FfUEdNX1NUQVJUX0hTCQkJ
CQkweDI4OGI4CiAjZGVmaW5lIFNRX1BHTV9TVEFSVF9MUwkJCQkJMHgyODhkMAogCisjZGVmaW5l
CVZHVF9TVFJNT1VUX0JVRkZFUl9CQVNFXzAJCQkweDI4QUQ4CisjZGVmaW5lCVZHVF9TVFJNT1VU
X0JVRkZFUl9CQVNFXzEJCQkweDI4QUU4CisjZGVmaW5lCVZHVF9TVFJNT1VUX0JVRkZFUl9CQVNF
XzIJCQkweDI4QUY4CisjZGVmaW5lCVZHVF9TVFJNT1VUX0JVRkZFUl9CQVNFXzMJCQkweDI4QjA4
CisjZGVmaW5lIFZHVF9TVFJNT1VUX0JVRkZFUl9TSVpFXzAJCQkweDI4QUQwCisjZGVmaW5lIFZH
VF9TVFJNT1VUX0JVRkZFUl9TSVpFXzEJCQkweDI4QUUwCisjZGVmaW5lIFZHVF9TVFJNT1VUX0JV
RkZFUl9TSVpFXzIJCQkweDI4QUYwCisjZGVmaW5lIFZHVF9TVFJNT1VUX0JVRkZFUl9TSVpFXzMJ
CQkweDI4QjAwCiAjZGVmaW5lIFZHVF9TVFJNT1VUX0NPTkZJRwkJCQkweDI4Yjk0CiAjZGVmaW5l
IFZHVF9TVFJNT1VUX0JVRkZFUl9DT05GSUcJCQkweDI4Yjk4CiAKZGlmZiAtLWdpdCBhL2RyaXZl
cnMvZ3B1L2RybS9yYWRlb24vcjYwMF9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAw
X2NzLmMKaW5kZXggMzhjZTVkMC4uOWYxNzU3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt
L3JhZGVvbi9yNjAwX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2NzLmMK
QEAgLTYxLDYgKzYxLDEwIEBAIHN0cnVjdCByNjAwX2NzX3RyYWNrIHsKIAl1MzIJCQljYl9jb2xv
cl9zaXplWzhdOwogCXUzMgkJCXZndF9zdHJtb3V0X2VuOwogCXUzMgkJCXZndF9zdHJtb3V0X2J1
ZmZlcl9lbjsKKwlzdHJ1Y3QgcmFkZW9uX2JvCSp2Z3Rfc3RybW91dF9ib1s0XTsKKwl1NjQJCQl2
Z3Rfc3RybW91dF9ib19tY1s0XTsKKwl1MzIJCQl2Z3Rfc3RybW91dF9ib19vZmZzZXRbNF07CisJ
dTMyCQkJdmd0X3N0cm1vdXRfc2l6ZVs0XTsKIAl1MzIJCQlkYl9kZXB0aF9jb250cm9sOwogCXUz
MgkJCWRiX2RlcHRoX2luZm87CiAJdTMyCQkJZGJfZGVwdGhfc2l6ZV9pZHg7CkBAIC0zMTAsNiAr
MzE0LDEzIEBAIHN0YXRpYyB2b2lkIHI2MDBfY3NfdHJhY2tfaW5pdChzdHJ1Y3QgcjYwMF9jc190
cmFjayAqdHJhY2spCiAJdHJhY2stPmRiX2RlcHRoX3NpemUgPSAweEZGRkZGRkZGOwogCXRyYWNr
LT5kYl9kZXB0aF9zaXplX2lkeCA9IDA7CiAJdHJhY2stPmRiX2RlcHRoX2NvbnRyb2wgPSAweEZG
RkZGRkZGOworCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQl0cmFjay0+dmd0X3N0cm1v
dXRfc2l6ZVtpXSA9IDA7CisJCXRyYWNrLT52Z3Rfc3RybW91dF9ib1tpXSA9IE5VTEw7CisJCXRy
YWNrLT52Z3Rfc3RybW91dF9ib19vZmZzZXRbaV0gPSAweEZGRkZGRkZGOworCQl0cmFjay0+dmd0
X3N0cm1vdXRfYm9fbWNbaV0gPSAweEZGRkZGRkZGOworCX0KIH0KIAogc3RhdGljIGludCByNjAw
X2NzX3RyYWNrX3ZhbGlkYXRlX2NiKHN0cnVjdCByYWRlb25fY3NfcGFyc2VyICpwLCBpbnQgaSkK
QEAgLTQzMCwxMSArNDQxLDI4IEBAIHN0YXRpYyBpbnQgcjYwMF9jc190cmFja19jaGVjayhzdHJ1
Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCkKIAkvKiBvbiBsZWdhY3kga2VybmVsIHdlIGRvbid0IHBl
cmZvcm0gYWR2YW5jZWQgY2hlY2sgKi8KIAlpZiAocC0+cmRldiA9PSBOVUxMKQogCQlyZXR1cm4g
MDsKLQkvKiB3ZSBkb24ndCBzdXBwb3J0IG91dCBidWZmZXIgeWV0ICovCi0JaWYgKHRyYWNrLT52
Z3Rfc3RybW91dF9lbiB8fCB0cmFjay0+dmd0X3N0cm1vdXRfYnVmZmVyX2VuKSB7Ci0JCWRldl93
YXJuKHAtPmRldiwgInRoaXMga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCBTTVggb3V0cHV0IGJ1ZmZl
clxuIik7Ci0JCXJldHVybiAtRUlOVkFMOworCisJLyogY2hlY2sgc3RyZWFtb3V0ICovCisJaWYg
KHRyYWNrLT52Z3Rfc3RybW91dF9lbikgeworCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJ
CQlpZiAodHJhY2stPnZndF9zdHJtb3V0X2J1ZmZlcl9lbiAmICgxIDw8IGkpKSB7CisJCQkJaWYg
KHRyYWNrLT52Z3Rfc3RybW91dF9ib1tpXSkgeworCQkJCQl1NjQgb2Zmc2V0ID0gKHU2NCl0cmFj
ay0+dmd0X3N0cm1vdXRfYm9fb2Zmc2V0W2ldICsKKwkJCQkJCSh1NjQpdHJhY2stPnZndF9zdHJt
b3V0X3NpemVbaV07CisJCQkJCWlmIChvZmZzZXQgPiByYWRlb25fYm9fc2l6ZSh0cmFjay0+dmd0
X3N0cm1vdXRfYm9baV0pKSB7CisJCQkJCQlEUk1fRVJST1IoInN0cmVhbW91dCAlZCBibyB0b28g
c21hbGw6IDB4JWxseCwgMHglbHhcbiIsCisJCQkJCQkJICBpLCBvZmZzZXQsCisJCQkJCQkJICBy
YWRlb25fYm9fc2l6ZSh0cmFjay0+dmd0X3N0cm1vdXRfYm9baV0pKTsKKwkJCQkJCXJldHVybiAt
RUlOVkFMOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJZGV2X3dhcm4ocC0+ZGV2LCAiTm8g
YnVmZmVyIGZvciBzdHJlYW1vdXQgJWRcbiIsIGkpOworCQkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJ
CQl9CisJCQl9CisJCX0KIAl9CisKIAkvKiBjaGVjayB0aGF0IHdlIGhhdmUgYSBjYiBmb3IgZWFj
aCBlbmFibGVkIHRhcmdldCwgd2UgZG9uJ3QgY2hlY2sKIAkgKiBzaGFkZXJfbWFzayBiZWNhdXNl
IGl0IHNlZW1zIG1lc2EgaXNuJ3QgYWx3YXlzIHNldHRpbmcgaXQgOigKIAkgKi8KQEAgLTk3NSw2
ICsxMDAzLDM5IEBAIHN0YXRpYyBpbnQgcjYwMF9jc19jaGVja19yZWcoc3RydWN0IHJhZGVvbl9j
c19wYXJzZXIgKnAsIHUzMiByZWcsIHUzMiBpZHgpCiAJY2FzZSBSXzAyOEIyMF9WR1RfU1RSTU9V
VF9CVUZGRVJfRU46CiAJCXRyYWNrLT52Z3Rfc3RybW91dF9idWZmZXJfZW4gPSByYWRlb25fZ2V0
X2liX3ZhbHVlKHAsIGlkeCk7CiAJCWJyZWFrOworCWNhc2UgVkdUX1NUUk1PVVRfQlVGRkVSX0JB
U0VfMDoKKwljYXNlIFZHVF9TVFJNT1VUX0JVRkZFUl9CQVNFXzE6CisJY2FzZSBWR1RfU1RSTU9V
VF9CVUZGRVJfQkFTRV8yOgorCWNhc2UgVkdUX1NUUk1PVVRfQlVGRkVSX0JBU0VfMzoKKwkJciA9
IHI2MDBfY3NfcGFja2V0X25leHRfcmVsb2MocCwgJnJlbG9jKTsKKwkJaWYgKHIpIHsKKwkJCWRl
dl93YXJuKHAtPmRldiwgImJhZCBTRVRfQ09OVEVYVF9SRUcgIgorCQkJCQkiMHglMDRYXG4iLCBy
ZWcpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJdG1wID0gKHJlZyAtIFZHVF9TVFJNT1VU
X0JVRkZFUl9CQVNFXzApIC8gMTY7CisJCXRyYWNrLT52Z3Rfc3RybW91dF9ib19vZmZzZXRbdG1w
XSA9IHJhZGVvbl9nZXRfaWJfdmFsdWUocCwgaWR4KSA8PCA4OworCQlpYltpZHhdICs9ICh1MzIp
KChyZWxvYy0+bG9iai5ncHVfb2Zmc2V0ID4+IDgpICYgMHhmZmZmZmZmZik7CisJCXRyYWNrLT52
Z3Rfc3RybW91dF9ib1t0bXBdID0gcmVsb2MtPnJvYmo7CisJCXRyYWNrLT52Z3Rfc3RybW91dF9i
b19tY1t0bXBdID0gcmVsb2MtPmxvYmouZ3B1X29mZnNldDsKKwkJYnJlYWs7CisJY2FzZSBWR1Rf
U1RSTU9VVF9CVUZGRVJfU0laRV8wOgorCWNhc2UgVkdUX1NUUk1PVVRfQlVGRkVSX1NJWkVfMToK
KwljYXNlIFZHVF9TVFJNT1VUX0JVRkZFUl9TSVpFXzI6CisJY2FzZSBWR1RfU1RSTU9VVF9CVUZG
RVJfU0laRV8zOgorCQl0bXAgPSAocmVnIC0gVkdUX1NUUk1PVVRfQlVGRkVSX1NJWkVfMCkgLyAx
NjsKKwkJLyogc2l6ZSBpbiByZWdpc3RlciBpcyBEV3MsIGNvbnZlcnQgdG8gYnl0ZXMgKi8KKwkJ
dHJhY2stPnZndF9zdHJtb3V0X3NpemVbdG1wXSA9IHJhZGVvbl9nZXRfaWJfdmFsdWUocCwgaWR4
KSAqIDQ7CisJCWJyZWFrOworCWNhc2UgQ1BfQ09IRVJfQkFTRToKKwkJciA9IHI2MDBfY3NfcGFj
a2V0X25leHRfcmVsb2MocCwgJnJlbG9jKTsKKwkJaWYgKHIpIHsKKwkJCWRldl93YXJuKHAtPmRl
diwgIm1pc3NpbmcgcmVsb2MgZm9yIENQX0NPSEVSX0JBU0UgIgorCQkJCQkiMHglMDRYXG4iLCBy
ZWcpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJaWJbaWR4XSArPSAodTMyKSgocmVsb2Mt
PmxvYmouZ3B1X29mZnNldCA+PiA4KSAmIDB4ZmZmZmZmZmYpOworCQlicmVhazsKIAljYXNlIFJf
MDI4MjM4X0NCX1RBUkdFVF9NQVNLOgogCQl0cmFjay0+Y2JfdGFyZ2V0X21hc2sgPSByYWRlb25f
Z2V0X2liX3ZhbHVlKHAsIGlkeCk7CiAJCWJyZWFrOwpAQCAtMTM5Nyw2ICsxNDU4LDIyIEBAIHN0
YXRpYyBpbnQgcjYwMF9jaGVja190ZXh0dXJlX3Jlc291cmNlKHN0cnVjdCByYWRlb25fY3NfcGFy
c2VyICpwLCAgdTMyIGlkeCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGJvb2wgcjYwMF9pc19z
YWZlX3JlZyhzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCwgdTMyIHJlZywgdTMyIGlkeCkKK3sK
Kwl1MzIgbSwgaTsKKworCWkgPSAocmVnID4+IDcpOworCWlmIChpID49IEFSUkFZX1NJWkUocjYw
MF9yZWdfc2FmZV9ibSkpIHsKKwkJZGV2X3dhcm4ocC0+ZGV2LCAiZm9yYmlkZGVuIHJlZ2lzdGVy
IDB4JTA4eCBhdCAlZFxuIiwgcmVnLCBpZHgpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCW0gPSAx
IDw8ICgocmVnID4+IDIpICYgMzEpOworCWlmICghKHI2MDBfcmVnX3NhZmVfYm1baV0gJiBtKSkK
KwkJcmV0dXJuIHRydWU7CisJZGV2X3dhcm4ocC0+ZGV2LCAiZm9yYmlkZGVuIHJlZ2lzdGVyIDB4
JTA4eCBhdCAlZFxuIiwgcmVnLCBpZHgpOworCXJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGlu
dCByNjAwX3BhY2tldDNfY2hlY2soc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsCiAJCQkJc3Ry
dWN0IHJhZGVvbl9jc19wYWNrZXQgKnBrdCkKIHsKQEAgLTE3NDIsNiArMTgxOSwxMDAgQEAgc3Rh
dGljIGludCByNjAwX3BhY2tldDNfY2hlY2soc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsCiAJ
CQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCQlicmVhazsKKwljYXNlIFBBQ0tFVDNfU1RSTU9VVF9C
VUZGRVJfVVBEQVRFOgorCQlpZiAocGt0LT5jb3VudCAhPSA0KSB7CisJCQlEUk1fRVJST1IoImJh
ZCBTVFJNT1VUX0JVRkZFUl9VUERBVEUgKGludmFsaWQgY291bnQpXG4iKTsKKwkJCXJldHVybiAt
RUlOVkFMOworCQl9CisJCS8qIFVwZGF0aW5nIG1lbW9yeSBhdCBEU1RfQUREUkVTUy4gKi8KKwkJ
aWYgKGlkeF92YWx1ZSAmIDB4MSkgeworCQkJdTY0IG9mZnNldDsKKwkJCXIgPSByNjAwX2NzX3Bh
Y2tldF9uZXh0X3JlbG9jKHAsICZyZWxvYyk7CisJCQlpZiAocikgeworCQkJCURSTV9FUlJPUigi
YmFkIFNUUk1PVVRfQlVGRkVSX1VQREFURSAobWlzc2luZyBkc3QgcmVsb2MpXG4iKTsKKwkJCQly
ZXR1cm4gLUVJTlZBTDsKKwkJCX0KKwkJCW9mZnNldCA9IHJhZGVvbl9nZXRfaWJfdmFsdWUocCwg
aWR4KzEpOworCQkJb2Zmc2V0ICs9ICgodTY0KShyYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGlkeCsy
KSAmIDB4ZmYpKSA8PCAzMjsKKwkJCWlmICgob2Zmc2V0ICsgNCkgPiByYWRlb25fYm9fc2l6ZShy
ZWxvYy0+cm9iaikpIHsKKwkJCQlEUk1fRVJST1IoImJhZCBTVFJNT1VUX0JVRkZFUl9VUERBVEUg
ZHN0IGJvIHRvbyBzbWFsbDogMHglbGx4LCAweCVseFxuIiwKKwkJCQkJICBvZmZzZXQgKyA0LCBy
YWRlb25fYm9fc2l6ZShyZWxvYy0+cm9iaikpOworCQkJCXJldHVybiAtRUlOVkFMOworCQkJfQor
CQkJaWJbaWR4KzFdICs9ICh1MzIpKHJlbG9jLT5sb2JqLmdwdV9vZmZzZXQgJiAweGZmZmZmZmZm
KTsKKwkJCWliW2lkeCsyXSArPSB1cHBlcl8zMl9iaXRzKHJlbG9jLT5sb2JqLmdwdV9vZmZzZXQp
ICYgMHhmZjsKKwkJfQorCQkvKiBSZWFkaW5nIGRhdGEgZnJvbSBTUkNfQUREUkVTUy4gKi8KKwkJ
aWYgKCgoaWR4X3ZhbHVlID4+IDEpICYgMHgzKSA9PSAyKSB7CisJCQl1NjQgb2Zmc2V0OworCQkJ
ciA9IHI2MDBfY3NfcGFja2V0X25leHRfcmVsb2MocCwgJnJlbG9jKTsKKwkJCWlmIChyKSB7CisJ
CQkJRFJNX0VSUk9SKCJiYWQgU1RSTU9VVF9CVUZGRVJfVVBEQVRFIChtaXNzaW5nIHNyYyByZWxv
YylcbiIpOworCQkJCXJldHVybiAtRUlOVkFMOworCQkJfQorCQkJb2Zmc2V0ID0gcmFkZW9uX2dl
dF9pYl92YWx1ZShwLCBpZHgrMyk7CisJCQlvZmZzZXQgKz0gKCh1NjQpKHJhZGVvbl9nZXRfaWJf
dmFsdWUocCwgaWR4KzQpICYgMHhmZikpIDw8IDMyOworCQkJaWYgKChvZmZzZXQgKyA0KSA+IHJh
ZGVvbl9ib19zaXplKHJlbG9jLT5yb2JqKSkgeworCQkJCURSTV9FUlJPUigiYmFkIFNUUk1PVVRf
QlVGRkVSX1VQREFURSBzcmMgYm8gdG9vIHNtYWxsOiAweCVsbHgsIDB4JWx4XG4iLAorCQkJCQkg
IG9mZnNldCArIDQsIHJhZGVvbl9ib19zaXplKHJlbG9jLT5yb2JqKSk7CisJCQkJcmV0dXJuIC1F
SU5WQUw7CisJCQl9CisJCQlpYltpZHgrM10gKz0gKHUzMikocmVsb2MtPmxvYmouZ3B1X29mZnNl
dCAmIDB4ZmZmZmZmZmYpOworCQkJaWJbaWR4KzRdICs9IHVwcGVyXzMyX2JpdHMocmVsb2MtPmxv
YmouZ3B1X29mZnNldCkgJiAweGZmOworCQl9CisJCWJyZWFrOworCWNhc2UgUEFDS0VUM19DT1BZ
X0RXOgorCQlpZiAocGt0LT5jb3VudCAhPSA0KSB7CisJCQlEUk1fRVJST1IoImJhZCBDT1BZX0RX
IChpbnZhbGlkIGNvdW50KVxuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAoaWR4
X3ZhbHVlICYgMHgxKSB7CisJCQl1NjQgb2Zmc2V0OworCQkJLyogU1JDIGlzIG1lbW9yeS4gKi8K
KwkJCXIgPSByNjAwX2NzX3BhY2tldF9uZXh0X3JlbG9jKHAsICZyZWxvYyk7CisJCQlpZiAocikg
eworCQkJCURSTV9FUlJPUigiYmFkIENPUFlfRFcgKG1pc3Npbmcgc3JjIHJlbG9jKVxuIik7CisJ
CQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlvZmZzZXQgPSByYWRlb25fZ2V0X2liX3ZhbHVl
KHAsIGlkeCsxKTsKKwkJCW9mZnNldCArPSAoKHU2NCkocmFkZW9uX2dldF9pYl92YWx1ZShwLCBp
ZHgrMikgJiAweGZmKSkgPDwgMzI7CisJCQlpZiAoKG9mZnNldCArIDQpID4gcmFkZW9uX2JvX3Np
emUocmVsb2MtPnJvYmopKSB7CisJCQkJRFJNX0VSUk9SKCJiYWQgQ09QWV9EVyBzcmMgYm8gdG9v
IHNtYWxsOiAweCVsbHgsIDB4JWx4XG4iLAorCQkJCQkgIG9mZnNldCArIDQsIHJhZGVvbl9ib19z
aXplKHJlbG9jLT5yb2JqKSk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlpYltpZHgr
MV0gKz0gKHUzMikocmVsb2MtPmxvYmouZ3B1X29mZnNldCAmIDB4ZmZmZmZmZmYpOworCQkJaWJb
aWR4KzJdICs9IHVwcGVyXzMyX2JpdHMocmVsb2MtPmxvYmouZ3B1X29mZnNldCkgJiAweGZmOwor
CQl9IGVsc2UgeworCQkJLyogU1JDIGlzIGEgcmVnLiAqLworCQkJcmVnID0gcmFkZW9uX2dldF9p
Yl92YWx1ZShwLCBpZHgrMSkgPDwgMjsKKwkJCWlmICghcjYwMF9pc19zYWZlX3JlZyhwLCByZWcs
IGlkeCsxKSkKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAoaWR4X3ZhbHVlICYgMHgy
KSB7CisJCQl1NjQgb2Zmc2V0OworCQkJLyogRFNUIGlzIG1lbW9yeS4gKi8KKwkJCXIgPSByNjAw
X2NzX3BhY2tldF9uZXh0X3JlbG9jKHAsICZyZWxvYyk7CisJCQlpZiAocikgeworCQkJCURSTV9F
UlJPUigiYmFkIENPUFlfRFcgKG1pc3NpbmcgZHN0IHJlbG9jKVxuIik7CisJCQkJcmV0dXJuIC1F
SU5WQUw7CisJCQl9CisJCQlvZmZzZXQgPSByYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGlkeCszKTsK
KwkJCW9mZnNldCArPSAoKHU2NCkocmFkZW9uX2dldF9pYl92YWx1ZShwLCBpZHgrNCkgJiAweGZm
KSkgPDwgMzI7CisJCQlpZiAoKG9mZnNldCArIDQpID4gcmFkZW9uX2JvX3NpemUocmVsb2MtPnJv
YmopKSB7CisJCQkJRFJNX0VSUk9SKCJiYWQgQ09QWV9EVyBkc3QgYm8gdG9vIHNtYWxsOiAweCVs
bHgsIDB4JWx4XG4iLAorCQkJCQkgIG9mZnNldCArIDQsIHJhZGVvbl9ib19zaXplKHJlbG9jLT5y
b2JqKSk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlpYltpZHgrM10gKz0gKHUzMiko
cmVsb2MtPmxvYmouZ3B1X29mZnNldCAmIDB4ZmZmZmZmZmYpOworCQkJaWJbaWR4KzRdICs9IHVw
cGVyXzMyX2JpdHMocmVsb2MtPmxvYmouZ3B1X29mZnNldCkgJiAweGZmOworCQl9IGVsc2Ugewor
CQkJLyogRFNUIGlzIGEgcmVnLiAqLworCQkJcmVnID0gcmFkZW9uX2dldF9pYl92YWx1ZShwLCBp
ZHgrMykgPDwgMjsKKwkJCWlmICghcjYwMF9pc19zYWZlX3JlZyhwLCByZWcsIGlkeCszKSkKKwkJ
CQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlicmVhazsKIAljYXNlIFBBQ0tFVDNfTk9QOgogCQli
cmVhazsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAw
ZC5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oCmluZGV4IDNlZTFmZDcuLmFhOWQ3
YzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMGQuaAorKysgYi9kcml2
ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBkLmgKQEAgLTQ5Myw2ICs0OTMsMTEgQEAKICNkZWZpbmUJ
VkdUX1NUUk1PVVRfQlVGRkVSX09GRlNFVF8xCQkJMHgyOEFFQwogI2RlZmluZQlWR1RfU1RSTU9V
VF9CVUZGRVJfT0ZGU0VUXzIJCQkweDI4QUZDCiAjZGVmaW5lCVZHVF9TVFJNT1VUX0JVRkZFUl9P
RkZTRVRfMwkJCTB4MjhCMEMKKyNkZWZpbmUgVkdUX1NUUk1PVVRfQlVGRkVSX1NJWkVfMAkJCTB4
MjhBRDAKKyNkZWZpbmUgVkdUX1NUUk1PVVRfQlVGRkVSX1NJWkVfMQkJCTB4MjhBRTAKKyNkZWZp
bmUgVkdUX1NUUk1PVVRfQlVGRkVSX1NJWkVfMgkJCTB4MjhBRjAKKyNkZWZpbmUgVkdUX1NUUk1P
VVRfQlVGRkVSX1NJWkVfMwkJCTB4MjhCMDAKKwogI2RlZmluZQlWR1RfU1RSTU9VVF9FTgkJCQkJ
MHgyOEFCMAogI2RlZmluZQlWR1RfVkVSVEVYX1JFVVNFX0JMT0NLX0NOVEwJCQkweDI4QzU4CiAj
ZGVmaW5lCQlWVFhfUkVVU0VfREVQVEhfTUFTSwkJCQkweDAwMDAwMEZGCkBAIC04MzQsNiArODM5
LDcgQEAKICMgICAgICAgICAgICAgIGRlZmluZSBQQUNLRVQzX1NFTV9TRUxfU0lHTkFMCSAgICAo
MHg2IDw8IDI5KQogIyAgICAgICAgICAgICAgZGVmaW5lIFBBQ0tFVDNfU0VNX1NFTF9XQUlUCSAg
ICAoMHg3IDw8IDI5KQogI2RlZmluZQlQQUNLRVQzX01QRUdfSU5ERVgJCQkJMHgzQQorI2RlZmlu
ZQlQQUNLRVQzX0NPUFlfRFcJCQkJCTB4M0IKICNkZWZpbmUJUEFDS0VUM19XQUlUX1JFR19NRU0J
CQkJMHgzQwogI2RlZmluZQlQQUNLRVQzX01FTV9XUklURQkJCQkweDNECiAjZGVmaW5lCVBBQ0tF
VDNfSU5ESVJFQ1RfQlVGRkVSCQkJCTB4MzIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9y
YWRlb24vcmFkZW9uX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmMK
aW5kZXggMzFkYTYyMi4uMTZkZGYzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv
bi9yYWRlb25fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmMK
QEAgLTU0LDcgKzU0LDcgQEAKICAqICAgMi4xMC4wIC0gZnVzaW9uIDJEIHRpbGluZwogICogICAy
LjExLjAgLSBiYWNrZW5kIG1hcCwgaW5pdGlhbCBjb21wdXRlIHN1cHBvcnQgZm9yIHRoZSBDUyBj
aGVja2VyCiAgKiAgIDIuMTIuMCAtIFJBREVPTl9DU19LRUVQX1RJTElOR19GTEFHUwotICogICAy
LjEzLjAgLSB2aXJ0dWFsIG1lbW9yeSBzdXBwb3J0CisgKiAgIDIuMTMuMCAtIHZpcnR1YWwgbWVt
b3J5IHN1cHBvcnQsIHN0cmVhbW91dAogICovCiAjZGVmaW5lIEtNU19EUklWRVJfTUFKT1IJMgog
I2RlZmluZSBLTVNfRFJJVkVSX01JTk9SCTEzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v
cmFkZW9uL3JlZ19zcmNzL2NheW1hbiBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmVnX3NyY3Mv
Y2F5bWFuCmluZGV4IDIzMTY5NzcuLjBlYWMxOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry
bS9yYWRlb24vcmVnX3NyY3MvY2F5bWFuCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmVn
X3NyY3MvY2F5bWFuCkBAIC0xLDUgKzEsOCBAQAogY2F5bWFuIDB4OTQwMAogMHgwMDAwODAyQyBH
UkJNX0dGWF9JTkRFWAorMHgwMDAwODRGQyBDUF9TVFJNT1VUX0NOVEwKKzB4MDAwMDg1RjAgQ1Bf
Q09IRVJfQ05UTAorMHgwMDAwODVGNCBDUF9DT0hFUl9TSVpFCiAweDAwMDA4OEIwIFZHVF9WVFhf
VkVDVF9FSkVDVF9SRUcKIDB4MDAwMDg4QzQgVkdUX0NBQ0hFX0lOVkFMSURBVElPTgogMHgwMDAw
ODhENCBWR1RfR1NfVkVSVEVYX1JFVVNFCkBAIC01MTIsNiArNTE1LDEzIEBAIGNheW1hbiAweDk0
MDAKIDB4MDAwMjhBQzAgREJfU1JFU1VMVFNfQ09NUEFSRV9TVEFURTAKIDB4MDAwMjhBQzQgREJf
U1JFU1VMVFNfQ09NUEFSRV9TVEFURTEKIDB4MDAwMjhBQzggREJfUFJFTE9BRF9DT05UUk9MCisw
eDAwMDI4QUQ0IFZHVF9TVFJNT1VUX1ZUWF9TVFJJREVfMAorMHgwMDAyOEFFNCBWR1RfU1RSTU9V
VF9WVFhfU1RSSURFXzEKKzB4MDAwMjhBRjQgVkdUX1NUUk1PVVRfVlRYX1NUUklERV8yCisweDAw
MDI4QjA0IFZHVF9TVFJNT1VUX1ZUWF9TVFJJREVfMworMHgwMDAyOEIyOCBWR1RfU1RSTU9VVF9E
UkFXX09QQVFVRV9PRkZTRVQKKzB4MDAwMjhCMkMgVkdUX1NUUk1PVVRfRFJBV19PUEFRVUVfQlVG
RkVSX0ZJTExFRF9TSVpFCisweDAwMDI4QjMwIFZHVF9TVFJNT1VUX0RSQVdfT1BBUVVFX1ZFUlRF
WF9TVFJJREUKIDB4MDAwMjhCMzggVkdUX0dTX01BWF9WRVJUX09VVAogMHgwMDAyOEI1NCBWR1Rf
U0hBREVSX1NUQUdFU19FTgogMHgwMDAyOEI1OCBWR1RfTFNfSFNfQ09ORklHCmRpZmYgLS1naXQg
YS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JlZ19zcmNzL2V2ZXJncmVlbiBiL2RyaXZlcnMvZ3B1
L2RybS9yYWRlb24vcmVnX3NyY3MvZXZlcmdyZWVuCmluZGV4IDE2MTczN2EuLjRlM2YyMDggMTAw
NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmVnX3NyY3MvZXZlcmdyZWVuCisrKyBi
L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmVnX3NyY3MvZXZlcmdyZWVuCkBAIC00LDYgKzQsOSBA
QCBldmVyZ3JlZW4gMHg5NDAwCiAweDAwMDA4MDQ0IFdBSVRfVU5USUxfUE9MTF9DTlRMCiAweDAw
MDA4MDQ4IFdBSVRfVU5USUxfUE9MTF9NQVNLCiAweDAwMDA4MDRjIFdBSVRfVU5USUxfUE9MTF9S
RUZEQVRBCisweDAwMDA4NEZDIENQX1NUUk1PVVRfQ05UTAorMHgwMDAwODVGMCBDUF9DT0hFUl9D
TlRMCisweDAwMDA4NUY0IENQX0NPSEVSX1NJWkUKIDB4MDAwMDg4QjAgVkdUX1ZUWF9WRUNUX0VK
RUNUX1JFRwogMHgwMDAwODhDNCBWR1RfQ0FDSEVfSU5WQUxJREFUSU9OCiAweDAwMDA4OEQ0IFZH
VF9HU19WRVJURVhfUkVVU0UKQEAgLTUyMiw2ICs1MjUsMTMgQEAgZXZlcmdyZWVuIDB4OTQwMAog
MHgwMDAyOEFDMCBEQl9TUkVTVUxUU19DT01QQVJFX1NUQVRFMAogMHgwMDAyOEFDNCBEQl9TUkVT
VUxUU19DT01QQVJFX1NUQVRFMQogMHgwMDAyOEFDOCBEQl9QUkVMT0FEX0NPTlRST0wKKzB4MDAw
MjhBRDQgVkdUX1NUUk1PVVRfVlRYX1NUUklERV8wCisweDAwMDI4QUU0IFZHVF9TVFJNT1VUX1ZU
WF9TVFJJREVfMQorMHgwMDAyOEFGNCBWR1RfU1RSTU9VVF9WVFhfU1RSSURFXzIKKzB4MDAwMjhC
MDQgVkdUX1NUUk1PVVRfVlRYX1NUUklERV8zCisweDAwMDI4QjI4IFZHVF9TVFJNT1VUX0RSQVdf
T1BBUVVFX09GRlNFVAorMHgwMDAyOEIyQyBWR1RfU1RSTU9VVF9EUkFXX09QQVFVRV9CVUZGRVJf
RklMTEVEX1NJWkUKKzB4MDAwMjhCMzAgVkdUX1NUUk1PVVRfRFJBV19PUEFRVUVfVkVSVEVYX1NU
UklERQogMHgwMDAyOEIzOCBWR1RfR1NfTUFYX1ZFUlRfT1VUCiAweDAwMDI4QjU0IFZHVF9TSEFE
RVJfU1RBR0VTX0VOCiAweDAwMDI4QjU4IFZHVF9MU19IU19DT05GSUcKZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvZ3B1L2RybS9yYWRlb24vcmVnX3NyY3MvcjYwMCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl
b24vcmVnX3NyY3MvcjYwMAppbmRleCAwMzgwYzVjLi5hMWZjMjQyIDEwMDY0NAotLS0gYS9kcml2
ZXJzL2dwdS9kcm0vcmFkZW9uL3JlZ19zcmNzL3I2MDAKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jh
ZGVvbi9yZWdfc3Jjcy9yNjAwCkBAIC0zLDYgKzMsOSBAQCByNjAwIDB4OTQwMAogMHgwMDAyODIz
MCBSN3h4X1BBX1NDX0VER0VSVUxFCiAweDAwMDI4NkM4IFI3eHhfU1BJX1RIUkVBRF9HUk9VUElO
RwogMHgwMDAwOEQ4QyBSN3h4X1NRX0RZTl9HUFJfQ05UTF9QU19GTFVTSF9SRVEKKzB4MDAwMDg0
OTAgQ1BfU1RSTU9VVF9DTlRMCisweDAwMDA4NUYwIENQX0NPSEVSX0NOVEwKKzB4MDAwMDg1RjQg
Q1BfQ09IRVJfU0laRQogMHgwMDAwODhDNCBWR1RfQ0FDSEVfSU5WQUxJREFUSU9OCiAweDAwMDI4
QTUwIFZHVF9FTkhBTkNFCiAweDAwMDA4OENDIFZHVF9FU19QRVJfR1MKQEAgLTM4LDYgKzQxLDEz
IEBAIHI2MDAgMHg5NDAwCiAweDAwMDI4QUI0IFZHVF9SRVVTRV9PRkYKIDB4MDAwMjhBQjggVkdU
X1ZUWF9DTlRfRU4KIDB4MDAwMDg4QjAgVkdUX1ZUWF9WRUNUX0VKRUNUX1JFRworMHgwMDAyOEFE
NCBWR1RfU1RSTU9VVF9WVFhfU1RSSURFXzAKKzB4MDAwMjhBRTQgVkdUX1NUUk1PVVRfVlRYX1NU
UklERV8xCisweDAwMDI4QUY0IFZHVF9TVFJNT1VUX1ZUWF9TVFJJREVfMgorMHgwMDAyOEIwNCBW
R1RfU1RSTU9VVF9WVFhfU1RSSURFXzMKKzB4MDAwMjhCMjggVkdUX1NUUk1PVVRfRFJBV19PUEFR
VUVfT0ZGU0VUCisweDAwMDI4QjJDIFZHVF9TVFJNT1VUX0RSQVdfT1BBUVVFX0JVRkZFUl9GSUxM
RURfU0laRQorMHgwMDAyOEIzMCBWR1RfU1RSTU9VVF9EUkFXX09QQVFVRV9WRVJURVhfU1RSSURF
CiAweDAwMDI4ODEwIFBBX0NMX0NMSVBfQ05UTAogMHgwMDAwOEExNCBQQV9DTF9FTkhBTkNFCiAw
eDAwMDI4QzE0IFBBX0NMX0dCX0hPUlpfQ0xJUF9BREoKQEAgLTQyOSw2ICs0MzksNyBAQCByNjAw
IDB4OTQwMAogMHgwMDAyODQzOCBTWF9BTFBIQV9SRUYKIDB4MDAwMjg0MTAgU1hfQUxQSEFfVEVT
VF9DT05UUk9MCiAweDAwMDI4MzUwIFNYX01JU0MKKzB4MDAwMjgzNTQgU1hfU1VSRkFDRV9TWU5D
CiAweDAwMDA5MDE0IFNYX01FTU9SWV9FWFBPUlRfU0laRQogMHgwMDAwOTYwNCBUQ19JTlZBTElE
QVRFCiAweDAwMDA5NDAwIFREX0ZJTFRFUjQKLS0gCjEuNy43LjUKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp
LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn
L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==
