Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAD4Z-002AR3-1j for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 20:30:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAD4X-002Mki-2h for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 20:30:54 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAD4W-002MkX-25 for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 20:30:53 +0000 Received: from mail-qv1-xf2b.google.com ([2607:f8b0:4864:20::f2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAD4T-0000000166A-3lgy for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 20:30:51 +0000 Received: by mail-qv1-xf2b.google.com with SMTP id 6a1803df08f44-89cc68655f8so3753066d6.0 for ; Tue, 07 Apr 2026 13:30:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775593849; cv=none; d=google.com; s=arc-20240605; b=b3KVVV63cmz3VgFibtHCtrl960vRq83/X39QYJL16SBv0mNhUo/lE9CpA+YvWNKmbc 89DhRWUOg+cnINUfNm2VcDe+pMjvpiP13AFoqtQIccWFY9izFhqNFIb3R6o7GDNjSZkt BuYtNMA3vHwEaecoJaSm/e44aIw7vvLv3T3EnmqflAO4RLXn2QrSfvCoUB/1ShMQ8gb2 y7cnUiudynFoIbwB0Q8q1xoHjffq0DOPzDoTmzvU/cq1mYSVVblSzc8qQKXPv1XMI3sn oknAYnSe1tAz/eoWKNzXgbNAlLBrAzk/3Pg2U7OU2vtw1acyzjyd9EWoC+A/jD0cZ+hD absw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=mwMpuZGJFlBfwAt3I7XM42TRa56KfEtbGSUbIxA2HhQ=; fh=XGqpd/8TZVf5fqkhk7tztFRwbK6B+uVaNkf9KcvyE+I=; b=dSsE2qWgpwiD1dJh6GPsVQjABVq8I7m8n/LV6/cuqF9pOMY4LqOSW6THSvUUpozzz4 nDHEgMejI4ZP1AfS2KVGtHCTWipl9DM8v7xG5rEMZArV2adwQTIkiVxd8mU7w4fXmnFl fCpN3AL7tv02ptLkg4+yQqhEKVHImcl+2+2bIvR/hZ8nxrgMCNh/TbDcldN9tC5Xx1em /oLeo6I6ThaDIzvgKLVqD6IYPtnzGP7T4x7MDZY+6WVQKV6PxXXw/6WBDn9Az99yORFA ZIZxVCIoB1xk11ylktBX9uv1IAmugbgp4zoqm2/MaQQna4otLu1uIzoRENbUQypogrMJ 8XQQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1775593849; x=1776198649; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mwMpuZGJFlBfwAt3I7XM42TRa56KfEtbGSUbIxA2HhQ=; b=Wg3aWpoWZvStcRtBCTtRQioV/f86KXZxvMO+O0rtSePAmfH6XoyjlXEUGgKJplh9J4 vT3I/AyhK2QMYRwOvXPK1JxUtQLzl1nMa+qFCj84jqjTq4rRmbvoSrwr0uAi48BL+l+x KWo3haqvpHsuAd7y/LDUWRe5CVeslS5rCdEfY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775593849; x=1776198649; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=mwMpuZGJFlBfwAt3I7XM42TRa56KfEtbGSUbIxA2HhQ=; b=mCQv4Fsa8iE1SUh/P1QPXnxdISNWGyaRc0IIAes3whPPjlvFI7kdrEf5HRDo/4Zc2d jOLAvxb1V7b9KWmgbyYGW40HCk7btQcX51QfNwzGRVql19G+elpUcmje93ZCNnxN2kRH qD+G0gkSLdJ8101cSn67IyneZQeARehkeWkmxXklPGHfDeA0jrqBCab/D1dUDHhrG76N oxiBcO9ZfHfNgP6zS+z+gxYaaL+n65fX/s34bSVM9mtHfgJr1cY9OHDk4OKS/mnvet1B apNJKcLAeD98N4gBzA61+IumzQHFpBoro4Oc0MaiZghTjzbk8icdQnF+8ue3EL7fjVPO J7kw== X-Forwarded-Encrypted: i=1; AJvYcCVJ8GsSDm9klxC7KcTorkH0l2QpGjH9tJNPWfitWV2OddDC0PMWEdPbm/SeJ+K4lgpTufCKv+ZtQdoIgTeT@lists.postgresql.org X-Gm-Message-State: AOJu0YwD2o4kWv/30B7iB+yHPInb6whn7NHIVUnBDVYnG2qquVhGyhHh lJMQALOU1ZquW2AsAC5s1dl4x4AhTnSR7jqRrnEjwwAikSNoFmGRMT+Ts7ZtuJYIWrSHGOzWCAx pTdTwnpQCn6HCuYiPJ1ajMkO2r2uPXFGpBS0JjWU7 X-Gm-Gg: AeBDiesZO9HPvh6spUBFmEzATUaPNiMqMZBeh+apfQZNEzi7Anp2jD121Lbq8Fkv+0+ PEEkNNvlCTKeA9GH2arYtUpqddKYgJ0Xup+PuGH9b3T2qftrpHXXAiB6hwcBOK4mXm4fQWL/sd7 iZ09kNYgrmzmzuFXVPefq1LcsbsWiP7zJolAZWU1ycNG9vX+JaQTdOGryS/2+9lw2Vi1G/R7ZLQ 6aaDctHjO3aHwdjQvdmzvUEpEudfXntvOr5j+FSheNn8S/n899/oH1RLaBCNTqL+HruezTzUtci 9RXtR2C5mnA5xGPGdi6I7d4VubmpF0J82bEW1vQ5gbaVT8nuXEuDaANXnfAVbdxlIdyZ38s= X-Received: by 2002:a05:6214:20cc:b0:89f:c2eb:7fde with SMTP id 6a1803df08f44-8a70509af6amr252179956d6.19.1775593848665; Tue, 07 Apr 2026 13:30:48 -0700 (PDT) MIME-Version: 1.0 References: <57biou6l65r7gr4nunoe6lignz2x6m3w45gihoypaez4pc46di@txj3bakhj66l> <3xbje45m5knff52mye5dfnrjdnwv7it2bzmqac3jqe66fvop4a@xvhy6zx7n6sb> In-Reply-To: From: Lukas Fittl Date: Tue, 7 Apr 2026 13:30:11 -0700 X-Gm-Features: AQROBzCygiZU0EBMFS3fNvjS5F4Wb4pq6SwcMahYXu1-Z7TYAUsPgLTV3PEOfQ8 Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: Andres Freund Cc: Heikki Linnakangas , PostgreSQL Hackers , Tomas Vondra , Peter Smith , Zsolt Parragi Content-Type: multipart/mixed; boundary="0000000000009efe48064ee4a89d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009efe48064ee4a89d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 6, 2026 at 5:39=E2=80=AFPM Lukas Fittl wrote: > > On Mon, Apr 6, 2026 at 3:46=E2=80=AFPM Zsolt Parragi wrote: > > > > I couldn't find any issues with v15, all comments are stylistic/minor, > > except maybe the first one. > > Thanks for reviewing! > > ... > > I'll hold off on posting another patch round since what you raised > were just small stylistic issues, and they don't apply to the > remaining prep patches before the stack patch itself. Attached v16, rebased with Zsolt's feedback addressed. I've also re-ordered as follows: 0001 is the change to make queryDesc->totaltime be allocated by ExecutorStart instead of plugins themselves, and adds a queryDesc->totaltime_options to have plugins request which level of summary instrumentation they need. This change is pretty simple, and could still make sense to get into 19. Because of the earlier Instrumentation refactoring that was pushed (thanks!) we're already asking extensions allocating queryDesc->totaltime to modify their use of InstrAlloc, so I think we might as well clean this up now. 0002 is just ExecProcNodeInstr moved to instrument.c, as Andres had suggested previously. We still get some quick performance wins from doing that (see end of email), and again, its a simple change, so could be considered if someone has bandwidth remaining. I've added a later patch that then does the more complex inlining and gets us the full speed up. At this point I'd say its safe to say that we should push out later changes to PG20, because it needs another good look over, and I don't think Andres or Heikki have the capacity for that today (but I really appreciate all the effort put in by both of you!). --- 0002 measurements (with current master and TSC clock source used for timing, best of three): CREATE TABLE lotsarows(key int not null); INSERT INTO lotsarows SELECT generate_series(1, 50000000); VACUUM FREEZE lotsarows; master: 265.319 ms actual runtime 308.532 ms TIMING OFF, BUFFERS OFF 375.810 ms TIMING OFF, BUFFERS ON 381.701 ms TIMING ON, BUFFERS OFF 437.722 ms TIMING ON, BUFFERS ON 0002: 265.207 ms actual runtime 291.799 ms TIMING OFF, BUFFERS OFF 364.653 ms TIMING OFF, BUFFERS ON 359.759 ms TIMING ON, BUFFERS OFF 433.023 ms TIMING ON, BUFFERS ON full patch set: 265.763 ms actual runtime 273.222 ms TIMING OFF, BUFFERS OFF 293.621 ms TIMING OFF, BUFFERS ON 331.926 ms TIMING ON, BUFFERS OFF 363.055 ms TIMING ON, BUFFERS ON Thanks, Lukas -- Lukas Fittl --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0002-instrumentation-Move-ExecProcNodeInstr-to-allow-.patch" Content-Disposition: attachment; filename="v16-0002-instrumentation-Move-ExecProcNodeInstr-to-allow-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr881 RnJvbSBlYjBiMzg1ZTZiNGU0M2VjMDY0M2FiNGVkNGQ0ZjFlMTdhOWFiMzY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDcgQXByIDIwMjYgMTI6MzI6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNiAwMi8xMF0g aW5zdHJ1bWVudGF0aW9uOiBNb3ZlIEV4ZWNQcm9jTm9kZUluc3RyIHRvIGFsbG93CiBpbmxpbmlu ZwoKVGhpcyBtb3ZlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgRXhlY1Byb2NOb2RlSW5zdHIsIHRo ZSBFeGVjUHJvY05vZGUKdmFyaWFudCB0aGF0IGdldHMgdXNlZCB3aGVuIGluc3RydW1lbnRhdGlv biBpcyBvbiwgdG8gYmUgZGVmaW5lZCBpbgppbnN0cnVtZW50LmMgaW5zdGVhZCBvZiBleGVjUHJv Y05vZGUuYywgYW5kIG1hcmtzIGZ1bmN0aW9ucyBpdCB1c2VzCmFzIGlubGluZS4KClRoaXMgYWxs b3dzIGNvbXBpbGVycyB0byBnZW5lcmF0ZSBhbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24sIGFu ZApzaG93cyBhIDIgdG8gNSUgcmVkdWN0aW9uIGluIGluc3RydW1lbnRhdGlvbiBvdmVyaGVhZCBm b3IgcXVlcmllcwp0aGF0IG1vdmUgbG90cyBvZiByb3dzLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8 bHVrYXNAZml0dGwuY29tPgpTdWdnZXN0ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFy YXplbC5kZT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvZmxhdC9DQVA1M1BremRCSzhWSjFmUzRBWjQ4MUxnTU44ZjltSmlDMzla Ukhxa0ZVU1lxNktXbWdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYyB8IDIwIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9pbnN0cnVtZW50LmMgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oICAgfCAgNCArKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDI4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1Byb2Nub2RlLmMKaW5kZXggMTMyZmUzN2VmNjAuLjdjNGM2NmUzMjNmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUHJvY25vZGUuYwpAQCAtMTIxLDcgKzEyMSw2IEBACiAjaW5jbHVkZSAibm9kZXMv bm9kZUZ1bmNzLmgiCiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlRmlyc3Qo UGxhblN0YXRlICpub2RlKTsKLXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlSW5z dHIoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2Vy KFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAKIApAQCAtNDcxLDI1ICs0NzAsNiBA QCBFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiB9CiAKIAotLyoKLSAqIEV4ZWNQ cm9jTm9kZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgaW5zdHJ1bWVudGF0aW9uIGNhbGxzLiAgQnkg a2VlcGluZwotICogdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uLCB3ZSBhdm9pZCBvdmVyaGVhZCBp biB0aGUgbm9ybWFsIGNhc2Ugd2hlcmUKLSAqIG5vIGluc3RydW1lbnRhdGlvbiBpcyB3YW50ZWQu Ci0gKi8KLXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCi1FeGVjUHJvY05vZGVJbnN0cihQbGFuU3Rh dGUgKm5vZGUpCi17Ci0JVHVwbGVUYWJsZVNsb3QgKnJlc3VsdDsKLQotCUluc3RyU3RhcnROb2Rl KG5vZGUtPmluc3RydW1lbnQpOwotCi0JcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChu b2RlKTsKLQotCUluc3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgVHVwSXNOdWxsKHJlc3Vs dCkgPyAwLjAgOiAxLjApOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg KgkJTXVsdGlFeGVjUHJvY05vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2lu c3RydW1lbnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCA0YzNh ZWM3ZmRlZS4uZGQwOGZjOTlmYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2lu c3RydW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTE2 LDYgKzE2LDggQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImV4ZWN1dG9yL2lu c3RydW1lbnQuaCIKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgIm5v ZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKICNp bmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKIApAQCAtNDYsNyArNDgsNyBAQCBJbnN0ckluaXRP cHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiAJ aW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9USU1F UikgIT0gMDsKIH0KIAotdm9pZAoraW5saW5lIHZvaWQKIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0 aW9uICppbnN0cikKIHsKIAlpZiAoaW5zdHItPm5lZWRfdGltZXIpCkBAIC0xMjUsMTQgKzEyNywx NCBAQCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1 bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZAogfQogCiAvKiBFbnRyeSB0byBhIHBsYW4gbm9k ZSAqLwotdm9pZAoraW5saW5lIHZvaWQKIEluc3RyU3RhcnROb2RlKE5vZGVJbnN0cnVtZW50YXRp b24gKmluc3RyKQogewogCUluc3RyU3RhcnQoJmluc3RyLT5pbnN0cik7CiB9CiAKIC8qIEV4aXQg ZnJvbSBhIHBsYW4gbm9kZSAqLwotdm9pZAoraW5saW5lIHZvaWQKIEluc3RyU3RvcE5vZGUoTm9k ZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogewogCWRvdWJsZQkJc2F2 ZV90dXBsZWNvdW50ID0gaW5zdHItPnR1cGxlY291bnQ7CkBAIC0xNjYsNiArMTY4LDI1IEBAIElu c3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQog CX0KIH0KIAorLyoKKyAqIEV4ZWNQcm9jTm9kZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgaW5zdHJ1 bWVudGF0aW9uIGNhbGxzLiAgQnkga2VlcGluZworICogdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9u LCB3ZSBhdm9pZCBvdmVyaGVhZCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2hlcmUKKyAqIG5vIGluc3Ry dW1lbnRhdGlvbiBpcyB3YW50ZWQuCisgKi8KK1R1cGxlVGFibGVTbG90ICoKK0V4ZWNQcm9jTm9k ZUluc3RyKFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwlUdXBsZVRhYmxlU2xvdCAqcmVzdWx0OworCisJ SW5zdHJTdGFydE5vZGUobm9kZS0+aW5zdHJ1bWVudCk7CisKKwlyZXN1bHQgPSBub2RlLT5FeGVj UHJvY05vZGVSZWFsKG5vZGUpOworCisJSW5zdHJTdG9wTm9kZShub2RlLT5pbnN0cnVtZW50LCBU dXBJc051bGwocmVzdWx0KSA/IDAuMCA6IDEuMCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAv KiBVcGRhdGUgdHVwbGUgY291bnQgKi8KIHZvaWQKIEluc3RyVXBkYXRlVHVwbGVDb3VudChOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0 cnVtZW50LmgKaW5kZXggY2M5ZmJiMGUyZjAuLjg0ZWYwYWQwODljIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudC5oCkBAIC0xNDIsNiArMTQyLDEwIEBAIGV4dGVybiB2b2lkIEluc3RyVXBkYXRl VHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOwog ZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKIGV4 dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5vZGVJbnN0 cnVtZW50YXRpb24gKmFkZCk7CiAKK3R5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90IFR1cGxl VGFibGVTbG90OwordHlwZWRlZiBzdHJ1Y3QgUGxhblN0YXRlIFBsYW5TdGF0ZTsKK2V4dGVybiBU dXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsKKwogZXh0 ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQg aW5zdHJ1bWVudF9vcHRpb25zKTsKIGV4dGVybiB2b2lkIEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdn ZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5zdHJTdG9wVHJpZ2dl cihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyLCBpbnQ2NCBmaXJpbmdzKTsKLS0gCjIu NDcuMQoK --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0004-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Disposition: attachment; filename="v16-0004-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr8a3 RnJvbSAyOTUyOWVmOTFkYTBmOWUyYTA1ZGM3NTc0YWQ4Y2YwZDAzNDA0YjI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU aHUsIDI2IE1hciAyMDI2IDIzOjMxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTYgMDQvMTBd IGluc3RydW1lbnRhdGlvbjogUmVwbGFjZSBkaXJlY3QgY2hhbmdlcyBvZgogcGdCdWZmZXJVc2Fn ZS9wZ1dhbFVzYWdlIHdpdGggSU5TVFJfKiBtYWNyb3MKClRoaXMgZW5jYXBzdWxhdGVzIHRoZSBv d25lcnNoaXAgb2YgdGhlc2UgZ2xvYmFscyBiZXR0ZXIsIGFuZCB3aWxsIGFsbG93CmEgc3Vic2Vx dWVudCByZWZhY3RvcmluZy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4K UmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQt Ynk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5jb20+CkRpc2N1c3Npb246 IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQVA1M1BrelozVW90 blJycm5YV0F2JTNERjRhdlJxOU1ROHpVJTJCYnhvTjl0cG92RXU2ZkdRJTQwbWFpbC5nbWFpbC5j b20jZmM3MTQwZThhZjIxZTA3YTkwYTA5ZDdlNzZiMzAwYzQKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMgICAgICB8IDEwICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jICAgIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgIHwgIDYgKysrLS0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2ZpbGUvYnVmZmlsZS5jICAgICB8ICA4ICsrKystLS0tCiBzcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyB8ICA4ICsrKystLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmggICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hh bmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCmluZGV4IGY4NWI1Mjg2MDg2Li5iZjkwNTM4M2E0MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYwpAQCAtMTExNSwxMCArMTExNSwxMCBAQCBYTG9nSW5zZXJ0UmVjb3JkKFhM b2dSZWNEYXRhICpyZGF0YSwKIAkvKiBSZXBvcnQgV0FMIHRyYWZmaWMgdG8gdGhlIGluc3RydW1l bnRhdGlvbi4gKi8KIAlpZiAoaW5zZXJ0ZWQpCiAJewotCQlwZ1dhbFVzYWdlLndhbF9ieXRlcyAr PSByZWNoZHItPnhsX3RvdF9sZW47Ci0JCXBnV2FsVXNhZ2Uud2FsX3JlY29yZHMrKzsKLQkJcGdX YWxVc2FnZS53YWxfZnBpICs9IG51bV9mcGk7Ci0JCXBnV2FsVXNhZ2Uud2FsX2ZwaV9ieXRlcyAr PSBmcGlfYnl0ZXM7CisJCUlOU1RSX1dBTFVTQUdFX0FERCh3YWxfYnl0ZXMsIHJlY2hkci0+eGxf dG90X2xlbik7CisJCUlOU1RSX1dBTFVTQUdFX0lOQ1Iod2FsX3JlY29yZHMpOworCQlJTlNUUl9X QUxVU0FHRV9BREQod2FsX2ZwaSwgbnVtX2ZwaSk7CisJCUlOU1RSX1dBTFVTQUdFX0FERCh3YWxf ZnBpX2J5dGVzLCBmcGlfYnl0ZXMpOwogCiAJCS8qIFJlcXVpcmVkIGZvciB0aGUgZmx1c2ggb2Yg cGVuZGluZyBzdGF0cyBXQUwgZGF0YSAqLwogCQlwZ3N0YXRfcmVwb3J0X2ZpeGVkID0gdHJ1ZTsK QEAgLTIwOTcsNyArMjA5Nyw3IEBAIEFkdmFuY2VYTEluc2VydEJ1ZmZlcihYTG9nUmVjUHRyIHVw dG8sIFRpbWVMaW5lSUQgdGxpLCBib29sIG9wcG9ydHVuaXN0aWMpCiAJCQkJCVdyaXRlUnFzdC5G bHVzaCA9IEludmFsaWRYTG9nUmVjUHRyOwogCQkJCQlYTG9nV3JpdGUoV3JpdGVScXN0LCB0bGks IGZhbHNlKTsKIAkJCQkJTFdMb2NrUmVsZWFzZShXQUxXcml0ZUxvY2spOwotCQkJCQlwZ1dhbFVz YWdlLndhbF9idWZmZXJzX2Z1bGwrKzsKKwkJCQkJSU5TVFJfV0FMVVNBR0VfSU5DUih3YWxfYnVm ZmVyc19mdWxsKTsKIAkJCQkJVFJBQ0VfUE9TVEdSRVNRTF9XQUxfQlVGRkVSX1dSSVRFX0RJUlRZ X0RPTkUoKTsKIAogCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCAz Y2MwYjBiZGQ5Mi4uM2UxYzM5MTYwZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j CkBAIC04NDAsNyArODQwLDcgQEAgUmVhZFJlY2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBybG9j YXRvciwgRm9ya051bWJlciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9ja04KIAkJewogCQkJUGlu TG9jYWxCdWZmZXIoYnVmSGRyLCB0cnVlKTsKIAotCQkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtz X2hpdCsrOworCQkJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9ibGtzX2hpdCk7CiAKIAkJCXJl dHVybiB0cnVlOwogCQl9CkBAIC04NjEsNyArODYxLDcgQEAgUmVhZFJlY2VudEJ1ZmZlcihSZWxG aWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051bWJlciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9j a04KIAkJewogCQkJaWYgKEJ1ZmZlclRhZ3NFcXVhbCgmdGFnLCAmYnVmSGRyLT50YWcpKQogCQkJ ewotCQkJCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0Kys7CisJCQkJSU5TVFJfQlVGVVNB R0VfSU5DUihzaGFyZWRfYmxrc19oaXQpOwogCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJVW5w aW5CdWZmZXIoYnVmSGRyKTsKQEAgLTE2ODQsOSArMTY4NCw5IEBAIFRyYWNrQnVmZmVySGl0KElP T2JqZWN0IGlvX29iamVjdCwgSU9Db250ZXh0IGlvX2NvbnRleHQsCiAJCQkJCQkJCQkgIHRydWUp OwogCiAJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCi0JCXBnQnVmZmVy VXNhZ2UubG9jYWxfYmxrc19oaXQgKz0gMTsKKwkJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9i bGtzX2hpdCk7CiAJZWxzZQotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2hpdCArPSAxOwor CQlJTlNUUl9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX2hpdCk7CiAKIAlwZ3N0YXRfY291bnRf aW9fb3AoaW9fb2JqZWN0LCBpb19jb250ZXh0LCBJT09QX0hJVCwgMSwgMCk7CiAKQEAgLTIxNDgs OSArMjE0OCw5IEBAIEFzeW5jUmVhZEJ1ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVyYXRpb24gKm9wZXJh dGlvbiwgaW50ICpuYmxvY2tzX3Byb2dyZXNzKQogCQkJCQkJCWlvX3N0YXJ0LCAxLCBpb19idWZm ZXJzX2xlbiAqIEJMQ0tTWik7CiAKIAlpZiAocGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0Vf VEVNUCkKLQkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19sZW47 CisJCUlOU1RSX0JVRlVTQUdFX0FERChsb2NhbF9ibGtzX3JlYWQsIGlvX2J1ZmZlcnNfbGVuKTsK IAllbHNlCi0JCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArPSBpb19idWZmZXJzX2xl bjsKKwkJSU5TVFJfQlVGVVNBR0VfQUREKHNoYXJlZF9ibGtzX3JlYWQsIGlvX2J1ZmZlcnNfbGVu KTsKIAogCS8qCiAJICogVHJhY2sgdmFjdXVtIGNvc3Qgd2hlbiBpc3N1aW5nIElPLCBub3QgYWZ0 ZXIgd2FpdGluZyBmb3IgaXQuIE90aGVyd2lzZQpAQCAtMzA0Myw3ICszMDQzLDcgQEAgRXh0ZW5k QnVmZmVyZWRSZWxTaGFyZWQoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAkJVGVybWluYXRl QnVmZmVySU8oYnVmX2hkciwgZmFsc2UsIEJNX1ZBTElELCB0cnVlLCBmYWxzZSk7CiAJfQogCi0J cGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc193cml0dGVuICs9IGV4dGVuZF9ieTsKKwlJTlNUUl9C VUZVU0FHRV9BREQoc2hhcmVkX2Jsa3Nfd3JpdHRlbiwgZXh0ZW5kX2J5KTsKIAogCSpleHRlbmRl ZF9ieSA9IGV4dGVuZF9ieTsKIApAQCAtMzE4OSw3ICszMTg5LDcgQEAgTWFya0J1ZmZlckRpcnR5 KEJ1ZmZlciBidWZmZXIpCiAJICovCiAJaWYgKCEob2xkX2J1Zl9zdGF0ZSAmIEJNX0RJUlRZKSkK IAl7Ci0JCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZCsrOworCQlJTlNUUl9CVUZV U0FHRV9JTkNSKHNoYXJlZF9ibGtzX2RpcnRpZWQpOwogCQlpZiAoVmFjdXVtQ29zdEFjdGl2ZSkK IAkJCVZhY3V1bUNvc3RCYWxhbmNlICs9IFZhY3V1bUNvc3RQYWdlRGlydHk7CiAJfQpAQCAtNDYw MSw3ICs0NjAxLDcgQEAgRmx1c2hCdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBTTWdyUmVsYXRpb24g cmVsbiwgSU9PYmplY3QgaW9fb2JqZWN0LAogCXBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT0JK RUNUX1JFTEFUSU9OLCBpb19jb250ZXh0LAogCQkJCQkJCUlPT1BfV1JJVEUsIGlvX3N0YXJ0LCAx LCBCTENLU1opOwogCi0JcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc193cml0dGVuKys7CisJSU5T VFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc193cml0dGVuKTsKIAogCS8qCiAJICogTWFyayB0 aGUgYnVmZmVyIGFzIGNsZWFuIGFuZCBlbmQgdGhlIEJNX0lPX0lOX1BST0dSRVNTIHN0YXRlLgpA QCAtNTc5Niw3ICs1Nzk2LDcgQEAgTWFya1NoYXJlZEJ1ZmZlckRpcnR5SGludChCdWZmZXIgYnVm ZmVyLCBCdWZmZXJEZXNjICpidWZIZHIsIHVpbnQ2NCBsb2Nrc3RhdGUsCiAJCQlVbmxvY2tCdWZI ZHIoYnVmSGRyKTsKIAkJfQogCi0JCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZCsr OworCQlJTlNUUl9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX2RpcnRpZWQpOwogCQlpZiAoVmFj dXVtQ29zdEFjdGl2ZSkKIAkJCVZhY3V1bUNvc3RCYWxhbmNlICs9IFZhY3V1bUNvc3RQYWdlRGly dHk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKaW5kZXggMzk2ZGE4NGIy NWMuLjg1MWI5OTA1NmQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9s b2NhbGJ1Zi5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKQEAg LTIxOCw3ICsyMTgsNyBAQCBGbHVzaExvY2FsQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZkhkciwgU01n clJlbGF0aW9uIHJlbG4pCiAJLyogTWFyayBub3QtZGlydHkgKi8KIAlUZXJtaW5hdGVMb2NhbEJ1 ZmZlcklPKGJ1ZkhkciwgdHJ1ZSwgMCwgZmFsc2UpOwogCi0JcGdCdWZmZXJVc2FnZS5sb2NhbF9i bGtzX3dyaXR0ZW4rKzsKKwlJTlNUUl9CVUZVU0FHRV9JTkNSKGxvY2FsX2Jsa3Nfd3JpdHRlbik7 CiB9CiAKIHN0YXRpYyBCdWZmZXIKQEAgLTQ3OSw3ICs0NzksNyBAQCBFeHRlbmRCdWZmZXJlZFJl bExvY2FsKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAKIAkqZXh0ZW5kZWRfYnkgPSBleHRl bmRfYnk7CiAKLQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3Nfd3JpdHRlbiArPSBleHRlbmRfYnk7 CisJSU5TVFJfQlVGVVNBR0VfQUREKGxvY2FsX2Jsa3Nfd3JpdHRlbiwgZXh0ZW5kX2J5KTsKIAog CXJldHVybiBmaXJzdF9ibG9jazsKIH0KQEAgLTUxMCw3ICs1MTAsNyBAQCBNYXJrTG9jYWxCdWZm ZXJEaXJ0eShCdWZmZXIgYnVmZmVyKQogCWJ1Zl9zdGF0ZSA9IHBnX2F0b21pY19yZWFkX3U2NCgm YnVmSGRyLT5zdGF0ZSk7CiAKIAlpZiAoIShidWZfc3RhdGUgJiBCTV9ESVJUWSkpCi0JCXBnQnVm ZmVyVXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkKys7CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9j YWxfYmxrc19kaXJ0aWVkKTsKIAogCWJ1Zl9zdGF0ZSB8PSBCTV9ESVJUWTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvZmlsZS9idWZmaWxlLmMKaW5kZXggYzRhZmU0ZDM2OGEuLjhiNTAxZGZjYWRkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKQEAgLTQ3NSwxMyArNDc1LDEzIEBAIEJ1ZkZpbGVMb2Fk QnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiAJaWYgKHRyYWNrX2lvX3RpbWluZykKIAl7CiAJCUlOU1RS X1RJTUVfU0VUX0NVUlJFTlQoaW9fdGltZSk7Ci0JCUlOU1RSX1RJTUVfQUNDVU1fRElGRihwZ0J1 ZmZlclVzYWdlLnRlbXBfYmxrX3JlYWRfdGltZSwgaW9fdGltZSwgaW9fc3RhcnQpOworCQlJTlNU Ul9CVUZVU0FHRV9USU1FX0FDQ1VNX0RJRkYodGVtcF9ibGtfcmVhZF90aW1lLCBpb190aW1lLCBp b19zdGFydCk7CiAJfQogCiAJLyogd2UgY2hvb3NlIG5vdCB0byBhZHZhbmNlIGN1ck9mZnNldCBo ZXJlICovCiAKIAlpZiAoZmlsZS0+bmJ5dGVzID4gMCkKLQkJcGdCdWZmZXJVc2FnZS50ZW1wX2Js a3NfcmVhZCsrOworCQlJTlNUUl9CVUZVU0FHRV9JTkNSKHRlbXBfYmxrc19yZWFkKTsKIH0KIAog LyoKQEAgLTU0OSwxMyArNTQ5LDEzIEBAIEJ1ZkZpbGVEdW1wQnVmZmVyKEJ1ZkZpbGUgKmZpbGUp CiAJCWlmICh0cmFja19pb190aW1pbmcpCiAJCXsKIAkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo aW9fdGltZSk7Ci0JCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS50ZW1wX2Js a193cml0ZV90aW1lLCBpb190aW1lLCBpb19zdGFydCk7CisJCQlJTlNUUl9CVUZVU0FHRV9USU1F X0FDQ1VNX0RJRkYodGVtcF9ibGtfd3JpdGVfdGltZSwgaW9fdGltZSwgaW9fc3RhcnQpOwogCQl9 CiAKIAkJZmlsZS0+Y3VyT2Zmc2V0ICs9IGJ5dGVzdG93cml0ZTsKIAkJd3BvcyArPSBieXRlc3Rv d3JpdGU7CiAKLQkJcGdCdWZmZXJVc2FnZS50ZW1wX2Jsa3Nfd3JpdHRlbisrOworCQlJTlNUUl9C VUZVU0FHRV9JTkNSKHRlbXBfYmxrc193cml0dGVuKTsKIAl9CiAJZmlsZS0+ZGlydHkgPSBmYWxz ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwppbmRleCAyYmUyNmU5MjI4 My4uZTM4MjlkN2ZlN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9pby5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCkBA IC0xMzUsMTcgKzEzNSwxNyBAQCBwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09iamVjdCBpb19v YmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wLAogCQkJewogCQkJCXBnc3Rh dF9jb3VudF9idWZmZXJfd3JpdGVfdGltZShJTlNUUl9USU1FX0dFVF9NSUNST1NFQyhpb190aW1l KSk7CiAJCQkJaWYgKGlvX29iamVjdCA9PSBJT09CSkVDVF9SRUxBVElPTikKLQkJCQkJSU5TVFJf VElNRV9BREQocGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUpOwor CQkJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FERChzaGFyZWRfYmxrX3dyaXRlX3RpbWUsIGlvX3Rp bWUpOwogCQkJCWVsc2UgaWYgKGlvX29iamVjdCA9PSBJT09CSkVDVF9URU1QX1JFTEFUSU9OKQot CQkJCQlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa193cml0ZV90aW1lLCBp b190aW1lKTsKKwkJCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQobG9jYWxfYmxrX3dyaXRlX3Rp bWUsIGlvX3RpbWUpOwogCQkJfQogCQkJZWxzZSBpZiAoaW9fb3AgPT0gSU9PUF9SRUFEKQogCQkJ ewogCQkJCXBnc3RhdF9jb3VudF9idWZmZXJfcmVhZF90aW1lKElOU1RSX1RJTUVfR0VUX01JQ1JP U0VDKGlvX3RpbWUpKTsKIAkJCQlpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1JFTEFUSU9OKQot CQkJCQlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtfcmVhZF90aW1lLCBp b190aW1lKTsKKwkJCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQoc2hhcmVkX2Jsa19yZWFkX3Rp bWUsIGlvX3RpbWUpOwogCQkJCWVsc2UgaWYgKGlvX29iamVjdCA9PSBJT09CSkVDVF9URU1QX1JF TEFUSU9OKQotCQkJCQlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa19yZWFk X3RpbWUsIGlvX3RpbWUpOworCQkJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FERChsb2NhbF9ibGtf cmVhZF90aW1lLCBpb190aW1lKTsKIAkJCX0KIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50 LmgKaW5kZXggODRlZjBhZDA4OWMuLjQ0MzBjMjIyNDkzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oCkBAIC0xNTgsNCArMTU4LDIzIEBAIGV4dGVybiB2b2lkIEJ1ZmZlclVzYWdlQWNjdW1E aWZmKEJ1ZmZlclVzYWdlICpkc3QsCiBleHRlcm4gdm9pZCBXYWxVc2FnZUFjY3VtRGlmZihXYWxV c2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAqYWRkLAogCQkJCQkJCSAgY29uc3QgV2FsVXNhZ2Ug KnN1Yik7CiAKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfSU5DUihmbGQpIGRvIHsgXAorCQlwZ0J1 ZmZlclVzYWdlLmZsZCsrOyBcCisJfSB3aGlsZSgwKQorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9B REQoZmxkLHZhbCkgZG8geyBcCisJCXBnQnVmZmVyVXNhZ2UuZmxkICs9ICh2YWwpOyBcCisJfSB3 aGlsZSgwKQorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FERChmbGQsdmFsKSBkbyB7IFwK KwlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLmZsZCwgdmFsKTsgXAorCX0gd2hpbGUgKDAp CisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFsLHN0YXJ0 dmFsKSBkbyB7IFwKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5mbGQsIGVu ZHZhbCwgc3RhcnR2YWwpOyBcCisJfSB3aGlsZSAoMCkKKyNkZWZpbmUgSU5TVFJfV0FMVVNBR0Vf SU5DUihmbGQpIGRvIHsgXAorCQlwZ1dhbFVzYWdlLmZsZCsrOyBcCisJfSB3aGlsZSgwKQorI2Rl ZmluZSBJTlNUUl9XQUxVU0FHRV9BREQoZmxkLHZhbCkgZG8geyBcCisJCXBnV2FsVXNhZ2UuZmxk ICs9ICh2YWwpOyBcCisJfSB3aGlsZSgwKQorCiAjZW5kaWYJCQkJCQkJLyogSU5TVFJVTUVOVF9I ICovCi0tIAoyLjQ3LjEKCg== --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0003-instrumentation-Use-Instrumentation-instead-of-m.patch" Content-Disposition: attachment; filename="v16-0003-instrumentation-Use-Instrumentation-instead-of-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr892 RnJvbSBiMDBiMDRhZjRlYzdhYjVjZDI0OTU0NGNlZWE0ZDJhNTliNWI0OTUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMDU6MDg6MjMgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNiAwMy8xMF0g aW5zdHJ1bWVudGF0aW9uOiBVc2UgSW5zdHJ1bWVudGF0aW9uIGluc3RlYWQgb2YKIG1hbnVhbCBi dWZmZXIgdHJhY2tpbmcKClRoaXMgcmVwbGFjZXMgZGlmZmVyZW50IHJlcGVhdGVkIGNvZGUgYmxv Y2tzIHRoYXQgcmVhZCBwZ0J1ZmZlclVzYWdlIC8KcGdXYWxVc2FnZSwgYW5kIG1heSBoYXZlIGFs c28gYmVlbiBydW5uaW5nIGEgdGltZXIgdG8gbWVhc3VyZSBhY3Rpdml0eSwKd2l0aCB0aGUgbmV3 IEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgYW5kIGFzc29jaWF0ZWQgaGVscGVycy4KCkF1dGhvcjog THVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0t LQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgNjIgKysr KystLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAg ICAgICAgIHwgMTUgKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAg ICAgICAgICB8IDMxICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAg ICAgICAgICAgICAgICB8IDQ0ICsrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW5fZHIuYyAgICAgICAgICAgICB8IDUzICsrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDI4ICsrKystLS0tLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9kci5oICAgICAgICAgICAgIHwgIDUgKy0KIDcgZmlsZXMg Y2hhbmdlZCwgOTEgaW5zZXJ0aW9ucygrKSwgMTQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJp Yi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggYzg5ODFkY2I1 Y2YuLjVkYTcxYzliZTE2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19z dGF0X3N0YXRlbWVudHMuYwpAQCAtOTAxLDIyICs5MDEsMTYgQEAgcGdzc19wbGFubmVyKFF1ZXJ5 ICpwYXJzZSwKIAkJJiYgcGdzc190cmFja19wbGFubmluZyAmJiBxdWVyeV9zdHJpbmcKIAkJJiYg cGFyc2UtPnF1ZXJ5SWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7Ci0JCWluc3RyX3RpbWUJc3RhcnQ7 Ci0JCWluc3RyX3RpbWUJZHVyYXRpb247Ci0JCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAot CQkJCQlidWZ1c2FnZTsKLQkJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdhbHVzYWdl OwotCi0JCS8qIFdlIG5lZWQgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGFzIHRoZSBwbGFubmVyIGNh biBhY2Nlc3MgdGhlbS4gKi8KLQkJYnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOworCQlJ bnN0cnVtZW50YXRpb24gaW5zdHIgPSB7MH07CiAKIAkJLyoKKwkJICogV2UgbmVlZCB0byB0cmFj ayBidWZmZXIgdXNhZ2UgYXMgdGhlIHBsYW5uZXIgY2FuIGFjY2VzcyB0aGVtLgorCQkgKgogCQkg KiBTaW1pbGFybHkgdGhlIHBsYW5uZXIgY291bGQgd3JpdGUgc29tZSBXQUwgcmVjb3JkcyBpbiBz b21lIGNhc2VzCiAJCSAqIChlLmcuIHNldHRpbmcgYSBoaW50IGJpdCB3aXRoIHRob3NlIGJlaW5n IFdBTC1sb2dnZWQpCiAJCSAqLwotCQl3YWx1c2FnZV9zdGFydCA9IHBnV2FsVXNhZ2U7Ci0JCUlO U1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnQpOworCQlJbnN0ckluaXRPcHRpb25zKCZpbnN0ciwg SU5TVFJVTUVOVF9BTEwpOworCQlJbnN0clN0YXJ0KCZpbnN0cik7CiAKIAkJbmVzdGluZ19sZXZl bCsrOwogCQlQR19UUlkoKTsKQEAgLTkzNCwyNiArOTI4LDE3IEBAIHBnc3NfcGxhbm5lcihRdWVy eSAqcGFyc2UsCiAJCX0KIAkJUEdfRU5EX1RSWSgpOwogCi0JCUlOU1RSX1RJTUVfU0VUX0NVUlJF TlQoZHVyYXRpb24pOwotCQlJTlNUUl9USU1FX1NVQlRSQUNUKGR1cmF0aW9uLCBzdGFydCk7Ci0K LQkJLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0JCW1lbXNldCgm YnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlm ZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwotCi0JCS8qIGNh bGMgZGlmZmVyZW5jZXMgb2YgV0FMIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJndhbHVzYWdlLCAw LCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVzYWdlLCAmcGdX YWxVc2FnZSwgJndhbHVzYWdlX3N0YXJ0KTsKKwkJSW5zdHJTdG9wKCZpbnN0cik7CiAKIAkJcGdz c19zdG9yZShxdWVyeV9zdHJpbmcsCiAJCQkJICAgcGFyc2UtPnF1ZXJ5SWQsCiAJCQkJICAgcGFy c2UtPnN0bXRfbG9jYXRpb24sCiAJCQkJICAgcGFyc2UtPnN0bXRfbGVuLAogCQkJCSAgIFBHU1Nf UExBTiwKLQkJCQkgICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhkdXJhdGlvbiksCisJCQkJICAg SU5TVFJfVElNRV9HRVRfTUlMTElTRUMoaW5zdHIudG90YWwpLAogCQkJCSAgIDAsCi0JCQkJICAg JmJ1ZnVzYWdlLAotCQkJCSAgICZ3YWx1c2FnZSwKKwkJCQkgICAmaW5zdHIuYnVmdXNhZ2UsCisJ CQkJICAgJmluc3RyLndhbHVzYWdlLAogCQkJCSAgIE5VTEwsCiAJCQkJICAgTlVMTCwKIAkJCQkg ICAwLApAQCAtMTEzNSwxNyArMTEyMCwxMSBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRT dG10ICpwc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCSFJc0EocGFyc2V0cmVlLCBF eGVjdXRlU3RtdCkgJiYKIAkJIUlzQShwYXJzZXRyZWUsIFByZXBhcmVTdG10KSkKIAl7Ci0JCWlu c3RyX3RpbWUJc3RhcnQ7Ci0JCWluc3RyX3RpbWUJZHVyYXRpb247CiAJCXVpbnQ2NAkJcm93czsK LQkJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCi0JCQkJCWJ1ZnVzYWdlOwotCQlXYWxVc2Fn ZQl3YWx1c2FnZV9zdGFydCwKLQkJCQkJd2FsdXNhZ2U7CisJCUluc3RydW1lbnRhdGlvbiBpbnN0 ciA9IHswfTsKIAotCQlidWZ1c2FnZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7Ci0JCXdhbHVzYWdl X3N0YXJ0ID0gcGdXYWxVc2FnZTsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydCk7CisJ CUluc3RySW5pdE9wdGlvbnMoJmluc3RyLCBJTlNUUlVNRU5UX0FMTCk7CisJCUluc3RyU3RhcnQo Jmluc3RyKTsKIAogCQluZXN0aW5nX2xldmVsKys7CiAJCVBHX1RSWSgpOwpAQCAtMTE3NSw4ICsx MTU0LDcgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNo YXIgKnF1ZXJ5U3RyaW5nLAogCQkgKiBmb3JtZXIgdmFsdWUsIHdoaWNoJ2Qgb3RoZXJ3aXNlIGJl IGEgZ29vZCBpZGVhLgogCQkgKi8KIAotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGR1cmF0aW9u KTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwgc3RhcnQpOworCQlJbnN0clN0b3Ao Jmluc3RyKTsKIAogCQkvKgogCQkgKiBUcmFjayB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgcmV0 cmlldmVkIG9yIGFmZmVjdGVkIGJ5IHRoZSB1dGlsaXR5CkBAIC0xMTg5LDIzICsxMTY3LDE1IEBA IHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBjb25zdCBjaGFyICpxdWVy eVN0cmluZywKIAkJCQkJICAgcWMtPmNvbW1hbmRUYWcgPT0gQ01EVEFHX1JFRlJFU0hfTUFURVJJ QUxJWkVEX1ZJRVcpKSA/CiAJCQlxYy0+bnByb2Nlc3NlZCA6IDA7CiAKLQkJLyogY2FsYyBkaWZm ZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0JCW1lbXNldCgmYnVmdXNhZ2UsIDAsIHNp emVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZw Z0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwotCi0JCS8qIGNhbGMgZGlmZmVyZW5jZXMg b2YgV0FMIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNh Z2UpKTsKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVzYWdlLCAmcGdXYWxVc2FnZSwgJndhbHVz YWdlX3N0YXJ0KTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5U3RyaW5nLAogCQkJCSAgIHNhdmVkX3F1 ZXJ5SWQsCiAJCQkJICAgc2F2ZWRfc3RtdF9sb2NhdGlvbiwKIAkJCQkgICBzYXZlZF9zdG10X2xl biwKIAkJCQkgICBQR1NTX0VYRUMsCi0JCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoZHVy YXRpb24pLAorCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RyLnRvdGFsKSwKIAkJ CQkgICByb3dzLAotCQkJCSAgICZidWZ1c2FnZSwKLQkJCQkgICAmd2FsdXNhZ2UsCisJCQkJICAg Jmluc3RyLmJ1ZnVzYWdlLAorCQkJCSAgICZpbnN0ci53YWx1c2FnZSwKIAkJCQkgICBOVUxMLAog CQkJCSAgIE5VTEwsCiAJCQkJICAgMCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpp bmRleCAzOTM5NWFlZDBkNS4uNjE3M2U1M2M0YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKQEAgLTYzOCw4ICs2MzgsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVs LCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAlUaW1lc3RhbXBUeiBzdGFydHRpbWUgPSAw OwogCVBnU3RhdF9Db3VudGVyIHN0YXJ0cmVhZHRpbWUgPSAwLAogCQkJCXN0YXJ0d3JpdGV0aW1l ID0gMDsKLQlXYWxVc2FnZQlzdGFydHdhbHVzYWdlID0gcGdXYWxVc2FnZTsKLQlCdWZmZXJVc2Fn ZSBzdGFydGJ1ZmZlcnVzYWdlID0gcGdCdWZmZXJVc2FnZTsKKwlJbnN0cnVtZW50YXRpb24gKmlu c3RyID0gTlVMTDsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKIAljaGFyCSAg KippbmRuYW1lcyA9IE5VTEw7CiAJU2l6ZQkJZGVhZF9pdGVtc19tYXhfYnl0ZXMgPSAwOwpAQCAt NjU1LDYgKzY1NCw4IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1 bVBhcmFtcyAqcGFyYW1zLAogCQkJc3RhcnRyZWFkdGltZSA9IHBnU3RhdEJsb2NrUmVhZFRpbWU7 CiAJCQlzdGFydHdyaXRldGltZSA9IHBnU3RhdEJsb2NrV3JpdGVUaW1lOwogCQl9CisJCWluc3Ry ID0gSW5zdHJBbGxvYyhJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1dBTCk7CisJCUlu c3RyU3RhcnQoaW5zdHIpOwogCX0KIAogCS8qIFVzZWQgZm9yIGluc3RydW1lbnRhdGlvbiBhbmQg c3RhdHMgcmVwb3J0ICovCkBAIC05OTYsMTQgKzk5NywxNCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVs YXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl7CiAJCVRpbWVzdGFtcFR6 IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkJSW5zdHJTdG9wKGluc3RyKTsK KwogCQlpZiAodmVyYm9zZSB8fCBwYXJhbXMtPmxvZ192YWN1dW1fbWluX2R1cmF0aW9uID09IDAg fHwKIAkJCVRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0dGltZSwgZW5kdGltZSwKIAkJ CQkJCQkJCSAgIHBhcmFtcy0+bG9nX3ZhY3V1bV9taW5fZHVyYXRpb24pKQogCQl7CiAJCQlsb25n CQlzZWNzX2R1cjsKIAkJCWludAkJCXVzZWNzX2R1cjsKLQkJCVdhbFVzYWdlCXdhbHVzYWdlOwot CQkJQnVmZmVyVXNhZ2UgYnVmZmVydXNhZ2U7CiAJCQlTdHJpbmdJbmZvRGF0YSBidWY7CiAJCQlj aGFyCSAgICptc2dmbXQ7CiAJCQlpbnQzMgkJZGlmZjsKQEAgLTEwMTIsMTIgKzEwMTMsMTAgQEAg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMs CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19yZWFkOwog CQkJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsKKwkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdl ID0gaW5zdHItPmJ1ZnVzYWdlOworCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+d2FsdXNh Z2U7CiAKIAkJCVRpbWVzdGFtcERpZmZlcmVuY2Uoc3RhcnR0aW1lLCBlbmR0aW1lLCAmc2Vjc19k dXIsICZ1c2Vjc19kdXIpOwotCQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdl KSk7Ci0JCQlXYWxVc2FnZUFjY3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3 YWx1c2FnZSk7Ci0JCQltZW1zZXQoJmJ1ZmZlcnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2Up KTsKLQkJCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZmZXJ1c2FnZSwgJnBnQnVmZmVyVXNhZ2Us ICZzdGFydGJ1ZmZlcnVzYWdlKTsKIAogCQkJdG90YWxfYmxrc19oaXQgPSBidWZmZXJ1c2FnZS5z aGFyZWRfYmxrc19oaXQgKwogCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfaGl0OwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYW5hbHl6ZS5jCmluZGV4IDQ5YTVjZGY1NzljLi44NDcyZmMwYzI4MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FuYWx5emUuYwpAQCAtMzA5LDkgKzMwOSw3IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9u ZXJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJ aW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKLQlXYWxVc2Fn ZQlzdGFydHdhbHVzYWdlID0gcGdXYWxVc2FnZTsKLQlCdWZmZXJVc2FnZSBzdGFydGJ1ZmZlcnVz YWdlID0gcGdCdWZmZXJVc2FnZTsKLQlCdWZmZXJVc2FnZSBidWZmZXJ1c2FnZTsKKwlJbnN0cnVt ZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAlQZ1N0YXRfQ291bnRlciBzdGFydHJlYWR0aW1lID0g MDsKIAlQZ1N0YXRfQ291bnRlciBzdGFydHdyaXRldGltZSA9IDA7CiAKQEAgLTM2Miw2ICszNjAs OSBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAq cGFyYW1zLAogCQl9CiAKIAkJcGdfcnVzYWdlX2luaXQoJnJ1MCk7CisKKwkJaW5zdHIgPSBJbnN0 ckFsbG9jKElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKwkJSW5zdHJTdGFy dChpbnN0cik7CiAJfQogCiAJLyogVXNlZCBmb3IgaW5zdHJ1bWVudGF0aW9uIGFuZCBzdGF0cyBy ZXBvcnQgKi8KQEAgLTc0MiwxMiArNzQzLDEzIEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9u ZXJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJewogCQlUaW1lc3RhbXBUeiBlbmR0 aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCisJCUluc3RyU3RvcChpbnN0cik7CisKIAkJ aWYgKHZlcmJvc2UgfHwgcGFyYW1zLT5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24gPT0gMCB8fAog CQkJVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLAogCQkJCQkJ CQkJICAgcGFyYW1zLT5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24pKQogCQl7CiAJCQlsb25nCQlk ZWxheV9pbl9tczsKLQkJCVdhbFVzYWdlCXdhbHVzYWdlOwogCQkJZG91YmxlCQlyZWFkX3JhdGUg PSAwOwogCQkJZG91YmxlCQl3cml0ZV9yYXRlID0gMDsKIAkJCWNoYXIJICAgKm1zZ2ZtdDsKQEAg LTc1NSwxOCArNzU3LDE1IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgY29uc3Qg VmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCQlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7CiAJCQlpbnQ2 NAkJdG90YWxfYmxrc19yZWFkOwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsKLQotCQkJ bWVtc2V0KCZidWZmZXJ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JCQlCdWZmZXJV c2FnZUFjY3VtRGlmZigmYnVmZmVydXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmc3RhcnRidWZmZXJ1 c2FnZSk7Ci0JCQltZW1zZXQoJndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJCVdh bFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZzdGFydHdhbHVzYWdlKTsK LQotCQkJdG90YWxfYmxrc19oaXQgPSBidWZmZXJ1c2FnZS5zaGFyZWRfYmxrc19oaXQgKwotCQkJ CWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfaGl0OwotCQkJdG90YWxfYmxrc19yZWFkID0gYnVmZmVy dXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19yZWFk OwotCQkJdG90YWxfYmxrc19kaXJ0aWVkID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGll ZCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkOworCQkJQnVmZmVyVXNhZ2Ug YnVmdXNhZ2UgPSBpbnN0ci0+YnVmdXNhZ2U7CisJCQlXYWxVc2FnZQl3YWx1c2FnZSA9IGluc3Ry LT53YWx1c2FnZTsKKworCQkJdG90YWxfYmxrc19oaXQgPSBidWZ1c2FnZS5zaGFyZWRfYmxrc19o aXQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0OworCQkJdG90YWxfYmxrc19yZWFkID0g YnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArCisJCQkJYnVmdXNhZ2UubG9jYWxfYmxrc19yZWFk OworCQkJdG90YWxfYmxrc19kaXJ0aWVkID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZCAr CisJCQkJYnVmdXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkOwogCiAJCQkvKgogCQkJICogV2UgZG8g bm90IGV4cGVjdCBhbiBhbmFseXplIHRvIHRha2UgPiAyNSBkYXlzIGFuZCBpdCBzaW1wbGlmaWVz CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZjE1MWYyMWY5YjMuLmRlYWFiYTZmOTAwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zMjQsMTQgKzMyNCwxNyBAQCBzdGFuZGFyZF9FeHBsYWlu T25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQkJCSBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlQbGFubmVkU3RtdCAqcGxhbjsKLQlpbnN0cl90aW1l CXBsYW5zdGFydCwKLQkJCQlwbGFuZHVyYXRpb247Ci0JQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3Rh cnQsCi0JCQkJYnVmdXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uIHBsYW5faW5zdHIgPSB7MH07CisJ aW50CQkJaW5zdHJ1bWVudF9vcHRpb25zID0gSU5TVFJVTUVOVF9USU1FUjsKIAlNZW1vcnlDb250 ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9jdHggPSBO VUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKIAorCWlmIChlcy0+YnVmZmVy cykKKwkJaW5zdHJ1bWVudF9vcHRpb25zIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKworCUluc3Ry SW5pdE9wdGlvbnMoJnBsYW5faW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisKIAlpZiAoZXMt Pm1lbW9yeSkKIAl7CiAJCS8qCkBAIC0zNDgsMTUgKzM1MSwxMiBAQCBzdGFuZGFyZF9FeHBsYWlu T25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJc2F2ZWRfY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5uZXJfY3R4KTsKIAl9CiAKLQlpZiAoZXMtPmJ1ZmZl cnMpCi0JCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQlJTlNUUl9USU1FX1NFVF9D VVJSRU5UKHBsYW5zdGFydCk7CisJSW5zdHJTdGFydCgmcGxhbl9pbnN0cik7CiAKIAkvKiBwbGFu IHRoZSBxdWVyeSAqLwogCXBsYW4gPSBwZ19wbGFuX3F1ZXJ5KHF1ZXJ5LCBxdWVyeVN0cmluZywg Y3Vyc29yT3B0aW9ucywgcGFyYW1zLCBlcyk7CiAKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBs YW5kdXJhdGlvbik7Ci0JSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFy dCk7CisJSW5zdHJTdG9wKCZwbGFuX2luc3RyKTsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAg LTM2NCwxNiArMzY0LDkgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwg aW50IGN1cnNvck9wdGlvbnMsCiAJCU1lbW9yeUNvbnRleHRNZW1Db25zdW1lZChwbGFubmVyX2N0 eCwgJm1lbV9jb3VudGVycyk7CiAJfQogCi0JLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIg Y291bnRlcnMuICovCi0JaWYgKGVzLT5idWZmZXJzKQotCXsKLQkJbWVtc2V0KCZidWZ1c2FnZSwg MCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2Fn ZSwgJnBnQnVmZmVyVXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7Ci0JfQotCiAJLyogcnVuIGl0IChp ZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwogCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGlu dG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKLQkJCQkgICAmcGxhbmR1cmF0 aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKKwkJCQkgICAmcGxhbl9pbnN0 ci50b3RhbCwgKGVzLT5idWZmZXJzID8gJnBsYW5faW5zdHIuYnVmdXNhZ2UgOiBOVUxMKSwKIAkJ CQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQogCkBAIC01OTAsNyAr NTgzLDEyIEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0Ns YXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCS8qIGdyYWIgc2VyaWFsaXphdGlvbiBt ZXRyaWNzIGJlZm9yZSB3ZSBkZXN0cm95IHRoZSBEZXN0UmVjZWl2ZXIgKi8KIAlpZiAoZXMtPnNl cmlhbGl6ZSAhPSBFWFBMQUlOX1NFUklBTElaRV9OT05FKQotCQlzZXJpYWxpemVNZXRyaWNzID0g R2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoZGVzdCk7CisJeworCQlTZXJpYWxpemVNZXRyaWNzICpt ZXRyaWNzID0gR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoZGVzdCk7CisKKwkJaWYgKG1ldHJpY3Mp CisJCQltZW1jcHkoJnNlcmlhbGl6ZU1ldHJpY3MsIG1ldHJpY3MsIHNpemVvZihTZXJpYWxpemVN ZXRyaWNzKSk7CisJfQogCiAJLyogY2FsbCB0aGUgRGVzdFJlY2VpdmVyJ3MgZGVzdHJveSBtZXRo b2QgZXZlbiBkdXJpbmcgZXhwbGFpbiAqLwogCWRlc3QtPnJEZXN0cm95KGRlc3QpOwpAQCAtMTAx OSw3ICsxMDE3LDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNl cmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKIAkJaWYg KGVzLT50aW1pbmcpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJTZXJpYWxpemF0aW9u OiB0aW1lPSUuM2YgbXMgIG91dHB1dD0iIFVJTlQ2NF9GT1JNQVQgImtCICBmb3JtYXQ9JXNcbiIs Ci0JCQkJCQkJIDEwMDAuMCAqIElOU1RSX1RJTUVfR0VUX0RPVUJMRShtZXRyaWNzLT50aW1lU3Bl bnQpLAorCQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+aW5z dHIudG90YWwpLAogCQkJCQkJCSBCWVRFU19UT19LSUxPQllURVMobWV0cmljcy0+Ynl0ZXNTZW50 KSwKIAkJCQkJCQkgZm9ybWF0KTsKIAkJZWxzZQpAQCAtMTAyNywxMCArMTAyNSwxMCBAQCBFeHBs YWluUHJpbnRTZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0 cmljcykKIAkJCQkJCQkgQllURVNfVE9fS0lMT0JZVEVTKG1ldHJpY3MtPmJ5dGVzU2VudCksCiAJ CQkJCQkJIGZvcm1hdCk7CiAKLQkJaWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVmZmVyX3VzYWdl KGVzLCAmbWV0cmljcy0+YnVmZmVyVXNhZ2UpKQorCQlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGVla19i dWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSkpCiAJCXsKIAkJCWVzLT5p bmRlbnQrKzsKLQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNhZ2Up OworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CiAJ CQllcy0+aW5kZW50LS07CiAJCX0KIAl9CkBAIC0xMDM4LDEzICsxMDM2LDEzIEBAIEV4cGxhaW5Q cmludFNlcmlhbGl6ZShFeHBsYWluU3RhdGUgKmVzLCBTZXJpYWxpemVNZXRyaWNzICptZXRyaWNz KQogCXsKIAkJaWYgKGVzLT50aW1pbmcpCiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGltZSIs ICJtcyIsCi0JCQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+ dGltZVNwZW50KSwKKwkJCQkJCQkJIDEwMDAuMCAqIElOU1RSX1RJTUVfR0VUX0RPVUJMRShtZXRy aWNzLT5pbnN0ci50b3RhbCksCiAJCQkJCQkJCSAzLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eVVJ bnRlZ2VyKCJPdXRwdXQgVm9sdW1lIiwgImtCIiwKIAkJCQkJCQkJQllURVNfVE9fS0lMT0JZVEVT KG1ldHJpY3MtPmJ5dGVzU2VudCksIGVzKTsKIAkJRXhwbGFpblByb3BlcnR5VGV4dCgiRm9ybWF0 IiwgZm9ybWF0LCBlcyk7CiAJCWlmIChlcy0+YnVmZmVycykKLQkJCXNob3dfYnVmZmVyX3VzYWdl KGVzLCAmbWV0cmljcy0+YnVmZmVyVXNhZ2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZt ZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CiAJfQogCiAJRXhwbGFpbkNsb3NlR3JvdXAoIlNlcmlh bGl6YXRpb24iLCAiU2VyaWFsaXphdGlvbiIsIHRydWUsIGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW5fZHIuYwppbmRleCAzYzk2MDYxY2YzMi4uZGY1YWU1ZjQ1NjkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluX2RyLmMKQEAgLTExMCwxNSArMTEwLDEwIEBAIHNlcmlhbGl6ZUFuYWx5emVSZWNlaXZl KFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJTWVtb3J5Q29udGV4 dCBvbGRjb250ZXh0OwogCVN0cmluZ0luZm8JYnVmID0gJm15U3RhdGUtPmJ1ZjsKIAlpbnQJCQlu YXR0cyA9IHR5cGVpbmZvLT5uYXR0czsKLQlpbnN0cl90aW1lCXN0YXJ0LAotCQkJCWVuZDsKLQlC dWZmZXJVc2FnZSBpbnN0cl9zdGFydDsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gJm15U3Rh dGUtPm1ldHJpY3MuaW5zdHI7CiAKLQkvKiBvbmx5IG1lYXN1cmUgdGltZSwgYnVmZmVycyBpZiBy ZXF1ZXN0ZWQgKi8KLQlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZykKLQkJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChzdGFydCk7Ci0JaWYgKG15U3RhdGUtPmVzLT5idWZmZXJzKQotCQlpbnN0cl9zdGFy dCA9IHBnQnVmZmVyVXNhZ2U7CisJLyogU3RhcnQgcGVyLXR1cGxlIG1lYXN1cmVtZW50ICovCisJ SW5zdHJTdGFydChpbnN0cik7CiAKIAkvKiBTZXQgb3IgdXBkYXRlIG15IGRlcml2ZWQgYXR0cmli dXRlIGluZm8sIGlmIG5lZWRlZCAqLwogCWlmIChteVN0YXRlLT5hdHRyaW5mbyAhPSB0eXBlaW5m byB8fCBteVN0YXRlLT5uYXR0cnMgIT0gbmF0dHMpCkBAIC0xODYsMTggKzE4MSw4IEBAIHNlcmlh bGl6ZUFuYWx5emVSZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNl bGYpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCU1lbW9yeUNvbnRleHRS ZXNldChteVN0YXRlLT50bXBjb250ZXh0KTsKIAotCS8qIFVwZGF0ZSB0aW1pbmcgZGF0YSAqLwot CWlmIChteVN0YXRlLT5lcy0+dGltaW5nKQotCXsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChl bmQpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYobXlTdGF0ZS0+bWV0cmljcy50aW1lU3BlbnQs IGVuZCwgc3RhcnQpOwotCX0KLQotCS8qIFVwZGF0ZSBidWZmZXIgbWV0cmljcyAqLwotCWlmICht eVN0YXRlLT5lcy0+YnVmZmVycykKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJm15U3RhdGUtPm1l dHJpY3MuYnVmZmVyVXNhZ2UsCi0JCQkJCQkJICZwZ0J1ZmZlclVzYWdlLAotCQkJCQkJCSAmaW5z dHJfc3RhcnQpOworCS8qIFN0b3AgcGVyLXR1cGxlIG1lYXN1cmVtZW50ICovCisJSW5zdHJTdG9w KGluc3RyKTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMjA5LDYgKzE5NCw3IEBAIHN0YXRpYyB2 b2lkCiBzZXJpYWxpemVBbmFseXplU3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVy YXRpb24sIFR1cGxlRGVzYyB0eXBlaW5mbykKIHsKIAlTZXJpYWxpemVEZXN0UmVjZWl2ZXIgKnJl Y2VpdmVyID0gKFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBzZWxmOworCWludAkJCWluc3RydW1l bnRfb3B0aW9ucyA9IDA7CiAKIAlBc3NlcnQocmVjZWl2ZXItPmVzICE9IE5VTEwpOwogCkBAIC0y MzMsOSArMjE5LDEzIEBAIHNlcmlhbGl6ZUFuYWx5emVTdGFydHVwKERlc3RSZWNlaXZlciAqc2Vs ZiwgaW50IG9wZXJhdGlvbiwgVHVwbGVEZXNjIHR5cGVpbmZvKQogCS8qIFRoZSBvdXRwdXQgYnVm ZmVyIGlzIHJlLXVzZWQgYWNyb3NzIHJvd3MsIGFzIGluIHByaW50dHVwLmMgKi8KIAlpbml0U3Ry aW5nSW5mbygmcmVjZWl2ZXItPmJ1Zik7CiAKLQkvKiBJbml0aWFsaXplIHJlc3VsdHMgY291bnRl cnMgKi8KKwkvKiBJbml0aWFsaXplIG1ldHJpY3MgYW5kIHBlci10dXBsZSBpbnN0cnVtZW50YXRp b24gKi8KIAltZW1zZXQoJnJlY2VpdmVyLT5tZXRyaWNzLCAwLCBzaXplb2YoU2VyaWFsaXplTWV0 cmljcykpOwotCUlOU1RSX1RJTUVfU0VUX1pFUk8ocmVjZWl2ZXItPm1ldHJpY3MudGltZVNwZW50 KTsKKwlpZiAocmVjZWl2ZXItPmVzLT50aW1pbmcpCisJCWluc3RydW1lbnRfb3B0aW9ucyB8PSBJ TlNUUlVNRU5UX1RJTUVSOworCWlmIChyZWNlaXZlci0+ZXMtPmJ1ZmZlcnMpCisJCWluc3RydW1l bnRfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisJSW5zdHJJbml0T3B0aW9ucygmcmVj ZWl2ZXItPm1ldHJpY3MuaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CiB9CiAKIC8qCkBAIC0y OTAsMjIgKzI4MCwxNyBAQCBDcmVhdGVFeHBsYWluU2VyaWFsaXplRGVzdFJlY2VpdmVyKEV4cGxh aW5TdGF0ZSAqZXMpCiB9CiAKIC8qCi0gKiBHZXRTZXJpYWxpemF0aW9uTWV0cmljcyAtIGNvbGxl Y3QgbWV0cmljcworICogR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MgLSBnZXQgc2VyaWFsaXphdGlv biBtZXRyaWNzCiAgKgotICogV2UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUgc2luY2UgdGhlIHJl Y2VpdmVyIGNvdWxkIGJlIGFuIEludG9SZWwKLSAqIHJlY2VpdmVyIGlmIHRoZSBzdWJqZWN0IHN0 YXRlbWVudCBpcyBDUkVBVEUgVEFCTEUgQVMuICBJbiB0aGF0Ci0gKiBjYXNlLCByZXR1cm4gYWxs LXplcm9lcyBzdGF0cy4KKyAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBTZXJpYWxpemVNZXRy aWNzIGluc2lkZSB0aGUgZGVzdCByZWNlaXZlciwKKyAqIG9yIE5VTEwgaWYgdGhlIHJlY2VpdmVy IGlzIG5vdCBhIFNlcmlhbGl6ZURlc3RSZWNlaXZlciAoZS5nLiBhbiBJbnRvUmVsCisgKiByZWNl aXZlciBmb3IgQ1JFQVRFIFRBQkxFIEFTKS4KICAqLwotU2VyaWFsaXplTWV0cmljcworU2VyaWFs aXplTWV0cmljcyAqCiBHZXRTZXJpYWxpemF0aW9uTWV0cmljcyhEZXN0UmVjZWl2ZXIgKmRlc3Qp CiB7Ci0JU2VyaWFsaXplTWV0cmljcyBlbXB0eTsKLQogCWlmIChkZXN0LT5teWRlc3QgPT0gRGVz dEV4cGxhaW5TZXJpYWxpemUpCi0JCXJldHVybiAoKFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBk ZXN0KS0+bWV0cmljczsKLQotCW1lbXNldCgmZW1wdHksIDAsIHNpemVvZihTZXJpYWxpemVNZXRy aWNzKSk7Ci0JSU5TVFJfVElNRV9TRVRfWkVSTyhlbXB0eS50aW1lU3BlbnQpOworCQlyZXR1cm4g JigoU2VyaWFsaXplRGVzdFJlY2VpdmVyICopIGRlc3QpLT5tZXRyaWNzOwogCi0JcmV0dXJuIGVt cHR5OworCXJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDg3NmFhZDIx MDBhLi5iZjlmMmViNjE0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMjIsNiArMjIsNyBA QAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NyZWF0 ZWFzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbi5oIgorI2luY2x1ZGUgImV4ZWN1dG9y L2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluX2Zvcm1hdC5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVw YXJlLmgiCkBAIC01ODAsMTQgKzU4MSwxNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVT dG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlMaXN0 Q2VsbCAgICpwOwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICpl c3RhdGUgPSBOVUxMOwotCWluc3RyX3RpbWUJcGxhbnN0YXJ0OwotCWluc3RyX3RpbWUJcGxhbmR1 cmF0aW9uOwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCWJ1ZnVzYWdlOworCUlu c3RydW1lbnRhdGlvbiBwbGFuX2luc3RyID0gezB9OworCWludAkJCWluc3RydW1lbnRfb3B0aW9u cyA9IElOU1RSVU1FTlRfVElNRVI7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVy czsKIAlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNh dmVkX2N0eCA9IE5VTEw7CiAKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RydW1lbnRfb3B0aW9u cyB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisKKwlJbnN0ckluaXRPcHRpb25zKCZwbGFuX2luc3Ry LCBpbnN0cnVtZW50X29wdGlvbnMpOworCiAJaWYgKGVzLT5tZW1vcnkpCiAJewogCQkvKiBTZWUg RXhwbGFpbk9uZVF1ZXJ5IGFib3V0IHRoaXMgKi8KQEAgLTU5OCw5ICs2MDIsNyBAQCBFeHBsYWlu RXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKIAkJc2F2ZWRfY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5u ZXJfY3R4KTsKIAl9CiAKLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdC dWZmZXJVc2FnZTsKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5zdGFydCk7CisJSW5zdHJT dGFydCgmcGxhbl9pbnN0cik7CiAKIAkvKiBMb29rIGl0IHVwIGluIHRoZSBoYXNoIHRhYmxlICov CiAJZW50cnkgPSBGZXRjaFByZXBhcmVkU3RhdGVtZW50KGV4ZWNzdG10LT5uYW1lLCB0cnVlKTsK QEAgLTYzNSw4ICs2MzcsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVj c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAljcGxhbiA9IEdldENh Y2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCiAJCQkJCQkgIEN1cnJlbnRSZXNv dXJjZU93bmVyLCBwc3RhdGUtPnBfcXVlcnlFbnYpOwogCi0JSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChwbGFuZHVyYXRpb24pOwotCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFu c3RhcnQpOworCUluc3RyU3RvcCgmcGxhbl9pbnN0cik7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7 CkBAIC02NDQsMTMgKzY0NSw2IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlNZW1vcnlDb250 ZXh0TWVtQ29uc3VtZWQocGxhbm5lcl9jdHgsICZtZW1fY291bnRlcnMpOwogCX0KIAotCS8qIGNh bGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCWlmIChlcy0+YnVmZmVycykK LQl7Ci0JCW1lbXNldCgmYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZm ZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3Rh cnQpOwotCX0KLQogCXBsYW5fbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWlu IGVhY2ggcXVlcnkgKi8KQEAgLTY2MCw3ICs2NTQsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQogCQkJRXhwbGFpbk9u ZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9x dWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2Fn ZSA6IE5VTEwpLAorCQkJCQkJICAgJnBsYW5faW5zdHIudG90YWwsIChlcy0+YnVmZmVycyA/ICZw bGFuX2luc3RyLmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9j b3VudGVycyA6IE5VTEwpOwogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRp bGl0eVN0bXQsIGludG8sIGVzLCBwc3RhdGUsIHBhcmFtTEkpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9kci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bl9kci5oCmluZGV4IGY5OGVhYWUxODY0Li5hYjVjNTMwMjNlMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9kci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW5fZHIuaApAQCAtMjMsMTEgKzIzLDEwIEBAIHR5cGVkZWYgc3RydWN0IEV4cGxhaW5TdGF0 ZSBFeHBsYWluU3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBTZXJpYWxpemVNZXRyaWNzCiB7CiAJdWlu dDY0CQlieXRlc1NlbnQ7CQkvKiAjIG9mIGJ5dGVzIHNlcmlhbGl6ZWQgKi8KLQlpbnN0cl90aW1l CXRpbWVTcGVudDsJCS8qIHRpbWUgc3BlbnQgc2VyaWFsaXppbmcgKi8KLQlCdWZmZXJVc2FnZSBi dWZmZXJVc2FnZTsJLyogYnVmZmVycyBhY2Nlc3NlZCBkdXJpbmcgc2VyaWFsaXphdGlvbiAqLwor CUluc3RydW1lbnRhdGlvbiBpbnN0cjsJCS8qIHRpbWUgYW5kIGJ1ZmZlciB1c2FnZSAqLwogfSBT ZXJpYWxpemVNZXRyaWNzOwogCiBleHRlcm4gRGVzdFJlY2VpdmVyICpDcmVhdGVFeHBsYWluU2Vy aWFsaXplRGVzdFJlY2VpdmVyKEV4cGxhaW5TdGF0ZSAqZXMpOwotZXh0ZXJuIFNlcmlhbGl6ZU1l dHJpY3MgR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoRGVzdFJlY2VpdmVyICpkZXN0KTsKK2V4dGVy biBTZXJpYWxpemVNZXRyaWNzICpHZXRTZXJpYWxpemF0aW9uTWV0cmljcyhEZXN0UmVjZWl2ZXIg KmRlc3QpOwogCiAjZW5kaWYKLS0gCjIuNDcuMQoK --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0001-instrumentation-Allocate-queryDesc-totaltime-in-.patch" Content-Disposition: attachment; filename="v16-0001-instrumentation-Allocate-queryDesc-totaltime-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr850 RnJvbSA1ODkxOWExMGNmNTU0MjQ5NWU3YWYzYWZhOWE5MDhhOTIzZjNkZGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNiAwMS8xMF0g aW5zdHJ1bWVudGF0aW9uOiBBbGxvY2F0ZSBxdWVyeURlc2MtPnRvdGFsdGltZSBpbgogRXhlY3V0 b3JTdGFydCBpZiBuZWVkZWQKClRoaXMgaW50cm9kdWNlcyBhIG5ldyBmaWVsZCwgcXVlcnlEZXNj LT50b3RhbHRpbWVfb3B0aW9ucywgdGhhdCBleHRlbnNpb25zCmNhbiB1c2UgdG8gaW5kaWNhdGUg d2hldGhlciB0aGV5IG5lZWQgcXVlcnlEZXNjLT50b3RhbHRpbWUgcG9wdWxhdGVkLAphbmQgd2l0 aCB3aGljaCBpbnN0cnVtZW50YXRpb24gb3B0aW9ucy4gRXh0ZW5zaW9ucyBzaG91bGQgdGFrZSBj YXJlIHRvCm9ubHkgYWRkIG9wdGlvbnMgdGhleSBuZWVkLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0 aGUgb3B0aW9ucyBvZiBvdGhlcnMuCgpUaGlzIHJlcGxhY2VzIHRoZSBwcmFjdGljZSBvZiBleHRl bnNpb25zIGFsbG9jYXRpbmcgcXVlcnlEZXNjLT50b3RhbHRpbWUKdGhlbXNlbHZlcywgd2hpY2gg cmVxdWlyZWQgdGhlbSB0byBhbHdheXMgdXNlIElOU1RSVU1FTlRfQUxMIGZvciB0aGUKb3B0aW9u cyBhcmd1bWVudC4gSWYgdGhleSB3b3VsZG4ndCBoYXZlLCBhbm90aGVyIGV4dGVuc2lvbiBjb3Vs ZCBzaWxlbnRseQpiZSBpbXBhY3RlZCBieSBpdC4gSXQgYWxzbyB1bm5lY2Vzc2FyaWx5IG1hZGUg ZXh0ZW5zaW9ucyBob29rcyB3b3JyeQphYm91dCBiZWluZyBzdXJlIHRvIGFsbG9jYXRlIGluIHRo ZSBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQuCgpBZGp1c3QgcGdfc3RhdF9zdGF0ZW1lbnRzIGFu ZCBhdXRvX2V4cGxhaW4gdG8gbWF0Y2gsIGFuZCBsb3dlciB0aGUKcmVxdWVzdGVkIGluc3RydW1l bnRhdGlvbiBsZXZlbCBmb3IgYXV0b19leHBsYWluIHRvIElOU1RSVU1FTlRfVElNRVIsCnNpbmNl IHRoZSBzdW1tYXJ5IGluc3RydW1lbnRhdGlvbiBpdCBuZWVkcyBpcyBvbmx5IHJ1bnRpbWUuCgpB dXRob3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClJldmlld2VkLWJ5OgpEaXNjdXNz aW9uOgotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAgICB8 IDIwICsrKy0tLS0tLS0tLS0tLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRl bWVudHMuYyAgIHwgMjUgKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDkgKysrKysrKwogc3JjL2JhY2tlbmQvdGNvcC9w cXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY2Rlc2MuaCAgICAgICAgICAgICAgIHwgIDQgKystCiA1IGZpbGVzIGNoYW5nZWQsIDIzIGlu c2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19l eHBsYWluL2F1dG9fZXhwbGFpbi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWlu LmMKaW5kZXggNmNlYWUxYzY5Y2UuLjRmOWQzNWJjMzBiIDEwMDY0NAotLS0gYS9jb250cmliL2F1 dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRv X2V4cGxhaW4uYwpAQCAtMzM0LDYgKzMzNCw5IEBAIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxl ZCgpKQogCXsKKwkJLyogV2UncmUgYWx3YXlzIGludGVyZXN0ZWQgaW4gcnVudGltZSAqLworCQlx dWVyeURlc2MtPnRvdGFsdGltZV9vcHRpb25zIHw9IElOU1RSVU1FTlRfVElNRVI7CisKIAkJLyog RW5hYmxlIHBlci1ub2RlIGluc3RydW1lbnRhdGlvbiBpZmYgbG9nX2FuYWx5emUgaXMgcmVxdWly ZWQuICovCiAJCWlmIChhdXRvX2V4cGxhaW5fbG9nX2FuYWx5emUgJiYgKGVmbGFncyAmIEVYRUNf RkxBR19FWFBMQUlOX09OTFkpID09IDApCiAJCXsKQEAgLTM1MiwyMyArMzU1LDYgQEAgZXhwbGFp bl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQlwcmV2 X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKIAkJc3RhbmRhcmRfRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7Ci0KLQlpZiAoYXV0b19leHBsYWluX2VuYWJs ZWQoKSkKLQl7Ci0JCS8qCi0JCSAqIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUg aW4gRXhlY3V0b3JSdW4uICBNYWtlIHN1cmUgdGhlCi0JCSAqIHNwYWNlIGlzIGFsbG9jYXRlZCBp biB0aGUgcGVyLXF1ZXJ5IGNvbnRleHQgc28gaXQgd2lsbCBnbyBhd2F5IGF0Ci0JCSAqIEV4ZWN1 dG9yRW5kLgotCQkgKi8KLQkJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lID09IE5VTEwpCi0JCXsK LQkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OwotCi0JCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7Ci0JCQlxdWVyeURlc2MtPnRv dGFsdGltZSA9IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9BTEwpOwotCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7Ci0JCX0KLQl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IGI1MDAwYmMxNGI3Li5jODk4MWRj YjVjZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0 ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMKQEAgLTk5MywxMSArOTkzLDYgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIHN0 YXRpYyB2b2lkCiBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpCiB7Ci0JaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKLQkJcHJldl9FeGVjdXRvclN0YXJ0 KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOwotCiAJLyoKIAkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvLCBk b24ndCB0cmFjayBpdC4gIFRoaXMgcHJldmVudHMgZG91YmxlCiAJICogY291bnRpbmcgb2Ygb3B0 aW1pemFibGUgc3RhdGVtZW50cyB0aGF0IGFyZSBkaXJlY3RseSBjb250YWluZWQgaW4KQEAgLTEw MDUsMjAgKzEwMDAsMTQgQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCSAqLwogCWlmIChwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkgJiYg cXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCAhPSBJTlQ2NENPTlNUKDApKQogCXsKLQkJ LyoKLQkJICogU2V0IHVwIHRvIHRyYWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVjdXRvclJ1 bi4gIE1ha2Ugc3VyZSB0aGUKLQkJICogc3BhY2UgaXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVl cnkgY29udGV4dCBzbyBpdCB3aWxsIGdvIGF3YXkgYXQKLQkJICogRXhlY3V0b3JFbmQuCi0JCSAq LwotCQlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUgPT0gTlVMTCkKLQkJewotCQkJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7Ci0KLQkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURl c2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5z dHJBbGxvYyhJTlNUUlVNRU5UX0FMTCk7Ci0JCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsKLQkJfQorCQkvKiBSZXF1ZXN0IGFsbCBzdW1tYXJ5IGluc3RydW1lbnRhdGlvbiwgaS5lLiB0 aW1pbmcsIGJ1ZmZlcnMgYW5kIFdBTCAqLworCQlxdWVyeURlc2MtPnRvdGFsdGltZV9vcHRpb25z IHw9IElOU1RSVU1FTlRfQUxMOwogCX0KKworCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnQpCisJCXBy ZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlzdGFuZGFyZF9F eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCmluZGV4IGIwZjYzNmJmOGI2Li5mNzFmNjY4ODgzYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCkBAIC0yNTAsNiArMjUwLDE1IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gcXVl cnlEZXNjLT5pbnN0cnVtZW50X29wdGlvbnM7CiAJZXN0YXRlLT5lc19qaXRfZmxhZ3MgPSBxdWVy eURlc2MtPnBsYW5uZWRzdG10LT5qaXRGbGFnczsKIAorCS8qCisJICogU2V0IHVwIHF1ZXJ5LWxl dmVsIGluc3RydW1lbnRhdGlvbiBpZiBleHRlbnNpb25zIGhhdmUgcmVxdWVzdGVkIGl0IHZpYQor CSAqIHRvdGFsdGltZV9vcHRpb25zLiBFbnN1cmUgYW4gZXh0ZW5zaW9uIGhhcyBub3QgYWxsb2Nh dGVkIHRvdGFsdGltZQorCSAqIGl0c2VsZi4KKwkgKi8KKwlBc3NlcnQocXVlcnlEZXNjLT50b3Rh bHRpbWUgPT0gTlVMTCk7CisJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lX29wdGlvbnMpCisJCXF1 ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYyhxdWVyeURlc2MtPnRvdGFsdGltZV9vcHRp b25zKTsKKwogCS8qCiAJICogU2V0IHVwIGFuIEFGVEVSLXRyaWdnZXIgc3RhdGVtZW50IGNvbnRl eHQsIHVubGVzcyB0b2xkIG5vdCB0bywgb3IKIAkgKiB1bmxlc3MgaXQncyBFWFBMQUlOLW9ubHkg bW9kZSAod2hlbiBFeGVjdXRvckZpbmlzaCB3b24ndCBiZSBjYWxsZWQpLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5k ZXggZDhmYzc1ZDBiYjkuLmUyN2YyNmVjZDgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTg2LDYgKzg2LDcg QEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAlxZC0+cGFyYW1z ID0gcGFyYW1zOwkJLyogcGFyYW1ldGVyIHZhbHVlcyBwYXNzZWQgaW50byBxdWVyeSAqLwogCXFk LT5xdWVyeUVudiA9IHF1ZXJ5RW52OwogCXFkLT5pbnN0cnVtZW50X29wdGlvbnMgPSBpbnN0cnVt ZW50X29wdGlvbnM7CS8qIGluc3RydW1lbnRhdGlvbiB3YW50ZWQ/ICovCisJcWQtPnRvdGFsdGlt ZV9vcHRpb25zID0gMDsKIAogCS8qIG51bGwgdGhlc2UgZmllbGRzIHVudGlsIHNldCBieSBFeGVj dXRvclN0YXJ0ICovCiAJcWQtPnR1cERlc2MgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgK aW5kZXggZDNhNTcyNDI4NDQuLjNmOTE0M2VmYjhjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgK QEAgLTQyLDYgKzQyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJUGFyYW1MaXN0SW5m byBwYXJhbXM7CQkvKiBwYXJhbSB2YWx1ZXMgYmVpbmcgcGFzc2VkIGluICovCiAJUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnY7IC8qIHF1ZXJ5IGVudmlyb25tZW50IHBhc3NlZCBpbiAqLwogCWlu dAkJCWluc3RydW1lbnRfb3B0aW9uczsgLyogT1Igb2YgSW5zdHJ1bWVudE9wdGlvbiBmbGFncyAq LworCWludAkJCXRvdGFsdGltZV9vcHRpb25zOwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZs YWdzIGZvcgorCQkJCQkJCQkJICogdG90YWx0aW1lICovCiAKIAkvKiBUaGVzZSBmaWVsZHMgYXJl IHNldCBieSBFeGVjdXRvclN0YXJ0ICovCiAJVHVwbGVEZXNjCXR1cERlc2M7CQkvKiBkZXNjcmlw dG9yIGZvciByZXN1bHQgdHVwbGVzICovCkBAIC01MSw3ICs1Myw3IEBAIHR5cGVkZWYgc3RydWN0 IFF1ZXJ5RGVzYwogCS8qIFRoaXMgZmllbGQgaXMgc2V0IGJ5IEV4ZWN1dGVQbGFuICovCiAJYm9v bAkJYWxyZWFkeV9leGVjdXRlZDsJLyogdHJ1ZSBpZiBwcmV2aW91c2x5IGV4ZWN1dGVkICovCiAK LQkvKiBUaGlzIGlzIGFsd2F5cyBzZXQgTlVMTCBieSB0aGUgY29yZSBzeXN0ZW0sIGJ1dCBwbHVn aW5zIGNhbiBjaGFuZ2UgaXQgKi8KKwkvKiBUaGlzIGZpZWxkIGlzIGFsbG9jYXRlZCBieSBFeGVj dXRvclN0YXJ0IGlmIG5lZWRlZCAqLwogCXN0cnVjdCBJbnN0cnVtZW50YXRpb24gKnRvdGFsdGlt ZTsJLyogdG90YWwgdGltZSBzcGVudCBpbiBFeGVjdXRvclJ1biAqLwogfSBRdWVyeURlc2M7CiAK LS0gCjIuNDcuMQoK --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0005-instrumentation-Add-additional-regression-tests-.patch" Content-Disposition: attachment; filename="v16-0005-instrumentation-Add-additional-regression-tests-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr8c4 RnJvbSA1ODdmN2ViOTM2ODI4MjZlMDNiMjk1NWZkZDMyNTdhMThjMDQ1OGQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMDM6NDg6MzIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNiAwNS8xMF0g aW5zdHJ1bWVudGF0aW9uOiBBZGQgYWRkaXRpb25hbCByZWdyZXNzaW9uIHRlc3RzCiBjb3Zlcmlu ZyBidWZmZXIgdXNhZ2UKClRoaXMgYWRkcyByZWdyZXNzaW9uIHRlc3RzIHRoYXQgY292ZXIgc29t ZSBvZiB0aGUgZXhwZWN0ZWQgYmVoYXZpb3VyCmFyb3VuZCB0aGUgYnVmZmVyIHN0YXRpc3RpY3Mg cmVwb3J0ZWQgaW4gRVhQTEFJTiBBTkFMWVpFLCBzcGVjaWZpY2FsbHkKaG93IHRoZXkgYmVoYXZl IGluIHBhcmFsbGVsIHF1ZXJ5LCBuZXN0ZWQgZnVuY3Rpb24gY2FsbHMgYW5kIGFib3J0CnNpdHVh dGlvbnMuCgpUZXN0aW5nIHRoaXMgaXMgY2hhbGxlbmdpbmcgYmVjYXVzZSB0aGVyZSBjYW4gYmUg ZGlmZmVyZW50IHNvdXJjZXMgb2YKYnVmZmVyIGFjdGl2aXR5LCBzbyB3ZSByZWx5IG9uIHRlbXBv cmFyeSB0YWJsZXMgd2hlcmUgd2UgY2FuIHRvIHByb3ZlCnRoYXQgYWN0aXZpdHkgd2FzIGNhcHR1 cmVkIGFuZCBub3QgbG9zdC4gVGhpcyBzdXBwb3J0cyBhIGZ1dHVyZSBjb21taXQKdGhhdCB3aWxs IHJld29yayBzb21lIG9mIHRoZSBpbnN0cnVtZW50YXRpb24gbG9naWMgdGhhdCBjb3VsZCBjYXVz ZQphcmVhcyBjb3ZlcmVkIGJ5IHRoZXNlIHRlc3RzIHRvIGZhaWwuCgpBdXRob3I6IEx1a2FzIEZp dHRsIDxsdWthc0BmaXR0bC5jb20+ClJldmlld2VkLWJ5OgpEaXNjdXNzaW9uOgotLS0KIC4uLi9w Z19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQgICB8ICA3MCArKysrKysrCiBj b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0ICAgfCAgNDggKysrKysK IGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbCAgICB8ICA1NiArKysr KysKIGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwuc3FsICAgICAgICB8ICAzMyAr KysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgICAgICAgICB8IDE4OCAr KysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAg ICAgICAgICB8IDE4OCArKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgNTgzIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBl Y3RlZC91dGlsaXR5Lm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0 aWxpdHkub3V0CmluZGV4IGU0ZDY1NjRlYTViLi5jYmE0ODdmNmJlNSAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKKysrIGIvY29udHJp Yi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKQEAgLTI4OSw2ICsyODks NzYgQEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBP UkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgcGdfc3Rh dF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdAogKDMgcm93cykKIAorLS0gQnVm ZmVyIHN0YXRzIHNob3VsZCBmbG93IHRocm91Z2ggRVhQTEFJTiBBTkFMWVpFCitDUkVBVEUgVEVN UCBUQUJMRSBmbG93X3Rocm91Z2hfdGVzdCAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJ TlRPIGZsb3dfdGhyb3VnaF90ZXN0IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CitDUkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5f YnVmZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJFCitCRUdJTgorICAgIEVY RUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJv dWdoX3Rlc3QnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cp CisKK1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKyBydW5fZXhwbGFpbl9idWZm ZXJzX3Rlc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBF WFBMQUlOIGVudHJpZXMgc2hvdWxkIGhhdmUgbm9uLXplcm8gYnVmZmVyIHN0YXRzCitTRUxFQ1Qg cXVlcnksIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBhcyBoYXNfYnVmZmVy X3N0YXRzCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnU0VMRUNU IHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsK KyAgICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAgfCBoYXNfYnVmZmVyX3N0YXRzIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg U0VMRUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpIHwgdAorKDEgcm93KQorCitEUk9QIEZV TkNUSU9OIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdDsKK0RST1AgVEFCTEUgZmxvd190aHJvdWdo X3Rlc3Q7CistLSBWYWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIGR1cmluZyBhYm9ydAorU0VU IHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICdhbGwnOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdz c19jYWxsX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19j YWxsX3RhYjIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIg VkFMVUVTICgwLCAnenp6Jyk7CitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2FsbF9yb2xsYmFja19w cm9jKCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgRVhQTEFJTiBBTkFM WVpFIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBTRUxFQ1QgKiBGUk9N IHBnc3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9N IGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1Qg TlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK0NBTEwgcGdzc19jYWxsX3JvbGxi YWNrX3Byb2MoKTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2Fs X2Jsa3NfcmVhZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5 dGVzX2dlbmVyYXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQK K0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3Jv bGxiYWNrX3Byb2MlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAg cXVlcnkgICAgICAgICAgICAgIHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dl bmVyYXRlZCB8IHdhbF9yZWNvcmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENBTEwgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2MoKSB8 ICAgICAxIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgICAgfCB0CisoMSByb3cp CisKK0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7 CitEUk9QIFBST0NFRFVSRSBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0 YXRlbWVudHMudHJhY2sgPSAndG9wJzsKIC0tIENBTEwKIENSRUFURSBPUiBSRVBMQUNFIFBST0NF RFVSRSBzdW1fb25lKGkgaW50KSBBUyAkJAogREVDTEFSRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQKaW5kZXggOTc3ZTM4MmQ4NDguLjYxMTIxM2RhZWY2IDEw MDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0Cisr KyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQKQEAgLTI4LDMg KzI4LDUxIEBAIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBB UyB0OwogIHQKICgxIHJvdykKIAorLS0KKy0tIFZhbGlkYXRlIGJ1ZmZlci9XQUwgY291bnRpbmcg d2l0aCBjYXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FMCistLQorQ1JFQVRFIFRFTVAgVEFCTEUg cGdzc19lcnJvcl90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfZXJy b3JfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworQ1JFQVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVu YygpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBX SVRIIGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19lcnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykg UkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElP TiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIHBnc3NfZXJyb3JfZnVuYygp OworIHBnc3NfZXJyb3JfZnVuYyAKKy0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0t IEJ1ZmZlci9XQUwgdXNhZ2UgZnJvbSB0aGUgd0NURSBJTlNFUlQgc2hvdWxkIHN1cnZpdmUgdGhl IGV4Y2VwdGlvbgorU0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxf Ymxrc19yZWFkID4gMCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0 ZXNfZ2VuZXJhdGVkLAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAor RlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2Vycm9yX2Z1 bmMlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgcXVlcnkgICAgICAg ICAgIHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dlbmVyYXRlZCB8IHdhbF9y ZWNvcmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNFTEVDVCBwZ3NzX2Vycm9yX2Z1bmMoKSB8ICAgICAxIHwgdCAgICAgICAgICAgICB8IHQg ICAgICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgcGdzc19lcnJvcl90 YWI7CitEUk9QIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYzsKK1NFTEVDVCBwZ19zdGF0X3N0YXRl bWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbCBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbAppbmRleCBkZDk3MjAz YzIxMC4uNzU0MGU0OWM3M2MgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L3NxbC91dGlsaXR5LnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRp bGl0eS5zcWwKQEAgLTE1Miw2ICsxNTIsNjIgQEAgRVhQTEFJTiAoY29zdHMgb2ZmKSBTRUxFQ1Qg YSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyB0YWIoYSkgV0hFUkUgYSA9IDc7CiAKIFNF TEVDVCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkg cXVlcnkgQ09MTEFURSAiQyI7CiAKKy0tIEJ1ZmZlciBzdGF0cyBzaG91bGQgZmxvdyB0aHJvdWdo IEVYUExBSU4gQU5BTFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZmxvd190aHJvdWdoX3Rlc3QgKGEg aW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBmbG93X3Rocm91Z2hfdGVzdCBTRUxFQ1Qg aSwgcmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOwor CitDUkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lk IEFTICQkCitERUNMQVJFCitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJvdWdoX3Rlc3QnOworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBO VUxMIEFTIHQ7CisKK1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKworLS0gRVhQ TEFJTiBlbnRyaWVzIHNob3VsZCBoYXZlIG5vbi16ZXJvIGJ1ZmZlciBzdGF0cworU0VMRUNUIHF1 ZXJ5LCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgYXMgaGFzX2J1ZmZlcl9z dGF0cworRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJ1NFTEVDVCBy dW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisK K0RST1AgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0OworRFJPUCBUQUJMRSBmbG93 X3Rocm91Z2hfdGVzdDsKKworLS0gVmFsaWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyBkdXJpbmcg YWJvcnQKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAnYWxsJzsKK0NSRUFURSBURU1Q IFRBQkxFIHBnc3NfY2FsbF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBURU1QIFRB QkxFIHBnc3NfY2FsbF90YWIyIChhIGludCwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyBwZ3Nz X2NhbGxfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2Fs bF9yb2xsYmFja19wcm9jKCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAg RVhQTEFJTiBBTkFMWVpFIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBT RUxFQ1QgKiBGUk9NIHBnc3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAw IElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19y ZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CitDQUxMIHBnc3NfY2FsbF9yb2xsYmFja19wcm9jKCk7 CisKK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVh ZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVzX2dlbmVy YXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZST00gcGdf c3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3JvbGxiYWNrX3By b2MlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RST1AgVEFCTEUgcGdzc19jYWxs X3RhYjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7CitEUk9QIFBST0NFRFVSRSBwZ3NzX2Nh bGxfcm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsK KwogLS0gQ0FMTAogQ1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJFIHN1bV9vbmUoaSBpbnQpIEFT ICQkCiBERUNMQVJFCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwv d2FsLnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwuc3FsCmluZGV4IDFk YzE1NTJhODFlLi40NjdlMzIxYjIwNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvc3FsL3dhbC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3dh bC5zcWwKQEAgLTE4LDMgKzE4LDM2IEBAIHdhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19n ZW5lcmF0ZWQsCiB3YWxfcmVjb3JkcyA+PSByb3dzIGFzIHdhbF9yZWNvcmRzX2dlX3Jvd3MKIEZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogU0VMRUNU IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKKy0tCistLSBW YWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIHdpdGggY2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9w Z1NRTAorLS0KK0NSRUFURSBURU1QIFRBQkxFIHBnc3NfZXJyb3JfdGFiIChhIGludCwgYiBjaGFy KDIwKSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Vycm9yX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKwor Q1JFQVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVD TEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gcGdz c19lcnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEg LyAwIElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhF TgorICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgcGdfc3Rh dF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKK1NFTEVDVCBwZ3NzX2Vycm9y X2Z1bmMoKTsKKworLS0gQnVmZmVyL1dBTCB1c2FnZSBmcm9tIHRoZSB3Q1RFIElOU0VSVCBzaG91 bGQgc3Vydml2ZSB0aGUgZXhjZXB0aW9uCitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxr c19oaXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMg PiAwIGFzIHdhbF9ieXRlc19nZW5lcmF0ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29y ZHNfZ2VuZXJhdGVkCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAn JXBnc3NfZXJyb3JfZnVuYyUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJPUCBU QUJMRSBwZ3NzX2Vycm9yX3RhYjsKK0RST1AgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jOworU0VM RUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCA3YzFmMjZiMTgyYy4uNWZmOTY0OTFiMGEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtODIyLDMgKzgyMiwxOTEg QEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNv c3RzIG9mZikgc2VsZWN0IHN1bShuKSBvdmUKICg5IHJvd3MpCiAKIHJlc2V0IHdvcmtfbWVtOwor LS0gRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgc2hvdWxkIHJlcG9ydCBidWZmZXIgdXNhZ2Ug ZnJvbSBQTC9wZ1NRTAorLS0gRVhDRVBUSU9OIGJsb2NrcywgZXZlbiBhZnRlciBzdWJ0cmFuc2Fj dGlvbiByb2xsYmFjay4KK0NSRUFURSBURU1QIFRBQkxFIGV4cGxhaW5fZXhjX3RhYiAoYSBpbnQs IGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMCwgJ3p6 eicpOworQ1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMg JCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJ TlRPIGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBT RUxFQ1QgYSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlf emVybyBUSEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUg RlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpIFJFVFVSTlMgYm9vbGVh biBBUyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAg ICB0b3RhbF9idWZmZXJzIGludDsKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGV4cGxh aW5fZXhjX2Z1bmMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAt PidQbGFuJzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J0xvY2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J0xvY2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMg PiAwOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4 Y2VwdGlvbl9idWZmZXJzKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZTsKKyBleGNlcHRp b25fYnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEg cm93KQorCistLSBBbHNvIHRlc3Qgd2l0aCBuZXN0ZWQgRVhQTEFJTiBBTkFMWVpFICh0d28gbGV2 ZWxzIG9mIGluc3RydW1lbnRhdGlvbikKK0NSRUFURSBGVU5DVElPTiBjaGVja19leHBsYWluX2V4 Y2VwdGlvbl9idWZmZXJzX25lc3RlZCgpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVDTEFSRQor ICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICB0b3RhbF9idWZmZXJzIGlu dDsKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMg T0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9u X2J1ZmZlcnMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQ bGFuJzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMgPiAw OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzX25lc3RlZCgpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxl OworIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBjaGVja19leHBs YWluX2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZDsKK0RST1AgRlVOQ1RJT04gY2hlY2tfZXhwbGFp bl9leGNlcHRpb25fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYzsKK0RS T1AgVEFCTEUgZXhwbGFpbl9leGNfdGFiOworLS0gQ3Vyc29yIGluc3RydW1lbnRhdGlvbiB0ZXN0 LgorLS0gVmVyaWZ5IHRoYXQgYnVmZmVyIHVzYWdlIGlzIGNvcnJlY3RseSB0cmFja2VkIHRocm91 Z2ggY3Vyc29yIGV4ZWN1dGlvbiBwYXRocy4KKy0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvcnMgZXhl cmNpc2UgRXhlY1NodXRkb3duTm9kZSBhZnRlciBlYWNoIEV4ZWN1dG9yUnVuCistLSAoRVhFQ19G TEFHX0JBQ0tXQVJEIGlzIG5vdCBzZXQpLCB3aGlsZSBzY3JvbGxhYmxlIGN1cnNvcnMgb25seSBz aHV0IGRvd24KKy0tIG5vZGVzIGluIEV4ZWN1dG9yRmluaXNoLiBJbiBib3RoIGNhc2VzLCBidWZm ZXIgdXNhZ2UgZnJvbSB0aGUgaW5uZXIgY3Vyc29yCistLSBzY2FuIHNob3VsZCBiZSBjb3JyZWN0 bHkgcmVwb3J0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSBjdXJzb3JfYnVmX3Rlc3QgQVMgU0VMRUNU ICogRlJPTSB0ZW5rMTsKK0NSRUFURSBGVU5DVElPTiBjdXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJF VFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9S IFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250 IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZF VENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7 CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsK KyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5D VElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW4oKSBSRVRVUk5TIGJpZ2ludCBBUyAkJAorREVDTEFSRQor ICAgIGN1ciBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdDsK KyAgICByZWMgUkVDT1JEOworICAgIGNudCBiaWdpbnQgOj0gMDsKK0JFR0lOCisgICAgT1BFTiBj dXI7CisgICAgTE9PUAorICAgICAgICBGRVRDSCBORVhUIEZST00gY3VyIElOVE8gcmVjOworICAg ICAgICBFWElUIFdIRU4gTk9UIEZPVU5EOworICAgICAgICBjbnQgOj0gY250ICsgMTsKKyAgICBF TkQgTE9PUDsKKyAgICBDTE9TRSBjdXI7CisgICAgUkVUVVJOIGNudDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVy cygpIFJFVFVSTlMgVEFCTEUobm9zY3JvbGxfb2sgYm9vbGVhbiwgc2Nyb2xsX29rIGJvb2xlYW4p IEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAg IGRpcmVjdF9idWYgaW50OworICAgIG5vc2Nyb2xsX2J1ZiBpbnQ7CisgICAgc2Nyb2xsX2J1ZiBp bnQ7CitCRUdJTgorICAgIC0tIERpcmVjdCBzY2FuOiBnZXQgbGVhZiBTZXEgU2NhbiBub2RlIGJ1 ZmZlcnMgYXMgYmFzZWxpbmUKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT LCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9i dWZfdGVzdCcgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFu JzsKKyAgICBXSElMRSBub2RlLT4nUGxhbnMnIElTIE5PVCBOVUxMIExPT1AKKyAgICAgICAgbm9k ZSA6PSBub2RlLT4nUGxhbnMnLT4wOworICAgIEVORCBMT09QOworICAgIGRpcmVjdF9idWYgOj0K KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsK KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsK KworICAgIC0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIHJ1 bnMgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jf bm9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+ MC0+J1BsYW4nOworICAgIG5vc2Nyb2xsX2J1ZiA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gU2Nyb2xsYWJsZSBjdXJz b3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBpcyBza2lwcGVkCisgICAgRVhFQ1VURSAnRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VM RUNUIGN1cnNvcl9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBs YW5fanNvbi0+MC0+J1BsYW4nOworICAgIHNjcm9sbF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIEJvdGggY3Vy c29yIHBhdGhzIHNob3VsZCByZXBvcnQgYnVmZmVyIGNvdW50cyBhYm91dCBhcyBoaWdoIGFzCisg ICAgLS0gdGhlIGRpcmVjdCBzY2FuIChzYW1lIGRhdGEgcGx1cyBtaW5vciBjYXRhbG9nIG92ZXJo ZWFkKSwgYW5kIG5vdAorICAgIC0tIGRvdWJsZS1jb3VudGVkICg8IDJ4IHRoZSBkaXJlY3Qgc2Nh bikKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIChub3Njcm9sbF9idWYgPj0gZGly ZWN0X2J1ZiAqIDAuNSBBTkQgbm9zY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpLAorICAgICAg ICAoc2Nyb2xsX2J1ZiA+PSBkaXJlY3RfYnVmICogMC41IEFORCBzY3JvbGxfYnVmIDwgZGlyZWN0 X2J1ZiAqIDIpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCAqIEZST00gY2hl Y2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygpOworIG5vc2Nyb2xsX29rIHwgc2Nyb2xsX29rIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHQgICAgICAgICAgIHwgdAorKDEgcm93KQorCitE Uk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnM7CitEUk9QIEZVTkNUSU9O IGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW47 CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKy0tIFRlc3QgdHJpZ2dlciBpbnN0cnVtZW50 YXRpb24uCitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX3Rlc3RfdGFiIChhIGludCk7CitDUkVBVEUg VEVNUCBUQUJMRSB0cmlnX3dvcmtfdGFiIChhIGludCk7CitJTlNFUlQgSU5UTyB0cmlnX3dvcmtf dGFiIFZBTFVFUyAoMSk7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ190ZXN0X2Z1bmMoKSBSRVRVUk5T IHRyaWdnZXIgQVMgJCQKK0JFR0lOCisgICAgUEVSRk9STSAqIEZST00gdHJpZ193b3JrX3RhYjsK KyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBUUklH R0VSIHRyaWdfdGVzdF90cmlnCisgICAgQkVGT1JFIElOU0VSVCBPTiB0cmlnX3Rlc3RfdGFiCisg ICAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ190ZXN0X2Z1bmMoKTsKK0NSRUFU RSBGVU5DVElPTiBjaGVja190cmlnZ2VyX2V4cGxhaW5fYnVmZmVycygpIFJFVFVSTlMgYm9vbGVh biBBUyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29uOworICAgIHRyaWcganNvbjsKK0JF R0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBG T1JNQVQgSlNPTikKKyAgICAgICAgSU5TRVJUIElOVE8gdHJpZ190ZXN0X3RhYiBWQUxVRVMgKDEp JyBJTlRPIHBsYW5fanNvbjsKKyAgICB0cmlnIDo9IHBsYW5fanNvbi0+MC0+J1RyaWdnZXJzJy0+ MDsKKyAgICBSRVRVUk4gQ09BTEVTQ0UoKHRyaWctPj4nQ2FsbHMnKTo6aW50LCAwKSA+IDA7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGNoZWNrX3RyaWdnZXJfZXhwbGFpbl9i dWZmZXJzKCkgQVMgdHJpZ2dlcl9idWZmZXJzX3Zpc2libGU7CisgdHJpZ2dlcl9idWZmZXJzX3Zp c2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZV TkNUSU9OIGNoZWNrX3RyaWdnZXJfZXhwbGFpbl9idWZmZXJzOworRFJPUCBUUklHR0VSIHRyaWdf dGVzdF90cmlnIE9OIHRyaWdfdGVzdF90YWI7CitEUk9QIEZVTkNUSU9OIHRyaWdfdGVzdF9mdW5j OworRFJPUCBUQUJMRSB0cmlnX3Rlc3RfdGFiOworRFJPUCBUQUJMRSB0cmlnX3dvcmtfdGFiOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9leHBsYWluLnNxbAppbmRleCBlYmRhYjQyNjA0Yi4uOWYwZTg1MjQ0OTcgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCkBAIC0xODgsMyArMTg4LDE5MSBAQCBzZWxlY3QgZXhw bGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsY29zdHMgb2ZmKSBzZWxl Y3Qgc3VtKG4pIG92ZQogLS0gVGVzdCB0dXBsZXN0b3JlIHN0b3JhZ2UgdXNhZ2UgaW4gV2luZG93 IGFnZ3JlZ2F0ZSAobWVtb3J5IGFuZCBkaXNrIGNhc2UsIGZpbmFsIHJlc3VsdCBpcyBkaXNrKQog c2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3Rz IG9mZikgc2VsZWN0IHN1bShuKSBvdmVyKHBhcnRpdGlvbiBieSBtKSBmcm9tIChTRUxFQ1QgbiA8 IDMgYXMgbSwgbiBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDI1MDApIGEobikpJyk7CiByZXNldCB3 b3JrX21lbTsKKworLS0gRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgc2hvdWxkIHJlcG9ydCBi dWZmZXIgdXNhZ2UgZnJvbSBQTC9wZ1NRTAorLS0gRVhDRVBUSU9OIGJsb2NrcywgZXZlbiBhZnRl ciBzdWJ0cmFuc2FjdGlvbiByb2xsYmFjay4KK0NSRUFURSBURU1QIFRBQkxFIGV4cGxhaW5fZXhj X3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZB TFVFUyAoMCwgJ3p6eicpOworCitDUkVBVEUgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYygpIFJF VFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlu cyBBUyAoSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVS TklORyBhKQorICAgIFNFTEVDVCBhIC8gMCBJTlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04gV0hF TiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KKyAgICBOVUxMOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKKworQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnMo KSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAg ICBub2RlIGpzb247CisgICAgdG90YWxfYnVmZmVycyBpbnQ7CitCRUdJTgorICAgIEVYRUNVVEUg J0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAg ICAgIFNFTEVDVCBleHBsYWluX2V4Y19mdW5jKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUg Oj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgdG90YWxfYnVmZmVycyA6PQorICAgICAgICBD T0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBD T0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworICAgIFJFVFVS TiB0b3RhbF9idWZmZXJzID4gMDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVD VCBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNf dmlzaWJsZTsKKworLS0gQWxzbyB0ZXN0IHdpdGggbmVzdGVkIEVYUExBSU4gQU5BTFlaRSAodHdv IGxldmVscyBvZiBpbnN0cnVtZW50YXRpb24pCitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfZXhwbGFp bl9leGNlcHRpb25fYnVmZmVyc19uZXN0ZWQoKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xB UkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CisgICAgdG90YWxfYnVmZmVy cyBpbnQ7CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENP U1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4w LT4nUGxhbic7CisgICAgdG90YWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworICAgIFJFVFVSTiB0b3RhbF9idWZmZXJz ID4gMDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBjaGVja19leHBsYWlu X2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZCgpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92 aXNpYmxlOworCitEUk9QIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnNf bmVzdGVkOworRFJPUCBGVU5DVElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzOwor RFJPUCBGVU5DVElPTiBleHBsYWluX2V4Y19mdW5jOworRFJPUCBUQUJMRSBleHBsYWluX2V4Y190 YWI7CisKKy0tIEN1cnNvciBpbnN0cnVtZW50YXRpb24gdGVzdC4KKy0tIFZlcmlmeSB0aGF0IGJ1 ZmZlciB1c2FnZSBpcyBjb3JyZWN0bHkgdHJhY2tlZCB0aHJvdWdoIGN1cnNvciBleGVjdXRpb24g cGF0aHMuCistLSBOb24tc2Nyb2xsYWJsZSBjdXJzb3JzIGV4ZXJjaXNlIEV4ZWNTaHV0ZG93bk5v ZGUgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorLS0gKEVYRUNfRkxBR19CQUNLV0FSRCBpcyBub3Qg c2V0KSwgd2hpbGUgc2Nyb2xsYWJsZSBjdXJzb3JzIG9ubHkgc2h1dCBkb3duCistLSBub2RlcyBp biBFeGVjdXRvckZpbmlzaC4gSW4gYm90aCBjYXNlcywgYnVmZmVyIHVzYWdlIGZyb20gdGhlIGlu bmVyIGN1cnNvcgorLS0gc2NhbiBzaG91bGQgYmUgY29ycmVjdGx5IHJlcG9ydGVkLgorCitDUkVB VEUgVEVNUCBUQUJMRSBjdXJzb3JfYnVmX3Rlc3QgQVMgU0VMRUNUICogRlJPTSB0ZW5rMTsKKwor Q1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9ub3Njcm9sbF9zY2FuKCkgUkVUVVJOUyBiaWdpbnQgQVMg JCQKK0RFQ0xBUkUKKyAgICBjdXIgTk8gU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSBj dXJzb3JfYnVmX3Rlc3Q7CisgICAgcmVjIFJFQ09SRDsKKyAgICBjbnQgYmlnaW50IDo9IDA7CitC RUdJTgorICAgIE9QRU4gY3VyOworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggTkVYVCBGUk9NIGN1 ciBJTlRPIHJlYzsKKyAgICAgICAgRVhJVCBXSEVOIE5PVCBGT1VORDsKKyAgICAgICAgY250IDo9 IGNudCArIDE7CisgICAgRU5EIExPT1A7CisgICAgQ0xPU0UgY3VyOworICAgIFJFVFVSTiBjbnQ7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgRlVOQ1RJT04gY3Vyc29yX3Nj cm9sbF9zY2FuKCkgUkVUVVJOUyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAgICBjdXIgU0NST0xM IENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7CisgICAgcmVjIFJFQ09S RDsKKyAgICBjbnQgYmlnaW50IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3VyOworICAgIExPT1AK KyAgICAgICAgRkVUQ0ggTkVYVCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAgICAgRVhJVCBXSEVO IE5PVCBGT1VORDsKKyAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgRU5EIExPT1A7CisgICAg Q0xPU0UgY3VyOworICAgIFJFVFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor CitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygpIFJFVFVSTlMg VEFCTEUobm9zY3JvbGxfb2sgYm9vbGVhbiwgc2Nyb2xsX29rIGJvb2xlYW4pIEFTICQkCitERUNM QVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIGRpcmVjdF9idWYg aW50OworICAgIG5vc2Nyb2xsX2J1ZiBpbnQ7CisgICAgc2Nyb2xsX2J1ZiBpbnQ7CitCRUdJTgor ICAgIC0tIERpcmVjdCBzY2FuOiBnZXQgbGVhZiBTZXEgU2NhbiBub2RlIGJ1ZmZlcnMgYXMgYmFz ZWxpbmUKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYs IEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdCcgSU5U TyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBXSElM RSBub2RlLT4nUGxhbnMnIElTIE5PVCBOVUxMIExPT1AKKyAgICAgICAgbm9kZSA6PSBub2RlLT4n UGxhbnMnLT4wOworICAgIEVORCBMT09QOworICAgIGRpcmVjdF9idWYgOj0KKyAgICAgICAgQ09B TEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09B TEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIE5v bi1zY3JvbGxhYmxlIGN1cnNvciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIHJ1bnMgYWZ0ZXIgZWFj aCBFeGVjdXRvclJ1bgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENP U1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jfbm9zY3JvbGxfc2Nh bigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOwor ICAgIG5vc2Nyb2xsX2J1ZiA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQg QmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFk IEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gU2Nyb2xsYWJsZSBjdXJzb3IgcGF0aDogRXhl Y1NodXRkb3duTm9kZSBpcyBza2lwcGVkCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGN1cnNvcl9z Y3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+ J1BsYW4nOworICAgIHNjcm9sbF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIEJvdGggY3Vyc29yIHBhdGhzIHNo b3VsZCByZXBvcnQgYnVmZmVyIGNvdW50cyBhYm91dCBhcyBoaWdoIGFzCisgICAgLS0gdGhlIGRp cmVjdCBzY2FuIChzYW1lIGRhdGEgcGx1cyBtaW5vciBjYXRhbG9nIG92ZXJoZWFkKSwgYW5kIG5v dAorICAgIC0tIGRvdWJsZS1jb3VudGVkICg8IDJ4IHRoZSBkaXJlY3Qgc2NhbikKKyAgICBSRVRV Uk4gUVVFUlkgU0VMRUNUCisgICAgICAgIChub3Njcm9sbF9idWYgPj0gZGlyZWN0X2J1ZiAqIDAu NSBBTkQgbm9zY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpLAorICAgICAgICAoc2Nyb2xsX2J1 ZiA+PSBkaXJlY3RfYnVmICogMC41IEFORCBzY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUICogRlJPTSBjaGVja19jdXJzb3Jf ZXhwbGFpbl9idWZmZXJzKCk7CisKK0RST1AgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5f YnVmZmVyczsKK0RST1AgRlVOQ1RJT04gY3Vyc29yX25vc2Nyb2xsX3NjYW47CitEUk9QIEZVTkNU SU9OIGN1cnNvcl9zY3JvbGxfc2NhbjsKK0RST1AgVEFCTEUgY3Vyc29yX2J1Zl90ZXN0OworCist LSBUZXN0IHRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uLgorQ1JFQVRFIFRFTVAgVEFCTEUgdHJpZ190 ZXN0X3RhYiAoYSBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHJpZ193b3JrX3RhYiAoYSBpbnQp OworSU5TRVJUIElOVE8gdHJpZ193b3JrX3RhYiBWQUxVRVMgKDEpOworCitDUkVBVEUgRlVOQ1RJ T04gdHJpZ190ZXN0X2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKK0JFR0lOCisgICAgUEVS Rk9STSAqIEZST00gdHJpZ193b3JrX3RhYjsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgdHJpZ190ZXN0X3RyaWcKKyAgICBCRUZP UkUgSU5TRVJUIE9OIHRyaWdfdGVzdF90YWIKKyAgICBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5D VElPTiB0cmlnX3Rlc3RfZnVuYygpOworCitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfdHJpZ2dlcl9l eHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFu X2pzb24ganNvbjsKKyAgICB0cmlnIGpzb247CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIElOU0VS VCBJTlRPIHRyaWdfdGVzdF90YWIgVkFMVUVTICgxKScgSU5UTyBwbGFuX2pzb247CisgICAgdHJp ZyA6PSBwbGFuX2pzb24tPjAtPidUcmlnZ2VycyctPjA7CisgICAgUkVUVVJOIENPQUxFU0NFKCh0 cmlnLT4+J0NhbGxzJyk6OmludCwgMCkgPiAwOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsK KworU0VMRUNUIGNoZWNrX3RyaWdnZXJfZXhwbGFpbl9idWZmZXJzKCkgQVMgdHJpZ2dlcl9idWZm ZXJzX3Zpc2libGU7CisKK0RST1AgRlVOQ1RJT04gY2hlY2tfdHJpZ2dlcl9leHBsYWluX2J1ZmZl cnM7CitEUk9QIFRSSUdHRVIgdHJpZ190ZXN0X3RyaWcgT04gdHJpZ190ZXN0X3RhYjsKK0RST1Ag RlVOQ1RJT04gdHJpZ190ZXN0X2Z1bmM7CitEUk9QIFRBQkxFIHRyaWdfdGVzdF90YWI7CitEUk9Q IFRBQkxFIHRyaWdfd29ya190YWI7Ci0tIAoyLjQ3LjEKCg== --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0007-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Disposition: attachment; filename="v16-0007-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr8f6 RnJvbSBmN2I3OGZkMjFiZGE2MWMyMzY2NDk2ZjhjZmU5YTBhYTc2Zjg3NTg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDE1IE1hciAyMDI2IDIxOjQ0OjU4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTYgMDcvMTBd IGluc3RydW1lbnRhdGlvbjogVXNlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgZm9yCiBwYXJhbGxl bCB3b3JrZXJzCgpUaGlzIHNpbXBsaWZpZXMgdGhlIERTTSBhbGxvY2F0aW9ucyBhIGJpdCBzaW5j ZSB3ZSBkb24ndCBuZWVkIHRvCnNlcGFyYXRlbHkgYWxsb2NhdGUgV0FMIGFuZCBidWZmZXIgdXNh Z2UsIGFuZCBhbGxvd3MgdGhlIGVhc2llciBmdXR1cmUKYWRkaXRpb24gb2YgYSB0aGlyZCBzdGFj ay1iYXNlZCBzdHJ1Y3QgYmVpbmcgZGlzY3Vzc2VkLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVr YXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluLmMgICAgICAgIHwgNDMgKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgfCA0MyArKysrKystLS0tLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICB8IDQzICsrKysrKy0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIHwgNTIgKysrKysrKystLS0t LS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgIHwgNjYgKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMgICAgIHwgMTQgKysrLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaCAg IHwgIDUgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgfCAgNCArLQog OCBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAxNzEgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IDNhNTE3NmM3NmM3Li45ZTU0NWI0ZWYwZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwpAQCAtNTEsOCArNTEsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfQlJJ Tl9TSEFSRUQJCVVJTlQ2NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAwMSkKICNkZWZpbmUgUEFSQUxM RUxfS0VZX1RVUExFU09SVAkJCVVJTlQ2NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAwMikKICNkZWZp bmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAw MDMpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEIwMDAw MDAwMDAwMDAwMDQpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2NENP TlNUKDB4QjAwMDAwMDAwMDAwMDAwNSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRB VElPTglVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDQpCiAKIC8qCiAgKiBTdGF0dXMgZm9y IGluZGV4IGJ1aWxkcyBwZXJmb3JtZWQgaW4gcGFyYWxsZWwuICBUaGlzIGlzIGFsbG9jYXRlZCBp biBhCkBAIC0xNDgsOCArMTQ3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRlcgogCUJyaW5T aGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDsKIAlTbmFwc2hvdAlz bmFwc2hvdDsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNh Z2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIH0gQnJpbkxlYWRlcjsKIAogLyoKQEAgLTIz ODcsOCArMjM4NSw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlCcmluU2hhcmVkICpicmlu c2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJQnJpbkxlYWRlciAqYnJpbmxlYWRl ciA9IHBhbGxvYzBfb2JqZWN0KEJyaW5MZWFkZXIpOwotCVdhbFVzYWdlICAgKndhbHVzYWdlOwot CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCWJv b2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKQEAgLTI0 MzAsMTggKzI0MjcsMTQgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1 aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXNobV90b2NfZXN0aW1h dGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAyKTsKIAogCS8qCi0JICogRXN0aW1hdGUgc3BhY2Ug Zm9yIFdhbFVzYWdlIGFuZCBCdWZmZXJVc2FnZSAtLSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCi0J ICogYW5kIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UuCisJICogRXN0aW1hdGUgc3BhY2UgZm9y IEluc3RydW1lbnRhdGlvbiAtLSBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLgogCSAqCiAJ ICogSWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQg c2tpcCB0aGlzLiAgV2UKIAkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25l J3MgbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCiAJICogZG8gaXQgdW5jb25kaXRpb25h bGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJ CQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2ht X3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwotCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZm ZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5z dHJ1bWVudGF0aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMo JnBjeHQtPmVzdGltYXRvciwgMSk7CiAKIAkvKiBGaW5hbGx5LCBlc3RpbWF0ZSBQQVJBTExFTF9L RVlfUVVFUllfVEVYVCBzcGFjZSAqLwpAQCAtMjUxNCwxNSArMjUwNywxMiBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJfQogCiAJLyoKLQkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3Jr ZXIncyBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2U7IG5vIG5lZWQgdG8KKwkgKiBBbGxvY2F0ZSBz cGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJbnN0cnVtZW50YXRpb247IG5vIG5lZWQgdG8KIAkgKiBp bml0aWFsaXplLgogCSAqLwotCXdhbHVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2Ms Ci0JCQkJCQkJCW11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0J c2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCB3YWx1c2Fn ZSk7Ci0JYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJ ICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1f dG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGJ1ZmZlcnVz YWdlKTsKKwlpbnN0ciA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAorCQkJCQkJCSBtdWxf c2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKKwlzaG1fdG9j X2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3RyKTsK IAogCS8qIExhdW5jaCB3b3JrZXJzLCBzYXZpbmcgc3RhdHVzIGZvciBsZWFkZXIvY2FsbGVyICov CiAJTGF1bmNoUGFyYWxsZWxXb3JrZXJzKHBjeHQpOwpAQCAtMjUzMyw4ICsyNTIzLDcgQEAgX2Jy aW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LAogCWJyaW5sZWFkZXItPmJyaW5zaGFyZWQgPSBicmluc2hhcmVk OwogCWJyaW5sZWFkZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwogCWJyaW5sZWFkZXItPnNu YXBzaG90ID0gc25hcHNob3Q7Ci0JYnJpbmxlYWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKLQli cmlubGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOworCWJyaW5sZWFkZXItPmluc3Ry ID0gaW5zdHI7CiAKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVk LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVu Y2hlZCA9PSAwKQpAQCAtMjU3Myw3ICsyNTYyLDcgQEAgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5M ZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAkgKiBvciB3ZSBtaWdo dCBnZXQgaW5jb21wbGV0ZSBkYXRhLikKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgYnJpbmxlYWRl ci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVl cnkoJmJyaW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmYnJpbmxlYWRlci0+d2FsdXNhZ2VbaV0p OworCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxlYWRlci0+aW5zdHJbaV0pOwogCiAJ LyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQg Ki8KIAlpZiAoSXNNVkNDU25hcHNob3QoYnJpbmxlYWRlci0+c25hcHNob3QpKQpAQCAtMjg4OCw4 ICsyODc3LDcgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9j a21vZGU7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwotCVdhbFVzYWdlICAgKndhbHVz YWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0cnVtZW50YXRpb24gKndvcmtl cl9pbnN0cjsKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKQEAgLTI5NTAsMTEgKzI5MzgsOCBAQCBf YnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAkJCQkJCQkJICBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOwogCiAJLyogUmVw b3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCWJ1ZmZl cnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBm YWxzZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxf VVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkgICZi dWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3YWx1c2FnZVtQYXJh bGxlbFdvcmtlck51bWJlcl0pOworCXdvcmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgZmFsc2UpOworCUluc3RyRW5kUGFyYWxsZWxR dWVyeShpbnN0ciwgJndvcmtlcl9pbnN0cltQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJaW5k ZXhfY2xvc2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWws IGhlYXBMb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCAwZDgwZjcy YTBiMC4uZjNkZTYyY2U3ZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtNDUs OCArNDUsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfR0lOX1NIQVJFRAkJCVVJTlQ2NENPTlNU KDB4QjAwMDAwMDAwMDAwMDAwMSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1RVUExFU09SVAkJCVVJ TlQ2NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAwMikKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZ X1RFWFQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDMpCi0jZGVmaW5lIFBBUkFMTEVM X0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDQpCi0jZGVmaW5l IFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAw NSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTglVSU5UNjRDT05TVCgweEIw MDAwMDAwMDAwMDAwMDQpCiAKIC8qCiAgKiBTdGF0dXMgZm9yIGluZGV4IGJ1aWxkcyBwZXJmb3Jt ZWQgaW4gcGFyYWxsZWwuICBUaGlzIGlzIGFsbG9jYXRlZCBpbiBhCkBAIC0xMzgsOCArMTM3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgR2luTGVhZGVyCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsK IAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCVNuYXBzaG90CXNuYXBzaG90OwotCVdhbFVzYWdl ICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0cnVtZW50YXRp b24gKmluc3RyOwogfSBHaW5MZWFkZXI7CiAKIHR5cGVkZWYgc3RydWN0CkBAIC05NDUsOCArOTQz LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwog CVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJR2luTGVhZGVyICAqZ2lubGVhZGVyID0gcGFsbG9j MF9vYmplY3QoR2luTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlCdWZmZXJVc2Fn ZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlib29sCQlsZWFkZXJw YXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCkBAIC05ODcsMTggKzk4NCwx NCBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ ZXN0aW1hdG9yLCAyKTsKIAogCS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9yIFdhbFVzYWdlIGFu ZCBCdWZmZXJVc2FnZSAtLSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCi0JICogYW5kIFBBUkFMTEVM X0tFWV9CVUZGRVJfVVNBR0UuCisJICogRXN0aW1hdGUgc3BhY2UgZm9yIEluc3RydW1lbnRhdGlv biAtLSBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLgogCSAqCiAJICogSWYgdGhlcmUgYXJl IG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UK IAkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBp bnN0cnVtZW50YXRpb24sIHNvCiAJICogZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNo bV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXpl KHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19lc3RpbWF0ZV9r ZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwotCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQt PmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQt Pm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSwg cGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRv ciwgMSk7CiAKIAkvKiBGaW5hbGx5LCBlc3RpbWF0ZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVCBz cGFjZSAqLwpAQCAtMTA2NiwxNSArMTA1OSwxMiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCX0K IAogCS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgV2FsVXNhZ2UgYW5k IEJ1ZmZlclVzYWdlOyBubyBuZWVkIHRvCisJICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29y a2VyJ3MgSW5zdHJ1bWVudGF0aW9uOyBubyBuZWVkIHRvCiAJICogaW5pdGlhbGl6ZS4KIAkgKi8K LQl3YWx1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQltdWxfc2l6 ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBj eHQtPnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2UpOwotCWJ1ZmZlcnVzYWdl ID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCSAgIG11bF9zaXplKHNpemVv ZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+ dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJ1c2FnZSk7CisJaW5zdHIgPSBz aG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKKwkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9j LCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7CiAKIAkvKiBMYXVuY2ggd29y a2Vycywgc2F2aW5nIHN0YXR1cyBmb3IgbGVhZGVyL2NhbGxlciAqLwogCUxhdW5jaFBhcmFsbGVs V29ya2VycyhwY3h0KTsKQEAgLTEwODUsOCArMTA3NSw3IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwo R2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiAJZ2lubGVhZGVyLT5naW5zaGFyZWQgPSBnaW5zaGFyZWQ7CiAJZ2lubGVhZGVyLT5zaGFyZWRz b3J0ID0gc2hhcmVkc29ydDsKIAlnaW5sZWFkZXItPnNuYXBzaG90ID0gc25hcHNob3Q7Ci0JZ2lu bGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwotCWdpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBi dWZmZXJ1c2FnZTsKKwlnaW5sZWFkZXItPmluc3RyID0gaW5zdHI7CiAKIAkvKiBJZiBubyB3b3Jr ZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxk KSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA9PSAwKQpAQCAtMTEyNSw3ICsxMTE0 LDcgQEAgX2dpbl9lbmRfcGFyYWxsZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdpbkJ1aWxkU3Rh dGUgKnN0YXRlKQogCSAqIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRhdGEuKQogCSAqLwog CWZvciAoaSA9IDA7IGkgPCBnaW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKysp Ci0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAm Z2lubGVhZGVyLT53YWx1c2FnZVtpXSk7CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZnaW5s ZWFkZXItPmluc3RyW2ldKTsKIAogCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFw c2hvdCwgaWYgb25lIHdhcyB1c2VkICovCiAJaWYgKElzTVZDQ1NuYXBzaG90KGdpbmxlYWRlci0+ c25hcHNob3QpKQpAQCAtMjExOSw4ICsyMTA4LDcgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7 CiAJTE9DS01PREUJaW5kZXhMb2NrbW9kZTsKIAlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7 Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUlu c3RydW1lbnRhdGlvbiAqd29ya2VyX2luc3RyOwogCWludAkJCXNvcnRtZW07CiAKIAkvKgpAQCAt MjIwMCwxMSArMjE4OCw4IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAq c2VnLCBzaG1fdG9jICp0b2MpCiAJCQkJCQkJCSBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwg ZmFsc2UpOwogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4 ZWN1dGlvbiAqLwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9L RVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2Ms IFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnko aW5zdHIsCi0JCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCi0JCQkJ CQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCXdvcmtlcl9pbnN0ciA9IHNo bV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgZmFsc2UpOwor CUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0cltQYXJhbGxlbFdvcmtl ck51bWJlcl0pOwogCiAJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwogCXRh YmxlX2Nsb3NlKGhlYXBSZWwsIGhlYXBMb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCmluZGV4IDJkN2I3Y2VmOTEyLi5jYjIzOGY4NjJhNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKQEAgLTY2LDggKzY2LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1RV UExFU09SVAkJCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwMikKICNkZWZpbmUgUEFSQUxM RUxfS0VZX1RVUExFU09SVF9TUE9PTDIJVUlOVDY0Q09OU1QoMHhBMDAwMDAwMDAwMDAwMDAzKQog I2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAw MDAwMDAwNCkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4 QTAwMDAwMDAwMDAwMDAwNSkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRQkJVUlO VDY0Q09OU1QoMHhBMDAwMDAwMDAwMDAwMDA2KQorI2RlZmluZSBQQVJBTExFTF9LRVlfSU5TVFJV TUVOVEFUSU9OCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwNSkKIAogLyoKICAqIERJU0FC TEVfTEVBREVSX1BBUlRJQ0lQQVRJT04gZGlzYWJsZXMgdGhlIGxlYWRlcidzIHBhcnRpY2lwYXRp b24gaW4KQEAgLTE5NSw4ICsxOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogCVNoYXJl ZHNvcnQgKnNoYXJlZHNvcnQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDI7CiAJU25hcHNob3QJ c25hcHNob3Q7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVz YWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiB9IEJUTGVhZGVyOwogCiAvKgpAQCAtMTQw OCw4ICsxNDA2LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCVNoYXJlZHNvcnQgKnNoYXJlZHNv cnQyOwogCUJUU3Bvb2wgICAgKmJ0c3Bvb2wgPSBidWlsZHN0YXRlLT5zcG9vbDsKIAlCVExlYWRl ciAgICpidGxlYWRlciA9IHBhbGxvYzBfb2JqZWN0KEJUTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3 YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICpp bnN0cjsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVu OwogCkBAIC0xNDYyLDE4ICsxNDU5LDE0IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl9CiAKIAkv KgotCSAqIEVzdGltYXRlIHNwYWNlIGZvciBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2UgLS0gUEFS QUxMRUxfS0VZX1dBTF9VU0FHRQotCSAqIGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgor CSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRpb24gLS0gUEFSQUxMRUxfS0VZX0lO U1RSVU1FTlRBVElPTi4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRl ZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yg a25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwog CSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBw Y3h0LT5ud29ya2VycykpOwotCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9y LCAxKTsKLQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkg ICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJ ICAgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxs eSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQgc3BhY2UgKi8KQEAgLTE1NjAsMTUg KzE1NTMsMTIgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCX0KIAogCS8qCi0JICogQWxsb2NhdGUg c3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlOyBubyBuZWVk IHRvCisJICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5zdHJ1bWVudGF0aW9u OyBubyBuZWVkIHRvCiAJICogaW5pdGlhbGl6ZS4KIAkgKi8KLQl3YWx1c2FnZSA9IHNobV90b2Nf YWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQltdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBw Y3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X1dBTF9VU0FHRSwgd2FsdXNhZ2UpOwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShw Y3h0LT50b2MsCi0JCQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQt Pm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfQlVG RkVSX1VTQUdFLCBidWZmZXJ1c2FnZSk7CisJaW5zdHIgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQt PnRvYywKKwkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53 b3JrZXJzKSk7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJV TUVOVEFUSU9OLCBpbnN0cik7CiAKIAkvKiBMYXVuY2ggd29ya2Vycywgc2F2aW5nIHN0YXR1cyBm b3IgbGVhZGVyL2NhbGxlciAqLwogCUxhdW5jaFBhcmFsbGVsV29ya2VycyhwY3h0KTsKQEAgLTE1 ODAsOCArMTU3MCw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlidGxlYWRlci0+c2hhcmVkc29y dCA9IHNoYXJlZHNvcnQ7CiAJYnRsZWFkZXItPnNoYXJlZHNvcnQyID0gc2hhcmVkc29ydDI7CiAJ YnRsZWFkZXItPnNuYXBzaG90ID0gc25hcHNob3Q7Ci0JYnRsZWFkZXItPndhbHVzYWdlID0gd2Fs dXNhZ2U7Ci0JYnRsZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CisJYnRsZWFkZXIt Pmluc3RyID0gaW5zdHI7CiAKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxh dW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vy c19sYXVuY2hlZCA9PSAwKQpAQCAtMTYyMCw3ICsxNjA5LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChC VExlYWRlciAqYnRsZWFkZXIpCiAJICogb3Igd2UgbWlnaHQgZ2V0IGluY29tcGxldGUgZGF0YS4p CiAJICovCiAJZm9yIChpID0gMDsgaSA8IGJ0bGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hl ZDsgaSsrKQotCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnRsZWFkZXItPmJ1ZmZlcnVzYWdl W2ldLCAmYnRsZWFkZXItPndhbHVzYWdlW2ldKTsKKwkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JmJ0bGVhZGVyLT5pbnN0cltpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mg c25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChidGxlYWRl ci0+c25hcHNob3QpKQpAQCAtMTc1NCw4ICsxNzQzLDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCUxPQ0tNT0RFCWhlYXBMb2NrbW9k ZTsKIAlMT0NLTU9ERQlpbmRleExvY2ttb2RlOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0 cjsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJ SW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CiAJaW50CQkJc29ydG1lbTsKIAogI2lmZGVm IEJUUkVFX0JVSUxEX1NUQVRTCkBAIC0xODM3LDExICsxODI1LDggQEAgX2J0X3BhcmFsbGVsX2J1 aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCQkJCQkJCSAgIHNoYXJl ZHNvcnQyLCBzb3J0bWVtLCBmYWxzZSk7CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBk dXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1 cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKLQl3YWx1c2FnZSA9IHNo bV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3Ry RW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKLQkJCQkJCSAgJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29y a2VyTnVtYmVyXSwKLQkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJ d29ya2VyX2luc3RyID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVO VEFUSU9OLCBmYWxzZSk7CisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLCAmd29ya2VyX2lu c3RyW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKICNpZmRlZiBCVFJFRV9CVUlMRF9TVEFUUwog CWlmIChsb2dfYnRyZWVfYnVpbGRfc3RhdHMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYwppbmRleCA4MmJmYmM2ZDQ5Mi4uZjdhMTdlNGY3M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYwpAQCAtNTYsOSArNTYsOCBAQAogICovCiAjZGVmaW5lIFBBUkFMTEVM X1ZBQ1VVTV9LRVlfU0hBUkVECQkJMQogI2RlZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX1FVRVJZ X1RFWFQJCTIKLSNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UJMwotI2Rl ZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRQkJNAotI2RlZmluZSBQQVJBTExFTF9W QUNVVU1fS0VZX0lOREVYX1NUQVRTCQk1CisjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5T VFJVTUVOVEFUSU9OCTMKKyNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9JTkRFWF9TVEFUUwkJ NAogCiAvKgogICogU3RydWN0IGZvciBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSByZWxhdGVkIHBh cmFtZXRlcnMgdG8gc2hhcmUgYW1vbmcgYW4KQEAgLTIzNiwxMSArMjM1LDggQEAgc3RydWN0IFBh cmFsbGVsVmFjdXVtU3RhdGUKIAkvKiBTaGFyZWQgZGVhZCBpdGVtcyBzcGFjZSBhbW9uZyBwYXJh bGxlbCB2YWN1dW0gd29ya2VycyAqLwogCVRpZFN0b3JlICAgKmRlYWRfaXRlbXM7CiAKLQkvKiBQ b2ludHMgdG8gYnVmZmVyIHVzYWdlIGFyZWEgaW4gRFNNICovCi0JQnVmZmVyVXNhZ2UgKmJ1ZmZl cl91c2FnZTsKLQotCS8qIFBvaW50cyB0byBXQUwgdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlXYWxV c2FnZSAgICp3YWxfdXNhZ2U7CisJLyogUG9pbnRzIHRvIGluc3RydW1lbnRhdGlvbiBhcmVhIGlu IERTTSAqLworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAKIAkvKgogCSAqIEZhbHNlIGlmIHRo ZSBpbmRleCBpcyB0b3RhbGx5IHVuc3VpdGFibGUgdGFyZ2V0IGZvciBhbGwgcGFyYWxsZWwKQEAg LTMxMSw4ICszMDcsNyBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJUFZTaGFyZWQgICAqc2hhcmVkOwogCVRpZFN0 b3JlICAgKmRlYWRfaXRlbXM7CiAJUFZJbmRTdGF0cyAqaW5kc3RhdHM7Ci0JQnVmZmVyVXNhZ2Ug KmJ1ZmZlcl91c2FnZTsKLQlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9u ICppbnN0cjsKIAlib29sCSAgICp3aWxsX3BhcmFsbGVsX3ZhY3V1bTsKIAlTaXplCQllc3RfaW5k c3RhdHNfbGVuOwogCVNpemUJCWVzdF9zaGFyZWRfbGVuOwpAQCAtMzY1LDE4ICszNjAsMTUgQEAg cGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50 IG5pbmRleGVzLAogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsK IAogCS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9yIEJ1ZmZlclVzYWdlIGFuZCBXYWxVc2FnZSAt LQotCSAqIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFIGFuZCBQQVJBTExFTF9WQUNV VU1fS0VZX1dBTF9VU0FHRS4KKwkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgSW5zdHJ1bWVudGF0aW9u IC0tCisJICogUEFSQUxMRUxfVkFDVVVNX0tFWV9JTlNUUlVNRU5UQVRJT04uCiAJICoKIAkgKiBJ ZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lw IHRoaXMuICBXZQogCSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBs b29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwgc28KIAkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHku CiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJ ICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1f dG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7Ci0Jc2htX3RvY19lc3RpbWF0 ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdhbFVz YWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJCQkJCSAgIG11bF9zaXplKHNpemVvZihJbnN0cnVt ZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4 dC0+ZXN0aW1hdG9yLCAxKTsKIAogCS8qIEZpbmFsbHksIGVzdGltYXRlIFBBUkFMTEVMX1ZBQ1VV TV9LRVlfUVVFUllfVEVYVCBzcGFjZSAqLwpAQCAtNDc0LDE3ICs0NjYsMTMgQEAgcGFyYWxsZWxf dmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVz LAogCXB2cy0+c2hhcmVkID0gc2hhcmVkOwogCiAJLyoKLQkgKiBBbGxvY2F0ZSBzcGFjZSBmb3Ig ZWFjaCB3b3JrZXIncyBCdWZmZXJVc2FnZSBhbmQgV2FsVXNhZ2U7IG5vIG5lZWQgdG8KLQkgKiBp bml0aWFsaXplCisJICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5zdHJ1bWVu dGF0aW9uOyBubyBuZWVkIHRvCisJICogaW5pdGlhbGl6ZS4KIAkgKi8KLQlidWZmZXJfdXNhZ2Ug PSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJCW11bF9zaXplKHNpemVvZihC dWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+dG9j LCBQQVJBTExFTF9WQUNVVU1fS0VZX0JVRkZFUl9VU0FHRSwgYnVmZmVyX3VzYWdlKTsKLQlwdnMt PmJ1ZmZlcl91c2FnZSA9IGJ1ZmZlcl91c2FnZTsKLQl3YWxfdXNhZ2UgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQt Pm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9WQUNVVU1f S0VZX1dBTF9VU0FHRSwgd2FsX3VzYWdlKTsKLQlwdnMtPndhbF91c2FnZSA9IHdhbF91c2FnZTsK KwlpbnN0ciA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAorCQkJCQkJCSBtdWxfc2l6ZShz aXplb2YoSW5zdHJ1bWVudGF0aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKKwlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7 CisJcHZzLT5pbnN0ciA9IGluc3RyOwogCiAJLyogU3RvcmUgcXVlcnkgc3RyaW5nIGZvciB3b3Jr ZXJzICovCiAJaWYgKGRlYnVnX3F1ZXJ5X3N0cmluZykKQEAgLTk0NSw3ICs5MzMsNyBAQCBwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMs IGludCBudW1faW5kZXhfc2NhbgogCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9GaW5pc2gocHZz LT5wY3h0KTsKIAogCQlmb3IgKGludCBpID0gMDsgaSA8IHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1 bmNoZWQ7IGkrKykKLQkJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwdnMtPmJ1ZmZlcl91c2Fn ZVtpXSwgJnB2cy0+d2FsX3VzYWdlW2ldKTsKKwkJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZw dnMtPmluc3RyW2ldKTsKIAl9CiAKIAkvKgpAQCAtMTIwMyw4ICsxMTkxLDcgQEAgcGFyYWxsZWxf dmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVBWU2hhcmVkICAg KnNoYXJlZDsKIAlUaWRTdG9yZSAgICpkZWFkX2l0ZW1zOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9u ICppbnN0cjsKLQlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwotCVdhbFVzYWdlICAgKndhbF91 c2FnZTsKKwlJbnN0cnVtZW50YXRpb24gKndvcmtlcl9pbnN0cjsKIAlpbnQJCQluaW5kZXhlczsK IAljaGFyCSAgICpzaGFyZWRxdWVyeTsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFj azsKQEAgLTEzMTIsMTEgKzEyOTksOCBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRl eGVzKCZwdnMpOwogCiAJLyogUmVwb3J0IGJ1ZmZlci9XQUwgdXNhZ2UgZHVyaW5nIHBhcmFsbGVs IGV4ZWN1dGlvbiAqLwotCWJ1ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxM RUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKLQl3YWxfdXNhZ2UgPSBzaG1fdG9j X2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5z dHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVmZmVyX3VzYWdlW1BhcmFsbGVs V29ya2VyTnVtYmVyXSwKLQkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0p OworCXdvcmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfVkFDVVVNX0tF WV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIs ICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCS8qIFJlcG9ydCBhbnkg cmVtYWluaW5nIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHRpbWUgKi8KIAlpZiAodHJhY2tfY29z dF9kZWxheV90aW1pbmcpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGYzMmFh NjYwMjk0Li45MzRmNGQ5NTQ3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAg LTYwLDEzICs2MCwxMiBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfRVhFQ1VUT1JfRklYRUQJCVVJ TlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwMSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1BMQU5O RURTVE1UCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9QQVJBTUxJU1RJTkZPCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDMpCi0jZGVm aW5lIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAw MDAwNCkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTglVSU5UNjRDT05TVCgw eEUwMDAwMDAwMDAwMDAwMDQpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBMRV9RVUVVRQkJVUlO VDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA1KQotI2RlZmluZSBQQVJBTExFTF9LRVlfSU5TVFJV TUVOVEFUSU9OCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwNikKKyNkZWZpbmUgUEFSQUxM RUxfS0VZX05PREVfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAw NikKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0RTQQkJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDcpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQlVSU5UNjRDT05TVCgweEUw MDAwMDAwMDAwMDAwMDgpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9O IFVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwOSkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX1dB TF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQSkKIAogI2RlZmluZSBQQVJB TExFTF9UVVBMRV9RVUVVRV9TSVpFCQk2NTUzNgogCkBAIC02NTAsOCArNjQ5LDYgQEAgRXhlY0lu aXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCWNo YXIJICAgKnBzdG10X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CiAJY2hhcgkgICAqcGFy YW1saXN0aW5mb19zcGFjZTsKLQlCdWZmZXJVc2FnZSAqYnVmdXNhZ2Vfc3BhY2U7Ci0JV2FsVXNh Z2UgICAqd2FsdXNhZ2Vfc3BhY2U7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJU2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5z dHJ1bWVudGF0aW9uID0gTlVMTDsKIAlpbnQJCQlwc3RtdF9sZW47CkBAIC03MTUsMjEgKzcxMiwx NCBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICpl c3RhdGUsCiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJ LyoKLQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgQnVmZmVyVXNhZ2UuCisJICogRXN0aW1hdGUgc3Bh Y2UgZm9yIEluc3RydW1lbnRhdGlvbi4KIAkgKgogCSAqIElmIEVYUExBSU4gaXMgbm90IGluIHVz ZSBhbmQgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwKIAkgKiB3ZSBj b3VsZCBza2lwIHRoaXMuICBCdXQgd2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFu eW9uZSdzCiAJICogbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvIGRvIGl0IHVuY29uZGl0 aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3Is Ci0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2Vycykp OwotCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQotCS8qCi0J ICogU2FtZSB0aGluZyBmb3IgV2FsVXNhZ2UuCi0JICovCi0Jc2htX3RvY19lc3RpbWF0ZV9jaHVu aygmcGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwg cGN4dC0+bndvcmtlcnMpKTsKKwkJCQkJCSAgIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRp b24pLCBwY3h0LT5ud29ya2VycykpOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0 aW1hdG9yLCAxKTsKIAogCS8qIEVzdGltYXRlIHNwYWNlIGZvciB0dXBsZSBxdWV1ZXMuICovCkBA IC04MTUsMTcgKzgwNSwxOCBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExF TF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFjZSk7CiAJU2VyaWFsaXplUGFy YW1MaXN0KGVzdGF0ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvLCAmcGFyYW1saXN0aW5mb19zcGFjZSk7 CiAKLQkvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBCdWZmZXJVc2FnZTsgbm8g bmVlZCB0byBpbml0aWFsaXplLiAqLwotCWJ1ZnVzYWdlX3NwYWNlID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsCi0JCQkJCQkJCQkgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBj eHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlf QlVGRkVSX1VTQUdFLCBidWZ1c2FnZV9zcGFjZSk7Ci0JcGVpLT5idWZmZXJfdXNhZ2UgPSBidWZ1 c2FnZV9zcGFjZTsKKwkvKgorCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIElu c3RydW1lbnRhdGlvbjsgbm8gbmVlZCB0bworCSAqIGluaXRpYWxpemUuCisJICovCisJeworCQlJ bnN0cnVtZW50YXRpb24gKmluc3RyOwogCi0JLyogU2FtZSBmb3IgV2FsVXNhZ2UuICovCi0Jd2Fs dXNhZ2Vfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJCSAgbXVs X3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIHdhbHVzYWdlX3NwYWNlKTsKLQlw ZWktPndhbF91c2FnZSA9IHdhbHVzYWdlX3NwYWNlOworCQlpbnN0ciA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLAorCQkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiks IHBjeHQtPm53b3JrZXJzKSk7CisJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxf S0VZX0lOU1RSVU1FTlRBVElPTiwgaW5zdHIpOworCQlwZWktPmluc3RydW1lbnRhdGlvbiA9IGlu c3RyOworCX0KIAogCS8qIFNldCB1cCB0aGUgdHVwbGUgcXVldWVzIHRoYXQgdGhlIHdvcmtlcnMg d2lsbCB3cml0ZSBpbnRvLiAqLwogCXBlaS0+dHF1ZXVlID0gRXhlY1BhcmFsbGVsU2V0dXBUdXBs ZVF1ZXVlcyhwY3h0LCBmYWxzZSk7CkBAIC04NTEsOSArODQyLDkgQEAgRXhlY0luaXRQYXJhbGxl bFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQlpbnN0cnVtZW50 ID0gR2V0SW5zdHJ1bWVudGF0aW9uQXJyYXkoaW5zdHJ1bWVudGF0aW9uKTsKIAkJZm9yIChpID0g MDsgaSA8IG53b3JrZXJzICogZS5ubm9kZXM7ICsraSkKIAkJCUluc3RySW5pdE5vZGUoJmluc3Ry dW1lbnRbaV0sIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwgZmFsc2UpOwotCQlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sCisJCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX05PREVfSU5TVFJVTUVOVEFUSU9OLAogCQkJCQkg ICBpbnN0cnVtZW50YXRpb24pOwotCQlwZWktPmluc3RydW1lbnRhdGlvbiA9IGluc3RydW1lbnRh dGlvbjsKKwkJcGVpLT5ub2RlX2luc3RydW1lbnRhdGlvbiA9IGluc3RydW1lbnRhdGlvbjsKIAog CQlpZiAoZXN0YXRlLT5lc19qaXRfZmxhZ3MgIT0gUEdKSVRfTk9ORSkKIAkJewpAQCAtMTI1NSw3 ICsxMjQ2LDcgQEAgRXhlY1BhcmFsbGVsRmluaXNoKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkp CiAJICogZmluaXNoLCBvciB3ZSBtaWdodCBnZXQgaW5jb21wbGV0ZSBkYXRhLikKIAkgKi8KIAlm b3IgKGkgPSAwOyBpIDwgbndvcmtlcnM7IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnBlaS0+YnVmZmVyX3VzYWdlW2ldLCAmcGVpLT53YWxfdXNhZ2VbaV0pOworCQlJbnN0ckFjY3Vt UGFyYWxsZWxRdWVyeSgmcGVpLT5pbnN0cnVtZW50YXRpb25baV0pOwogCiAJcGVpLT5maW5pc2hl ZCA9IHRydWU7CiB9CkBAIC0xMjY5LDExICsxMjYwLDExIEBAIEV4ZWNQYXJhbGxlbEZpbmlzaChQ YXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVpKQogdm9pZAogRXhlY1BhcmFsbGVsQ2xlYW51cChQYXJh bGxlbEV4ZWN1dG9ySW5mbyAqcGVpKQogewotCS8qIEFjY3VtdWxhdGUgaW5zdHJ1bWVudGF0aW9u LCBpZiBhbnkuICovCi0JaWYgKHBlaS0+aW5zdHJ1bWVudGF0aW9uKQorCS8qIEFjY3VtdWxhdGUg bm9kZSBpbnN0cnVtZW50YXRpb24sIGlmIGFueS4gKi8KKwlpZiAocGVpLT5ub2RlX2luc3RydW1l bnRhdGlvbikKIAl7CiAJCUV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKHBlaS0+ cGxhbnN0YXRlLAotCQkJCQkJCQkJCQlwZWktPmluc3RydW1lbnRhdGlvbik7CisJCQkJCQkJCQkJ CXBlaS0+bm9kZV9pbnN0cnVtZW50YXRpb24pOwogCiAJCUV4ZWNGaW5hbGl6ZVdvcmtlckluc3Ry dW1lbnRhdGlvbihwZWktPnBsYW5zdGF0ZSk7CiAJfQpAQCAtMTUxMCw4ICsxNTAxLDYgQEAgUGFy YWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogewogCUZpeGVk UGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0 cjsKLQlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwotCVdhbFVzYWdlICAgKndhbF91c2FnZTsK IAlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOwogCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKIAlTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOwpAQCAtMTUyNiw3ICsx NTE1LDcgQEAgUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9j KQogCiAJLyogU2V0IHVwIERlc3RSZWNlaXZlciwgU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRp b24sIGFuZCBRdWVyeURlc2MuICovCiAJcmVjZWl2ZXIgPSBFeGVjUGFyYWxsZWxHZXRSZWNlaXZl cihzZWcsIHRvYyk7Ci0JaW5zdHJ1bWVudGF0aW9uID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCB0cnVlKTsKKwlpbnN0cnVtZW50YXRpb24gPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9OT0RFX0lOU1RSVU1FTlRBVElPTiwgdHJ1ZSk7 CiAJaWYgKGluc3RydW1lbnRhdGlvbiAhPSBOVUxMKQogCQlpbnN0cnVtZW50X29wdGlvbnMgPSBp bnN0cnVtZW50YXRpb24tPmluc3RydW1lbnRfb3B0aW9uczsKIAlqaXRfaW5zdHJ1bWVudGF0aW9u ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElPTiwK QEAgLTE1ODQsMTEgKzE1NzMsMTIgQEAgUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CiAKIAkvKiBSZXBv cnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLwotCWJ1ZmZl cl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwg ZmFsc2UpOwotCXdhbF91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dB TF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKLQkJCQkJCSAg JmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3YWxfdXNhZ2Vb UGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwl7CisJCUluc3RydW1lbnRhdGlvbiAqd29ya2VyX2lu c3RyOworCisJCXdvcmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X0lOU1RSVU1FTlRBVElPTiwgZmFsc2UpOworCQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIs ICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwl9CiAKIAkvKiBSZXBvcnQg aW5zdHJ1bWVudGF0aW9uIGRhdGEgaWYgYW55IGluc3RydW1lbnRhdGlvbiBvcHRpb25zIGFyZSBz ZXQuICovCiAJaWYgKGluc3RydW1lbnRhdGlvbiAhPSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1 bWVudC5jCmluZGV4IGVmMWE5NDgwMGYzLi45NGQ1N2UzYmM0MCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2lu c3RydW1lbnQuYwpAQCAtMzQ5LDExICszNDksMTIgQEAgSW5zdHJTdGFydFBhcmFsbGVsUXVlcnko dm9pZCkKIAogLyogcmVwb3J0IHVzYWdlIGFmdGVyIHBhcmFsbGVsIGV4ZWN1dG9yIHNodXRkb3du ICovCiB2b2lkCi1JbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFp bnN0ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCitJbnN0ckVu ZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgSW5zdHJ1bWVudGF0 aW9uICpkc3QpCiB7CiAJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShxaW5zdHIpOwotCW1lbWNweShi dWZ1c2FnZSwgJnFpbnN0ci0+aW5zdHIuYnVmdXNhZ2UsIHNpemVvZihCdWZmZXJVc2FnZSkpOwot CW1lbWNweSh3YWx1c2FnZSwgJnFpbnN0ci0+aW5zdHIud2FsdXNhZ2UsIHNpemVvZihXYWxVc2Fn ZSkpOworCWRzdC0+bmVlZF9zdGFjayA9IHFpbnN0ci0+aW5zdHIubmVlZF9zdGFjazsKKwltZW1j cHkoJmRzdC0+YnVmdXNhZ2UsICZxaW5zdHItPmluc3RyLmJ1ZnVzYWdlLCBzaXplb2YoQnVmZmVy VXNhZ2UpKTsKKwltZW1jcHkoJmRzdC0+d2FsdXNhZ2UsICZxaW5zdHItPmluc3RyLndhbHVzYWdl LCBzaXplb2YoV2FsVXNhZ2UpKTsKIH0KIAogLyoKQEAgLTM2OSwxMiArMzcwLDExIEBAIEluc3Ry RW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBCdWZmZXJVc2Fn ZSAqYnVmdXNhZ2UsIFdhbFVzCiAgKiBhY3Rpdml0eSBpcyBhY2N1bXVsYXRlZC4KICAqLwogdm9p ZAotSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2Fn ZSAqd2FsdXNhZ2UpCitJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShJbnN0cnVtZW50YXRpb24gKmlu c3RyKQogewotCUJ1ZmZlclVzYWdlQWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZSwg YnVmdXNhZ2UpOwotCVdhbFVzYWdlQWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZSwg d2FsdXNhZ2UpOworCUluc3RyQWNjdW1TdGFjayhpbnN0cl9zdGFjay5jdXJyZW50LCBpbnN0cik7 CiAKLQlXYWxVc2FnZUFkZCgmcGdXYWxVc2FnZSwgd2FsdXNhZ2UpOworCVdhbFVzYWdlQWRkKCZw Z1dhbFVzYWdlLCAmaW5zdHItPndhbHVzYWdlKTsKIH0KIAogLyogTm9kZSBpbnN0cnVtZW50YXRp b24gaGFuZGxpbmcgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgKaW5kZXggNWEyMDM0 ODExZDUuLjZjOGI2MDJkMDdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj UGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaApAQCAt MjUsOSArMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEV4ZWN1dG9ySW5mbwogewogCVBs YW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHBsYW4gc3VidHJlZSB3ZSdyZSBydW5uaW5nIGluIHBh cmFsbGVsICovCiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwkJLyogcGFyYWxsZWwgY29udGV4dCB3 ZSdyZSB1c2luZyAqLwotCUJ1ZmZlclVzYWdlICpidWZmZXJfdXNhZ2U7CS8qIHBvaW50cyB0byBi dWZ1c2FnZSBhcmVhIGluIERTTSAqLwotCVdhbFVzYWdlICAgKndhbF91c2FnZTsJCS8qIHdhbHVz YWdlIGFyZWEgaW4gRFNNICovCi0JU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnRhdGlvbjsgLyogb3B0aW9uYWwgKi8KKwlJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRh dGlvbjsJLyogaW5zdHJ1bWVudGF0aW9uIGFyZWEgaW4gRFNNICovCisJU2hhcmVkRXhlY3V0b3JJ bnN0cnVtZW50YXRpb24gKm5vZGVfaW5zdHJ1bWVudGF0aW9uOwkvKiBvcHRpb25hbCAqLwogCXN0 cnVjdCBTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb247CS8qIG9w dGlvbmFsICovCiAJZHNhX2FyZWEgICAqYXJlYTsJCQkvKiBwb2ludHMgdG8gRFNBIGFyZWEgaW4g RFNNICovCiAJZHNhX3BvaW50ZXIgcGFyYW1fZXhlYzsJCS8qIHNlcmlhbGl6ZWQgUEFSQU1fRVhF QyBwYXJhbWV0ZXJzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVt ZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXggNmVlNGNlMmI1 MjEuLjcyZGYyMTMzNGZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVt ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBAIC0yODYsOCAr Mjg2LDggQEAgZXh0ZXJuIHZvaWQgSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShRdWVyeUluc3RydW1l bnRhdGlvbiAqaW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5zdHJRdWVyeVJlbWVtYmVyQ2hpbGQoUXVl cnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCwgSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiAKIHBn X25vZGlzY2FyZCBleHRlcm4gUXVlcnlJbnN0cnVtZW50YXRpb24gKkluc3RyU3RhcnRQYXJhbGxl bFF1ZXJ5KHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5z dHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndh bHVzYWdlKTsKLWV4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdl ICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKK2V4dGVybiB2b2lkIEluc3RyRW5kUGFy YWxsZWxRdWVyeShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBJbnN0cnVtZW50YXRpb24g KmRzdCk7CitleHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShJbnN0cnVtZW50YXRp b24gKmluc3RyKTsKIAogZXh0ZXJuIE5vZGVJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NOb2Rl KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsCiAJCQkJCQkJCQkJICAgaW50IGluc3RydW1l bnRfb3B0aW9ucywKLS0gCjIuNDcuMQoK --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0006-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Disposition: attachment; filename="v16-0006-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr8d5 RnJvbSA3ODM0N2I3MTdkYThiOTVjOWViOTE3ZjYwMjA0NWY0YjI5YmZhMjE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBN b24sIDYgQXByIDIwMjYgMDE6MjA6NDUgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNiAwNi8xMF0g T3B0aW1pemUgbWVhc3VyaW5nIFdBTC9idWZmZXIgdXNhZ2UgdGhyb3VnaAogc3RhY2stYmFzZWQg aW5zdHJ1bWVudGF0aW9uCgpQcmV2aW91c2x5LCBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIGJ1 ZmZlci9XQUwgdXNhZ2Ugb2YgYSBnaXZlbiBjb2RlCnNlY3Rpb24sIHdlIHV0aWxpemVkIGNvbnRp bnVvdXNseSBpbmNyZW1lbnRpbmcgZ2xvYmFsIGNvdW50ZXJzIHRoYXQgZ2V0CnVwZGF0ZWQgd2hl biB0aGUgYWN0dWFsIGFjdGl2aXR5IChlLmcuIHNoYXJlZCBibG9jayByZWFkKSBvY2N1cnJlZCwg YW5kCnRoZW4gY2FsY3VsYXRlZCBhIGRpZmYgd2hlbiB0aGUgY29kZSBzZWN0aW9uIGVuZGVkLiBU aGlzIHJlc3VsdGVkIGluIGEKYm90dGxlbmVjayBmb3IgZXhlY3V0b3Igbm9kZSBpbnN0cnVtZW50 YXRpb24gc3BlY2lmaWNhbGx5LCB3aXRoIHRoZQpmdW5jdGlvbiBCdWZmZXJVc2FnZUFjY3VtRGlm ZiBzaG93aW5nIHVwIGluIHByb2ZpbGVzIGFuZCBpbiBzb21lIGNhc2VzCmFkZGluZyB1cCB0byAx MCUgb3ZlcmhlYWQgdG8gYW4gRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgcnVuLgoKSW5zdGVh ZCwgaW50cm9kdWNlIGEgc3RhY2stYmFzZWQgbWVjaGFuaXNtLCB3aGVyZSB0aGUgYWN0dWFsIGFj dGl2aXR5CndyaXRlcyBpbnRvIHRoZSBjdXJyZW50IHN0YWNrIGVudHJ5LiBJbiB0aGUgY2FzZSBv ZiBleGVjdXRvciBub2RlcywgdGhpcwptZWFucyB0aGF0IGVhY2ggbm9kZSBnZXRzIGl0cyBvd24g c3RhY2sgZW50cnkgdGhhdCBpcyBwdXNoZWQgYXQKSW5zdHJTdGFydE5vZGUsIGFuZCBwb3BwZWQg YXQgSW5zdHJFbmROb2RlLiBTdGFjayBlbnRyaWVzIGFyZSB6ZXJvCmluaXRpYWxpemVkIChhdm9p ZGluZyB0aGUgZGlmZiBtZWNoYW5pc20pIGFuZCBnZXQgYWRkZWQgdG8gdGhlaXIgcGFyZW50CmVu dHJ5IHdoZW4gdGhleSBhcmUgZmluYWxpemVkLCBpLmUuIG5vIG1vcmUgbW9kaWZpY2F0aW9ucyBj YW4gb2NjdXIuCgpUbyBjb3JyZWN0bHkgaGFuZGxlIGFib3J0IHNpdHVhdGlvbnMsIGFueSB1c2Ug b2YgaW5zdHJ1bWVudGF0aW9uIHN0YWNrcwptdXN0IGludm9sdmUgZWl0aGVyIGEgdG9wLWxldmVs IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIHN0cnVjdCwgYW5kIGl0cwphc3NvY2lhdGVkIEluc3RyUXVl cnlTdGFydC9JbnN0clF1ZXJ5U3RvcCBoZWxwZXJzICh3aGljaCB1c2UgcmVzb3VyY2UKb3duZXJz IHRvIGhhbmRsZSBhYm9ydHMpLCBvciB0aGUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdCBpdHNlbGYg d2l0aApkZWRpY2F0ZWQgUEdfVFJZL1BHX0ZJTkFMTFkgY2FsbHMgdGhhdCBlbnN1cmUgdGhlIHN0 YWNrIGlzIGluIGEKY29uc2lzdGVudCBzdGF0ZSBhZnRlciBhbiBhYm9ydC4KCkluIHRlc3RzLCB0 aGUgc3RhY2stYmFzZWQgaW5zdHJ1bWVudGF0aW9uIG1lY2hhbmlzbSByZWR1Y2VzIHRoZSBvdmVy aGVhZApvZiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9OLCBUSU1JTkcgT0ZGKSBmb3IgYSBs YXJnZSBDT1VOVCgqKSBxdWVyeQpmcm9tIGFib3V0IDUwJSB0byAyMiUgb24gdG9wIG9mIHRoZSBh Y3R1YWwgcnVudGltZS4KClRoaXMgYWxzbyBkcm9wcyB0aGUgZ2xvYmFsIHBnQnVmZmVyVXNhZ2Us IGFueSBjYWxsZXJzIGludGVyZXN0ZWQgaW4KbWVhc3VyaW5nIGJ1ZmZlciBhY3Rpdml0eSBzaG91 bGQgaW5zdGVhZCB1dGlsaXplIEluc3RyU3RhcnQvSW5zdHJTdG9wLgoKVGhlIHJlbGF0ZWQgZ2xv YmFsIHBnV2FsVXNhZ2UgaXMga2VwdCBmb3Igbm93IGR1ZSB0byBpdHMgdXNlIGluIHBnc3RhdAp0 byB0cmFjayBhZ2dyZWdhdGUgV0FMIGFjdGl2aXR5IGFuZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZSBmb3IKbWVhc3VyaW5nIEZQSXMuCgpBdXRob3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0 bC5jb20+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpSZXZpZXdlZC1ieTogSGVpa2tpIExpbm5ha2FuZ2FzIDxobGlubmFrYUBpa2kuZmk+CkRp c2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQVA1 M1BreHJtcEVDelZGcGVlRUVIREdlNnU2MjVzJTJCWWttVnY1LWd3M0xfTkRTZmJpQSU0MG1haWwu Z21haWwuY29tI2NiNTgzYTA4ZThlMDk2YWExZjA5M2JiMTc4OTA2MTczCi0tLQogLi4uL3BnX3N0 YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgICA2ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluX2RyLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9yZXBhY2suYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9S RUFETUUuaW5zdHJ1bWVudCAgICAgICAgfCAyMzcgKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDk0ICsrKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAzMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAxMDYgKysrKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvaW5zdHJ1bWVudC5jICAgICAgICAgICAgIHwgNDI5ICsrKysrKysrKysrKysrLS0tLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jICAgICAgICB8ICAgNiArLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMv aW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgICAgICAgICAgfCAxOTkgKysrKysrKy0K IHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICsKIDI3IGZp bGVzIGNoYW5nZWQsIDEwNDUgaW5zZXJ0aW9ucygrKSwgMTk0IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5pbnN0cnVtZW50CgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMg Yi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCA1 ZGE3MWM5YmUxNi4uYTljZDExNTBlYmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC05MjQsMTIgKzkyNCwxMSBAQCBwZ3NzX3BsYW5u ZXIoUXVlcnkgKnBhcnNlLAogCQl9CiAJCVBHX0ZJTkFMTFkoKTsKIAkJeworCQkJSW5zdHJTdG9w RmluYWxpemUoJmluc3RyKTsKIAkJCW5lc3RpbmdfbGV2ZWwtLTsKIAkJfQogCQlQR19FTkRfVFJZ KCk7CiAKLQkJSW5zdHJTdG9wKCZpbnN0cik7Ci0KIAkJcGdzc19zdG9yZShxdWVyeV9zdHJpbmcs CiAJCQkJICAgcGFyc2UtPnF1ZXJ5SWQsCiAJCQkJICAgcGFyc2UtPnN0bXRfbG9jYXRpb24sCkBA IC0xMTQwLDYgKzExMzksNyBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3Rt dCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCX0KIAkJUEdfRklOQUxMWSgpOwogCQl7CisJ CQlJbnN0clN0b3BGaW5hbGl6ZSgmaW5zdHIpOwogCQkJbmVzdGluZ19sZXZlbC0tOwogCQl9CiAJ CVBHX0VORF9UUlkoKTsKQEAgLTExNTQsOCArMTE1NCw2IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHko UGxhbm5lZFN0bXQgKnBzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJICogZm9ybWVy IHZhbHVlLCB3aGljaCdkIG90aGVyd2lzZSBiZSBhIGdvb2QgaWRlYS4KIAkJICovCiAKLQkJSW5z dHJTdG9wKCZpbnN0cik7Ci0KIAkJLyoKIAkJICogVHJhY2sgdGhlIHRvdGFsIG51bWJlciBvZiBy b3dzIHJldHJpZXZlZCBvciBhZmZlY3RlZCBieSB0aGUgdXRpbGl0eQogCQkgKiBzdGF0ZW1lbnRz IG9mIENPUFksIEZFVENILCBDUkVBVEUgVEFCTEUgQVMsIENSRUFURSBNQVRFUklBTElaRUQKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYwppbmRleCBiZGIzMDc1MmUwOS4uM2E1MTc2Yzc2YzcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKQEAgLTI0MzQsOCArMjQzNCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KIAkgKgogCSAqIElmIHRoZXJl IGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4g IFdlCi0JICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcg YXQgcGdXYWxVc2FnZSBvcgotCSAqIHBnQnVmZmVyVXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0aW9u YWxseS4KKwkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2lu ZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCisJICogZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAq LwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAgIG11 bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0yODg3LDYgKzI4 ODcsNyBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90 b2MgKnRvYykKIAlSZWxhdGlvbglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJ TE9DS01PREUJaW5kZXhMb2NrbW9kZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJ V2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWludAkJ CXNvcnRtZW07CkBAIC0yOTM2LDcgKzI5MzcsNyBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJl ZChzaGFyZWRzb3J0LCBzZWcpOwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2Ug ZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7 CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyoKIAkgKiBNaWdodCBh cyB3ZWxsIHVzZSByZWxpYWJsZSBmaWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5hbmNlX3dv cmtfbWVtCkBAIC0yOTUxLDcgKzI5NTIsOCBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2Fn ZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xv b2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9 IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUlu c3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAor CUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcnVzYWdlW1BhcmFs bGVsV29ya2VyTnVtYmVyXSwKIAkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVy XSk7CiAKIAlpbmRleF9jbG9zZShpbmRleFJlbCwgaW5kZXhMb2NrbW9kZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYwppbmRleCA5ZDgzYTQ5NTc3NS4uMGQ4MGY3MmEwYjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtOTkxLDggKzk5MSw4IEBAIF9naW5fYmVnaW5fcGFy YWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogYW5kIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0 aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRo aXMuICBXZQotCSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29r aW5nIGF0IHBnV2FsVXNhZ2Ugb3IKLQkgKiBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRp dGlvbmFsbHkuCisJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxv b2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4K IAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkg ICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMjExOCw2 ICsyMTE4LDcgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAlSZWxhdGlvbglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7 CiAJTE9DS01PREUJaW5kZXhMb2NrbW9kZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7 CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWlu dAkJCXNvcnRtZW07CkBAIC0yMTg2LDcgKzIxODcsNyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCXR1cGxlc29ydF9hdHRhY2hfc2hh cmVkKHNoYXJlZHNvcnQsIHNlZyk7CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2Fn ZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnko KTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKgogCSAqIE1pZ2h0 IGFzIHdlbGwgdXNlIHJlbGlhYmxlIGZpZ3VyZSB3aGVuIGRvbGluZyBvdXQgbWFpbnRlbmFuY2Vf d29ya19tZW0KQEAgLTIyMDEsNyArMjIwMiw4IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNh Z2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19s b29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2Ug PSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJ bnN0ckVuZFBhcmFsbGVsUXVlcnkoJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwK KwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJh bGxlbFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJl cl0pOwogCiAJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDYxNzNlNTNjNGFkLi5kZDI4NTg2MzA2MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNjM4LDcgKzYzOCw3IEBAIGhlYXBf dmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCVRp bWVzdGFtcFR6IHN0YXJ0dGltZSA9IDA7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9 IDAsCiAJCQkJc3RhcnR3cml0ZXRpbWUgPSAwOwotCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBO VUxMOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5VTEw7CiAJRXJyb3JDb250ZXh0 Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CiAJY2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCVNpemUJ CWRlYWRfaXRlbXNfbWF4X2J5dGVzID0gMDsKQEAgLTY1NCw4ICs2NTQsOCBAQCBoZWFwX3ZhY3V1 bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCXN0YXJ0 cmVhZHRpbWUgPSBwZ1N0YXRCbG9ja1JlYWRUaW1lOwogCQkJc3RhcnR3cml0ZXRpbWUgPSBwZ1N0 YXRCbG9ja1dyaXRlVGltZTsKIAkJfQotCQlpbnN0ciA9IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9C VUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOwotCQlJbnN0clN0YXJ0KGluc3RyKTsKKwkJaW5zdHIg PSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOwor CQlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCX0KIAogCS8qIFVzZWQgZm9yIGluc3RydW1lbnRh dGlvbiBhbmQgc3RhdHMgcmVwb3J0ICovCkBAIC05OTcsNyArOTk3LDcgQEAgaGVhcF92YWN1dW1f cmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJewogCQlUaW1l c3RhbXBUeiBlbmR0aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCi0JCUluc3RyU3RvcChp bnN0cik7CisJCUluc3RyUXVlcnlTdG9wRmluYWxpemUoaW5zdHIpOwogCiAJCWlmICh2ZXJib3Nl IHx8IHBhcmFtcy0+bG9nX3ZhY3V1bV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGltZXN0YW1w RGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLApAQCAtMTAxMyw4ICsxMDEzLDgg QEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJCQlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19yZWFk OwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsKLQkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVz YWdlID0gaW5zdHItPmJ1ZnVzYWdlOwotCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+d2Fs dXNhZ2U7CisJCQlCdWZmZXJVc2FnZSBidWZmZXJ1c2FnZSA9IGluc3RyLT5pbnN0ci5idWZ1c2Fn ZTsKKwkJCVdhbFVzYWdlCXdhbHVzYWdlID0gaW5zdHItPmluc3RyLndhbHVzYWdlOwogCiAJCQlU aW1lc3RhbXBEaWZmZXJlbmNlKHN0YXJ0dGltZSwgZW5kdGltZSwgJnNlY3NfZHVyLCAmdXNlY3Nf ZHVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA3NTZkZmEzZGNmNC4u MmQ3YjdjZWY5MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xNDY2LDgg KzE0NjYsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogYW5kIFBBUkFMTEVMX0tFWV9CVUZG RVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQgdGhh dCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQotCSAqIGhhdmUgbm8gd2F5IG9mIGtub3dp bmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBnV2FsVXNhZ2Ugb3IKLQkgKiBwZ0J1ZmZl clVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogaGF2ZSBubyB3YXkgb2Yga25v d2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbworCSAq IGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZw Y3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0 LT5ud29ya2VycykpOwpAQCAtMTc1Myw2ICsxNzUzLDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVJlbGF0aW9uCWluZGV4UmVsOwog CUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlMT0NLTU9ERQlpbmRleExvY2ttb2RlOworCVF1ZXJ5 SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJV c2FnZSAqYnVmZmVydXNhZ2U7CiAJaW50CQkJc29ydG1lbTsKQEAgLTE4MjgsNyArMTgyOSw3IEBA IF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAl9CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3Ry U3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKiBQZXJmb3JtIHNvcnRpbmcgb2Ygc3Bvb2wsIGFu ZCBwb3NzaWJseSBhIHNwb29sMiAqLwogCXNvcnRtZW0gPSBtYWludGVuYW5jZV93b3JrX21lbSAv IGJ0c2hhcmVkLT5zY2FudHVwbGVzb3J0c3RhdGVzOwpAQCAtMTgzOCw3ICsxODM5LDggQEAgX2J0 X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8q IFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KIAli dWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FH RSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf V0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJ1c2FnZVtQ YXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJ CQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsdXNh Z2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogI2lmZGVmIEJUUkVFX0JVSUxEX1NUQVRTCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hbmFseXplLmMKaW5kZXggODQ3MmZjMGMyODAuLjEwZjhhMmRjODFjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvYW5hbHl6ZS5jCkBAIC0zMDksNyArMzA5LDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRp b24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAlPaWQJCQlzYXZlX3VzZXJp ZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOwotCUlu c3RydW1lbnRhdGlvbiAqaW5zdHIgPSBOVUxMOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0 ciA9IE5VTEw7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9IDA7CiAJUGdTdGF0X0Nv dW50ZXIgc3RhcnR3cml0ZXRpbWUgPSAwOwogCkBAIC0zNjEsOCArMzYxLDggQEAgZG9fYW5hbHl6 ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAogCQlw Z19ydXNhZ2VfaW5pdCgmcnUwKTsKIAotCQlpbnN0ciA9IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9C VUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOwotCQlJbnN0clN0YXJ0KGluc3RyKTsKKwkJaW5zdHIg PSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOwor CQlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCX0KIAogCS8qIFVzZWQgZm9yIGluc3RydW1lbnRh dGlvbiBhbmQgc3RhdHMgcmVwb3J0ICovCkBAIC03NDMsNyArNzQzLDcgQEAgZG9fYW5hbHl6ZV9y ZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl7CiAJCVRp bWVzdGFtcFR6IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKLQkJSW5zdHJTdG9w KGluc3RyKTsKKwkJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShpbnN0cik7CiAKIAkJaWYgKHZlcmJv c2UgfHwgcGFyYW1zLT5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGltZXN0 YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLApAQCAtNzU3LDggKzc1Nyw4 IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpw YXJhbXMsCiAJCQlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19y ZWFkOwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsKLQkJCUJ1ZmZlclVzYWdlIGJ1ZnVz YWdlID0gaW5zdHItPmJ1ZnVzYWdlOwotCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+d2Fs dXNhZ2U7CisJCQlCdWZmZXJVc2FnZSBidWZ1c2FnZSA9IGluc3RyLT5pbnN0ci5idWZ1c2FnZTsK KwkJCVdhbFVzYWdlCXdhbHVzYWdlID0gaW5zdHItPmluc3RyLndhbHVzYWdlOwogCiAJCQl0b3Rh bF9ibGtzX2hpdCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX2hpdCArCiAJCQkJYnVmdXNhZ2UubG9j YWxfYmxrc19oaXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZGVhYWJhNmY5MDAuLmUyYjFk MzQzY2NhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhbmRh cmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJ CQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUGxhbm5lZFN0bXQgKnBsYW47Ci0J SW5zdHJ1bWVudGF0aW9uIHBsYW5faW5zdHIgPSB7MH07CisJUXVlcnlJbnN0cnVtZW50YXRpb24g KnBsYW5faW5zdHIgPSBOVUxMOwogCWludAkJCWluc3RydW1lbnRfb3B0aW9ucyA9IElOU1RSVU1F TlRfVElNRVI7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlD b250ZXh0IHBsYW5uZXJfY3R4ID0gTlVMTDsKQEAgLTMzMyw3ICszMzMsNyBAQCBzdGFuZGFyZF9F eHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAlpZiAoZXMt PmJ1ZmZlcnMpCiAJCWluc3RydW1lbnRfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CiAK LQlJbnN0ckluaXRPcHRpb25zKCZwbGFuX2luc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOworCXBs YW5faW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoaW5zdHJ1bWVudF9vcHRpb25zKTsKIAogCWlmIChl cy0+bWVtb3J5KQogCXsKQEAgLTM1MSwxMiArMzUxLDEyIEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVR dWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQlzYXZlZF9jdHggPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocGxhbm5lcl9jdHgpOwogCX0KIAotCUluc3RyU3RhcnQoJnBsYW5f aW5zdHIpOworCUluc3RyUXVlcnlTdGFydChwbGFuX2luc3RyKTsKIAogCS8qIHBsYW4gdGhlIHF1 ZXJ5ICovCiAJcGxhbiA9IHBnX3BsYW5fcXVlcnkocXVlcnksIHF1ZXJ5U3RyaW5nLCBjdXJzb3JP cHRpb25zLCBwYXJhbXMsIGVzKTsKIAotCUluc3RyU3RvcCgmcGxhbl9pbnN0cik7CisJSW5zdHJR dWVyeVN0b3BGaW5hbGl6ZShwbGFuX2luc3RyKTsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAg LTM2Niw3ICszNjYsNyBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBp bnQgY3Vyc29yT3B0aW9ucywKIAogCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBv dXRwdXQgKi8KIAlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBh cmFtcywgcXVlcnlFbnYsCi0JCQkJICAgJnBsYW5faW5zdHIudG90YWwsIChlcy0+YnVmZmVycyA/ ICZwbGFuX2luc3RyLmJ1ZnVzYWdlIDogTlVMTCksCisJCQkJICAgJnBsYW5faW5zdHItPmluc3Ry LnRvdGFsLCAoZXMtPmJ1ZmZlcnMgPyAmcGxhbl9pbnN0ci0+aW5zdHIuYnVmdXNhZ2UgOiBOVUxM KSwKIAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluX2RyLmMKaW5kZXggZGY1YWU1ZjQ1NjkuLjgzNjM5NWQ2OTkyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbl9kci5jCkBAIC0yMzYsNiArMjM2LDggQEAgc2VyaWFsaXplQW5h bHl6ZVNodXRkb3duKERlc3RSZWNlaXZlciAqc2VsZikKIHsKIAlTZXJpYWxpemVEZXN0UmVjZWl2 ZXIgKnJlY2VpdmVyID0gKFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBzZWxmOwogCisJSW5zdHJG aW5hbGl6ZUNoaWxkKCZyZWNlaXZlci0+bWV0cmljcy5pbnN0ciwgaW5zdHJfc3RhY2suY3VycmVu dCk7CisKIAlpZiAocmVjZWl2ZXItPmZpbmZvcykKIAkJcGZyZWUocmVjZWl2ZXItPmZpbmZvcyk7 CiAJcmVjZWl2ZXItPmZpbmZvcyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggYmY5 ZjJlYjYxNDkuLmVlODExMzU3NTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC01ODEsNyAr NTgxLDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJTGlzdENlbGwgICAqcDsKIAlQYXJhbUxp c3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKLQlJbnN0 cnVtZW50YXRpb24gcGxhbl9pbnN0ciA9IHswfTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqcGxh bl9pbnN0ciA9IE5VTEw7CiAJaW50CQkJaW5zdHJ1bWVudF9vcHRpb25zID0gSU5TVFJVTUVOVF9U SU1FUjsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRl eHQgcGxhbm5lcl9jdHggPSBOVUxMOwpAQCAtNTkwLDcgKzU5MCw3IEBAIEV4cGxhaW5FeGVjdXRl UXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCWlmIChlcy0+YnVmZmVycykKIAkJaW5zdHJ1bWVudF9vcHRpb25zIHw9IElOU1RS VU1FTlRfQlVGRkVSUzsKIAotCUluc3RySW5pdE9wdGlvbnMoJnBsYW5faW5zdHIsIGluc3RydW1l bnRfb3B0aW9ucyk7CisJcGxhbl9pbnN0ciA9IEluc3RyUXVlcnlBbGxvYyhpbnN0cnVtZW50X29w dGlvbnMpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtNjAyLDcgKzYwMiw3IEBAIEV4cGxh aW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCQlzYXZlZF9jdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxh bm5lcl9jdHgpOwogCX0KIAotCUluc3RyU3RhcnQoJnBsYW5faW5zdHIpOworCUluc3RyUXVlcnlT dGFydChwbGFuX2luc3RyKTsKIAogCS8qIExvb2sgaXQgdXAgaW4gdGhlIGhhc2ggdGFibGUgKi8K IAllbnRyeSA9IEZldGNoUHJlcGFyZWRTdGF0ZW1lbnQoZXhlY3N0bXQtPm5hbWUsIHRydWUpOwpA QCAtNjM3LDcgKzYzNyw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCWNwbGFuID0gR2V0Q2Fj aGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291 cmNlT3duZXIsIHBzdGF0ZS0+cF9xdWVyeUVudik7CiAKLQlJbnN0clN0b3AoJnBsYW5faW5zdHIp OworCUluc3RyUXVlcnlTdG9wRmluYWxpemUocGxhbl9pbnN0cik7CiAKIAlpZiAoZXMtPm1lbW9y eSkKIAl7CkBAIC02NTQsNyArNjU0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3Rt dCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAKIAkJaWYg KHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKIAkJCUV4cGxhaW5PbmVQbGFuKHBz dG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBwc3RhdGUtPnBfcXVlcnlFbnYs Ci0JCQkJCQkgICAmcGxhbl9pbnN0ci50b3RhbCwgKGVzLT5idWZmZXJzID8gJnBsYW5faW5zdHIu YnVmdXNhZ2UgOiBOVUxMKSwKKwkJCQkJCSAgICZwbGFuX2luc3RyLT5pbnN0ci50b3RhbCwgKGVz LT5idWZmZXJzID8gJnBsYW5faW5zdHItPmluc3RyLmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkg ICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCiAJCQlFeHBsYWlu T25lVXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0bXQsIGludG8sIGVzLCBwc3RhdGUsIHBhcmFtTEkp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9yZXBhY2suYwppbmRleCAyMGRhZDIyYzRiNy4uYjJmZjVkMmZmNDQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3JlcGFjay5jCkBAIC0yODkwLDcgKzI4OTAsNyBAQCBpbml0aWFsaXplX2NoYW5nZV9j b250ZXh0KENoYW5nZUNvbnRleHQgKmNoZ2N4dCwKIAljaGdjeHQtPmNjX2VzdGF0ZSA9IENyZWF0 ZUV4ZWN1dG9yU3RhdGUoKTsKIAogCWNoZ2N4dC0+Y2NfcnJpID0gKFJlc3VsdFJlbEluZm8gKikg cGFsbG9jKHNpemVvZihSZXN1bHRSZWxJbmZvKSk7Ci0JSW5pdFJlc3VsdFJlbEluZm8oY2hnY3h0 LT5jY19ycmksIHJlbGF0aW9uLCAwLCAwLCAwKTsKKwlJbml0UmVzdWx0UmVsSW5mbyhjaGdjeHQt PmNjX3JyaSwgcmVsYXRpb24sIDAsIDAsIDAsIE5VTEwpOwogCUV4ZWNPcGVuSW5kaWNlcyhjaGdj eHQtPmNjX3JyaSwgZmFsc2UpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXgg ZWVjMDliYTFkZWQuLmY4NmU0YWM2N2NkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAt MjEzOSw3ICsyMTM5LDcgQEAgRXhlY3V0ZVRydW5jYXRlR3V0cyhMaXN0ICpleHBsaWNpdF9yZWxz LAogCQkJCQkJICByZWwsCiAJCQkJCQkgIDAsCS8qIGR1bW15IHJhbmdldGFibGUgaW5kZXggKi8K IAkJCQkJCSAgTlVMTCwKLQkJCQkJCSAgMCk7CisJCQkJCQkgIDAsIE5VTEwpOwogCQllc3RhdGUt PmVzX29wZW5lZF9yZXN1bHRfcmVsYXRpb25zID0KIAkJCWxhcHBlbmQoZXN0YXRlLT5lc19vcGVu ZWRfcmVzdWx0X3JlbGF0aW9ucywgcmVzdWx0UmVsSW5mbyk7CiAJCXJlc3VsdFJlbEluZm8rKzsK QEAgLTYzMzgsNyArNjMzOCw4IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgT2lkIE9JRE5ld0hlYXApCiAJCQkJCQkJICBvbGRyZWwsCiAJCQkJCQkJICAwLAkvKiBkdW1t eSByYW5nZXRhYmxlIGluZGV4ICovCiAJCQkJCQkJICBOVUxMLAotCQkJCQkJCSAgZXN0YXRlLT5l c19pbnN0cnVtZW50KTsKKwkJCQkJCQkgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKKwkJCQkJCQkg IGVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIpOwogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNv bnRleHQpOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDk3 OWMyYmU0YWJkLi44MmJmYmM2ZDQ5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jCkBAIC0zNjksOCArMzY5LDggQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCSAqIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfQlVGRkVSX1VTQUdFIGFuZCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRS4KIAkgKgog CSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxk IHNraXAgdGhpcy4gIFdlCi0JICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9u ZSdzIGxvb2tpbmcgYXQgcGdCdWZmZXJVc2FnZSBvcgotCSAqIHBnV2FsVXNhZ2UsIHNvIGRvIGl0 IHVuY29uZGl0aW9uYWxseS4KKwkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55 b25lJ3MgbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCisJICogZG8gaXQgdW5jb25kaXRp b25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwK IAkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7 CkBAIC0xMjAyLDYgKzEyMDIsNyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAq c2VnLCBzaG1fdG9jICp0b2MpCiAJUFZJbmRTdGF0cyAqaW5kc3RhdHM7CiAJUFZTaGFyZWQgICAq c2hhcmVkOwogCVRpZFN0b3JlICAgKmRlYWRfaXRlbXM7CisJUXVlcnlJbnN0cnVtZW50YXRpb24g Kmluc3RyOwogCUJ1ZmZlclVzYWdlICpidWZmZXJfdXNhZ2U7CiAJV2FsVXNhZ2UgICAqd2FsX3Vz YWdlOwogCWludAkJCW5pbmRleGVzOwpAQCAtMTMwNSw3ICsxMzA2LDcgQEAgcGFyYWxsZWxfdmFj dXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWVycm9yX2NvbnRleHRf c3RhY2sgPSAmZXJyY2FsbGJhY2s7CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2Fn ZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnko KTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKiBQcm9jZXNzIGlu ZGV4ZXMgdG8gcGVyZm9ybSB2YWN1dW0vY2xlYW51cCAqLwogCXBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX3NhZmVfaW5kZXhlcygmcHZzKTsKQEAgLTEzMTMsNyArMTMxNCw4IEBAIHBhcmFsbGVsX3Zh Y3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgYnVm ZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVyX3VzYWdl ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX0JVRkZFUl9VU0FHRSwg ZmFsc2UpOwogCXdhbF91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfVkFDVVVN X0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoJmJ1ZmZlcl91 c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3Ry LAorCQkJCQkJICAmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKIAkJCQkJCSAg JndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJLyogUmVwb3J0IGFueSByZW1h aW5pbmcgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgdGltZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvUkVBRE1FLmluc3RydW1lbnQgYi9zcmMvYmFja2VuZC9leGVjdXRvci9S RUFETUUuaW5zdHJ1bWVudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u N2RmODM3ZGJjNzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFE TUUuaW5zdHJ1bWVudApAQCAtMCwwICsxLDIzNyBAQAorc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FLmluc3RydW1lbnQKKworSW5zdHJ1bWVudGF0aW9uCis9PT09PT09PT09PT09PT0KKworVGhl IGluc3RydW1lbnRhdGlvbiBzdWJzeXN0ZW0gbWVhc3VyZXMgdGltZSwgYnVmZmVyIHVzYWdlIGFu ZCBXQUwgYWN0aXZpdHkKK2R1cmluZyBxdWVyeSBleGVjdXRpb24gYW5kIG90aGVyIHNpbWlsYXIg YWN0aXZpdGllcy4gIEl0IGlzIHVzZWQgYnkKK0VYUExBSU4gQU5BTFlaRSwgcGdfc3RhdF9zdGF0 ZW1lbnRzLCBhbmQgb3RoZXIgY29uc3VtZXJzIHRoYXQgbmVlZAorYWN0aXZpdHkgYW5kL29yIHRp bWluZyBtZXRyaWNzIG92ZXIgYSBzZWN0aW9uIG9mIGNvZGUuCisKK1RoZSBkZXNpZ24gaGFzIHR3 byBjZW50cmFsIGdvYWxzOgorCisqIE1ha2UgaXQgY2hlYXAgdG8gbWVhc3VyZSBhY3Rpdml0eSBp biBhIHNlY3Rpb24gb2YgY29kZSwgZXZlbiB3aGVuCisgIHRoYXQgc2VjdGlvbiBpcyBjYWxsZWQg bWFueSB0aW1lcyBhbmQgdGhlIGFnZ3JlZ2F0ZSBpcyB3aGF0IGlzIHVzZWQKKyAgKGFzIGlzIHRo ZSBjYXNlIHdpdGggcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBleGVjdXRvcikKKwor KiBFbnN1cmUgbmVzdGVkIGluc3RydW1lbnRhdGlvbiBhY2N1cmF0ZWx5IG1lYXN1cmVzIGFjdGl2 aXR5L3RpbWluZywKKyAgZXZlbiB3aGVuIGV4ZWN1dGlvbiBpcyBhYm9ydGVkIGR1ZSB0byBlcnJv cnMgYmVpbmcgdGhyb3duLgorCitUaGUga2V5IGRhdGEgc3RydWN0dXJlcyBhcmUgZGVmaW5lZCBp biBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKK2FuZCB0aGUgaW1wbGVtZW50YXRp b24gbGl2ZXMgaW4gc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jLgorCisKK0luc3Ry dW1lbnRhdGlvbiBPcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDYWxsZXJzIHNw ZWNpZnkgd2hhdCB0byBtZWFzdXJlIHdpdGggYSBiaXRtYXNrIG9mIEluc3RydW1lbnRPcHRpb24g ZmxhZ3M6CisKKyAgSU5TVFJVTUVOVF9ST1dTICAgICAtLSByb3cgY291bnRzIG9ubHkgKHVzZWQg d2l0aCBOb2RlSW5zdHJ1bWVudGF0aW9uKQorICBJTlNUUlVNRU5UX1RJTUVSICAgIC0tIHdhbGwt Y2xvY2sgdGltaW5nIGFuZCByb3cgY291bnRzCisgIElOU1RSVU1FTlRfQlVGRkVSUyAgLS0gYnVm ZmVyIGhpdC9yZWFkL2RpcnRpZWQvd3JpdHRlbiBjb3VudHMgYW5kIEkvTyB0aW1lCisgIElOU1RS VU1FTlRfV0FMICAgICAgLS0gV0FMIHJlY29yZHMsIEZQSSwgYnl0ZXMKKworSU5TVFJVTUVOVF9C VUZGRVJTIGFuZCBJTlNUUlVNRU5UX1dBTCB1dGlsaXplIHRoZSBpbnN0cnVtZW50YXRpb24gc3Rh Y2sKKyhkZXNjcmliZWQgYmVsb3cpIGZvciBlZmZpY2llbnQgaGFuZGxpbmcgb2YgY291bnRlciB2 YWx1ZXMuCisKKworU3RydWN0IEhpZXJhcmNoeQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBh cmUgdGhlIGZvbGxvd2luZyBpbnN0cnVtZW50YXRpb24gc3RydWN0cywgZWFjaCBzcGVjaWFsaXpl ZCBmb3IgYQorZGlmZmVyZW50IHNjb3BlOgorCitJbnN0cnVtZW50YXRpb24gICAgICAgIEJhc2Ug c3RydWN0LiAgSG9sZHMgdGltaW5nIGFuZCBidWZmZXIvV0FMIGNvdW50ZXJzLgorCitRdWVyeUlu c3RydW1lbnRhdGlvbiAgIEV4dGVuZHMgSW5zdHJ1bWVudGF0aW9uIGZvciBxdWVyeS1sZXZlbCB0 cmFja2luZy4gIFdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgc3RhY2stYmFzZWQgdHJhY2tp bmcgaXMgZW5hYmxlZCwgaXQgb3ducyBhIGRlZGljYXRlZAorICAgICAgICAgICAgICAgICAgICAg ICBNZW1vcnlDb250ZXh0IGFuZCB1c2VzIHRoZSBSZXNvdXJjZU93bmVyIG1lY2hhbmlzbSBmb3IK KyAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQgY2xlYW51cC4KKworTm9kZUluc3RydW1lbnRh dGlvbiAgICBFeHRlbmRzIEluc3RydW1lbnRhdGlvbiBmb3IgcGVyLXBsYW4tbm9kZSBzdGF0aXN0 aWNzCisgICAgICAgICAgICAgICAgICAgICAgIChzdGFydHVwIHRpbWUsIHR1cGxlIGNvdW50cywg bG9vcCBjb3VudHMsIGV0YykuCisKK1RyaWdnZXJJbnN0cnVtZW50YXRpb24gRXh0ZW5kcyBJbnN0 cnVtZW50YXRpb24gd2l0aCBhIGZpcmluZyBjb3VudC4KKworCitTdGFjay1iYXNlZCBpbnN0cnVt ZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgdHJhY2tpbmcgV0FM IG9yIGJ1ZmZlciB1c2FnZSBjb3VudGVycywgdGhlIHNwZWNpYWxpemVkIHN0YWNrLWJhc2VkCitp bnN0cnVtZW50YXRpb24gaXMgdXNlZC4KKworQSBzaW1wbGUgYXBwcm9hY2ggdG8gbWVhc3VyaW5n IGJ1ZmZlci9XQUwgYWN0aXZpdHkgaW4gYSBjb2RlIHNlY3Rpb24gY291bGQgYmUKK3RvIGhhdmUg YSBzZXQgb2YgZ2xvYmFsIGNvdW50ZXJzLCBzbmFwc2hvdCBhbGwgdGhlIGNvdW50ZXJzIGF0IHRo ZSBzdGFydCwgYW5kCitkaWZmIHRoZW0gYXQgdGhlIGVuZC4gQnV0LCB0aGlzIGlzIGV4cGVuc2l2 ZSBpbiBwcmFjdGljZTogQnVmZmVyVXNhZ2UgYWxvbmUKK2hhcyBtYW55IGZpZWxkcywgYW5kIHRo ZSBkaWZmIG11c3QgYmUgY29tcHV0ZWQgZm9yIGV2ZXJ5IEluc3RyU3RhcnROb2RlIC8KK0luc3Ry U3RvcE5vZGUgY3ljbGUuCisKK0FuIGFsdGVybmF0aXZlIGlzIHRvIHdyaXRlIGNvdW50ZXIgdXBk YXRlcyBkaXJlY3RseSBpbnRvIHRoZSBzdHJ1Y3QgdGhhdAorc2hvdWxkIHJlY2VpdmUgdGhlbSwg YXZvaWRpbmcgdGhlIGRpZmYuICBCdXQgdGhhdCBoYXMgdHdvIGNvbXBsZXhpdGllczogTG93LWxl dmVsCitjb2RlIHN1Y2ggYXMgdGhlIGJ1ZmZlciBtYW5hZ2VyLCBoYXMgbm8gZGlyZWN0IHBvaW50 ZXJzIHRvIGhpZ2hlciBsZXZlbAorc3RydWN0cywgc3VjaCBhcyBwbGFuIG5vZGVzIHRyYWNraW5n IGJ1ZmZlciB1c2FnZS4gQW5kIGluc3RydW1lbnRhdGlvbiBpcyBvZnRlbgorbmVzdGVkOiBXZSBt aWdodCBib3RoIGJlIGludGVyZXN0ZWQgaW4gdGhlIGFnZ3JlZ2F0ZSBidWZmZXIgdXNhZ2Ugb2Yg YSBxdWVyeSwgYW5kCit0aGUgaW5kaXZpZHVhbCBwZXItbm9kZSBkZXRhaWxzLiBTdGFjay1iYXNl ZCBpbnN0cnVtZW50YXRpb24gc29sdmVzIGZvciB0aGF0OgorCitBdCBhbGwgdGltZXMsIHRoZXJl IGlzIGEgc3RhY2sgdGhhdCB0cmFja3Mgd2hpY2ggSW5zdHJ1bWVudGF0aW9uIGlzIGN1cnJlbnRs eQorYWN0aXZlLiAgVGhlIHN0YWNrIGlzIHJlcHJlc2VudGVkIGJ5IGluc3RyX3N0YWNrLCBhIHBl ci1iYWNrZW5kIGdsb2JhbAordGhhdCBob2xkcyBhIGR5bmFtaWMgYXJyYXkgb2YgSW5zdHJ1bWVu dGF0aW9uIHBvaW50ZXJzLiAgVGhlIGZpZWxkCitpbnN0cl9zdGFjay5jdXJyZW50IGFsd2F5cyBw b2ludHMgdG8gdGhlIGN1cnJlbnQgc3RhY2sgZW50cnkgdGhhdCBzaG91bGQKK2JlIHVwZGF0ZWQg d2hlbiBhY3Rpdml0eSBvY2N1cnMuICBXaGVuIHRoZSBzdGFjayBhcnJheSBpcyBlbXB0eSwgdGhl CitjdXJyZW50IHN0YWNrIHBvaW50cyB0byBpbnN0cl90b3AuCisKK0ZvciBleGFtcGxlLCBpZiBh IGJhY2tlbmQgaGFzIHR3byBwb3J0YWxzIG9wZW4sIHRoZSBvdmVyYWxsIG5lc3Rpbmcgb2YKK0lu c3RydW1lbnRhdGlvbiBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBJbnN0clN0YXJ0L0luc3RyU3RvcCBj YWxscyBjcmVhdGVzIGEKK3RyZWUtbGlrZSBzdHJ1Y3R1cmUgbGlrZSB0aGlzOgorCisgICAgU2Vz c2lvbiAoaW5zdHJfdG9wKQorICAgICB8CisgICAgICstLSBRdWVyeSBBIChRdWVyeUluc3RydW1l bnRhdGlvbikKKyAgICAgfCAgICB8CisgICAgIHwgICAgKy0tIE5lc3RMb29wIChOb2RlSW5zdHJ1 bWVudGF0aW9uKQorICAgICB8ICAgICAgICAgfAorICAgICB8ICAgICAgICAgKy0tIFNlcSBTY2Fu IEEgKE5vZGVJbnN0cnVtZW50YXRpb24pCisgICAgIHwgICAgICAgICArLS0gU2VxIFNjYW4gQiAo Tm9kZUluc3RydW1lbnRhdGlvbikKKyAgICAgfAorICAgICArLS0gUXVlcnkgQiAoUXVlcnlJbnN0 cnVtZW50YXRpb24pCisgICAgICAgICAgfAorICAgICAgICAgICstLSBTZXEgU2NhbiBDIChOb2Rl SW5zdHJ1bWVudGF0aW9uKQorCitXaGlsZSBleGVjdXRpbmcgU2VxIFNjYW4gQiwgdGhlIHN0YWNr IGxvb2tzIGxpa2U6CisKKyAgICBpbnN0cl90b3AgICAgICAgICAgICAgIChpbXBsaWNpdCBib3R0 b20sIG5vdCBpbiB0aGUgZW50cmllcyBhcnJheSkKKyAgICAwOiBRdWVyeSBBCisgICAgMTogTmVz dExvb3AKKyAgICAyOiBTZXEgU2NhbiBCICAgICAgICAgIDwtLSBpbnN0cl9zdGFjay5jdXJyZW50 CisKK1doZW4gbm8gcXVlcnkgaXMgcnVubmluZywgdGhlIHN0YWNrIGlzIGVtcHR5IChzdGFja19z aXplID09IDApIGFuZAoraW5zdHJfc3RhY2suY3VycmVudCBwb2ludHMgdG8gaW5zdHJfdG9wLgor CitBbnkgYnVmZmVyIG9yIFdBTCBjb3VudGVyIHVwZGF0ZSAodmlhIHRoZSBJTlNUUl9CVUZVU0FH RV8qIGFuZAorSU5TVFJfV0FMVVNBR0VfKiBtYWNyb3MgaW4gdGhlIGJ1ZmZlciBtYW5hZ2VyLCBX QUwgaW5zZXJ0aW9uIGNvZGUsIGV0Yy4pCit3cml0ZXMgZGlyZWN0bHkgaW50byBpbnN0cl9zdGFj ay5jdXJyZW50LiAgRWFjaCBpbnN0cnVtZW50YXRpb24gbm9kZSBzdGFydHMKK3plcm9lZCwgc28g dGhlIHZhbHVlcyBpdCBhY2N1bXVsYXRlcyB3aGlsZSBvbiB0b3Agb2YgdGhlIHN0YWNrIHJlcHJl c2VudAorZXhhY3RseSB0aGUgYWN0aXZpdHkgdGhhdCBvY2N1cnJlZCBkdXJpbmcgdGhhdCB0aW1l LgorCitFdmVyeSBJbnN0cnVtZW50YXRpb24gbm9kZSAoZXhjZXB0IGZvciBpbnN0cl90b3ApIGhh cyBhIHRhcmdldCwgb3IgcGFyZW50LCBpdAord2lsbCBiZSBhY2N1bXVsYXRlZCBpbnRvLCB3aGlj aCBpcyB0eXBpY2FsbHkgdGhlIEluc3RydW1lbnRhdGlvbiB0aGF0IHdhcyB0aGUKK2N1cnJlbnQg c3RhY2sgZW50cnkgd2hlbiBpdCB3YXMgY3JlYXRlZC4KKworRm9yIGV4YW1wbGUsIHdoZW4gU2Vx IFNjYW4gQSBnZXRzIGZpbmFsaXplZCBpbiByZWd1bGFyIGV4ZWN1dGlvbiB2aWEgRXhlY3V0b3JG aW5pc2gsCitpdHMgaW5zdHJ1bWVudGF0aW9uIGRhdGEgZ2V0cyBhZGRlZCB0byB0aGUgaW1tZWRp YXRlIHBhcmVudCBpbgordGhlIGV4ZWN1dGlvbiB0cmVlLCB0aGUgTmVzdExvb3AsIHdoaWNoIHdp bGwgdGhlbiBnZXQgYWRkZWQgdG8gUXVlcnkgQSdzCitRdWVyeUluc3RydW1lbnRhdGlvbiwgd2hp Y2ggdGhlbiBhY2N1bXVsYXRlcyB0byB0aGUgcGFyZW50LgorCitXaGlsZSB3ZSBjYW4gdHlwaWNh bGx5IHRoaW5rIG9mIHRoaXMgYXMgYSB0cmVlLCB0aGUgTm9kZUluc3RydW1lbnRhdGlvbgordW5k ZXJuZWF0aCBhIHBhcnRpY3VsYXIgUXVlcnlJbnN0cnVtZW50YXRpb24gY291bGQgYmVoYXZlIGRp ZmZlcmVudGx5IC0tCitmb3IgZXhhbXBsZSwgaXQgY291bGQgcHJvcGFnYXRlIGRpcmVjdGx5IHRv IHRoZSBRdWVyeUluc3RydW1lbnRhdGlvbiwgaW4KK29yZGVyIHRvIG5vdCBzaG93IGN1bXVsYXRp dmUgbnVtYmVycyBpbiBFWFBMQUlOIEFOQUxZWkUuCisKK05vdGUgdGhlc2UgcmVsYXRpb25zaGlw cyBhcmUgcGFydGlhbGx5IGltcGxpY2l0LCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMKK3RvIE5v ZGVJbnN0cnVtZW50YXRpb24uIEVhY2ggUXVlcnlJbnN0cnVtZW50YXRpb24gbWFpbnRhaW5zIGEg bGlzdCBvZiBpdHMKK3VuZmluYWxpemVkIGNoaWxkIG5vZGVzLiAgVGhlIHBhcmVudCBvZiBhIFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uIGl0c2VsZiBpcworZGV0ZXJtaW5lZCBieSB0aGUgc3RhY2sgKHNl ZSBiZWxvdyk6IHdoZW4gYSBxdWVyeSBpcyBmaW5hbGl6ZWQgb3IgY2xlYW5lZAordXAgb24gYWJv cnQsIGl0cyBjb3VudGVycyBhcmUgYWNjdW11bGF0ZWQgdG8gd2hhdGV2ZXIgZW50cnkgaXMgdGhl biBjdXJyZW50CitvbiB0aGUgc3RhY2ssIHdoaWNoIGlzIHR5cGljYWxseSBpbnN0cl90b3AuCisK KworRmluYWxpemF0aW9uIGFuZCBBYm9ydCBTYWZldHkKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisKK0ZpbmFsaXphdGlvbiBpcyB0aGUgcHJvY2VzcyBvZiByb2xsaW5nIHVwIGEgbm9k ZSdzIGJ1ZmZlci9XQUwgY291bnRlcnMgdG8KK2l0cyBwYXJlbnQuICBJbiBub3JtYWwgZXhlY3V0 aW9uLCBub2RlcyBhcmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIHdoZW4gdGhleQorc3RhcnQgYW5k IHBvcHBlZCB3aGVuIHRoZXkgc3RvcDsgYXQgZmluYWxpemF0aW9uIHRpbWUgdGhlaXIgYWNjdW11 bGF0ZWQKK2NvdW50ZXJzIGFyZSBhZGRlZCB0byB0aGUgcGFyZW50LgorCitEdWUgdG8gdGhlIHVz ZSBvZiBsb25nam1wIGZvciBlcnJvciBoYW5kbGluZywgZnVuY3Rpb25zIGNhbiBleGl0IGFicnVw dGx5Cit3aXRob3V0IGV4ZWN1dGluZyB0aGVpciBub3JtYWwgY2xlYW51cCBjb2RlLiAgT24gYWJv cnQsIHR3byB0aGluZ3MgbmVlZAordG8gaGFwcGVuOgorCisxLiBUaGUgc3RhY2sgaXMgcmVzZXQg dG8gdGhlIGxldmVsIHNhdmVkIGF0IHRoZSBzdGFydCBvZiB0aGUgYWJvcnRpbmcKKyAgIChzdWIt KXRyYW5zYWN0aW9uIGxldmVsLiAgVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QgbGF0ZXIgdHJ5 IHRvIHVwZGF0ZQorICAgY291bnRlcnMgb24gYSBmcmVlZCBzdGFjayBlbnRyeS4gIFdlIGFsc28g bmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sKKyAgIGVudHJ5IHRoYXQgd2FzIGN1cnJlbnQg YmVmb3JlIGEgcGFydGljdWxhciBJbnN0cnVtZW50YXRpb24gc3RhcnRlZCwgaXMKKyAgIGN1cnJl bnQgYWdhaW4gYWZ0ZXIgaXQgc3RvcHMuCisKKzIuIEZpbmFsaXplIGFsbCBhZmZlY3RlZCBJbnN0 cnVtZW50YXRpb24gbm9kZXMsIHJvbGxpbmcgdXAgdGhlaXIgY291bnRlcnMKKyAgIHRvIHRoZSBp bm5lcm1vc3Qgc3Vydml2aW5nIEluc3RydW1lbnRhdGlvbiwgc28gdGhhdCBkYXRhIGlzIG5vdCBs b3N0LgorCitGb3IgZXhhbXBsZSwgaWYgU2VxIFNjYW4gQiBhYm9ydHMgd2hpbGUgdGhlIHN0YWNr IGlzOgorCisgICAgaW5zdHJfdG9wICAgICAgICAgICAgICAoaW1wbGljaXQgYm90dG9tKQorICAg IDA6IFF1ZXJ5IEEKKyAgICAxOiBOZXN0TG9vcAorICAgIDI6IFNlcSBTY2FuIEIKKworVGhlIGFi b3J0IGhhbmRsZXIgZm9yIFF1ZXJ5IEEgYWNjdW11bGF0ZXMgYWxsIHVuZmluYWxpemVkIGNoaWxk cmVuIChTZXEKK1NjYW4gQSwgU2VxIFNjYW4gQiwgTmVzdExvb3ApIGRpcmVjdGx5IGludG8gUXVl cnkgQSdzIGNvdW50ZXJzLCB0aGVuCit1bndpbmRzIHRoZSBpbnN0cnVtZW50YXRpb24gc3RhY2sg YW5kIGFjY3VtdWxhdGVzIFF1ZXJ5IEEncyBjb3VudGVycyB0bworaW5zdHJfdG9wLgorCitOb3Rl IHRoYXQgb24gYWJvcnQgdGhlIGNoaWxkcmVuIGRvIG5vdCBhY2N1bXVsYXRlIHRocm91Z2ggZWFj aCBvdGhlciAoU2VxCitTY2FuIEIgLT4gTmVzdExvb3AgLT4gUXVlcnkgQSk7IHRoZXkgYWxsIGFj Y3VtdWxhdGUgZGlyZWN0bHkgdG8gdGhlaXIKK3BhcmVudCBRdWVyeUluc3RydW1lbnRhdGlvbi4g IFRoaXMgbWVhbnMgdGhlIG9yZGVyIGluIHdoaWNoIGNoaWxkcmVuIGFyZQorcmVsZWFzZWQgZG9l cyBub3QgbWF0dGVyIC0tIHRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgUmVzb3VyY2VPd25lciBj bGVhbnVwCitkb2VzIG5vdCBndWFyYW50ZWUgYSBwYXJ0aWN1bGFyIHJlbGVhc2Ugb3JkZXIuICBU aGUgcGVyLW5vZGUgYnJlYWtkb3duIGlzIGxvc3QsCitidXQgdGhlIGluc3RydW1lbnRhdGlvbiBh Y3RpdmUgd2hlbiB0aGUgcXVlcnkgd2FzIHN0YXJ0ZWQgKGluc3RyX3RvcCBpbiB0aGUKK2Fib3Zl IGV4YW1wbGUpIHN1cnZpdmVzIHRoZSBhYm9ydCwgYW5kIGl0cyBjb3VudGVycyBpbmNsdWRlIHRo ZSBhY3Rpdml0eS4KKworSWYgbXVsdGlwbGUgUXVlcnlJbnN0cnVtZW50YXRpb25zIGFyZSBhY3Rp dmUgb24gdGhlIHN0YWNrIChlLmcuIG5lc3RlZAorcG9ydGFscyksIHRoZSBhYm9ydCBoYW5kbGVy IG9mIGVhY2ggdXNlcyBJbnN0clN0b3BGaW5hbGl6ZSgpIHRvIGFjY3VtdWxhdGUKK3RoZSBzdGF0 aXN0aWNzIHRvIHRoZSBwYXJlbnQgZW50cnkgb2YgZWl0aGVyIHRoZSBlbnRyeSBiZWluZyByZWxl YXNlZCwgb3IgYQorcHJldmlvdXNseSByZWxlYXNlZCBlbnRyeSBpZiBpdCB3YXMgaGlnaGVyIHVw IGluIHRoZSBzdGFjaywgc28gdGhleSBjb21wb3NlCitjb3JyZWN0bHkgcmVnYXJkbGVzcyBvZiBy ZWxlYXNlIG9yZGVyLgorCitUaGVyZSBhcmUgdHdvIG1lY2hhbmlzbXMgZm9yIGFjaGlldmluZyBh Ym9ydCBzYWZldHk6CisKKyogUmVzb3VyY2UgT3duZXIgKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKTog cmVnaXN0ZXJzIHdpdGggdGhlIGN1cnJlbnQKKyAgUmVzb3VyY2VPd25lciBhdCBzdGFydC4gIE9u IHRyYW5zYWN0aW9uIGFib3J0LCB0aGUgcmVzb3VyY2Ugb3duZXIgc3lzdGVtCisgIGNhbGxzIHRo ZSByZWxlYXNlIGNhbGxiYWNrLCB3aGljaCB3YWxrcyB1bmZpbmFsaXplZCBjaGlsZCBlbnRyaWVz LAorICBhY2N1bXVsYXRlcyB0aGVpciBkYXRhLCB1bndpbmRzIHRoZSBzdGFjaywgYW5kIGRlc3Ry b3lzIHRoZSBkZWRpY2F0ZWQKKyAgbWVtb3J5IGNvbnRleHQgKGZyZWVpbmcgdGhlIFF1ZXJ5SW5z dHJ1bWVudGF0aW9uIGFuZCBhbGwgY2hpbGQKKyAgYWxsb2NhdGlvbnMgYXMgYSB1bml0KS4gIFRo aXMgaXMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIHdoZW4gdGhlCisgIGluc3RydW1lbnRlZCBj b2RlIGFscmVhZHkgaGFzIGFuIGFwcHJvcHJpYXRlIHJlc291cmNlIG93bmVyIChlLmcuIGl0Cisg IHJ1bnMgaW5zaWRlIGEgcG9ydGFsKS4gIFRoZSBxdWVyeSBleGVjdXRvciB1c2VzIHRoaXMgcGF0 aC4KKworKiBQR19GSU5BTExZIChiYXNlIEluc3RydW1lbnRhdGlvbik6IHdoZW4gbm8gc3VpdGFi bGUgcmVzb3VyY2Ugb3duZXIKKyAgZXhpc3RzLCBvciB3aGVuIHRoZSBjYWxsZXIgd2FudHMgdG8g aW5zcGVjdCB0aGUgaW5zdHJ1bWVudGF0aW9uIGRhdGEKKyAgZXZlbiBhZnRlciBhbiBlcnJvciwg dGhlIGJhc2UgSW5zdHJ1bWVudGF0aW9uIGNhbiBiZSB1c2VkIHdpdGggYQorICBQR19UUlkvUEdf RklOQUxMWSBibG9jayB0aGF0IGNhbGxzIEluc3RyU3RvcEZpbmFsaXplKCkuCisKK0JvdGggbWVj aGFuaXNtcyBhZGQgb3ZlcmhlYWQsIHNvIG5laXRoZXIgaXMgc3VpdGFibGUgZm9yIGhpZ2gtZnJl cXVlbmN5CitpbnN0cnVtZW50YXRpb24gbGlrZSBwZXItbm9kZSBtZWFzdXJlbWVudHMgaW4gdGhl IGV4ZWN1dG9yLiAgSW5zdGVhZCwKK3BsYW4gbm9kZSBhbmQgdHJpZ2dlciBjaGlsZHJlbiByZWx5 IG9uIHRoZWlyIHBhcmVudCBRdWVyeUluc3RydW1lbnRhdGlvbgorZm9yIGFib3J0IHNhZmV0eTog dGhleSBhcmUgYWxsb2NhdGVkIGluIHRoZSBwYXJlbnQncyBtZW1vcnkgY29udGV4dCBhbmQKK3Jl Z2lzdGVyZWQgaW4gaXRzIHVuZmluYWxpemVkLWVudHJpZXMgbGlzdCwgc28gdGhlIHBhcmVudCdz IGFib3J0IGhhbmRsZXIKK3JlY292ZXJzIHRoZWlyIGRhdGEgYXV0b21hdGljYWxseS4gIEluIG5v cm1hbCBleGVjdXRpb24sIGNoaWxkcmVuIGFyZQorZmluYWxpemVkIGV4cGxpY2l0bHkgYnkgdGhl IGNhbGxlci4KKworUGFyYWxsZWwgUXVlcnkKKy0tLS0tLS0tLS0tLS0tCisKK1BhcmFsbGVsIHdv cmtlcnMgZ2V0IHRoZWlyIG93biBRdWVyeUluc3RydW1lbnRhdGlvbiBzbyB0aGV5IGNhbiBtZWFz dXJlCitidWZmZXIgYW5kIFdBTCBhY3Rpdml0eSBpbmRlcGVuZGVudGx5LCB0aGVuIGNvcHkgdGhl IHRvdGFscyBpbnRvIGR5bmFtaWMKK3NoYXJlZCBtZW1vcnkgYXQgd29ya2VyIHNodXRkb3duLiAg VGhlIGxlYWRlciBhY2N1bXVsYXRlcyB0aGVzZSBpbnRvIGl0cworb3duIHN0YWNrLgorCitXaGVu IHBlci1ub2RlIGluc3RydW1lbnRhdGlvbiBpcyBhY3RpdmUsIHBhcmFsbGVsIHdvcmtlcnMgc2tp cCBwZXItbm9kZQorZmluYWxpemF0aW9uIGF0IHNodXRkb3duIHRvIGF2b2lkIGRvdWJsZS1jb3Vu dGluZzsgdGhlIHBlci1ub2RlIGRhdGEgaXMKK2FnZ3JlZ2F0ZWQgc2VwYXJhdGVseSB0aHJvdWdo IEluc3RyQWdnTm9kZSgpLgorCisKK01lbW9yeSBIYW5kbGluZworPT09PT09PT09PT09PT09CisK K0luc3RydW1lbnRhdGlvbiBvYmplY3RzIHRoYXQgdXNlIHRoZSBzdGFjayBtdXN0IHN1cnZpdmUg dW50aWwgZmluYWxpemF0aW9uCitydW5zLCBpbmNsdWRpbmcgdGhlIGFib3J0IGNhc2UuICBUbyBl bnN1cmUgdGhpcywgUXVlcnlJbnN0cnVtZW50YXRpb24KK2NyZWF0ZXMgYSBkZWRpY2F0ZWQgIklu c3RydW1lbnRhdGlvbiIgTWVtb3J5Q29udGV4dCAoaW5zdHJfY3h0KSBhcyBhIGNoaWxkCitvZiBU b3BNZW1vcnlDb250ZXh0LiAgQWxsIGNoaWxkIGluc3RydW1lbnRhdGlvbiAobm9kZXMsIHRyaWdn ZXJzKSBzaG91bGQgYmUKK2FsbG9jYXRlZCBpbiB0aGlzIGNvbnRleHQuCisKK09uIHN1Y2Nlc3Nm dWwgY29tcGxldGlvbiwgaW5zdHJfY3h0IGlzIHJlcGFyZW50ZWQgdG8gQ3VycmVudE1lbW9yeUNv bnRleHQKK3NvIGl0cyBsaWZldGltZSBpcyB0aWVkIHRvIHRoZSBjYWxsZXIncyBjb250ZXh0LiAg T24gYWJvcnQsIHRoZQorUmVzb3VyY2VPd25lciBjbGVhbnVwIGZyZWVzIGl0IGFmdGVyIGFjY3Vt dWxhdGluZyB0aGUgaW5zdHJ1bWVudGF0aW9uIGRhdGEKK3RvIHRoZSBjdXJyZW50IHN0YWNrIGVu dHJ5IGFmdGVyIHJlc2V0dGluZyB0aGUgc3RhY2suCisKK1doZW4gdGhlIHN0YWNrIGlzIG5vdCBu ZWVkZWQgKHRpbWVyL3Jvd3Mgb25seSksIEluc3RydW1lbnRhdGlvbiBhbGxvY2F0aW9ucworaGFw cGVuIGluIEN1cnJlbnRNZW1vcnlDb250ZXh0IGluc3RlYWQgb2YgVG9wTWVtb3J5Q29udGV4dC4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGY3MWY2Njg4ODNjLi40NGQ0ZmVhNzZlYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC03OCw2ICs3OCw3IEBAIEV4ZWN1dG9yQ2hlY2tQZXJt c19ob29rX3R5cGUgRXhlY3V0b3JDaGVja1Blcm1zX2hvb2sgPSBOVUxMOwogLyogZGVjbHMgZm9y IGxvY2FsIHJvdXRpbmVzIG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBtb2R1bGUgKi8KIHN0YXRpYyB2 b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2 b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUgbWFya1R5 cGUpOworc3RhdGljIHZvaWQgRXhlY0ZpbmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihFU3Rh dGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9pZCBFeGVjUG9zdHByb2Nlc3NQbGFuKEVTdGF0ZSAqZXN0 YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWNFbmRQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3Rh dGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9pZCBFeGVjdXRlUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywKQEAgLTI1NCwxMCArMjU1LDE4IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogU2V0IHVwIHF1ZXJ5LWxldmVsIGluc3RydW1l bnRhdGlvbiBpZiBleHRlbnNpb25zIGhhdmUgcmVxdWVzdGVkIGl0IHZpYQogCSAqIHRvdGFsdGlt ZV9vcHRpb25zLiBFbnN1cmUgYW4gZXh0ZW5zaW9uIGhhcyBub3QgYWxsb2NhdGVkIHRvdGFsdGlt ZQogCSAqIGl0c2VsZi4KKwkgKgorCSAqIEFsdGVybmF0aXZlbHksIGFsc28gc2V0IGl0IHVwIHdo ZW4gcnVubmluZyBFWFBMQUlOIChBTkFMWVpFKSwgYXMgd2UKKwkgKiB1dGlsaXplIHRvdGFsdGlt ZSBhcyB0aGUgcGFyZW50IGZvciBub2RlIGFuZCB0cmlnZ2VyIGluc3RydW1lbnRhdGlvbi4KIAkg Ki8KIAlBc3NlcnQocXVlcnlEZXNjLT50b3RhbHRpbWUgPT0gTlVMTCk7Ci0JaWYgKHF1ZXJ5RGVz Yy0+dG90YWx0aW1lX29wdGlvbnMpCi0JCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxv YyhxdWVyeURlc2MtPnRvdGFsdGltZV9vcHRpb25zKTsKKwlpZiAocXVlcnlEZXNjLT50b3RhbHRp bWVfb3B0aW9ucyB8fCBxdWVyeURlc2MtPmluc3RydW1lbnRfb3B0aW9ucykKKwl7CisJCWVzdGF0 ZS0+ZXNfcXVlcnlfaW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MocXVlcnlEZXNjLT5pbnN0cnVtZW50 X29wdGlvbnMgfAorCQkJCQkJCQkJCQkJIHF1ZXJ5RGVzYy0+dG90YWx0aW1lX29wdGlvbnMpOwor CisJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gJmVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHItPmluc3Ry OworCX0KIAogCS8qCiAJICogU2V0IHVwIGFuIEFGVEVSLXRyaWdnZXIgc3RhdGVtZW50IGNvbnRl eHQsIHVubGVzcyB0b2xkIG5vdCB0bywgb3IKQEAgLTM0MCw5ICszNDksOSBAQCBzdGFuZGFyZF9F eGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkgKi8KIAlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAotCS8qIEFsbG93IGlu c3RydW1lbnRhdGlvbiBvZiBFeGVjdXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KLQlpZiAocXVlcnlE ZXNjLT50b3RhbHRpbWUpCi0JCUluc3RyU3RhcnQocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCS8q IFN0YXJ0IHVwIGluc3RydW1lbnRhdGlvbiBmb3IgdGhpcyBleGVjdXRpb24gcnVuICovCisJaWYg KGVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIpCisJCUluc3RyUXVlcnlTdGFydChlc3RhdGUtPmVzX3F1 ZXJ5X2luc3RyKTsKIAogCS8qCiAJICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBxdWVy eSBkZXNjcmlwdG9yIGFuZCB0aGUgcXVlcnkgZmVhdHVyZS4KQEAgLTM5Myw4ICs0MDIsOCBAQCBz dGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAlpZiAoc2VuZFR1cGxl cykKIAkJZGVzdC0+clNodXRkb3duKGRlc3QpOwogCi0JaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1l KQotCQlJbnN0clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCWlmIChlc3RhdGUtPmVzX3F1 ZXJ5X2luc3RyKQorCQlJbnN0clF1ZXJ5U3RvcChlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKIAog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KQEAgLTQ0Myw4ICs0NTIsOCBA QCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAogCS8q IEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVjdXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KLQlp ZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUluc3RyU3RhcnQocXVlcnlEZXNjLT50b3RhbHRp bWUpOworCWlmIChlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKQorCQlJbnN0clF1ZXJ5U3RhcnQoZXN0 YXRlLT5lc19xdWVyeV9pbnN0cik7CiAKIAkvKiBSdW4gTW9kaWZ5VGFibGUgbm9kZXMgdG8gY29t cGxldGlvbiAqLwogCUV4ZWNQb3N0cHJvY2Vzc1BsYW4oZXN0YXRlKTsKQEAgLTQ1Myw4ICs0NjIs MjkgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJaWYg KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMpKQogCQlB ZnRlclRyaWdnZXJFbmRRdWVyeShlc3RhdGUpOwogCi0JaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1l KQotCQlJbnN0clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCWlmIChlc3RhdGUtPmVzX3F1 ZXJ5X2luc3RyKQorCXsKKwkJLyoKKwkJICogQWNjdW11bGF0ZSBwZXItbm9kZSBhbmQgdHJpZ2dl ciBzdGF0aXN0aWNzIHRvIHRoZWlyIHJlc3BlY3RpdmUKKwkJICogcGFyZW50IGluc3RydW1lbnRh dGlvbiBzdGFja3MuCisJCSAqCisJCSAqIFdlIHNraXAgdGhpcyBpbiBwYXJhbGxlbCB3b3JrZXJz IGJlY2F1c2UgdGhlaXIgcGVyLW5vZGUgc3RhdHMgYXJlCisJCSAqIHJlcG9ydGVkIGluZGl2aWR1 YWxseSB2aWEgRXhlY1BhcmFsbGVsUmVwb3J0SW5zdHJ1bWVudGF0aW9uLCBhbmQKKwkJICogdGhl IGxlYWRlcidzIG93biBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uIGhhbmRsZXMKKwkJ ICogcHJvcGFnYXRpb24uICBJZiB3ZSBhY2N1bXVsYXRlZCBoZXJlLCB0aGUgbGVhZGVyIHdvdWxk CisJCSAqIGRvdWJsZS1jb3VudDogd29ya2VyIHBhcmVudCBub2RlcyB3b3VsZCBhbHJlYWR5IGlu Y2x1ZGUgdGhlaXIKKwkJICogY2hpbGRyZW4ncyBzdGF0cywgYW5kIHRoZW4gdGhlIGxlYWRlcidz IGFjY3VtdWxhdGlvbiB3b3VsZCBhZGQgdGhlCisJCSAqIGNoaWxkcmVuIGFnYWluLgorCQkgKi8K KwkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkgJiYgZXN0YXRlLT5lc19pbnN0cnVtZW50KQorCQl7 CisJCQlFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKHF1ZXJ5RGVzYy0+cGxhbnN0YXRl KTsKKworCQkJRXhlY0ZpbmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihlc3RhdGUpOworCQl9 CisKKwkJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKKwl9 CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKQEAgLTEyNzIsNyArMTMw Miw4IEBAIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJ CQkJICBSZWxhdGlvbiByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJICBJbmRleCByZXN1bHRSZWxh dGlvbkluZGV4LAogCQkJCSAgUmVzdWx0UmVsSW5mbyAqcGFydGl0aW9uX3Jvb3RfcnJpLAotCQkJ CSAgaW50IGluc3RydW1lbnRfb3B0aW9ucykKKwkJCQkgIGludCBpbnN0cnVtZW50X29wdGlvbnMs CisJCQkJICBRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQogewogCU1lbVNldChyZXN1bHRS ZWxJbmZvLCAwLCBzaXplb2YoUmVzdWx0UmVsSW5mbykpOwogCXJlc3VsdFJlbEluZm8tPnR5cGUg PSBUX1Jlc3VsdFJlbEluZm87CkBAIC0xMjkzLDggKzEzMjQsOCBAQCBJbml0UmVzdWx0UmVsSW5m byhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJcGFsbG9jMF9hcnJheShGbWdySW5m bywgbik7CiAJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdXaGVuRXhwcnMgPSAoRXhwclN0YXRlICoq KQogCQkJcGFsbG9jMF9hcnJheShFeHByU3RhdGUgKiwgbik7Ci0JCWlmIChpbnN0cnVtZW50X29w dGlvbnMpCi0JCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2NU cmlnZ2VyKG4sIGluc3RydW1lbnRfb3B0aW9ucyk7CisJCWlmIChxaW5zdHIpCisJCQlyZXN1bHRS ZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2NUcmlnZ2VyKHFpbnN0ciwgaW5z dHJ1bWVudF9vcHRpb25zLCBuKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEzNjcsNiArMTM5OCwxMCBA QCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogICogYWxz byBwcm92aWRlcyBhIHdheSBmb3IgRVhQTEFJTiBBTkFMWVpFIHRvIHJlcG9ydCB0aGUgcnVudGlt ZXMgb2Ygc3VjaAogICogdHJpZ2dlcnMuKSAgU28gd2UgbWFrZSBhZGRpdGlvbmFsIFJlc3VsdFJl bEluZm8ncyBhcyBuZWVkZWQsIGFuZCBzYXZlIHRoZW0KICAqIGluIGVzX3RyaWdfdGFyZ2V0X3Jl bGF0aW9ucy4KKyAqCisgKiBOb3RlOiBpZiBuZXcgcmVsYXRpb24gbGlzdHMgYXJlIHNlYXJjaGVk IGhlcmUsIHRoZXkgbXVzdCBhbHNvIGJlIGFkZGVkIHRvCisgKiBFeGVjRmluYWxpemVUcmlnZ2Vy SW5zdHJ1bWVudGF0aW9uIHNvIHRoYXQgdHJpZ2dlciBpbnN0cnVtZW50YXRpb24gZGF0YQorICog aXMgcHJvcGVybHkgYWNjdW11bGF0ZWQuCiAgKi8KIFJlc3VsdFJlbEluZm8gKgogRXhlY0dldFRy aWdnZXJSZXN1bHRSZWwoRVN0YXRlICplc3RhdGUsIE9pZCByZWxpZCwKQEAgLTE0MzMsNyArMTQ2 OCw4IEBAIEV4ZWNHZXRUcmlnZ2VyUmVzdWx0UmVsKEVTdGF0ZSAqZXN0YXRlLCBPaWQgcmVsaWQs CiAJCQkJCSAgcmVsLAogCQkJCQkgIDAsCQkvKiBkdW1teSByYW5nZXRhYmxlIGluZGV4ICovCiAJ CQkJCSAgcm9vdFJlbEluZm8sCi0JCQkJCSAgZXN0YXRlLT5lc19pbnN0cnVtZW50KTsKKwkJCQkJ ICBlc3RhdGUtPmVzX2luc3RydW1lbnQsCisJCQkJCSAgZXN0YXRlLT5lc19xdWVyeV9pbnN0cik7 CiAJZXN0YXRlLT5lc190cmlnX3RhcmdldF9yZWxhdGlvbnMgPQogCQlsYXBwZW5kKGVzdGF0ZS0+ ZXNfdHJpZ190YXJnZXRfcmVsYXRpb25zLCBySW5mbyk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOwpAQCAtMTQ5Niw3ICsxNTMyLDggQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0 UmVscyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAogCQkJ LyogZHVtbXkgcmFuZ2V0YWJsZSBpbmRleCAqLwogCQkJSW5pdFJlc3VsdFJlbEluZm8ockluZm8s IGFuY1JlbCwgMCwgTlVMTCwKLQkJCQkJCQkgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQkJ CQkJICBlc3RhdGUtPmVzX2luc3RydW1lbnQsCisJCQkJCQkJICBlc3RhdGUtPmVzX3F1ZXJ5X2lu c3RyKTsKIAkJCWFuY1Jlc3VsdFJlbHMgPSBsYXBwZW5kKGFuY1Jlc3VsdFJlbHMsIHJJbmZvKTsK IAkJfQogCQlhbmNSZXN1bHRSZWxzID0gbGFwcGVuZChhbmNSZXN1bHRSZWxzLCByb290UmVsSW5m byk7CkBAIC0xNTA5LDYgKzE1NDYsMzAgQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVscyhFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAlyZXR1cm4gcmVzdWx0 UmVsSW5mby0+cmlfYW5jZXN0b3JSZXN1bHRSZWxzOwogfQogCitzdGF0aWMgdm9pZAorRXhlY0Zp bmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihFU3RhdGUgKmVzdGF0ZSkKK3sKKwlMaXN0CSAg ICpyZWxzID0gTklMOworCisJcmVscyA9IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfdHVw bGVfcm91dGluZ19yZXN1bHRfcmVsYXRpb25zKTsKKwlyZWxzID0gbGlzdF9jb25jYXQocmVscywg ZXN0YXRlLT5lc19vcGVuZWRfcmVzdWx0X3JlbGF0aW9ucyk7CisJcmVscyA9IGxpc3RfY29uY2F0 KHJlbHMsIGVzdGF0ZS0+ZXNfdHJpZ190YXJnZXRfcmVsYXRpb25zKTsKKworCWZvcmVhY2hfbm9k ZShSZXN1bHRSZWxJbmZvLCBySW5mbywgcmVscykKKwl7CisJCVRyaWdnZXJJbnN0cnVtZW50YXRp b24gKnRpID0gckluZm8tPnJpX1RyaWdJbnN0cnVtZW50OworCisJCWlmICh0aSA9PSBOVUxMIHx8 IHJJbmZvLT5yaV9UcmlnRGVzYyA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJZm9yIChpbnQg bnQgPSAwOyBudCA8IHJJbmZvLT5yaV9UcmlnRGVzYy0+bnVtdHJpZ2dlcnM7IG50KyspCisJCXsK KwkJCWlmICh0aVtudF0uaW5zdHIubmVlZF9zdGFjaykKKwkJCQlJbnN0ckFjY3VtU3RhY2soJmVz dGF0ZS0+ZXNfcXVlcnlfaW5zdHItPmluc3RyLCAmdGlbbnRdLmluc3RyKTsKKwkJfQorCX0KK30K KwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQb3N0cHJvY2Vzc1BsYW4KICAqCkBAIC0zMDY2LDYgKzMx MjcsNyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5U cmVlKQogCS8qIGVzX3RyaWdfdGFyZ2V0X3JlbGF0aW9ucyBtdXN0IE5PVCBiZSBjb3BpZWQgKi8K IAlyY2VzdGF0ZS0+ZXNfdG9wX2VmbGFncyA9IHBhcmVudGVzdGF0ZS0+ZXNfdG9wX2VmbGFnczsK IAlyY2VzdGF0ZS0+ZXNfaW5zdHJ1bWVudCA9IHBhcmVudGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudDsK KwlyY2VzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIgPSBwYXJlbnRlc3RhdGUtPmVzX3F1ZXJ5X2luc3Ry OwogCS8qIGVzX2F1eG1vZGlmeXRhYmxlcyBtdXN0IE5PVCBiZSBjb3BpZWQgKi8KIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IDFhNWVjMGMzMDVmLi5mMzJhYTY2MDI5 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTcxOSw3ICs3MTksNyBAQCBF eGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUs CiAJICoKIAkgKiBJZiBFWFBMQUlOIGlzIG5vdCBpbiB1c2UgYW5kIHRoZXJlIGFyZSBubyBleHRl bnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsCiAJICogd2UgY291bGQgc2tpcCB0aGlzLiAgQnV0IHdl IGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncwotCSAqIGxvb2tpbmcgYXQg cGdCdWZmZXJVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5LgorCSAqIGxvb2tpbmcgYXQg aW5zdHJ1bWVudGF0aW9uLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3Rv Y19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoc2l6 ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTExMDAsMTQgKzExMDAsMjgg QEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3Rh dGUsCiAJaW5zdHJ1bWVudCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlv bik7CiAJaW5zdHJ1bWVudCArPSBpICogaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsKIAlm b3IgKG4gPSAwOyBuIDwgaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsgKytuKQorCXsKIAkJ SW5zdHJBZ2dOb2RlKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCwgJmluc3RydW1lbnRbbl0pOwogCisJ CS8qCisJCSAqIEFsc28gYWRkIHdvcmtlciBXQUwgdXNhZ2UgdG8gdGhlIGdsb2JhbCBwZ1dhbFVz YWdlIGNvdW50ZXIuCisJCSAqCisJCSAqIFdoZW4gcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIGlz IGFjdGl2ZSwgcGFyYWxsZWwgd29ya2VycyBza2lwCisJCSAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0 cnVtZW50YXRpb24gKHRvIGF2b2lkIGRvdWJsZS1jb3VudGluZyBpbgorCQkgKiBFWFBMQUlOKSwg c28gcGVyLW5vZGUgV0FMIGFjdGl2aXR5IGlzIG5vdCByb2xsZWQgdXAgaW50byB0aGUKKwkJICog cXVlcnktbGV2ZWwgc3RhdHMgdGhhdCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSByZWNlaXZlcy4g V2l0aG91dAorCQkgKiB0aGlzLCBwZ1dhbFVzYWdlIHdvdWxkIHVuZGVyLXJlcG9ydCBXQUwgZ2Vu ZXJhdGVkIGJ5IHBhcmFsbGVsCisJCSAqIHdvcmtlcnMgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMg YWN0aXZlLgorCQkgKi8KKwkJV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsICZpbnN0cnVtZW50W25d Lmluc3RyLndhbHVzYWdlKTsKKwl9CisKIAkvKgogCSAqIEFsc28gc3RvcmUgdGhlIHBlci13b3Jr ZXIgZGV0YWlsLgogCSAqCi0JICogV29ya2VyIGluc3RydW1lbnRhdGlvbiBzaG91bGQgYmUgYWxs b2NhdGVkIGluIHRoZSBzYW1lIGNvbnRleHQgYXMgdGhlCi0JICogcmVndWxhciBpbnN0cnVtZW50 YXRpb24gaW5mb3JtYXRpb24sIHdoaWNoIGlzIHRoZSBwZXItcXVlcnkgY29udGV4dC4KLQkgKiBT d2l0Y2ggaW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQuCisJICogRW5zdXJlIHdvcmtlciBp bnN0cnVtZW50YXRpb24gaXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVlcnkgY29udGV4dC4gV2UK KwkgKiBkb24ndCBuZWVkIHRvIHBsYWNlIHRoaXMgaW4gdGhlIGluc3RydW1lbnRhdGlvbiBjb250 ZXh0IHNpbmNlIG5vIG1vcmUKKwkgKiBzdGFjay1iYXNlZCBpbnN0cnVtZW50YXRpb24gd29yayBp cyBiZWluZyBkb25lLgogCSAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o cGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAlpYnl0ZXMgPSBtdWxfc2l6ZShpbnN0 cnVtZW50YXRpb24tPm51bV93b3JrZXJzLCBzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOwpA QCAtMTI1Nyw5ICsxMjcxLDEzIEBAIEV4ZWNQYXJhbGxlbENsZWFudXAoUGFyYWxsZWxFeGVjdXRv ckluZm8gKnBlaSkKIHsKIAkvKiBBY2N1bXVsYXRlIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAq LwogCWlmIChwZWktPmluc3RydW1lbnRhdGlvbikKKwl7CiAJCUV4ZWNQYXJhbGxlbFJldHJpZXZl SW5zdHJ1bWVudGF0aW9uKHBlaS0+cGxhbnN0YXRlLAogCQkJCQkJCQkJCQlwZWktPmluc3RydW1l bnRhdGlvbik7CiAKKwkJRXhlY0ZpbmFsaXplV29ya2VySW5zdHJ1bWVudGF0aW9uKHBlaS0+cGxh bnN0YXRlKTsKKwl9CisKIAkvKiBBY2N1bXVsYXRlIEpJVCBpbnN0cnVtZW50YXRpb24sIGlmIGFu eS4gKi8KIAlpZiAocGVpLT5qaXRfaW5zdHJ1bWVudGF0aW9uKQogCQlFeGVjUGFyYWxsZWxSZXRy aWV2ZUppdEluc3RydW1lbnRhdGlvbihwZWktPnBsYW5zdGF0ZSwKQEAgLTE0OTEsNiArMTUwOSw3 IEBAIHZvaWQKIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRv YykKIHsKIAlGaXhlZFBhcmFsbGVsRXhlY3V0b3JTdGF0ZSAqZnBlczsKKwlRdWVyeUluc3RydW1l bnRhdGlvbiAqaW5zdHI7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKIAlXYWxVc2FnZSAg ICp3YWxfdXNhZ2U7CiAJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKQEAgLTE1NTEsNyArMTU3MCw3 IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkg KiBsZWFkZXIsIHdoaWNoIGFsc28gZG9lc24ndCBjb3VudCBidWZmZXIgYWNjZXNzZXMgYW5kIFdB TCBhY3Rpdml0eSB0aGF0CiAJICogb2NjdXIgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAuCiAJICov Ci0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxl bFF1ZXJ5KCk7CiAKIAkvKgogCSAqIFJ1biB0aGUgcGxhbi4gIElmIHdlIHNwZWNpZmllZCBhIHR1 cGxlIGJvdW5kLCBiZSBjYXJlZnVsIG5vdCB0byBkZW1hbmQKQEAgLTE1NjcsNyArMTU4Niw4IEBA IFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBS ZXBvcnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLwogCWJ1 ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FH RSwgZmFsc2UpOwogCXdhbF91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdl W1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJ CQkJCQkgICZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2Fs X3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgaW5zdHJ1bWVudGF0 aW9uIGRhdGEgaWYgYW55IGluc3RydW1lbnRhdGlvbiBvcHRpb25zIGFyZSBzZXQuICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZDk2ZDRmOTk0N2IuLjY4ODhmYmU0Mjc4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC01ODYsNyArNTg2LDggQEAg RXhlY0luaXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAq ZXN0YXRlLAogCQkJCQkgIHBhcnRyZWwsCiAJCQkJCSAgMCwKIAkJCQkJICByb290UmVzdWx0UmVs SW5mbywKLQkJCQkJICBlc3RhdGUtPmVzX2luc3RydW1lbnQpOworCQkJCQkgIGVzdGF0ZS0+ZXNf aW5zdHJ1bWVudCwKKwkJCQkJICBlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKIAogCS8qCiAJICog VmVyaWZ5IHJlc3VsdCByZWxhdGlvbiBpcyBhIHZhbGlkIHRhcmdldCBmb3IgYW4gSU5TRVJULiAg QW4gVVBEQVRFIG9mIGEKQEAgLTEzODEsNyArMTM4Miw3IEBAIEV4ZWNJbml0UGFydGl0aW9uRGlz cGF0Y2hJbmZvKEVTdGF0ZSAqZXN0YXRlLAogCXsKIAkJUmVzdWx0UmVsSW5mbyAqcnJpID0gbWFr ZU5vZGUoUmVzdWx0UmVsSW5mbyk7CiAKLQkJSW5pdFJlc3VsdFJlbEluZm8ocnJpLCByZWwsIDAs IHJvb3RSZXN1bHRSZWxJbmZvLCAwKTsKKwkJSW5pdFJlc3VsdFJlbEluZm8ocnJpLCByZWwsIDAs IHJvb3RSZXN1bHRSZWxJbmZvLCAwLCBOVUxMKTsKIAkJcHJvdXRlLT5ub25sZWFmX3BhcnRpdGlv bnNbZGlzcGF0Y2hpZHhdID0gcnJpOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jCmluZGV4IDdjNGM2NmUzMjNmLi41Y2E4ZDkxMzQ0YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1Byb2Nub2RlLmMKQEAgLTEyMiw2ICsxMjIsOCBAQAogCiBzdGF0aWMgVHVwbGVUYWJsZVNs b3QgKkV4ZWNQcm9jTm9kZUZpcnN0KFBsYW5TdGF0ZSAqbm9kZSk7CiBzdGF0aWMgYm9vbCBFeGVj U2h1dGRvd25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOworc3Rh dGljIGJvb2wgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRl ICpub2RlLCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBib29sIEV4ZWNGaW5hbGl6ZVdvcmtlcklu c3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIAog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQxMyw3ICs0MTUsOCBAQCBFeGVjSW5pdE5vZGUoUGxh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBTZXQgdXAgaW5zdHJ1 bWVudGF0aW9uIGZvciB0aGlzIG5vZGUgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVzdGF0ZS0+ZXNf aW5zdHJ1bWVudCkKLQkJcmVzdWx0LT5pbnN0cnVtZW50ID0gSW5zdHJBbGxvY05vZGUoZXN0YXRl LT5lc19pbnN0cnVtZW50LAorCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShl c3RhdGUtPmVzX3F1ZXJ5X2luc3RyLAorCQkJCQkJCQkJCQllc3RhdGUtPmVzX2luc3RydW1lbnQs CiAJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwpA QCAtNzY4LDEwICs3NzEsMTAgQEAgRXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpu b2RlLCB2b2lkICpjb250ZXh0KQogCSAqIGF0IGxlYXN0IG9uY2UgYWxyZWFkeS4gIFdlIGRvbid0 IGV4cGVjdCBtdWNoIENQVSBjb25zdW1wdGlvbiBkdXJpbmcKIAkgKiBub2RlIHNodXRkb3duLCBi dXQgaW4gdGhlIGNhc2Ugb2YgR2F0aGVyIG9yIEdhdGhlciBNZXJnZSwgd2UgbWF5IHNodXQKIAkg KiBkb3duIHdvcmtlcnMgYXQgdGhpcyBzdGFnZS4gIElmIHNvLCB0aGVpciBidWZmZXIgdXNhZ2Ug d2lsbCBnZXQKLQkgKiBwcm9wYWdhdGVkIGludG8gcGdCdWZmZXJVc2FnZSBhdCB0aGlzIHBvaW50 LCBhbmQgd2Ugd2FudCB0byBtYWtlIHN1cmUKLQkgKiB0aGF0IGl0IGdldHMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBHYXRoZXIgbm9kZS4gIFdlIHNraXAgdGhpcyBpZiB0aGUgbm9kZQotCSAqIGhhcyBu ZXZlciBiZWVuIGV4ZWN1dGVkLCBzbyBhcyB0byBhdm9pZCBpbmNvcnJlY3RseSBtYWtpbmcgaXQg YXBwZWFyCi0JICogdGhhdCBpdCBoYXMuCisJICogcHJvcGFnYXRlZCBpbnRvIHRoZSBjdXJyZW50 IGluc3RydW1lbnRhdGlvbiBzdGFjayBlbnRyeSBhdCB0aGlzIHBvaW50LAorCSAqIGFuZCB3ZSB3 YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBHYXRoZXIg bm9kZS4KKwkgKiBXZSBza2lwIHRoaXMgaWYgdGhlIG5vZGUgaGFzIG5ldmVyIGJlZW4gZXhlY3V0 ZWQsIHNvIGFzIHRvIGF2b2lkCisJICogaW5jb3JyZWN0bHkgbWFraW5nIGl0IGFwcGVhciB0aGF0 IGl0IGhhcy4KIAkgKi8KIAlpZiAobm9kZS0+aW5zdHJ1bWVudCAmJiBub2RlLT5pbnN0cnVtZW50 LT5ydW5uaW5nKQogCQlJbnN0clN0YXJ0Tm9kZShub2RlLT5pbnN0cnVtZW50KTsKQEAgLTgwOSw2 ICs4MTIsOTkgQEAgRXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lk ICpjb250ZXh0KQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIEV4ZWNGaW5hbGl6ZU5vZGVJ bnN0cnVtZW50YXRpb24KKyAqCisgKiBBY2N1bXVsYXRlIGluc3RydW1lbnRhdGlvbiBzdGF0cyBm cm9tIGFsbCBleGVjdXRpb24gbm9kZXMgdG8gdGhlaXIgcmVzcGVjdGl2ZQorICogcGFyZW50cyAo b3IgdGhlIG9yaWdpbmFsIHBhcmVudCBpbnN0cnVtZW50YXRpb24pLgorICoKKyAqIFRoaXMgbXVz dCBydW4gYWZ0ZXIgdGhlIGNsZWFudXAgZG9uZSBieSBFeGVjU2h1dGRvd25Ob2RlLCBhbmQgbm90 IHJlbHkgb24gYW55CisgKiByZXNvdXJjZXMgY2xlYW5lZCB1cCBieSBpdC4gV2UgYWxzbyBleHBl Y3Qgc2h1dGRvd24gYWN0aW9ucyB0byBoYXZlIG9jY3VycmVkLAorICogZS5nLiBwYXJhbGxlbCB3 b3JrZXIgaW5zdHJ1bWVudGF0aW9uIHRvIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgbGVhZGVyLgor ICovCit2b2lkCitFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9k ZSkKK3sKKwkodm9pZCkgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIobm9k ZSwgaW5zdHJfc3RhY2suY3VycmVudCk7Cit9CisKK3N0YXRpYyBib29sCitFeGVjRmluYWxpemVO b2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQp Cit7CisJSW5zdHJ1bWVudGF0aW9uICpwYXJlbnQgPSAoSW5zdHJ1bWVudGF0aW9uICopIGNvbnRl eHQ7CisKKwlBc3NlcnQocGFyZW50ICE9IE5VTEwpOworCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJ cmV0dXJuIGZhbHNlOworCisJQXNzZXJ0KG5vZGUtPmluc3RydW1lbnQgIT0gTlVMTCk7CisKKwkv KgorCSAqIFJlY3Vyc2UgaW50byBjaGlsZHJlbiBmaXJzdCAoYm90dG9tLXVwIGFjY3VtdWxhdGlv biksIGFuZCBhY2N1bXVsYXRlIHRvCisJICogdGhpcyBub2RlJ3MgaW5zdHJ1bWVudGF0aW9uIGFz IHRoZSBwYXJlbnQgY29udGV4dC4KKwkgKi8KKwlwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9kZSwg RXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIsCisJCQkJCQkgICZub2RlLT5p bnN0cnVtZW50LT5pbnN0cik7CisKKwlJbnN0ckZpbmFsaXplQ2hpbGQoJm5vZGUtPmluc3RydW1l bnQtPmluc3RyLCBwYXJlbnQpOworCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogRXhlY0Zp bmFsaXplV29ya2VySW5zdHJ1bWVudGF0aW9uCisgKgorICogQWNjdW11bGF0ZSBwZXItd29ya2Vy IGluc3RydW1lbnRhdGlvbiBzdGF0cyBmcm9tIGNoaWxkIG5vZGVzIGludG8gdGhlaXIKKyAqIHBh cmVudHMsIG1pcnJvcmluZyB3aGF0IEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24gZG9l cyBmb3IgdGhlCisgKiBsZWFkZXIncyBvd24gc3RhdHMuICBXaXRob3V0IHRoaXMsIHBlci13b3Jr ZXIgYnVmZmVyL1dBTCBzdGF0cyBzaG93biBieQorICogRVhQTEFJTiAoQU5BTFlaRSwgVkVSQk9T RSkgd291bGQgb25seSByZWZsZWN0IGVhY2ggbm9kZSdzIG93biBkaXJlY3QKKyAqIGFjdGl2aXR5 LCBub3QgaW5jbHVkaW5nIGNoaWxkcmVuLgorICoKKyAqIFRoaXMgbXVzdCBydW4gYWZ0ZXIgRXhl Y1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24gaGFzIHBvcHVsYXRlZAorICogd29ya2Vy X2luc3RydW1lbnQgZm9yIGFsbCBub2RlcyBpbiB0aGUgcGFyYWxsZWwgc3VidHJlZS4KKyAqLwor dm9pZAorRXhlY0ZpbmFsaXplV29ya2VySW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9kZSkK K3sKKwkodm9pZCkgRXhlY0ZpbmFsaXplV29ya2VySW5zdHJ1bWVudGF0aW9uX3dhbGtlcihub2Rl LCBOVUxMKTsKK30KKworc3RhdGljIGJvb2wKK0V4ZWNGaW5hbGl6ZVdvcmtlckluc3RydW1lbnRh dGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCVBsYW5TdGF0 ZSAgKnBhcmVudCA9IChQbGFuU3RhdGUgKikgY29udGV4dDsKKwlpbnQJCQludW1fd29ya2VyczsK KworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogUmVjdXJz ZSBpbnRvIGNoaWxkcmVuIGZpcnN0IChib3R0b20tdXAgYWNjdW11bGF0aW9uKSwgcGFzc2luZyB0 aGlzIG5vZGUKKwkgKiBhcyBwYXJlbnQgY29udGV4dCBpZiBpdCBoYXMgd29ya2VyX2luc3RydW1l bnQsIG90aGVyd2lzZSBwYXNzIHRocm91Z2gKKwkgKiB0aGUgcHJldmlvdXMgcGFyZW50LgorCSAq LworCXBsYW5zdGF0ZV90cmVlX3dhbGtlcihub2RlLCBFeGVjRmluYWxpemVXb3JrZXJJbnN0cnVt ZW50YXRpb25fd2Fsa2VyLAorCQkJCQkJICBub2RlLT53b3JrZXJfaW5zdHJ1bWVudCA/ICh2b2lk ICopIG5vZGUgOiBjb250ZXh0KTsKKworCWlmICghbm9kZS0+d29ya2VyX2luc3RydW1lbnQpCisJ CXJldHVybiBmYWxzZTsKKworCW51bV93b3JrZXJzID0gbm9kZS0+d29ya2VyX2luc3RydW1lbnQt Pm51bV93b3JrZXJzOworCisJLyogQWNjdW11bGF0ZSB0aGlzIG5vZGUncyBwZXItd29ya2VyIHN0 YXRzIHRvIHBhcmVudCdzIHBlci13b3JrZXIgc3RhdHMgKi8KKwlpZiAocGFyZW50ICYmIHBhcmVu dC0+d29ya2VyX2luc3RydW1lbnQpCisJeworCQlpbnQJCQlwYXJlbnRfd29ya2VycyA9IHBhcmVu dC0+d29ya2VyX2luc3RydW1lbnQtPm51bV93b3JrZXJzOworCisJCWZvciAoaW50IG4gPSAwOyBu IDwgTWluKG51bV93b3JrZXJzLCBwYXJlbnRfd29ya2Vycyk7IG4rKykKKwkJCUluc3RyQWNjdW1T dGFjaygmcGFyZW50LT53b3JrZXJfaW5zdHJ1bWVudC0+aW5zdHJ1bWVudFtuXS5pbnN0ciwKKwkJ CQkJCQkmbm9kZS0+d29ya2VyX2luc3RydW1lbnQtPmluc3RydW1lbnRbbl0uaW5zdHIpOworCX0K KworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIEV4ZWNTZXRUdXBsZUJvdW5kCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYwppbmRleCAxZWI2YjlmMWY0MC4uOGRiMmI3MGU1ZmUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNTEsNiArMTUxLDcgQEAgQ3JlYXRlRXhlY3V0b3JT dGF0ZSh2b2lkKQogCiAJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2lu c3RydW1lbnQgPSAwOworCWVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIgPSBOVUxMOwogCWVzdGF0ZS0+ ZXNfZmluaXNoZWQgPSBmYWxzZTsKIAogCWVzdGF0ZS0+ZXNfZXhwcmNvbnRleHRzID0gTklMOwpA QCAtMjI3LDYgKzIyOCwxNSBAQCBGcmVlRXhlY3V0b3JTdGF0ZShFU3RhdGUgKmVzdGF0ZSkKIAkJ ZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0gTlVMTDsKIAl9CiAKKwkvKgorCSAqIE1h a2Ugc3VyZSB0aGUgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQgZ2V0cyBmcmVlZC4gVGhpcyB1c3Vh bGx5IGdldHMKKwkgKiByZS1wYXJlbnRlZCB1bmRlciB0aGUgcGVyLXF1ZXJ5IGNvbnRleHQgaW4g SW5zdHJRdWVyeVN0b3BGaW5hbGl6ZSwgYnV0CisJICogdGhhdCB3b24ndCBoYXBwZW4gZHVyaW5n IEVYUExBSU4gKEJVRkZFUlMpIHNpbmNlIEV4ZWN1dG9yRmluaXNoIG5ldmVyCisJICogZ2V0cyBj YWxsZWQsIHNvIHdlIHdvdWxkIG90aGVyd2lzZSBsZWFrIGl0IGluIFRvcE1lbW9yeUNvbnRleHQu CisJICovCisJaWYgKGVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIgJiYgZXN0YXRlLT5lc19xdWVyeV9p bnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwkJTWVtb3J5Q29udGV4dERlbGV0ZShlc3RhdGUtPmVz X3F1ZXJ5X2luc3RyLT5pbnN0cl9jeHQpOworCiAJLyoKIAkgKiBGcmVlIHRoZSBwZXItcXVlcnkg bWVtb3J5IGNvbnRleHQsIHRoZXJlYnkgcmVsZWFzaW5nIGFsbCB3b3JraW5nCiAJICogbWVtb3J5 LCBpbmNsdWRpbmcgdGhlIEVTdGF0ZSBub2RlIGl0c2VsZi4KQEAgLTkxMyw3ICs5MjMsOCBAQCBF eGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQkJCQkgIHJlc3VsdFJlbGF0aW9uRGVzYywKIAkJCQkJICBydGksCiAJCQkJ CSAgTlVMTCwKLQkJCQkJICBlc3RhdGUtPmVzX2luc3RydW1lbnQpOworCQkJCQkgIGVzdGF0ZS0+ ZXNfaW5zdHJ1bWVudCwKKwkJCQkJICBlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKIAogCWlmIChl c3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnMgPT0gTlVMTCkKIAkJZXN0YXRlLT5lc19yZXN1bHRf cmVsYXRpb25zID0gKFJlc3VsdFJlbEluZm8gKiopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMK aW5kZXggZGQwOGZjOTlmYjIuLmVmMWE5NDgwMGYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVu dC5jCkBAIC0yMCwzMSArMjAsNTMgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNp bmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hv b2tzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNv d25lci5oIgogCi1CdWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOwotc3RhdGljIEJ1ZmZlclVzYWdl IHNhdmVfcGdCdWZmZXJVc2FnZTsKIFdhbFVzYWdlCXBnV2FsVXNhZ2U7Ci1zdGF0aWMgV2FsVXNh Z2Ugc2F2ZV9wZ1dhbFVzYWdlOworSW5zdHJ1bWVudGF0aW9uIGluc3RyX3RvcDsKK0luc3RyU3Rh Y2tTdGF0ZSBpbnN0cl9zdGFjayA9IHsKKwkuc3RhY2tfc3BhY2UgPSAwLAorCS5zdGFja19zaXpl ID0gMCwKKwkuZW50cmllcyA9IE5VTEwsCisJLmN1cnJlbnQgPSAmaW5zdHJfdG9wLAorfTsKIAot c3RhdGljIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVy VXNhZ2UgKmFkZCk7Ci1zdGF0aWMgdm9pZCBXYWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBXYWxV c2FnZSAqYWRkKTsKK3ZvaWQKK0luc3RyU3RhY2tHcm93KHZvaWQpCit7CisJaW50CQkJc3BhY2Ug PSBpbnN0cl9zdGFjay5zdGFja19zcGFjZTsKKworCUFzc2VydChpbnN0cl9zdGFjay5zdGFja19z aXplID49IGluc3RyX3N0YWNrLnN0YWNrX3NwYWNlKTsKKworCWlmIChpbnN0cl9zdGFjay5lbnRy aWVzID09IE5VTEwpCisJeworCQlzcGFjZSA9IDEwOwkJCQkvKiBBbGxvY2F0ZSBzdWZmaWNpZW50 IGluaXRpYWwgc3BhY2UgZm9yCisJCQkJCQkJCSAqIHR5cGljYWwgYWN0aXZpdHkgKi8KKwkJaW5z dHJfc3RhY2suZW50cmllcyA9IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LAor CQkJCQkJCQkJCQkJIHNpemVvZihJbnN0cnVtZW50YXRpb24gKikgKiBzcGFjZSk7CisJfQorCWVs c2UKKwl7CisJCXNwYWNlICo9IDI7CisJCWluc3RyX3N0YWNrLmVudHJpZXMgPSByZXBhbGxvY19h cnJheShpbnN0cl9zdGFjay5lbnRyaWVzLCBJbnN0cnVtZW50YXRpb24gKiwgc3BhY2UpOworCX0K IAorCS8qIFVwZGF0ZSBzdGFjayBzcGFjZSBhZnRlciBhbGxvY2F0aW9uIHN1Y2NlZWRlZCB0byBw cm90ZWN0IGFnYWluc3QgT09NcyAqLworCWluc3RyX3N0YWNrLnN0YWNrX3NwYWNlID0gc3BhY2U7 Cit9CiAKIC8qIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KLUlu c3RydW1lbnRhdGlvbiAqCi1JbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCitzdGF0 aWMgaW5saW5lIGJvb2wKK0luc3RyTmVlZFN0YWNrKGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7 Ci0JSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IHBhbGxvYzBfb2JqZWN0KEluc3RydW1lbnRhdGlv bik7Ci0KLQlJbnN0ckluaXRPcHRpb25zKGluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOwotCXJl dHVybiBpbnN0cjsKKwlyZXR1cm4gKGluc3RydW1lbnRfb3B0aW9ucyAmIChJTlNUUlVNRU5UX0JV RkZFUlMgfCBJTlNUUlVNRU5UX1dBTCkpICE9IDA7CiB9CiAKIHZvaWQKIEluc3RySW5pdE9wdGlv bnMoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKLQlp bnN0ci0+bmVlZF9idWZ1c2FnZSA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX0JV RkZFUlMpICE9IDA7Ci0JaW5zdHItPm5lZWRfd2FsdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25z ICYgSU5TVFJVTUVOVF9XQUwpICE9IDA7CisJaW5zdHItPm5lZWRfc3RhY2sgPSBJbnN0ck5lZWRT dGFjayhpbnN0cnVtZW50X29wdGlvbnMpOwogCWluc3RyLT5uZWVkX3RpbWVyID0gKGluc3RydW1l bnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfVElNRVIpICE9IDA7CiB9CiAKQEAgLTU5LDEyICs4MSw4 IEBAIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJCUlOU1RSX1RJTUVfU0VU X0NVUlJFTlRfRkFTVChpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CiAKLQkvKiBzYXZlIGJ1ZmZlciB1 c2FnZSB0b3RhbHMgYXQgc3RhcnQsIGlmIG5lZWRlZCAqLwotCWlmIChpbnN0ci0+bmVlZF9idWZ1 c2FnZSkKLQkJaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQotCWlmIChp bnN0ci0+bmVlZF93YWx1c2FnZSkKLQkJaW5zdHItPndhbHVzYWdlX3N0YXJ0ID0gcGdXYWxVc2Fn ZTsKKwlpZiAoaW5zdHItPm5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNrKGluc3RyKTsKIH0K IAogLyoKQEAgLTg4LDE0ICsxMDYsOSBAQCBJbnN0clN0b3BDb21tb24oSW5zdHJ1bWVudGF0aW9u ICppbnN0ciwgaW5zdHJfdGltZSAqYWNjdW1fdGltZSkKIAkJSU5TVFJfVElNRV9TRVRfWkVSTyhp bnN0ci0+c3RhcnR0aW1lKTsKIAl9CiAKLQkvKiBBZGQgZGVsdGEgb2YgYnVmZmVyIHVzYWdlIHNp bmNlIEluc3RyU3RhcnQgdG8gdGhlIHRvdGFscyAqLwotCWlmIChpbnN0ci0+bmVlZF9idWZ1c2Fn ZSkKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmluc3RyLT5idWZ1c2FnZSwKLQkJCQkJCQkgJnBn QnVmZmVyVXNhZ2UsICZpbnN0ci0+YnVmdXNhZ2Vfc3RhcnQpOwotCi0JaWYgKGluc3RyLT5uZWVk X3dhbHVzYWdlKQotCQlXYWxVc2FnZUFjY3VtRGlmZigmaW5zdHItPndhbHVzYWdlLAotCQkJCQkJ ICAmcGdXYWxVc2FnZSwgJmluc3RyLT53YWx1c2FnZV9zdGFydCk7CisJLyogcG9wIHRoZSBzdGFj aywgdW5sZXNzIEluc3RyU3RvcEZpbmFsaXplIHByZXZpb3VzbHkgY2xlYW5lZCB1cCAqLworCWlm IChpbnN0ci0+b25fc3RhY2spCisJCUluc3RyUG9wU3RhY2soaW5zdHIpOwogfQogCiB2b2lkCkBA IC0xMDQsMTYgKzExNywyNzkgQEAgSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJ SW5zdHJTdG9wQ29tbW9uKGluc3RyLCAmaW5zdHItPnRvdGFsKTsKIH0KIAorLyoKKyAqIFN0b3Bz IGluc3RydW1lbnRhdGlvbiwgZmluYWxpemVzIHRoZSBzdGFjayBlbnRyeSBhbmQgYWNjdW11bGF0 ZXMgdG8gaXRzIHBhcmVudC4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBpbnRlbnRpb25hbGx5IGFs bG93cyBwYXNzaW5nIGEgc3RhY2sgdGhhdCBpcyBub3QgdGhlIGN1cnJlbnQKKyAqIHRvcCwgYXMg Y2FuIGhhcHBlbiB3aXRoIFBHX0ZJTkFMTFksIG9yIHJlc291cmNlIG93bmVycywgd2hpY2ggZG9u J3QgaGF2ZSBhCisgKiBndWFyYW50ZWVkIGNsZWFudXAgb3JkZXIuCisgKi8KK3ZvaWQKK0luc3Ry U3RvcEZpbmFsaXplKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJLyoKKwkgKiBJZiBvdXIg Y3VycmVudCBub2RlIGlzIG9uIHRoZSBzdGFjaywgbWFrZSBzdXJlIHdlIHJlc2V0IHRoZSBzdGFj ayB0bworCSAqIHRoZSBwYXJlbnQgb2Ygd2hpY2hldmVyIG9mIHRoZSByZWxlYXNlZCBzdGFjayBl bnRyaWVzIGhhcyB0aGUgbG93ZXN0CisJICogaW5kZXgKKwkgKi8KKwlpZiAoaW5zdHItPm9uX3N0 YWNrKQorCXsKKwkJaW50CQkJaWR4ID0gLTE7CisKKwkJZm9yIChpbnQgaSA9IGluc3RyX3N0YWNr LnN0YWNrX3NpemUgLSAxOyBpID49IDA7IGktLSkKKwkJeworCQkJaWYgKGluc3RyX3N0YWNrLmVu dHJpZXNbaV0gPT0gaW5zdHIpCisJCQl7CisJCQkJaWR4ID0gaTsKKwkJCQlicmVhazsKKwkJCX0K KwkJfQorCisJCWlmIChpZHggPCAwKQorCQkJZWxvZyhFUlJPUiwgImluc3RydW1lbnRhdGlvbiBl bnRyeSBub3QgZm91bmQgb24gc3RhY2siKTsKKworCQkvKiBDbGVhciBvbl9zdGFjayBmb3IgYW55 IGludGVybWVkaWF0ZSBlbnRyaWVzIHdlJ3JlIHNraXBwaW5nIG92ZXIgKi8KKwkJZm9yIChpbnQg aSA9IGluc3RyX3N0YWNrLnN0YWNrX3NpemUgLSAxOyBpID4gaWR4OyBpLS0pCisJCQlpbnN0cl9z dGFjay5lbnRyaWVzW2ldLT5vbl9zdGFjayA9IGZhbHNlOworCisJCXdoaWxlIChpbnN0cl9zdGFj ay5zdGFja19zaXplID4gaWR4ICsgMSkKKwkJCWluc3RyX3N0YWNrLnN0YWNrX3NpemUtLTsKKwl9 CisKKwlJbnN0clN0b3AoaW5zdHIpOworCisJLyoKKwkgKiBBY2N1bXVsYXRlIGFsbCBpbnN0cnVt ZW50YXRpb24gdG8gdGhlIGN1cnJlbnRseSBhY3RpdmUgaW5zdHJ1bWVudGF0aW9uLAorCSAqIHNv IHRoYXQgY2FsbGVycyBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGFjdGl2aXR5LCBldmVuIGFm dGVyIGFuIGFib3J0CisJICovCisJSW5zdHJBY2N1bVN0YWNrKGluc3RyX3N0YWNrLmN1cnJlbnQs IGluc3RyKTsKK30KKworLyoKKyAqIEZpbmFsaXplIGNoaWxkIGluc3RydW1lbnRhdGlvbiBieSBh Y2N1bXVsYXRpbmcgYnVmZmVyL1dBTCB1c2FnZSB0byB0aGUKKyAqIHByb3ZpZGVkIGluc3RydW1l bnRhdGlvbiwgd2hpY2ggbWF5IGJlIHRoZSBjdXJyZW50IGVudHJ5LCBvciBvbmUgdGhlIGNhbGxl cgorICogdHJlYXRzIGFzIGEgcGFyZW50IGFuZCB3aWxsIGFkZCB0byB0aGUgdG90YWxzIGxhdGVy LgorICoKKyAqIEFsc28gZGVsZXRlcyB0aGUgdW5maW5hbGl6ZWQgZW50cnkgdG8gYXZvaWQgZG91 YmxlIGNvdW50aW5nIGluIGFuIGFib3J0CisgKiBzaXR1YXRpb24sIGUuZy4gZHVyaW5nIGV4ZWN1 dG9yIGZpbmlzaC4KKyAqLwordm9pZAorSW5zdHJGaW5hbGl6ZUNoaWxkKEluc3RydW1lbnRhdGlv biAqaW5zdHIsIEluc3RydW1lbnRhdGlvbiAqcGFyZW50KQoreworCWlmIChpbnN0ci0+bmVlZF9z dGFjaykKKwl7CisJCWlmICghZGxpc3Rfbm9kZV9pc19kZXRhY2hlZCgmaW5zdHItPnVuZmluYWxp emVkX2VudHJ5KSkKKwkJCWRsaXN0X2RlbGV0ZV90aG9yb3VnaGx5KCZpbnN0ci0+dW5maW5hbGl6 ZWRfZW50cnkpOworCisJCUluc3RyQWNjdW1TdGFjayhwYXJlbnQsIGluc3RyKTsKKwl9Cit9CisK KworLyogUXVlcnkgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCisKKy8qCisgKiBVc2UgUmVz b3VyY2VPd25lciBtZWNoYW5pc20gdG8gY29ycmVjdGx5IHJlc2V0IGluc3RyX3N0YWNrIG9uIGFi b3J0LgorICovCitzdGF0aWMgdm9pZCBSZXNPd25lclJlbGVhc2VJbnN0cnVtZW50YXRpb24oRGF0 dW0gcmVzKTsKK3N0YXRpYyBjb25zdCBSZXNvdXJjZU93bmVyRGVzYyBpbnN0cnVtZW50YXRpb25f cmVzb3duZXJfZGVzYyA9Cit7CisJLm5hbWUgPSAiaW5zdHJ1bWVudGF0aW9uIiwKKwkucmVsZWFz ZV9waGFzZSA9IFJFU09VUkNFX1JFTEVBU0VfQUZURVJfTE9DS1MsCisJLnJlbGVhc2VfcHJpb3Jp dHkgPSBSRUxFQVNFX1BSSU9fSU5TVFJVTUVOVEFUSU9OLAorCS5SZWxlYXNlUmVzb3VyY2UgPSBS ZXNPd25lclJlbGVhc2VJbnN0cnVtZW50YXRpb24sCisJLkRlYnVnUHJpbnQgPSBOVUxMLAkJCS8q IGRlZmF1bHQgbWVzc2FnZSBpcyBmaW5lICovCit9OworCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jl c291cmNlT3duZXJSZW1lbWJlckluc3RydW1lbnRhdGlvbihSZXNvdXJjZU93bmVyIG93bmVyLCBR dWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQoreworCVJlc291cmNlT3duZXJSZW1lbWJlcihv d25lciwgUG9pbnRlckdldERhdHVtKHFpbnN0ciksICZpbnN0cnVtZW50YXRpb25fcmVzb3duZXJf ZGVzYyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorUmVzb3VyY2VPd25lckZvcmdldEluc3Ry dW1lbnRhdGlvbihSZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUluc3RydW1lbnRhdGlvbiAqcWlu c3RyKQoreworCVJlc291cmNlT3duZXJGb3JnZXQob3duZXIsIFBvaW50ZXJHZXREYXR1bShxaW5z dHIpLCAmaW5zdHJ1bWVudGF0aW9uX3Jlc293bmVyX2Rlc2MpOworfQorCitzdGF0aWMgdm9pZAor UmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9uKERhdHVtIHJlcykKK3sKKwlRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyID0gKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICopIERhdHVtR2V0UG9p bnRlcihyZXMpOworCU1lbW9yeUNvbnRleHQgaW5zdHJfY3h0ID0gcWluc3RyLT5pbnN0cl9jeHQ7 CisJZGxpc3RfbXV0YWJsZV9pdGVyIGl0ZXI7CisKKwkvKiBBY2N1bXVsYXRlIGRhdGEgZnJvbSBh bGwgdW5maW5hbGl6ZWQgY2hpbGQgZW50cmllcyAobm9kZXMsIHRyaWdnZXJzKSAqLworCWRsaXN0 X2ZvcmVhY2hfbW9kaWZ5KGl0ZXIsICZxaW5zdHItPnVuZmluYWxpemVkX2VudHJpZXMpCisJewor CQlJbnN0cnVtZW50YXRpb24gKmNoaWxkID0gZGxpc3RfY29udGFpbmVyKEluc3RydW1lbnRhdGlv biwgdW5maW5hbGl6ZWRfZW50cnksIGl0ZXIuY3VyKTsKKworCQlJbnN0ckFjY3VtU3RhY2soJnFp bnN0ci0+aW5zdHIsIGNoaWxkKTsKKwl9CisKKwkvKiBFbnN1cmUgdGhlIHN0YWNrIGlzIHJlc2V0 IGFzIGV4cGVjdGVkLCBhbmQgd2UgYWNjdW11bGF0ZSB0byB0aGUgcGFyZW50ICovCisJSW5zdHJT dG9wRmluYWxpemUoJnFpbnN0ci0+aW5zdHIpOworCisJLyoKKwkgKiBEZXN0cm95IHRoZSBkZWRp Y2F0ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQsIHdoaWNoIGZyZWVzIHRoZQorCSAqIFF1ZXJ5 SW5zdHJ1bWVudGF0aW9uIGFuZCBhbGwgY2hpbGQgYWxsb2NhdGlvbnMuCisJICovCisJTWVtb3J5 Q29udGV4dERlbGV0ZShpbnN0cl9jeHQpOworfQorCitRdWVyeUluc3RydW1lbnRhdGlvbiAqCitJ bnN0clF1ZXJ5QWxsb2MoaW50IGluc3RydW1lbnRfb3B0aW9ucykKK3sKKwlRdWVyeUluc3RydW1l bnRhdGlvbiAqaW5zdHI7CisJTWVtb3J5Q29udGV4dCBpbnN0cl9jeHQ7CisKKwkvKgorCSAqIFdo ZW4gdGhlIGluc3RydW1lbnRhdGlvbiBzdGFjayBpcyB1c2VkLCBjcmVhdGUgYSBkZWRpY2F0ZWQg bWVtb3J5CisJICogY29udGV4dCBmb3IgdGhpcyBxdWVyeSdzIGluc3RydW1lbnRhdGlvbiBhbGxv Y2F0aW9ucy4gVGhpcyBjb250ZXh0IGlzIGEKKwkgKiBjaGlsZCBvZiBUb3BNZW1vcnlDb250ZXh0 IHNvIGl0IHN1cnZpdmVzIHRyYW5zYWN0aW9uIGFib3J0IOKAlAorCSAqIFJlc291cmNlT3duZXIg cmVsZWFzZSBuZWVkcyB0byBhY2Nlc3MgaXQuCisJICoKKwkgKiBGb3Igc2ltcGxlciBjYXNlcyAo dGltZXIvcm93cyBvbmx5KSwgdXNlIHRoZSBjdXJyZW50IG1lbW9yeSBjb250ZXh0LgorCSAqCisJ ICogQWxsIGNoaWxkIGluc3RydW1lbnRhdGlvbiBhbGxvY2F0aW9ucyAobm9kZXMsIHRyaWdnZXJz LCBldGMpIG11c3QgYmUKKwkgKiBhbGxvY2F0ZWQgd2l0aGluIHRoaXMgY29udGV4dCB0byBlbnN1 cmUgY29ycmVjdCBjbGVhbiB1cCBvbiBhYm9ydC4KKwkgKi8KKwlpZiAoSW5zdHJOZWVkU3RhY2so aW5zdHJ1bWVudF9vcHRpb25zKSkKKwkJaW5zdHJfY3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRl KFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJICAiSW5zdHJ1bWVudGF0aW9uIiwKKwkJCQkJ CQkJCQkgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKKwllbHNlCisJCWluc3RyX2N4dCA9IEN1cnJl bnRNZW1vcnlDb250ZXh0OworCisJaW5zdHIgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGluc3Ry X2N4dCwgc2l6ZW9mKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKSk7CisJaW5zdHItPmluc3RydW1lbnRf b3B0aW9ucyA9IGluc3RydW1lbnRfb3B0aW9uczsKKwlpbnN0ci0+aW5zdHJfY3h0ID0gaW5zdHJf Y3h0OworCisJSW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0cnVtZW50X29wdGlv bnMpOworCWRsaXN0X2luaXQoJmluc3RyLT51bmZpbmFsaXplZF9lbnRyaWVzKTsKKworCXJldHVy biBpbnN0cjsKK30KKwordm9pZAorSW5zdHJRdWVyeVN0YXJ0KFF1ZXJ5SW5zdHJ1bWVudGF0aW9u ICpxaW5zdHIpCit7CisJSW5zdHJTdGFydCgmcWluc3RyLT5pbnN0cik7CisKKwlpZiAocWluc3Ry LT5pbnN0ci5uZWVkX3N0YWNrKQorCXsKKwkJQXNzZXJ0KEN1cnJlbnRSZXNvdXJjZU93bmVyICE9 IE5VTEwpOworCQlxaW5zdHItPm93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisKKwkJUmVz b3VyY2VPd25lckVubGFyZ2UocWluc3RyLT5vd25lcik7CisJCVJlc291cmNlT3duZXJSZW1lbWJl ckluc3RydW1lbnRhdGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCX0KK30KKwordm9pZAor SW5zdHJRdWVyeVN0b3AoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlJbnN0clN0 b3AoJnFpbnN0ci0+aW5zdHIpOworCisJaWYgKHFpbnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwl7 CisJCUFzc2VydChxaW5zdHItPm93bmVyICE9IE5VTEwpOworCQlSZXNvdXJjZU93bmVyRm9yZ2V0 SW5zdHJ1bWVudGF0aW9uKHFpbnN0ci0+b3duZXIsIHFpbnN0cik7CisJCXFpbnN0ci0+b3duZXIg PSBOVUxMOworCX0KK30KKwordm9pZAorSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyKQoreworCUluc3RyU3RvcEZpbmFsaXplKCZxaW5zdHItPmluc3Ry KTsKKworCWlmICghcWluc3RyLT5pbnN0ci5uZWVkX3N0YWNrKQorCXsKKwkJQXNzZXJ0KHFpbnN0 ci0+b3duZXIgPT0gTlVMTCk7CisJCXJldHVybjsKKwl9CisKKwlBc3NlcnQocWluc3RyLT5vd25l ciAhPSBOVUxMKTsKKwlSZXNvdXJjZU93bmVyRm9yZ2V0SW5zdHJ1bWVudGF0aW9uKHFpbnN0ci0+ b3duZXIsIHFpbnN0cik7CisJcWluc3RyLT5vd25lciA9IE5VTEw7CisKKwkvKgorCSAqIFJlcGFy ZW50IHRoZSBkZWRpY2F0ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQgdW5kZXIgdGhlIGN1cnJl bnQgbWVtb3J5CisJICogY29udGV4dCwgc28gdGhhdCBpdHMgbGlmZXRpbWUgaXMgbm93IHRpZWQg dG8gdGhlIGNhbGxlcidzIGNvbnRleHQKKwkgKiByYXRoZXIgdGhhbiBUb3BNZW1vcnlDb250ZXh0 LgorCSAqLworCU1lbW9yeUNvbnRleHRTZXRQYXJlbnQocWluc3RyLT5pbnN0cl9jeHQsIEN1cnJl bnRNZW1vcnlDb250ZXh0KTsKK30KKworLyoKKyAqIFJlZ2lzdGVyIGEgY2hpbGQgSW5zdHJ1bWVu dGF0aW9uIGVudHJ5IGZvciBhYm9ydCBwcm9jZXNzaW5nLgorICoKKyAqIE9uIGFib3J0LCBSZXNP d25lclJlbGVhc2VJbnN0cnVtZW50YXRpb24gd2lsbCB3YWxrIHRoZSBwYXJlbnQncyBsaXN0IHRv CisgKiByZWNvdmVyIGJ1ZmZlci9XQUwgZGF0YSBmcm9tIGVudHJpZXMgdGhhdCB3ZXJlIG5ldmVy IGZpbmFsaXplZCwgaW4gb3JkZXIgZm9yCisgKiBhZ2dyZWdhdGUgdG90YWxzIHRvIGJlIGFjY3Vy YXRlIGRlc3BpdGUgdGhlIHF1ZXJ5IGVycm9yaW5nIG91dC4KKyAqLwordm9pZAorSW5zdHJRdWVy eVJlbWVtYmVyQ2hpbGQoUXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCwgSW5zdHJ1bWVudGF0 aW9uICpjaGlsZCkKK3sKKwlpZiAoY2hpbGQtPm5lZWRfc3RhY2spCisJCWRsaXN0X3B1c2hfaGVh ZCgmcGFyZW50LT51bmZpbmFsaXplZF9lbnRyaWVzLCAmY2hpbGQtPnVuZmluYWxpemVkX2VudHJ5 KTsKK30KKworLyogc3RhcnQgaW5zdHJ1bWVudGF0aW9uIGR1cmluZyBwYXJhbGxlbCBleGVjdXRv ciBzdGFydHVwICovCitRdWVyeUluc3RydW1lbnRhdGlvbiAqCitJbnN0clN0YXJ0UGFyYWxsZWxR dWVyeSh2b2lkKQoreworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIgPSBJbnN0clF1ZXJ5 QWxsb2MoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOworCisJSW5zdHJRdWVy eVN0YXJ0KHFpbnN0cik7CisJcmV0dXJuIHFpbnN0cjsKK30KKworLyogcmVwb3J0IHVzYWdlIGFm dGVyIHBhcmFsbGVsIGV4ZWN1dG9yIHNodXRkb3duICovCit2b2lkCitJbnN0ckVuZFBhcmFsbGVs UXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdl LCBXYWxVc2FnZSAqd2FsdXNhZ2UpCit7CisJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShxaW5zdHIp OworCW1lbWNweShidWZ1c2FnZSwgJnFpbnN0ci0+aW5zdHIuYnVmdXNhZ2UsIHNpemVvZihCdWZm ZXJVc2FnZSkpOworCW1lbWNweSh3YWx1c2FnZSwgJnFpbnN0ci0+aW5zdHIud2FsdXNhZ2UsIHNp emVvZihXYWxVc2FnZSkpOworfQorCisvKgorICogQWNjdW11bGF0ZSB3b3JrIGRvbmUgYnkgcGFy YWxsZWwgd29ya2VycyBpbiB0aGUgbGVhZGVyJ3Mgc3RhdHMuCisgKgorICogTm90ZSB0aGF0IHdo YXQgZ2V0cyBhZGRlZCBoZXJlIGVmZmVjdGl2ZWx5IGRlcGVuZHMgb24gd2hldGhlciBwZXItbm9k ZQorICogaW5zdHJ1bWVudGF0aW9uIGlzIGFjdGl2ZS4gSWYgaXQncyBhY3RpdmUgdGhlIHBhcmFs bGVsIHdvcmtlciBpbnRlbnRpb25hbGx5CisgKiBza2lwcyBFeGVjRmluYWxpemVOb2RlSW5zdHJ1 bWVudGF0aW9uIG9uIGV4ZWN1dG9yIHNodXRkb3duLCBiZWNhdXNlIGl0IHdvdWxkCisgKiBjYXVz ZSBkb3VibGUgY291bnRpbmcuIEluc3RlYWQsIHRoaXMgb25seSBhY2N1bXVsYXRlcyBhbnkgZXh0 cmEgYWN0aXZpdHkKKyAqIG91dHNpZGUgb2Ygbm9kZXMuCisgKgorICogT3RoZXJ3aXNlIHRoaXMg aXMgcmVzcG9uc2libGUgZm9yIG1ha2luZyBzdXJlIHRoYXQgdGhlIGNvbXBsZXRlIHF1ZXJ5Cisg KiBhY3Rpdml0eSBpcyBhY2N1bXVsYXRlZC4KKyAqLwordm9pZAorSW5zdHJBY2N1bVBhcmFsbGVs UXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCit7CisJQnVm ZmVyVXNhZ2VBZGQoJmluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLCBidWZ1c2FnZSk7CisJ V2FsVXNhZ2VBZGQoJmluc3RyX3N0YWNrLmN1cnJlbnQtPndhbHVzYWdlLCB3YWx1c2FnZSk7CisK KwlXYWxVc2FnZUFkZCgmcGdXYWxVc2FnZSwgd2FsdXNhZ2UpOworfQorCiAvKiBOb2RlIGluc3Ry dW1lbnRhdGlvbiBoYW5kbGluZyAqLwogCiAvKiBBbGxvY2F0ZSBuZXcgbm9kZSBpbnN0cnVtZW50 YXRpb24gc3RydWN0dXJlICovCiBOb2RlSW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2NOb2Rl KGludCBpbnN0cnVtZW50X29wdGlvbnMsIGJvb2wgYXN5bmNfbW9kZSkKK0luc3RyQWxsb2NOb2Rl KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMsCisJ CQkgICBib29sIGFzeW5jX21vZGUpCiB7Ci0JTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBw YWxsb2Nfb2JqZWN0KE5vZGVJbnN0cnVtZW50YXRpb24pOworCU5vZGVJbnN0cnVtZW50YXRpb24g Kmluc3RyID0gTWVtb3J5Q29udGV4dEFsbG9jKHFpbnN0ci0+aW5zdHJfY3h0LCBzaXplb2YoTm9k ZUluc3RydW1lbnRhdGlvbikpOwogCiAJSW5zdHJJbml0Tm9kZShpbnN0ciwgaW5zdHJ1bWVudF9v cHRpb25zLCBhc3luY19tb2RlKTsKIAorCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKHFpbnN0ciwg Jmluc3RyLT5pbnN0cik7CisKIAlyZXR1cm4gaW5zdHI7CiB9CiAKQEAgLTEzMyw2ICs0MDksNyBA QCBJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAlJbnN0clN0YXJ0 KCZpbnN0ci0+aW5zdHIpOwogfQogCisKIC8qIEV4aXQgZnJvbSBhIHBsYW4gbm9kZSAqLwogaW5s aW5lIHZvaWQKIEluc3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJs ZSBuVHVwbGVzKQpAQCAtMjAzLDggKzQ4MCw4IEBAIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0cikKIAlpZiAoIWluc3RyLT5ydW5uaW5nKQogCQlyZXR1cm47CiAKLQlpZiAo IUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKSkKLQkJZWxvZyhFUlJP UiwgIkluc3RyRW5kTG9vcCBjYWxsZWQgb24gcnVubmluZyBub2RlIik7CisJLyogRW5zdXJlIElu c3RyTm9kZVN0b3Agd2FzIGNhbGxlZCAqLworCUFzc2VydChJTlNUUl9USU1FX0lTX1pFUk8oaW5z dHItPmluc3RyLnN0YXJ0dGltZSkpOwogCiAJLyogQWNjdW11bGF0ZSBwZXItY3ljbGUgc3RhdGlz dGljcyBpbnRvIHRvdGFscyAqLwogCUlOU1RSX1RJTUVfQUREKGluc3RyLT5zdGFydHVwLCBpbnN0 ci0+Zmlyc3R0dXBsZSk7CkBAIC0yMzcsMjIgKzUxNCwzMCBAQCBJbnN0ckFnZ05vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpCiAJZHN0LT5uZmls dGVyZWQxICs9IGFkZC0+bmZpbHRlcmVkMTsKIAlkc3QtPm5maWx0ZXJlZDIgKz0gYWRkLT5uZmls dGVyZWQyOwogCi0JaWYgKGRzdC0+aW5zdHIubmVlZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VB ZGQoJmRzdC0+aW5zdHIuYnVmdXNhZ2UsICZhZGQtPmluc3RyLmJ1ZnVzYWdlKTsKLQotCWlmIChk c3QtPmluc3RyLm5lZWRfd2FsdXNhZ2UpCi0JCVdhbFVzYWdlQWRkKCZkc3QtPmluc3RyLndhbHVz YWdlLCAmYWRkLT5pbnN0ci53YWx1c2FnZSk7CisJaWYgKGRzdC0+aW5zdHIubmVlZF9zdGFjaykK KwkJSW5zdHJBY2N1bVN0YWNrKCZkc3QtPmluc3RyLCAmYWRkLT5pbnN0cik7CiB9CiAKIC8qIFRy aWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICoKLUluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQorSW5z dHJBbGxvY1RyaWdnZXIoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgaW50IGluc3RydW1l bnRfb3B0aW9ucywgaW50IG4pCiB7Ci0JVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciA9 IHBhbGxvYzBfYXJyYXkoVHJpZ2dlckluc3RydW1lbnRhdGlvbiwgbik7CisJVHJpZ2dlckluc3Ry dW1lbnRhdGlvbiAqdGdpbnN0cjsKIAlpbnQJCQlpOwogCisJLyoKKwkgKiBBbGxvY2F0ZSBpbiB0 aGUgcXVlcnkncyBkZWRpY2F0ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQgc28gYWxsCisJICog aW5zdHJ1bWVudGF0aW9uIGRhdGEgaXMgZ3JvdXBlZCB0b2dldGhlciBhbmQgY2xlYW5lZCB1cCBh cyBhIHVuaXQuCisJICovCisJQXNzZXJ0KHFpbnN0ciAhPSBOVUxMICYmIHFpbnN0ci0+aW5zdHJf Y3h0ICE9IE5VTEwpOworCXRnaW5zdHIgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKHFpbnN0ci0+ aW5zdHJfY3h0LAorCQkJCQkJCQkJIG4gKiBzaXplb2YoVHJpZ2dlckluc3RydW1lbnRhdGlvbikp OworCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwl7CiAJCUluc3RySW5pdE9wdGlvbnMoJnRn aW5zdHJbaV0uaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJCUluc3RyUXVlcnlSZW1lbWJl ckNoaWxkKHFpbnN0ciwgJnRnaW5zdHJbaV0uaW5zdHIpOworCX0KIAogCXJldHVybiB0Z2luc3Ry OwogfQpAQCAtMjY2LDM4ICs1NTEsMzAgQEAgSW5zdHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3Ry dW1lbnRhdGlvbiAqdGdpbnN0cikKIHZvaWQKIEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlckluc3Ry dW1lbnRhdGlvbiAqdGdpbnN0ciwgaW50NjQgZmlyaW5ncykKIHsKKwkvKgorCSAqIFRoaXMgdHJp Z2dlciBtYXkgYmUgY2FsbGVkIGFnYWluLCBzbyB3ZSBkb24ndCBmaW5hbGl6ZSBpbnN0cnVtZW50 YXRpb24KKwkgKiBoZXJlLiBBY2N1bXVsYXRpb24gdG8gdGhlIHBhcmVudCBoYXBwZW5zIGF0IEV4 ZWN1dG9yRmluaXNoIHRocm91Z2gKKwkgKiBFeGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uLgorCSAqLwogCUluc3RyU3RvcCgmdGdpbnN0ci0+aW5zdHIpOwogCXRnaW5zdHItPmZpcmlu Z3MgKz0gZmlyaW5nczsKIH0KIAotLyogbm90ZSBjdXJyZW50IHZhbHVlcyBkdXJpbmcgcGFyYWxs ZWwgZXhlY3V0b3Igc3RhcnR1cCAqLwogdm9pZAotSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9p ZCkKK0luc3RyQWNjdW1TdGFjayhJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9u ICphZGQpCiB7Ci0Jc2F2ZV9wZ0J1ZmZlclVzYWdlID0gcGdCdWZmZXJVc2FnZTsKLQlzYXZlX3Bn V2FsVXNhZ2UgPSBwZ1dhbFVzYWdlOwotfQorCUFzc2VydChkc3QgIT0gTlVMTCk7CisJQXNzZXJ0 KGFkZCAhPSBOVUxMKTsKIAotLyogcmVwb3J0IHVzYWdlIGFmdGVyIHBhcmFsbGVsIGV4ZWN1dG9y IHNodXRkb3duICovCi12b2lkCi1JbnN0ckVuZFBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1 ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCi17Ci0JbWVtc2V0KGJ1ZnVzYWdlLCAwLCBzaXpl b2YoQnVmZmVyVXNhZ2UpKTsKLQlCdWZmZXJVc2FnZUFjY3VtRGlmZihidWZ1c2FnZSwgJnBnQnVm ZmVyVXNhZ2UsICZzYXZlX3BnQnVmZmVyVXNhZ2UpOwotCW1lbXNldCh3YWx1c2FnZSwgMCwgc2l6 ZW9mKFdhbFVzYWdlKSk7Ci0JV2FsVXNhZ2VBY2N1bURpZmYod2FsdXNhZ2UsICZwZ1dhbFVzYWdl LCAmc2F2ZV9wZ1dhbFVzYWdlKTsKLX0KKwlpZiAoIWFkZC0+bmVlZF9zdGFjaykKKwkJcmV0dXJu OwogCi0vKiBhY2N1bXVsYXRlIHdvcmsgZG9uZSBieSB3b3JrZXJzIGluIGxlYWRlcidzIHN0YXRz ICovCi12b2lkCi1JbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2Us IFdhbFVzYWdlICp3YWx1c2FnZSkKLXsKLQlCdWZmZXJVc2FnZUFkZCgmcGdCdWZmZXJVc2FnZSwg YnVmdXNhZ2UpOwotCVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdlLCB3YWx1c2FnZSk7CisJQnVmZmVy VXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsICZhZGQtPmJ1ZnVzYWdlKTsKKwlXYWxVc2FnZUFkZCgm ZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNhZ2UpOwogfQogCiAvKiBkc3QgKz0gYWRkICovCi1z dGF0aWMgdm9pZAordm9pZAogQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3Qg QnVmZmVyVXNhZ2UgKmFkZCkKIHsKIAlkc3QtPnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJl ZF9ibGtzX2hpdDsKQEAgLTMxOCwzOSArNTk1LDkgQEAgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNh Z2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCkKIAlJTlNUUl9USU1FX0FERChkc3QtPnRl bXBfYmxrX3dyaXRlX3RpbWUsIGFkZC0+dGVtcF9ibGtfd3JpdGVfdGltZSk7CiB9CiAKLS8qIGRz dCArPSBhZGQgLSBzdWIgKi8KKy8qIGRzdCArPSBhZGQgKi8KIHZvaWQKLUJ1ZmZlclVzYWdlQWNj dW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCi0JCQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqYWRkLAot CQkJCQkgY29uc3QgQnVmZmVyVXNhZ2UgKnN1YikKLXsKLQlkc3QtPnNoYXJlZF9ibGtzX2hpdCAr PSBhZGQtPnNoYXJlZF9ibGtzX2hpdCAtIHN1Yi0+c2hhcmVkX2Jsa3NfaGl0OwotCWRzdC0+c2hh cmVkX2Jsa3NfcmVhZCArPSBhZGQtPnNoYXJlZF9ibGtzX3JlYWQgLSBzdWItPnNoYXJlZF9ibGtz X3JlYWQ7Ci0JZHN0LT5zaGFyZWRfYmxrc19kaXJ0aWVkICs9IGFkZC0+c2hhcmVkX2Jsa3NfZGly dGllZCAtIHN1Yi0+c2hhcmVkX2Jsa3NfZGlydGllZDsKLQlkc3QtPnNoYXJlZF9ibGtzX3dyaXR0 ZW4gKz0gYWRkLT5zaGFyZWRfYmxrc193cml0dGVuIC0gc3ViLT5zaGFyZWRfYmxrc193cml0dGVu OwotCWRzdC0+bG9jYWxfYmxrc19oaXQgKz0gYWRkLT5sb2NhbF9ibGtzX2hpdCAtIHN1Yi0+bG9j YWxfYmxrc19oaXQ7Ci0JZHN0LT5sb2NhbF9ibGtzX3JlYWQgKz0gYWRkLT5sb2NhbF9ibGtzX3Jl YWQgLSBzdWItPmxvY2FsX2Jsa3NfcmVhZDsKLQlkc3QtPmxvY2FsX2Jsa3NfZGlydGllZCArPSBh ZGQtPmxvY2FsX2Jsa3NfZGlydGllZCAtIHN1Yi0+bG9jYWxfYmxrc19kaXJ0aWVkOwotCWRzdC0+ bG9jYWxfYmxrc193cml0dGVuICs9IGFkZC0+bG9jYWxfYmxrc193cml0dGVuIC0gc3ViLT5sb2Nh bF9ibGtzX3dyaXR0ZW47Ci0JZHN0LT50ZW1wX2Jsa3NfcmVhZCArPSBhZGQtPnRlbXBfYmxrc19y ZWFkIC0gc3ViLT50ZW1wX2Jsa3NfcmVhZDsKLQlkc3QtPnRlbXBfYmxrc193cml0dGVuICs9IGFk ZC0+dGVtcF9ibGtzX3dyaXR0ZW4gLSBzdWItPnRlbXBfYmxrc193cml0dGVuOwotCUlOU1RSX1RJ TUVfQUNDVU1fRElGRihkc3QtPnNoYXJlZF9ibGtfcmVhZF90aW1lLAotCQkJCQkJICBhZGQtPnNo YXJlZF9ibGtfcmVhZF90aW1lLCBzdWItPnNoYXJlZF9ibGtfcmVhZF90aW1lKTsKLQlJTlNUUl9U SU1FX0FDQ1VNX0RJRkYoZHN0LT5zaGFyZWRfYmxrX3dyaXRlX3RpbWUsCi0JCQkJCQkgIGFkZC0+ c2hhcmVkX2Jsa193cml0ZV90aW1lLCBzdWItPnNoYXJlZF9ibGtfd3JpdGVfdGltZSk7Ci0JSU5T VFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+bG9jYWxfYmxrX3JlYWRfdGltZSwKLQkJCQkJCSAgYWRk LT5sb2NhbF9ibGtfcmVhZF90aW1lLCBzdWItPmxvY2FsX2Jsa19yZWFkX3RpbWUpOwotCUlOU1RS X1RJTUVfQUNDVU1fRElGRihkc3QtPmxvY2FsX2Jsa193cml0ZV90aW1lLAotCQkJCQkJICBhZGQt PmxvY2FsX2Jsa193cml0ZV90aW1lLCBzdWItPmxvY2FsX2Jsa193cml0ZV90aW1lKTsKLQlJTlNU Ul9USU1FX0FDQ1VNX0RJRkYoZHN0LT50ZW1wX2Jsa19yZWFkX3RpbWUsCi0JCQkJCQkgIGFkZC0+ dGVtcF9ibGtfcmVhZF90aW1lLCBzdWItPnRlbXBfYmxrX3JlYWRfdGltZSk7Ci0JSU5TVFJfVElN RV9BQ0NVTV9ESUZGKGRzdC0+dGVtcF9ibGtfd3JpdGVfdGltZSwKLQkJCQkJCSAgYWRkLT50ZW1w X2Jsa193cml0ZV90aW1lLCBzdWItPnRlbXBfYmxrX3dyaXRlX3RpbWUpOwotfQotCi0vKiBoZWxw ZXIgZnVuY3Rpb25zIGZvciBXQUwgdXNhZ2UgYWNjdW11bGF0aW9uICovCi1zdGF0aWMgdm9pZAot V2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNhZ2UgKmFkZCkKK1dhbFVzYWdlQWRkKFdh bFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICphZGQpCiB7CiAJZHN0LT53YWxfYnl0ZXMgKz0g YWRkLT53YWxfYnl0ZXM7CiAJZHN0LT53YWxfcmVjb3JkcyArPSBhZGQtPndhbF9yZWNvcmRzOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggYjM4MTcwZjBmYmUu LmE4MjlkZGY1YWNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK QEAgLTkwNCw3ICs5MDQsNyBAQCBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKExvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqcmVsKQogCSAqIFVzZSBSZWxhdGlvbiBvcGVuZWQgYnkgbG9naWNhbHJlcF9y ZWxfb3BlbigpIGluc3RlYWQgb2Ygb3BlbmluZyBpdAogCSAqIGFnYWluLgogCSAqLwotCUluaXRS ZXN1bHRSZWxJbmZvKHJlc3VsdFJlbEluZm8sIHJlbC0+bG9jYWxyZWwsIDEsIE5VTEwsIDApOwor CUluaXRSZXN1bHRSZWxJbmZvKHJlc3VsdFJlbEluZm8sIHJlbC0+bG9jYWxyZWwsIDEsIE5VTEws IDAsIE5VTEwpOwogCiAJLyoKIAkgKiBXZSBwdXQgdGhlIFJlc3VsdFJlbEluZm8gaW4gdGhlIGVz X29wZW5lZF9yZXN1bHRfcmVsYXRpb25zIGxpc3QsIGV2ZW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv YnVmbWdyLmMKaW5kZXggM2UxYzM5MTYwZGIuLmNmNGY0MjQ2Y2EyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYwpAQCAtMTI2Niw5ICsxMjY2LDkgQEAgUGluQnVmZmVyRm9yQmxvY2so UmVsYXRpb24gcmVsLAogCWlmIChyZWwpCiAJewogCQkvKgotCQkgKiBXaGlsZSBwZ0J1ZmZlclVz YWdlJ3MgInJlYWQiIGNvdW50ZXIgaXNuJ3QgYnVtcGVkIHVubGVzcyB3ZSByZWFjaAotCQkgKiBX YWl0UmVhZEJ1ZmZlcnMoKSAoc28sIG5vdCBmb3IgaGl0cywgYW5kIG5vdCBmb3IgYnVmZmVycyB0 aGF0IGFyZQotCQkgKiB6ZXJvZWQgaW5zdGVhZCksIHRoZSBwZXItcmVsYXRpb24gc3RhdHMgYWx3 YXlzIGNvdW50IHRoZW0uCisJCSAqIFdoaWxlIHRoZSBjdXJyZW50IGJ1ZmZlciB1c2FnZSAicmVh ZCIgY291bnRlciBpc24ndCBidW1wZWQgdW5sZXNzCisJCSAqIHdlIHJlYWNoIFdhaXRSZWFkQnVm ZmVycygpIChzbywgbm90IGZvciBoaXRzLCBhbmQgbm90IGZvciBidWZmZXJzCisJCSAqIHRoYXQg YXJlIHplcm9lZCBpbnN0ZWFkKSwgdGhlIHBlci1yZWxhdGlvbiBzdGF0cyBhbHdheXMgY291bnQg dGhlbS4KIAkJICovCiAJCXBnc3RhdF9jb3VudF9idWZmZXJfcmVhZChyZWwpOwogCX0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKaW5kZXggZTM4MjlkN2ZlN2MuLmU3ZmM3ZjA3 MWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAtMTE0LDkgKzEx NCw5IEBAIHBnc3RhdF9wcmVwYXJlX2lvX3RpbWUoYm9vbCB0cmFja19pb19ndWMpCiAgKiBwZ19z dGF0X2RhdGFiYXNlIG9ubHkgY291bnRzIGJsb2NrIHJlYWQgYW5kIHdyaXRlIHRpbWVzLCB0aGVz ZSBhcmUgZG9uZSBmb3IKICAqIElPT1BfUkVBRCwgSU9PUF9XUklURSBhbmQgSU9PUF9FWFRFTkQu CiAgKgotICogcGdCdWZmZXJVc2FnZSBpcyB1c2VkIGZvciBFWFBMQUlOLiAgcGdCdWZmZXJVc2Fn ZSBoYXMgd3JpdGUgYW5kIHJlYWQgc3RhdHMKLSAqIGZvciBzaGFyZWQsIGxvY2FsIGFuZCB0ZW1w b3JhcnkgYmxvY2tzLiAgcGdfc3RhdF9pbyBkb2VzIG5vdCB0cmFjayB0aGUKLSAqIGFjdGl2aXR5 IG9mIHRlbXBvcmFyeSBibG9ja3MsIHNvIHRoZXNlIGFyZSBpZ25vcmVkIGhlcmUuCisgKiBFeGVj dXRvciBpbnN0cnVtZW50YXRpb24gaXMgdXNlZCBmb3IgRVhQTEFJTi4gQnVmZmVyIHVzYWdlIHRy YWNrZWQgdGhlcmUgaGFzCisgKiB3cml0ZSBhbmQgcmVhZCBzdGF0cyBmb3Igc2hhcmVkLCBsb2Nh bCBhbmQgdGVtcG9yYXJ5IGJsb2Nrcy4gcGdfc3RhdF9pbworICogZG9lcyBub3QgdHJhY2sgdGhl IGFjdGl2aXR5IG9mIHRlbXBvcmFyeSBibG9ja3MsIHNvIHRoZXNlIGFyZSBpZ25vcmVkIGhlcmUu CiAgKi8KIHZvaWQKIHBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT2JqZWN0IGlvX29iamVjdCwg SU9Db250ZXh0IGlvX2NvbnRleHQsIElPT3AgaW9fb3AsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApp bmRleCA0OTFjNDg4NjUwNi4uNzg5NjFhZTA1OGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApA QCAtMjMzLDYgKzIzMyw3IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpz bG90LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAvKgogICogcHJvdG90eXBlcyBm cm9tIGZ1bmN0aW9ucyBpbiBleGVjTWFpbi5jCiAgKi8KK3R5cGVkZWYgc3RydWN0IFF1ZXJ5SW5z dHJ1bWVudGF0aW9uIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFu ZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4 dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMjU0LDcgKzI1 NSw4IEBAIGV4dGVybiB2b2lkIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3Vs dFJlbEluZm8sCiAJCQkJCQkJICBSZWxhdGlvbiByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCQkJ ICBJbmRleCByZXN1bHRSZWxhdGlvbkluZGV4LAogCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcGFy dGl0aW9uX3Jvb3RfcnJpLAotCQkJCQkJCSAgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CisJCQkJ CQkJICBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJCQkJCSAgUXVlcnlJbnN0cnVtZW50YXRp b24gKnFpbnN0cik7CiBleHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0dldFRyaWdnZXJSZXN1bHRS ZWwoRVN0YXRlICplc3RhdGUsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJICBSZXN1bHRSZWxJbmZv ICpyb290UmVsSW5mbyk7CiBleHRlcm4gTGlzdCAqRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVscyhF U3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CkBAIC0zMDEsNiAr MzAzLDggQEAgZXh0ZXJuIHZvaWQgRXhlY1NldEV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUs IEV4ZWNQcm9jTm9kZU10ZCBmdW5jdGlvbik7CiBleHRlcm4gTm9kZSAqTXVsdGlFeGVjUHJvY05v ZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAq bm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7Citl eHRlcm4gdm9pZCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9k ZSk7CitleHRlcm4gdm9pZCBFeGVjRmluYWxpemVXb3JrZXJJbnN0cnVtZW50YXRpb24oUGxhblN0 YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19u ZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oCmluZGV4IDQ0MzBjMjIyNDkzLi42ZWU0Y2UyYjUyMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3Ry dW1lbnQuaApAQCAtMTMsNiArMTMsNyBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX0gKICNkZWZpbmUg SU5TVFJVTUVOVF9ICiAKKyNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3J0YWJp bGl0eS9pbnN0cl90aW1lLmgiCiAKIApAQCAtNjgsMjkgKzY5LDkyIEBAIHR5cGVkZWYgZW51bSBJ bnN0cnVtZW50T3B0aW9uCiB9IEluc3RydW1lbnRPcHRpb247CiAKIC8qCi0gKiBHZW5lcmFsIHB1 cnBvc2UgaW5zdHJ1bWVudGF0aW9uIHRoYXQgY2FuIGNhcHR1cmUgdGltZSBhbmQgV0FML2J1ZmZl ciB1c2FnZQorICogSW5zdHJ1bWVudGF0aW9uIGJhc2UgY2xhc3MgZm9yIGNhcHR1cmluZyB0aW1l IGFuZCBXQUwvYnVmZmVyIHVzYWdlCiAgKgotICogSW5pdGlhbGl6ZWQgdGhyb3VnaCBJbnN0ckFs bG9jLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBjYWxscyB0byBhIHBhaXIgb2YKLSAqIEluc3Ry U3RhcnQvSW5zdHJTdG9wIChhY3Rpdml0eSBpcyBtZWFzdXJlZCBpbiBiZXR3ZWVuKS4KKyAqIElm IHVzZWQgZGlyZWN0bHk6CisgKiAtIEFsbG9jYXRlIG9uIHRoZSBzdGFjayBhbmQgemVybyBpbml0 aWFsaXplIHRoZSBzdHJ1Y3QKKyAqIC0gQ2FsbCBJbnN0ckluaXRPcHRpb25zIHRvIHNldCBpbnN0 cnVtZW50YXRpb24gb3B0aW9ucworICogLSBDYWxsIEluc3RyU3RhcnQgYmVmb3JlIHRoZSBhY3Rp dml0eSB5b3Ugd2FudCB0byBtZWFzdXJlCisgKiAtIENhbGwgSW5zdHJTdG9wIC8gSW5zdHJTdG9w RmluYWxpemUgYWZ0ZXIgdGhlIGFjdGl2aXR5IHRvIGNhcHR1cmUgdG90YWxzCisgKgorICogSW5z dHJTdGFydC9JbnN0clN0b3AgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGxhc3Qg c3RvcCBjYWxsIG11c3QKKyAqIGJlIHRvIEluc3RyU3RvcEZpbmFsaXplIHRvIGVuc3VyZSBwYXJl bnQgc3RhY2sgZW50cmllcyBnZXQgdGhlIGFjY3VtdWxhdGVkCisgKiB0b3RhbHMuIElmIHRoZXJl IGlzIHJpc2sgb2YgdHJhbnNhY3Rpb24gYWJvcnRzIHlvdSBtdXN0IGNhbGwKKyAqIEluc3RyU3Rv cEZpbmFsaXplIGluIGEgUEdfVFJZL1BHX0ZJTkFMTFkgYmxvY2sgdG8gYXZvaWQgY29ycnVwdGlu ZyB0aGUKKyAqIGluc3RydW1lbnRhdGlvbiBzdGFjay4KKyAqCisgKiBJbiBhIHF1ZXJ5IGNvbnRl eHQgdXNlIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIGluc3RlYWQsIHdoaWNoIGhhbmRsZXMgYWJvcnRz CisgKiB1c2luZyB0aGUgcmVzb3VyY2Ugb3duZXIgbG9naWMuCiAgKi8KIHR5cGVkZWYgc3RydWN0 IEluc3RydW1lbnRhdGlvbgogewogCS8qIFBhcmFtZXRlcnMgc2V0IGF0IGNyZWF0aW9uOiAqLwog CWJvb2wJCW5lZWRfdGltZXI7CQkvKiB0cnVlIGlmIHdlIG5lZWQgdGltZXIgZGF0YSAqLwotCWJv b2wJCW5lZWRfYnVmdXNhZ2U7CS8qIHRydWUgaWYgd2UgbmVlZCBidWZmZXIgdXNhZ2UgZGF0YSAq LwotCWJvb2wJCW5lZWRfd2FsdXNhZ2U7CS8qIHRydWUgaWYgd2UgbmVlZCBXQUwgdXNhZ2UgZGF0 YSAqLworCWJvb2wJCW5lZWRfc3RhY2s7CQkvKiB0cnVlIGlmIHdlIG5lZWQgV0FML2J1ZmZlciB1 c2FnZSBkYXRhICovCiAJLyogSW50ZXJuYWwgc3RhdGUga2VlcGluZzogKi8KKwlib29sCQlvbl9z dGFjazsJCS8qIHRydWUgaWYgY3VycmVudGx5IG9uIGluc3RyX3N0YWNrICovCiAJaW5zdHJfdGlt ZQlzdGFydHRpbWU7CQkvKiBzdGFydCB0aW1lIG9mIGxhc3QgSW5zdHJTdGFydCAqLwotCUJ1ZmZl clVzYWdlIGJ1ZnVzYWdlX3N0YXJ0OyAvKiBidWZmZXIgdXNhZ2UgYXQgc3RhcnQgKi8KLQlXYWxV c2FnZQl3YWx1c2FnZV9zdGFydDsgLyogV0FMIHVzYWdlIGF0IHN0YXJ0ICovCiAJLyogQWNjdW11 bGF0ZWQgc3RhdGlzdGljczogKi8KIAlpbnN0cl90aW1lCXRvdGFsOwkJCS8qIHRvdGFsIHJ1bnRp bWUgKi8KIAlCdWZmZXJVc2FnZSBidWZ1c2FnZTsJCS8qIHRvdGFsIGJ1ZmZlciB1c2FnZSAqLwog CVdhbFVzYWdlCXdhbHVzYWdlOwkJLyogdG90YWwgV0FMIHVzYWdlICovCisJLyogQWJvcnQgaGFu ZGxpbmc6IGxpbmsgaW4gcGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uJ3MgdW5maW5hbGl6ZWQg bGlzdCAqLworCWRsaXN0X25vZGUJdW5maW5hbGl6ZWRfZW50cnk7CiB9IEluc3RydW1lbnRhdGlv bjsKIAorLyoKKyAqIFF1ZXJ5LXJlbGF0ZWQgaW5zdHJ1bWVudGF0aW9uIHRyYWNraW5nLgorICoK KyAqIFVzYWdlOgorICogLSBBbGxvY2F0ZSBvbiB0aGUgaGVhcCB1c2luZyBJbnN0clF1ZXJ5QWxs b2MgKHJlcXVpcmVkIGZvciBhYm9ydCBoYW5kbGluZykKKyAqIC0gQ2FsbCBJbnN0clF1ZXJ5U3Rh cnQgYmVmb3JlIHRoZSBhY3Rpdml0eSB5b3Ugd2FudCB0byBtZWFzdXJlCisgKiAtIENhbGwgSW5z dHJRdWVyeVN0b3AgLyBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplIGFmdGVyd2FyZHMgdG8gY2FwdHVy ZSB0b3RhbHMKKyAqCisgKiBJbnN0clF1ZXJ5U3RhcnQvSW5zdHJRdWVyeVN0b3AgbWF5IGJlIGNh bGxlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGxhc3Qgc3RvcAorICogY2FsbCBtdXN0IGJlIHRvIElu c3RyUXVlcnlTdG9wRmluYWxpemUgdG8gZW5zdXJlIHBhcmVudCBzdGFjayBlbnRyaWVzIGdldAor ICogdGhlIGFjY3VtdWxhdGVkIHRvdGFscy4KKyAqCisgKiBVc2VzIHJlc291cmNlIG93bmVyIG1l Y2hhbmlzbSBmb3IgaGFuZGxpbmcgYWJvcnRzLCBhcyBzdWNoLCB0aGUgY2FsbGVyCisgKiAqbXVz dCogbm90IGV4aXQgb3V0IG9mIHRoZSB0b3AgbGV2ZWwgdHJhbnNhY3Rpb24gYWZ0ZXIgaGF2aW5n IGNhbGxlZAorICogSW5zdHJRdWVyeVN0YXJ0LCB3aXRob3V0IGZpcnN0IGNhbGxpbmcgSW5zdHJR dWVyeVN0b3Agb3IKKyAqIEluc3RyUXVlcnlTdG9wRmluYWxpemUuIEluIHRoZSBjYXNlIG9mIGEg dHJhbnNhY3Rpb24gYWJvcnQsIGxvZ2ljIGVxdWl2YWxlbnQKKyAqIHRvIEluc3RyUXVlcnlTdG9w RmluYWxpemUgd2lsbCBiZSBjYWxsZWQgYXV0b21hdGljYWxseS4KKyAqLworc3RydWN0IFJlc291 cmNlT3duZXJEYXRhOwordHlwZWRlZiBzdHJ1Y3QgUXVlcnlJbnN0cnVtZW50YXRpb24KK3sKKwlJ bnN0cnVtZW50YXRpb24gaW5zdHI7CisKKwkvKiBPcmlnaW5hbCBpbnN0cnVtZW50X29wdGlvbnMg ZmxhZ3MgdXNlZCB0byBjcmVhdGUgdGhpcyBpbnN0cnVtZW50YXRpb24gKi8KKwlpbnQJCQlpbnN0 cnVtZW50X29wdGlvbnM7CisKKwkvKiBSZXNvdXJjZSBvd25lciB1c2VkIGZvciBjbGVhbnVwIGZv ciBhYm9ydHMgYmV0d2VlbiBJbnN0clN0YXJ0L0luc3RyU3RvcCAqLworCXN0cnVjdCBSZXNvdXJj ZU93bmVyRGF0YSAqb3duZXI7CisKKwkvKgorCSAqIERlZGljYXRlZCBtZW1vcnkgY29udGV4dCBm b3IgYWxsIGluc3RydW1lbnRhdGlvbiBhbGxvY2F0aW9ucyBiZWxvbmdpbmcKKwkgKiB0byB0aGlz IHF1ZXJ5IChub2RlIGluc3RydW1lbnRhdGlvbiwgdHJpZ2dlciBpbnN0cnVtZW50YXRpb24sIGV0 Yy4pLgorCSAqIEluaXRpYWxseSBhIGNoaWxkIG9mIFRvcE1lbW9yeUNvbnRleHQgc28gaXQgc3Vy dml2ZXMgdHJhbnNhY3Rpb24gYWJvcnQKKwkgKiBmb3IgUmVzb3VyY2VPd25lciBjbGVhbnVwLCB3 aGljaCBpcyB0aGVuIHJlYXNzaWduZWQgdG8gdGhlIGN1cnJlbnQKKwkgKiBtZW1vcnkgY29udGV4 dCBvbiBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplLgorCSAqLworCU1lbW9yeUNvbnRleHQgaW5zdHJf Y3h0OworCisJLyoKKwkgKiBDaGlsZCBlbnRyaWVzIHRoYXQgbmVlZCB0byBiZSBjbGVhbmVkIHVw IG9uIGFib3J0LCBzaW5jZSB0aGV5IGFyZSBub3QKKwkgKiByZWdpc3RlcmVkIGFzIGEgcmVzb3Vy Y2Ugb3duZXIgdGhlbXNlbHZlcy4gQ29udGFpbnMgYm90aCBub2RlIGFuZAorCSAqIHRyaWdnZXIg aW5zdHJ1bWVudGF0aW9uIGVudHJpZXMgbGlua2VkIHZpYSBpbnN0ci51bmZpbmFsaXplZF9lbnRy eS4KKwkgKi8KKwlkbGlzdF9oZWFkCXVuZmluYWxpemVkX2VudHJpZXM7Cit9IFF1ZXJ5SW5zdHJ1 bWVudGF0aW9uOworCiAvKgogICogU3BlY2lhbGl6ZWQgaW5zdHJ1bWVudGF0aW9uIGZvciBwZXIt bm9kZSBleGVjdXRpb24gc3RhdGlzdGljcworICoKKyAqIFJlbGllcyBvbiBhbiBvdXRlciBRdWVy eUluc3RydW1lbnRhdGlvbiBoYXZpbmcgYmVlbiBzZXQgdXAgdG8gaGFuZGxlIHRoZQorICogc3Rh Y2sgdXNlZCBmb3IgV0FML2J1ZmZlciB1c2FnZSBzdGF0aXN0aWNzLCBhbmQgcmVsaWVzIG9uIGl0 IGZvciBtYW5hZ2luZworICogYWJvcnRzLiBTb2xlbHkgaW50ZW5kZWQgZm9yIHRoZSBleGVjdXRv ciBhbmQgYW55b25lIHJlcG9ydGluZyBhYm91dCBpdHMKKyAqIGFjdGl2aXRpZXMgKGUuZy4gRVhQ TEFJTiBBTkFMWVpFKS4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgTm9kZUluc3RydW1lbnRhdGlvbgog ewpAQCAtMTExLDYgKzE3NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBOb2RlSW5zdHJ1bWVudGF0aW9u CiAJZG91YmxlCQluZmlsdGVyZWQyOwkJLyogIyBvZiB0dXBsZXMgcmVtb3ZlZCBieSAib3RoZXIi IHF1YWxzICovCiB9IE5vZGVJbnN0cnVtZW50YXRpb247CiAKKy8qCisgKiBDYXJlIG11c3QgYmUg dGFrZW4gd2l0aCBhbnkgcG9pbnRlcnMgY29udGFpbmVkIHdpdGhpbiB0aGlzIHN0cnVjdCwgYXMg dGhpcworICogZ2V0cyBjb3BpZWQgYWNyb3NzIHByb2Nlc3NlcyBkdXJpbmcgcGFyYWxsZWwgcXVl cnkgZXhlY3V0aW9uLgorICovCiB0eXBlZGVmIHN0cnVjdCBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0 aW9uCiB7CiAJaW50CQkJbnVtX3dvcmtlcnM7CS8qICMgb2Ygc3RydWN0dXJlcyB0aGF0IGZvbGxv dyAqLwpAQCAtMTI0LDE1ICsxOTIsMTA1IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVt ZW50YXRpb24KIAkJCQkJCQkJICogd2FzIGZpcmVkICovCiB9IFRyaWdnZXJJbnN0cnVtZW50YXRp b247CiAKLWV4dGVybiBQR0RMTElNUE9SVCBCdWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOworLyoK KyAqIER5bmFtaWMgYXJyYXktYmFzZWQgc3RhY2sgZm9yIHRyYWNraW5nIGN1cnJlbnQgV0FML2J1 ZmZlciB1c2FnZSBjb250ZXh0LgorICoKKyAqIFdoZW4gdGhlIHN0YWNrIGlzIGVtcHR5LCAnY3Vy cmVudCcgcG9pbnRzIHRvIGluc3RyX3RvcCB3aGljaCBhY2N1bXVsYXRlcworICogc2Vzc2lvbi1s ZXZlbCB0b3RhbHMuCisgKi8KK3R5cGVkZWYgc3RydWN0IEluc3RyU3RhY2tTdGF0ZQoreworCWlu dAkJCXN0YWNrX3NwYWNlOwkvKiBhbGxvY2F0ZWQgY2FwYWNpdHkgb2YgZW50cmllcyBhcnJheSAq LworCWludAkJCXN0YWNrX3NpemU7CQkvKiBjdXJyZW50IG51bWJlciBvZiBlbnRyaWVzICovCisK KwlJbnN0cnVtZW50YXRpb24gKiplbnRyaWVzOwkvKiBkeW5hbWljIGFycmF5IG9mIHBvaW50ZXJz ICovCisJSW5zdHJ1bWVudGF0aW9uICpjdXJyZW50OwkvKiB0b3Agb2Ygc3RhY2ssIG9yICZpbnN0 cl90b3Agd2hlbiBlbXB0eSAqLworfSBJbnN0clN0YWNrU3RhdGU7CisKIGV4dGVybiBQR0RMTElN UE9SVCBXYWxVc2FnZSBwZ1dhbFVzYWdlOwogCi1leHRlcm4gSW5zdHJ1bWVudGF0aW9uICpJbnN0 ckFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpOworLyoKKyAqIFRoZSB0b3AgaW5zdHJ1bWVu dGF0aW9uIHJlcHJlc2VudHMgYSBydW5uaW5nIHRvdGFsIG9mIHRoZSBjdXJyZW50IGJhY2tlbmQK KyAqIFdBTC9idWZmZXIgdXNhZ2UgaW5mb3JtYXRpb24uIFRoaXMgd2lsbCBub3QgYmUgdXBkYXRl ZCBpbW1lZGlhdGVseSwgYnV0CisgKiByYXRoZXIgd2hlbiB0aGUgY3VycmVudCBzdGFjayBlbnRy eSBnZXRzIGFjY3VtdWxhdGVkIHdoaWNoIHR5cGljYWxseSBoYXBwZW5zCisgKiBhdCBxdWVyeSBl bmQuCisgKgorICogQ2FyZSBtdXN0IGJlIHRha2VuIHdoZW4gdXRpbGl6aW5nIHRoaXMgaW4gdGhl IHBhcmFsbGVsIHdvcmtlciBjb250ZXh0OgorICogUGFyYWxsZWwgd29ya2VycyB3aWxsIHJlcG9y dCBiYWNrIHRoZWlyIGluc3RydW1lbnRhdGlvbiB0byB0aGUgY2FsbGVyLAorICogYW5kIHRoaXMg Z2V0cyBhZGRlZCB0byB0aGUgY2FsbGVyJ3Mgc3RhY2suIElmIHRoaXMgd2VyZSB0byBiZSB1c2Vk IGluIHRoZQorICogc2hhcmVkIG1lbW9yeSBzdGF0cyBpbmZyYXN0cnVjdHVyZSBpdCB3b3VsZCBu ZWVkIHRvIGJlIHNraXBwZWQgb24gcGFyYWxsZWwKKyAqIHdvcmtlcnMgdG8gYXZvaWQgZG91Ymxl IGNvdW50aW5nLgorICovCitleHRlcm4gUEdETExJTVBPUlQgSW5zdHJ1bWVudGF0aW9uIGluc3Ry X3RvcDsKKworLyoKKyAqIFRoZSBpbnN0cnVtZW50YXRpb24gc3RhY2sgc3RhdGUuIFRoZSAnY3Vy cmVudCcgZmllbGQgcG9pbnRzIHRvIHRoZQorICogY3VycmVudGx5IGFjdGl2ZSBzdGFjayBlbnRy eSB0aGF0IGlzIGdldHRpbmcgdXBkYXRlZCBhcyBhY3Rpdml0eSBoYXBwZW5zLAorICogYW5kIHdp bGwgYmUgYWNjdW11bGF0ZWQgdG8gcGFyZW50IHN0YWNrcyB3aGVuIGl0IGdldHMgZmluYWxpemVk IGJ5CisgKiBJbnN0clN0b3AgKGZvciBub24tZXhlY3V0b3IgdXNlIGNhc2VzKSwgRXhlY0ZpbmFs aXplTm9kZUluc3RydW1lbnRhdGlvbgorICogKGV4ZWN1dG9yIGZpbmlzaCkgb3IgUmVzT3duZXJS ZWxlYXNlSW5zdHJ1bWVudGF0aW9uIG9uIGFib3J0LgorICovCitleHRlcm4gUEdETExJTVBPUlQg SW5zdHJTdGFja1N0YXRlIGluc3RyX3N0YWNrOworCitleHRlcm4gdm9pZCBJbnN0clN0YWNrR3Jv dyh2b2lkKTsKKworLyoKKyAqIFB1c2hlcyB0aGUgc3RhY2sgc28gdGhhdCBhbGwgV0FML2J1ZmZl ciB1c2FnZSB1cGRhdGVzIGdvIHRvIHRoZSBwYXNzZWQgaW4KKyAqIGluc3RydW1lbnRhdGlvbiBl bnRyeS4KKyAqCisgKiBTZWUgbm90ZSBvbiBJbnN0clBvcFN0YWNrIHJlZ2FyZGluZyBzYWZlIHVz ZSBvZiB0aGVzZSBmdW5jdGlvbnMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJQdXNo U3RhY2soSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK3sKKwlpZiAodW5saWtlbHkoaW5zdHJfc3Rh Y2suc3RhY2tfc2l6ZSA9PSBpbnN0cl9zdGFjay5zdGFja19zcGFjZSkpCisJCUluc3RyU3RhY2tH cm93KCk7CisKKwlpbnN0cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUrK10g PSBpbnN0cjsKKwlpbnN0cl9zdGFjay5jdXJyZW50ID0gaW5zdHI7CisJaW5zdHItPm9uX3N0YWNr ID0gdHJ1ZTsKK30KKworLyoKKyAqIFBvcHMgdGhlIHN0YWNrIGVudHJ5IGJhY2sgdG8gdGhlIHBy ZXZpb3VzIG9uZSB0aGF0IHdhcyBlZmZlY3RpdmUgYXQKKyAqIEluc3RyUHVzaFN0YWNrLgorICoK KyAqIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBpbnRlcm1lZGlhdGUgc3RhY2sgZW50cmll cyBhcmUgc2tpcHBlZCwgdG8KKyAqIGhhbmRsZSBhYm9ydHMgY29ycmVjdGx5LiBJZiB5b3UncmUg dGhpbmtpbmcgb2YgY2FsbGluZyB0aGlzIGluIGEgUEdfRklOQUxMWQorICogYmxvY2ssIGNvbnNp ZGVyIGluc3RlYWQgdXNpbmcgSW5zdHJTdGFydCArIEluc3RyU3RvcEZpbmFsaXplIHdoaWNoIGNh biBza2lwCisgKiBpbnRlcm1lZGlhdGUgc3RhY2sgZW50cmllcy4KKyAqLworc3RhdGljIGlubGlu ZSB2b2lkCitJbnN0clBvcFN0YWNrKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJQXNzZXJ0 KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPiAwKTsKKwlBc3NlcnQoaW5zdHJfc3RhY2suZW50cmll c1tpbnN0cl9zdGFjay5zdGFja19zaXplIC0gMV0gPT0gaW5zdHIpOworCWluc3RyX3N0YWNrLnN0 YWNrX3NpemUtLTsKKwlpbnN0cl9zdGFjay5jdXJyZW50ID0gaW5zdHJfc3RhY2suc3RhY2tfc2l6 ZSA+IDAKKwkJPyBpbnN0cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUgLSAx XQorCQk6ICZpbnN0cl90b3A7CisJaW5zdHItPm9uX3N0YWNrID0gZmFsc2U7Cit9CisKIGV4dGVy biB2b2lkIEluc3RySW5pdE9wdGlvbnMoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3Ry dW1lbnRfb3B0aW9ucyk7CiBleHRlcm4gdm9pZCBJbnN0clN0YXJ0KEluc3RydW1lbnRhdGlvbiAq aW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwor ZXh0ZXJuIHZvaWQgSW5zdHJTdG9wRmluYWxpemUoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7Citl eHRlcm4gdm9pZCBJbnN0ckZpbmFsaXplQ2hpbGQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgSW5z dHJ1bWVudGF0aW9uICpwYXJlbnQpOworZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVN0YWNrKEluc3Ry dW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKLWV4dGVybiBOb2RlSW5z dHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorZXh0 ZXJuIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpJbnN0clF1ZXJ5QWxsb2MoaW50IGluc3RydW1lbnRf b3B0aW9ucyk7CitleHRlcm4gdm9pZCBJbnN0clF1ZXJ5U3RhcnQoUXVlcnlJbnN0cnVtZW50YXRp b24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyUXVlcnlTdG9wKFF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKFF1ZXJ5SW5z dHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clF1ZXJ5UmVtZW1iZXJDaGls ZChRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50LCBJbnN0cnVtZW50YXRpb24gKmluc3RyKTsK KworcGdfbm9kaXNjYXJkIGV4dGVybiBRdWVyeUluc3RydW1lbnRhdGlvbiAqSW5zdHJTdGFydFBh cmFsbGVsUXVlcnkodm9pZCk7CitleHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVl cnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2Fn ZSAqd2FsdXNhZ2UpOworZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVy VXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOworCitleHRlcm4gTm9kZUluc3Ry dW1lbnRhdGlvbiAqSW5zdHJBbGxvY05vZGUoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwK KwkJCQkJCQkJCQkgICBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAogCQkJCQkJCQkJCSAgIGJvb2wg YXN5bmNfbW9kZSk7CiBleHRlcm4gdm9pZCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRp b24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAogCQkJCQkJICBib29sIGFzeW5jX21v ZGUpOwpAQCAtMTQ2LDM1ICszMDQsMzYgQEAgdHlwZWRlZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3Qg VHVwbGVUYWJsZVNsb3Q7CiB0eXBlZGVmIHN0cnVjdCBQbGFuU3RhdGUgUGxhblN0YXRlOwogZXh0 ZXJuIFR1cGxlVGFibGVTbG90ICpFeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUgKm5vZGUpOwog Ci1leHRlcm4gVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY1RyaWdnZXIoaW50IG4s IGludCBpbnN0cnVtZW50X29wdGlvbnMpOworZXh0ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24g Kkluc3RyQWxsb2NUcmlnZ2VyKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsCisJCQkJCQkJ CQkJCQkgaW50IGluc3RydW1lbnRfb3B0aW9ucywgaW50IG4pOwogZXh0ZXJuIHZvaWQgSW5zdHJT dGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cik7CiBleHRlcm4gdm9p ZCBJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIsIGludDY0 IGZpcmluZ3MpOwogCi1leHRlcm4gdm9pZCBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKTsK LWV4dGVybiB2b2lkIEluc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2Us IFdhbFVzYWdlICp3YWx1c2FnZSk7Ci1leHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVy eShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7Ci1leHRlcm4gdm9p ZCBCdWZmZXJVc2FnZUFjY3VtRGlmZihCdWZmZXJVc2FnZSAqZHN0LAotCQkJCQkJCQkgY29uc3Qg QnVmZmVyVXNhZ2UgKmFkZCwgY29uc3QgQnVmZmVyVXNhZ2UgKnN1Yik7CitleHRlcm4gdm9pZCBC dWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKTsK K2V4dGVybiB2b2lkIFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICph ZGQpOwogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1bURpZmYoV2FsVXNhZ2UgKmRzdCwgY29uc3Qg V2FsVXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0IFdhbFVzYWdlICpzdWIpOwogCiAjZGVmaW5l IElOU1RSX0JVRlVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKLQkJcGdCdWZmZXJVc2FnZS5mbGQrKzsg XAorCQlpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZS5mbGQrKzsgXAogCX0gd2hpbGUoMCkK ICNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAotCQlwZ0J1ZmZlclVz YWdlLmZsZCArPSAodmFsKTsgXAorCQlpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZS5mbGQg Kz0gKHZhbCk7IFwKIAl9IHdoaWxlKDApCiAjZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQURE KGZsZCx2YWwpIGRvIHsgXAotCUlOU1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2UuZmxkLCB2YWwp OyBcCisJSU5TVFJfVElNRV9BREQoaW5zdHJfc3RhY2suY3VycmVudC0+YnVmdXNhZ2UuZmxkLCB2 YWwpOyBcCiAJfSB3aGlsZSAoMCkKICNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfVElNRV9BQ0NVTV9E SUZGKGZsZCxlbmR2YWwsc3RhcnR2YWwpIGRvIHsgXAotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihw Z0J1ZmZlclVzYWdlLmZsZCwgZW5kdmFsLCBzdGFydHZhbCk7IFwKKwlJTlNUUl9USU1FX0FDQ1VN X0RJRkYoaW5zdHJfc3RhY2suY3VycmVudC0+YnVmdXNhZ2UuZmxkLCBlbmR2YWwsIHN0YXJ0dmFs KTsgXAogCX0gd2hpbGUgKDApCisKICNkZWZpbmUgSU5TVFJfV0FMVVNBR0VfSU5DUihmbGQpIGRv IHsgXAogCQlwZ1dhbFVzYWdlLmZsZCsrOyBcCisJCWluc3RyX3N0YWNrLmN1cnJlbnQtPndhbHVz YWdlLmZsZCsrOyBcCiAJfSB3aGlsZSgwKQogI2RlZmluZSBJTlNUUl9XQUxVU0FHRV9BREQoZmxk LHZhbCkgZG8geyBcCiAJCXBnV2FsVXNhZ2UuZmxkICs9ICh2YWwpOyBcCisJCWluc3RyX3N0YWNr LmN1cnJlbnQtPndhbHVzYWdlLmZsZCArPSAodmFsKTsgXAogCX0gd2hpbGUoMCkKIAogI2VuZGlm CQkJCQkJCS8qIElOU1RSVU1FTlRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAzZWNhZTc1 NTJmYy4uNDkxYzRlMjcyZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC01NCw2ICs1NCw3IEBA IHR5cGVkZWYgc3RydWN0IEluc3RydW1lbnRhdGlvbiBJbnN0cnVtZW50YXRpb247CiB0eXBlZGVm IHN0cnVjdCBwYWlyaW5naGVhcCBwYWlyaW5naGVhcDsKIHR5cGVkZWYgc3RydWN0IFBsYW5TdGF0 ZSBQbGFuU3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBRdWVyeUVudmlyb25tZW50IFF1ZXJ5RW52aXJv bm1lbnQ7Cit0eXBlZGVmIHN0cnVjdCBRdWVyeUluc3RydW1lbnRhdGlvbiBRdWVyeUluc3RydW1l bnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YSAqUmVsYXRpb247CiB0eXBlZGVm IFJlbGF0aW9uICpSZWxhdGlvblB0cjsKIHR5cGVkZWYgc3RydWN0IFNjYW5LZXlEYXRhIFNjYW5L ZXlEYXRhOwpAQCAtNzU0LDYgKzc1NSw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCiAJaW50 CQkJZXNfdG9wX2VmbGFnczsJLyogZWZsYWdzIHBhc3NlZCB0byBFeGVjdXRvclN0YXJ0ICovCiAJ aW50CQkJZXNfaW5zdHJ1bWVudDsJLyogT1Igb2YgSW5zdHJ1bWVudE9wdGlvbiBmbGFncyAqLwor CVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICplc19xdWVyeV9pbnN0cjsJLyogcXVlcnktbGV2ZWwgaW5z dHJ1bWVudGF0aW9uICovCiAJYm9vbAkJZXNfZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRv ckZpbmlzaCBpcyBkb25lICovCiAKIAlMaXN0CSAgICplc19leHByY29udGV4dHM7CS8qIExpc3Qg b2YgRXhwckNvbnRleHRzIHdpdGhpbiBFU3RhdGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3Jlc293bmVyLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oCmluZGV4IGVi NjAzM2I0ZmRiLi41NDYzYmM5MjFmMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVz b3duZXIuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oCkBAIC03NSw2ICs3NSw3 IEBAIHR5cGVkZWYgdWludDMyIFJlc291cmNlUmVsZWFzZVByaW9yaXR5OwogI2RlZmluZSBSRUxF QVNFX1BSSU9fU05BUFNIT1RfUkVGUwkJCTUwMAogI2RlZmluZSBSRUxFQVNFX1BSSU9fRklMRVMJ CQkJCTYwMAogI2RlZmluZSBSRUxFQVNFX1BSSU9fV0FJVEVWRU5UU0VUUwkJCTcwMAorI2RlZmlu ZSBSRUxFQVNFX1BSSU9fSU5TVFJVTUVOVEFUSU9OCQk4MDAKIAogLyogMCBpcyBjb25zaWRlcmVk IGludmFsaWQgKi8KICNkZWZpbmUgUkVMRUFTRV9QUklPX0ZJUlNUCQkJCQkxCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IGE5OThiYjVlODgyLi4zMmI4NjY2MTFjOSAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTEzNjEsNiArMTM2MSw3IEBAIEluamVjdGlvblBvaW50U2hhcmVk U3RhdGUKIEluamVjdGlvblBvaW50c0N0bAogSW5saW5lQ29kZUJsb2NrCiBJbnNlcnRTdG10CitJ bnN0clN0YWNrU3RhdGUKIEluc3RydW1lbnRhdGlvbgogSW50MTI4QWdnU3RhdGUKIEludDhUcmFu c1R5cGVEYXRhCkBAIC0yNDg0LDYgKzI0ODUsNyBAQCBRdWVyeUNvbXBsZXRpb24KIFF1ZXJ5RGVz YwogUXVlcnlFbnZpcm9ubWVudAogUXVlcnlJbmZvCitRdWVyeUluc3RydW1lbnRhdGlvbgogUXVl cnlJdGVtCiBRdWVyeUl0ZW1UeXBlCiBRdWVyeU1vZGUKLS0gCjIuNDcuMQoK --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0008-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Disposition: attachment; filename="v16-0008-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr8h7 RnJvbSBhY2Y0MjdkMjkzNWMzOTY0ZDA5MTZkYjA2ZDM2OTBiNTdiNDdkZGE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMTk6MzA6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNiAwOC8xMF0g aW5zdHJ1bWVudGF0aW9uOiBPcHRpbWl6ZSBFeGVjUHJvY05vZGVJbnN0cgogaW5zdHJ1Y3Rpb25z IGJ5IGlubGluaW5nCgpGb3IgbW9zdCBxdWVyaWVzLCB0aGUgYnVsayBvZiB0aGUgb3ZlcmhlYWQg b2YgRVhQTEFJTiBBTkFMWVpFIGhhcHBlbnMgaW4KRXhlY1Byb2NOb2RlSW5zdHIgd2hlbiBzdGFy dGluZy9zdG9wcGluZyBpbnN0cnVtZW50YXRpb24gZm9yIHRoYXQgbm9kZS4KClByZXZpb3VzbHkg ZWFjaCBFeGVjUHJvY05vZGVJbnN0ciB3b3VsZCBjaGVjayB3aGljaCBpbnN0cnVtZW50YXRpb24K b3B0aW9ucyBhcmUgYWN0aXZlIGluIHRoZSBJbnN0clN0YXJ0Tm9kZS9JbnN0clN0b3BOb2RlIGNh bGxzLCBhbmQgZG8gdGhlCmNvcnJlc3BvbmRpbmcgd29yayAodGltZXJzLCBpbnN0cnVtZW50YXRp b24gc3RhY2ssIGV0Yy4pLiBUaGVzZQpjb25kaXRpb25hbHMgYmVpbmcgY2hlY2tlZCBmb3IgZWFj aCB0dXBsZSBiZWluZyBlbWl0dGVkIGFkZCB1cCwgYW5kIGNhdXNlCm5vbi1vcHRpbWFsIHNldCBv ZiBpbnN0cnVjdGlvbnMgdG8gYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlci4KCkJlY2F1c2Ug d2UgYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1lY2hhbmlzbSB0byBzcGVjaWZ5IGEgZnVuY3Rp b24KcG9pbnRlciB3aGVuIGluc3RydW1lbnRhdGlvbiBpcyBlbmFibGVkLCB3ZSBjYW4gaW5zdGVh ZCBjcmVhdGUgc3BlY2lhbGl6ZWQKZnVuY3Rpb25zIHRoYXQgYXJlIHRhaWxvcmVkIHRvIHRoZSBp bnN0cnVtZW50YXRpb24gb3B0aW9ucyBlbmFibGVkLCBhbmQKYXZvaWQgY29uZGl0aW9uYWxzIG9u IHN1YnNlcXVlbnQgRXhlY1Byb2NOb2RlSW5zdHIgY2FsbHMuIFRoaXMgcmVzdWx0cyBpbgp0aGUg b3ZlcmhlYWQgZm9yIEVYUExBSU4gKEFOQUxZWkUsIFRJTUlORyBPRkYsIEJVRkZFUlMgT0ZGKSBm b3IgYSBzdHJlc3MKdGVzdCB3aXRoIGEgbGFyZ2UgQ09VTlQoKikgdGhhdCBkb2VzIG1hbnkgRXhl Y1Byb2NOb2RlIGNhbGxzIGZyb20gfiAyMCUgb24KdG9wIG9mIGFjdHVhbCBydW50aW1lIHRvIH4g MyUuIFdoZW4gdXNpbmcgQlVGRkVSUyBPTiB0aGUgc2FtZSBxdWVyeSBnb2VzCmZyb20gfiAyMCUg dG8gfiAxMCUgb24gdG9wIG9mIGFjdHVhbCBydW50aW1lLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8 bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFn aUBwZXJjb25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVz c2FnZS1pZC9mbGF0L0NBUDUzUGt4RlA3aTctd3k5OFptRUoxMWVkWXEtUnJQdkpvYTRrekdoQkJq RVJBNE55dyU0MG1haWwuZ21haWwuY29tI2U4ZGZkMDE4YTA3ZDdmOGQ0MTU2NWEwNzlkNDBjNTY0 CgpmaXggdXAgZXhlY3Byb2Nub2RlIDIKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJv Y25vZGUuYyB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jICAgfCAx NjQgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudC5oICAgfCAgIDMgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyks IDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ cm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggNWNh OGQ5MTM0NGIuLjM1NzE3NWFjMmNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpA QCAtNDY1LDcgKzQ2NSw3IEBAIEV4ZWNQcm9jTm9kZUZpcnN0KFBsYW5TdGF0ZSAqbm9kZSkKIAkg KiBoYXZlIEV4ZWNQcm9jTm9kZSgpIGRpcmVjdGx5IGNhbGwgdGhlIHJlbGV2YW50IGZ1bmN0aW9u IGZyb20gbm93IG9uLgogCSAqLwogCWlmIChub2RlLT5pbnN0cnVtZW50KQotCQlub2RlLT5FeGVj UHJvY05vZGUgPSBFeGVjUHJvY05vZGVJbnN0cjsKKwkJbm9kZS0+RXhlY1Byb2NOb2RlID0gSW5z dHJOb2RlU2V0dXBFeGVjUHJvY05vZGUobm9kZS0+aW5zdHJ1bWVudCk7CiAJZWxzZQogCQlub2Rl LT5FeGVjUHJvY05vZGUgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9p bnN0cnVtZW50LmMKaW5kZXggOTRkNTdlM2JjNDAuLjBhNDJlODAwY2U5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvaW5zdHJ1bWVudC5jCkBAIC03MCwxOSArNzAsMjUgQEAgSW5zdHJJbml0T3B0aW9ucyhJbnN0 cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQogCWluc3RyLT5uZWVk X3RpbWVyID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfVElNRVIpICE9IDA7CiB9 CiAKLWlubGluZSB2b2lkCi1JbnN0clN0YXJ0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCitzdGF0 aWMgaW5saW5lIHZvaWQKK0luc3RyU3RhcnRUaW1lcihJbnN0cnVtZW50YXRpb24gKmluc3RyKQog ewotCWlmIChpbnN0ci0+bmVlZF90aW1lcikKLQl7Ci0JCWlmICghSU5TVFJfVElNRV9JU19aRVJP KGluc3RyLT5zdGFydHRpbWUpKQotCQkJZWxvZyhFUlJPUiwgIkluc3RyU3RhcnQgY2FsbGVkIHR3 aWNlIGluIGEgcm93Iik7Ci0JCWVsc2UKLQkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVChp bnN0ci0+c3RhcnR0aW1lKTsKLQl9CisJQXNzZXJ0KElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+ c3RhcnR0aW1lKSk7CiAKLQlpZiAoaW5zdHItPm5lZWRfc3RhY2spCi0JCUluc3RyUHVzaFN0YWNr KGluc3RyKTsKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QoaW5zdHItPnN0YXJ0dGltZSk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJTdG9wVGltZXIoSW5zdHJ1bWVudGF0aW9u ICppbnN0ciwgaW5zdHJfdGltZSAqYWNjdW1fdGltZSkKK3sKKwlpbnN0cl90aW1lCWVuZHRpbWU7 CisKKwlBc3NlcnQoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSk7CisKKwlJ TlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QoZW5kdGltZSk7CisJSU5TVFJfVElNRV9BQ0NVTV9E SUZGKCphY2N1bV90aW1lLCBlbmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKKworCUlOU1RSX1RJ TUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CiB9CiAKIC8qCkBAIC05MiwxOCArOTgsMTMg QEAgSW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogc3RhdGljIGlubGluZSB2b2lk CiBJbnN0clN0b3BDb21tb24oSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW5zdHJfdGltZSAqYWNj dW1fdGltZSkKIHsKLQlpbnN0cl90aW1lCWVuZHRpbWU7Ci0KIAkvKiB1cGRhdGUgdGhlIHRpbWUg b25seSBpZiB0aGUgdGltZXIgd2FzIHJlcXVlc3RlZCAqLwogCWlmIChpbnN0ci0+bmVlZF90aW1l cikKIAl7CiAJCWlmIChJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCiAJCQll bG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CiAKLQkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVF9GQVNUKGVuZHRpbWUpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYo KmFjY3VtX3RpbWUsIGVuZHRpbWUsIGluc3RyLT5zdGFydHRpbWUpOwotCi0JCUlOU1RSX1RJTUVf U0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CisJCUluc3RyU3RvcFRpbWVyKGluc3RyLCBhY2N1 bV90aW1lKTsKIAl9CiAKIAkvKiBwb3AgdGhlIHN0YWNrLCB1bmxlc3MgSW5zdHJTdG9wRmluYWxp emUgcHJldmlvdXNseSBjbGVhbmVkIHVwICovCkBAIC0xMTEsNiArMTEyLDE2IEBAIEluc3RyU3Rv cENvbW1vbihJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnN0cl90aW1lICphY2N1bV90aW1lKQog CQlJbnN0clBvcFN0YWNrKGluc3RyKTsKIH0KIAordm9pZAorSW5zdHJTdGFydChJbnN0cnVtZW50 YXRpb24gKmluc3RyKQoreworCWlmIChpbnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdGFydFRp bWVyKGluc3RyKTsKKworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKKwkJSW5zdHJQdXNoU3RhY2so aW5zdHIpOworfQorCiB2b2lkCiBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsK QEAgLTQwMiwxNiArNDEzLDE1IEBAIEluc3RySW5pdE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq aW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMsIGJvb2wgYXN5bmNfbW9kCiAJaW5zdHItPmFz eW5jX21vZGUgPSBhc3luY19tb2RlOwogfQogCi0vKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLwot aW5saW5lIHZvaWQKKy8qIEVudHJ5IHRvIGEgcGxhbiBub2RlLiBJZiB5b3UgbW9kaWZ5IHRoaXMs IGNoZWNrIEluc3RyTm9kZVNldHVwRXhlY1Byb2NOb2RlLiAqLwordm9pZAogSW5zdHJTdGFydE5v ZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJSW5zdHJTdGFydCgmaW5zdHItPmlu c3RyKTsKIH0KIAotCi0vKiBFeGl0IGZyb20gYSBwbGFuIG5vZGUgKi8KLWlubGluZSB2b2lkCisv KiBFeGl0IGZyb20gYSBwbGFuIG5vZGUuIElmIHlvdSBtb2RpZnkgdGhpcywgY2hlY2sgSW5zdHJO b2RlU2V0dXBFeGVjUHJvY05vZGUuICovCit2b2lkCiBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVt ZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIHsKIAlkb3VibGUJCXNhdmVfdHVwbGVj b3VudCA9IGluc3RyLT50dXBsZWNvdW50OwpAQCAtNDQ1LDI1ICs0NTUsNiBAQCBJbnN0clN0b3BO b2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAl9CiB9CiAK LS8qCi0gKiBFeGVjUHJvY05vZGUgd3JhcHBlciB0aGF0IHBlcmZvcm1zIGluc3RydW1lbnRhdGlv biBjYWxscy4gIEJ5IGtlZXBpbmcKLSAqIHRoaXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiwgd2UgYXZv aWQgb3ZlcmhlYWQgaW4gdGhlIG5vcm1hbCBjYXNlIHdoZXJlCi0gKiBubyBpbnN0cnVtZW50YXRp b24gaXMgd2FudGVkLgotICovCi1UdXBsZVRhYmxlU2xvdCAqCi1FeGVjUHJvY05vZGVJbnN0cihQ bGFuU3RhdGUgKm5vZGUpCi17Ci0JVHVwbGVUYWJsZVNsb3QgKnJlc3VsdDsKLQotCUluc3RyU3Rh cnROb2RlKG5vZGUtPmluc3RydW1lbnQpOwotCi0JcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2Rl UmVhbChub2RlKTsKLQotCUluc3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgVHVwSXNOdWxs KHJlc3VsdCkgPyAwLjAgOiAxLjApOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogLyogVXBkYXRl IHR1cGxlIGNvdW50ICovCiB2b2lkCiBJbnN0clVwZGF0ZVR1cGxlQ291bnQoTm9kZUluc3RydW1l bnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQpAQCAtNTE4LDYgKzUwOSw5NyBAQCBJbnN0 ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICph ZGQpCiAJCUluc3RyQWNjdW1TdGFjaygmZHN0LT5pbnN0ciwgJmFkZC0+aW5zdHIpOwogfQogCisv KgorICogU3BlY2lhbGl6ZWQgaGFuZGxpbmcgb2YgaW5zdHJ1bWVudGVkIEV4ZWNQcm9jTm9kZQor ICoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXF1aXZhbGVudCB0byBydW5uaW5nIEV4ZWNQcm9j Tm9kZVJlYWwgd3JhcHBlZCBpbgorICogSW5zdHJTdGFydE5vZGUgYW5kIEluc3RyU3RvcE5vZGUs IGJ1dCBhdm9pZCB0aGUgY29uZGl0aW9uYWxzIGluIHRoZSBob3QgcGF0aAorICogYnkgY2hlY2tp bmcgdGhlIGluc3RydW1lbnRhdGlvbiBvcHRpb25zIHdoZW4gdGhlIEV4ZWNQcm9jTm9kZSBwb2lu dGVyIGdldHMKKyAqIGZpcnN0IHNldCwgYW5kIHRoZW4gdXNpbmcgYSBzcGVjaWFsLXB1cnBvc2Ug ZnVuY3Rpb24gZm9yIGVhY2guIFRoaXMgcmVzdWx0cworICogaW4gYSBtb3JlIG9wdGltaXplZCBz ZXQgb2YgY29tcGlsZWQgaW5zdHJ1Y3Rpb25zLgorICovCisKKy8qIFNpbXBsaWZpZWQgcG9wOiBy ZXN0b3JlIHNhdmVkIHN0YXRlIGluc3RlYWQgb2YgcmUtZGVyaXZpbmcgZnJvbSBhcnJheSAqLwor c3RhdGljIGlubGluZSB2b2lkCitJbnN0clBvcFN0YWNrVG8oSW5zdHJ1bWVudGF0aW9uICpwcmV2 KQoreworCUFzc2VydChpbnN0cl9zdGFjay5zdGFja19zaXplID4gMCk7CisJQXNzZXJ0KGluc3Ry X3N0YWNrLnN0YWNrX3NpemUgPiAxID8gaW5zdHJfc3RhY2suZW50cmllc1tpbnN0cl9zdGFjay5z dGFja19zaXplIC0gMl0gPT0gcHJldiA6ICZpbnN0cl90b3AgPT0gcHJldik7CisJaW5zdHJfc3Rh Y2suZW50cmllc1tpbnN0cl9zdGFjay5zdGFja19zaXplIC0gMV0tPm9uX3N0YWNrID0gZmFsc2U7 CisJaW5zdHJfc3RhY2suc3RhY2tfc2l6ZS0tOworCWluc3RyX3N0YWNrLmN1cnJlbnQgPSBwcmV2 OworfQorCitzdGF0aWMgcGdfYXR0cmlidXRlX2Fsd2F5c19pbmxpbmUgVHVwbGVUYWJsZVNsb3Qg KgorRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlLCBib29sIG5lZWRfdGltZXIsIGJv b2wgbmVlZF9zdGFjaykKK3sKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPmlu c3RydW1lbnQ7CisJSW5zdHJ1bWVudGF0aW9uICpwcmV2ID0gaW5zdHJfc3RhY2suY3VycmVudDsK KwlUdXBsZVRhYmxlU2xvdCAqcmVzdWx0OworCisJaWYgKG5lZWRfc3RhY2spCisJCUluc3RyUHVz aFN0YWNrKCZpbnN0ci0+aW5zdHIpOworCWlmIChuZWVkX3RpbWVyKQorCQlJbnN0clN0YXJ0VGlt ZXIoJmluc3RyLT5pbnN0cik7CisKKwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5v ZGUpOworCisJaWYgKG5lZWRfdGltZXIpCisJCUluc3RyU3RvcFRpbWVyKCZpbnN0ci0+aW5zdHIs ICZpbnN0ci0+Y291bnRlcik7CisJaWYgKG5lZWRfc3RhY2spCisJCUluc3RyUG9wU3RhY2tUbyhw cmV2KTsKKworCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1cElzTnVsbChyZXN1bHQp KQorCQlpbnN0ci0+dHVwbGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitz dGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHJGdWxsKFBsYW5TdGF0ZSAq bm9kZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwgdHJ1ZSwgdHJ1ZSk7Cit9 CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJbnN0clJvd3NTdGFja09u bHkoUGxhblN0YXRlICpub2RlKQoreworCXJldHVybiBFeGVjUHJvY05vZGVJbnN0cihub2RlLCBm YWxzZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJ bnN0clJvd3NUaW1lck9ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJldHVybiBFeGVjUHJvY05v ZGVJbnN0cihub2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAq CitFeGVjUHJvY05vZGVJbnN0clJvd3NPbmx5KFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwlyZXR1cm4g RXhlY1Byb2NOb2RlSW5zdHIobm9kZSwgZmFsc2UsIGZhbHNlKTsKK30KKworLyoKKyAqIFJldHVy bnMgYW4gRXhlY1Byb2NOb2RlIHdyYXBwZXIgdGhhdCBwZXJmb3JtcyBpbnN0cnVtZW50YXRpb24g Y2FsbHMsCisgKiB0YWlsb3JlZCB0byB0aGUgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgZW5hYmxl ZCBmb3IgdGhlIG5vZGUuCisgKi8KK0V4ZWNQcm9jTm9kZU10ZAorSW5zdHJOb2RlU2V0dXBFeGVj UHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJYm9vbAkJbmVlZF90aW1l ciA9IGluc3RyLT5pbnN0ci5uZWVkX3RpbWVyOworCWJvb2wJCW5lZWRfc3RhY2sgPSBpbnN0ci0+ aW5zdHIubmVlZF9zdGFjazsKKworCWlmIChuZWVkX3RpbWVyICYmIG5lZWRfc3RhY2spCisJCXJl dHVybiBFeGVjUHJvY05vZGVJbnN0ckZ1bGw7CisJZWxzZSBpZiAobmVlZF9zdGFjaykKKwkJcmV0 dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c1N0YWNrT25seTsKKwllbHNlIGlmIChuZWVkX3RpbWVy KQorCQlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHJSb3dzVGltZXJPbmx5OworCWVsc2UKKwkJcmV0 dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c09ubHk7Cit9CisKIC8qIFRyaWdnZXIgaW5zdHJ1bWVu dGF0aW9uIGhhbmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICoKIEluc3RyQWxsb2NU cmlnZ2VyKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlv bnMsIGludCBuKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IDcyZGYyMTMzNGZmLi5i ZDQ4MWFmZDBkZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o CisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMzAyLDcgKzMwMiw4 IEBAIGV4dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5v ZGVJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKIHR5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90 IFR1cGxlVGFibGVTbG90OwogdHlwZWRlZiBzdHJ1Y3QgUGxhblN0YXRlIFBsYW5TdGF0ZTsKLWV4 dGVybiBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsK K3R5cGVkZWYgVHVwbGVUYWJsZVNsb3QgKigqRXhlY1Byb2NOb2RlTXRkKSAoUGxhblN0YXRlICpw c3RhdGUpOworZXh0ZXJuIEV4ZWNQcm9jTm9kZU10ZCBJbnN0ck5vZGVTZXR1cEV4ZWNQcm9jTm9k ZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiAKIGV4dGVybiBUcmlnZ2VySW5zdHJ1bWVu dGF0aW9uICpJbnN0ckFsbG9jVHJpZ2dlcihRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLAog CQkJCQkJCQkJCQkJIGludCBpbnN0cnVtZW50X29wdGlvbnMsIGludCBuKTsKLS0gCjIuNDcuMQoK --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0010-Add-test_session_buffer_usage-test-module.patch" Content-Disposition: attachment; filename="v16-0010-Add-test_session_buffer_usage-test-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr8k9 RnJvbSAwNzQ1ZmExNWJmOGQzODQzZGUyMjYwNmVkY2Y4ODVmNmZkYmYzZjQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxNiAxMC8xMF0g QWRkIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UgdGVzdCBtb2R1bGUKClRoaXMgaXMgaW50ZW5k ZWQgZm9yIHRlc3RpbmcgaW5zdHJ1bWVudGF0aW9uIHJlbGF0ZWQgbG9naWMgYXMgaXQgcGVydGFp bnMKdG8gdGhlIHRvcCBsZXZlbCBzdGFjayB0aGF0IGlzIG1haW50YWluZWQgYXMgYSBydW5uaW5n IHRvdGFsLiBUaGVyZSBpcwpjdXJyZW50bHkgbm8gaW4tY29yZSB1c2VyIHRoYXQgdXRpbGl6ZXMg dGhlIHRvcC1sZXZlbCB2YWx1ZXMgaW4gdGhpcwptYW5uZXIsIGFuZCBlc3BlY2lhbGx5IGR1cmlu ZyBhYm9ydCBzaXR1YXRpb25zIHRoaXMgaGVscHMgZW5zdXJlIHdlIGRvbid0Cmxvc2UgYWN0aXZp dHkgZHVlIHRvIGluY29ycmVjdCBoYW5kbGluZyBvZiB1bmZpbmFsaXplZCBub2RlIHN0YWNrcy4K LS0tCiBzcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsK IC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlICAgICAgICB8ICAyMyArKwog Li4uL2V4cGVjdGVkL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uub3V0ICAgIHwgMzQyICsrKysr KysrKysrKysrKysrKwogLi4uL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQg ICAgIHwgIDMzICsrCiAuLi4vc3FsL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uuc3FsICAgICAg ICAgfCAyNDUgKysrKysrKysrKysrKwogLi4uL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEu MC5zcWwgICAgICAgIHwgIDMxICsrCiAuLi4vdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jICAg ICAgICAgICAgICAgfCAgOTUgKysrKysKIC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNv bnRyb2wgICAgICAgICB8ICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDc3NiBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3Nlc3Npb25fYnVmZmVyX3VzYWdlL2V4cGVjdGVkL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uu b3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl LnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNv bnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3JjL3Rlc3Qv bW9kdWxlcy9NYWtlZmlsZQppbmRleCAwYTc0YWI1Yzg2Zi4uYzQ1MDgxYTM5ZjkgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtl ZmlsZQpAQCAtNDksNiArNDksNyBAQCBTVUJESVJTID0gXAogCQkgIHRlc3RfcmVzb3duZXIgXAog CQkgIHRlc3RfcmxzX2hvb2tzIFwKIAkJICB0ZXN0X3Nhc2xwcmVwIFwKKwkJICB0ZXN0X3Nlc3Np b25fYnVmZmVyX3VzYWdlIFwKIAkJICB0ZXN0X3NobWVtIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJ CSAgdGVzdF9zbHJ1IFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDRiY2E0MmJiMzcwLi40NWRiNzdi NjIxYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC01MCw2ICs1MCw3IEBAIHN1YmRpcigndGVzdF9y ZWdleCcpCiBzdWJkaXIoJ3Rlc3RfcmVzb3duZXInKQogc3ViZGlyKCd0ZXN0X3Jsc19ob29rcycp CiBzdWJkaXIoJ3Rlc3Rfc2FzbHByZXAnKQorc3ViZGlyKCd0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlJykKIHN1YmRpcigndGVzdF9zaG1lbScpCiBzdWJkaXIoJ3Rlc3Rfc2htX21xJykKIHN1YmRp cigndGVzdF9zbHJ1JykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZS9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMTI1MmIyMjJjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUKQEAgLTAsMCArMSwyMyBAQAorIyBzcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUKKworTU9EVUxFX2Jp ZyA9IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UKK09CSlMgPSBcCisJJChXSU4zMlJFUykgXAor CXRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UubworCitFWFRFTlNJT04gPSB0ZXN0X3Nlc3Npb25f YnVmZmVyX3VzYWdlCitEQVRBID0gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbAor UEdGSUxFREVTQyA9ICJ0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIC0gc2hvdyBidWZmZXIgdXNh Z2Ugc3RhdGlzdGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbiIKKworUkVHUkVTUyA9IHRlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2UKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2Nv bmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdY UykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZQordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIp L3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRy aWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlL2V4cGVjdGVkL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uub3V0 IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL2V4cGVjdGVkL3Rl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi41ZjdkMzQ5ODcxYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlLm91dApAQCAtMCwwICsxLDM0MiBAQAorTE9BRCAndGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZSc7CitDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7CistLSBW ZXJpZnkgYWxsIGNvbHVtbnMgYXJlIG5vbi1uZWdhdGl2ZQorU0VMRUNUIGNvdW50KCopID0gMSBB UyBvayBGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKQorV0hFUkUgc2hhcmVkX2Jsa3Nf aGl0ID49IDAgQU5EIHNoYXJlZF9ibGtzX3JlYWQgPj0gMAorICBBTkQgc2hhcmVkX2Jsa3NfZGly dGllZCA+PSAwIEFORCBzaGFyZWRfYmxrc193cml0dGVuID49IDAKKyAgQU5EIGxvY2FsX2Jsa3Nf aGl0ID49IDAgQU5EIGxvY2FsX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBsb2NhbF9ibGtzX2RpcnRp ZWQgPj0gMCBBTkQgbG9jYWxfYmxrc193cml0dGVuID49IDAKKyAgQU5EIHRlbXBfYmxrc19yZWFk ID49IDAgQU5EIHRlbXBfYmxrc193cml0dGVuID49IDAKKyAgQU5EIHNoYXJlZF9ibGtfcmVhZF90 aW1lID49IDAgQU5EIHNoYXJlZF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCBsb2NhbF9ibGtf cmVhZF90aW1lID49IDAgQU5EIGxvY2FsX2Jsa193cml0ZV90aW1lID49IDAKKyAgQU5EIHRlbXBf YmxrX3JlYWRfdGltZSA+PSAwIEFORCB0ZW1wX2Jsa193cml0ZV90aW1lID49IDA7Cisgb2sgCist LS0tCisgdAorKDEgcm93KQorCistLSBWZXJpZnkgY291bnRlcnMgaW5jcmVhc2UgYWZ0ZXIgYnVm ZmVyIGFjdGl2aXR5CitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOwor IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9idWZfYWN0 aXZpdHkgKGlkIGludCwgZGF0YSB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3RfYnVmX2FjdGl2aXR5 IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAxMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAp IEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgMTAwMAorKDEgcm93KQorCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgKyBsb2Nh bF9ibGtzX3JlYWQgPiAwIEFTIGJsb2Nrc19pbmNyZWFzZWQKK0ZST00gdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZSgpOworIGJsb2Nrc19pbmNyZWFzZWQgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVzdF9idWZfYWN0aXZpdHk7CistLSBQYXJhbGxlbCBx dWVyeSB0ZXN0CitDUkVBVEUgVEFCTEUgcGFyX2RjX3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsK K0lOU0VSVCBJTlRPIHBhcl9kY190YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9k Y190YWI7CisgY291bnQgCistLS0tLS0tCisgIDUwMDAKKygxIHJvdykKKworLS0gTWVhc3VyZSBz ZXJpYWwgc2NhbiBkZWx0YSAobGVhZGVyIGRvZXMgYWxsIHRoZSB3b3JrKQorU0VUIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2VfcmVzZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgq KSBGUk9NIHBhcl9kY190YWI7CisgY291bnQgCistLS0tLS0tCisgIDUwMDAKKygxIHJvdykKKwor Q1JFQVRFIFRFTVAgVEFCTEUgZGNfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNoYXJlZF9ibGtz X2hpdCBBUyBzZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7Cist LSBNZWFzdXJlIHBhcmFsbGVsIHNjYW4gZGVsdGEgd2l0aCBsZWFkZXIgTk9UIHBhcnRpY2lwYXRp bmcgaW4gc2Nhbm5pbmcuCistLSBXb3JrZXJzIGRvIGFsbCB0YWJsZSBzY2FubmluZzsgbGVhZGVy IG9ubHkgcnVucyB0aGUgR2F0aGVyIG5vZGUuCitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7 CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitT RVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitTRUxFQ1QgdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVz ZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIGNvdW50KCopIEZST00gcGFyX2RjX3RhYjsKKyBjb3VudCAKKy0tLS0tLS0KKyAgNTAwMAor KDEgcm93KQorCistLSBDb25maXJtIHdlIGdvdCBhIHNpbWlsYXIgaGl0IGNvdW50ZXIgdGhyb3Vn aCBwYXJhbGxlbCB3b3JrZXIgYWNjdW11bGF0aW9uCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0ID4g cy5zZXJpYWxfZGVsdGEgLyAyIEFORCBzaGFyZWRfYmxrc19oaXQgPCBzLnNlcmlhbF9kZWx0YSAq IDIKKyAgICAgICBBUyBsZWFkZXJfYnVmZmVyc19tYXRjaAorRlJPTSB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlKCksIGRjX3NlcmlhbF9yZXN1bHQgczsKKyBsZWFkZXJfYnVmZmVyc19tYXRjaCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1JFU0VUIHBhcmFsbGVsX3Nl dHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7 CitSRVNFVCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbjsKK0RST1AgVEFCTEUgcGFyX2Rj X3RhYiwgZGNfc2VyaWFsX3Jlc3VsdDsKKy0tCistLSBBYm9ydC9leGNlcHRpb24gdGVzdHM6IHZl cmlmeSBidWZmZXIgdXNhZ2Ugc3Vydml2ZXMgdmFyaW91cyBlcnJvciBwYXRocy4KKy0tCistLSBS b2xsZWQtYmFjayBkaXZpZGUtYnktemVybyB1bmRlciBFWFBMQUlOIEFOQUxZWkUKK0NSRUFURSBU RU1QIFRBQkxFIGV4Y190YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK1NFTEVDVCB0ZXN0X3Nlc3Np b25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNl dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYpCisgICAgICAgIFdJVEggaW5zIEFTIChJ TlNFUlQgSU5UTyBleGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgICAg ICBTRUxFQ1QgYSAvIDAgRlJPTSBpbnM7CitFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8KK1NFTEVD VCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIGV4Y2VwdGlvbl9idWZmZXJzX3Zpc2libGUKK0ZS T00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworIGV4Y2VwdGlvbl9idWZmZXJzX3Zpc2li bGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFC TEUgZXhjX3RhYjsKKy0tIFVuaXF1ZSBjb25zdHJhaW50IHZpb2xhdGlvbiBpbiByZWd1bGFyIHF1 ZXJ5CitDUkVBVEUgVEVNUCBUQUJMRSB1bmlxdWVfdGFiIChhIGludCBVTklRVUUsIGIgY2hhcigy MCkpOworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdmaXJzdCcpOworU0VMRUNU IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK0lOU0VSVCBJTlRPIHVuaXF1ZV90YWIgVkFMVUVTICgxLCAnZHVwbGljYXRlJyk7CitF UlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInVu aXF1ZV90YWJfYV9rZXkiCitERVRBSUw6ICBLZXkgKGEpPSgxKSBhbHJlYWR5IGV4aXN0cy4KK1NF TEVDVCBsb2NhbF9ibGtzX2hpdCA+IDAgQVMgdW5pcXVlX3Zpb2xhdGlvbl9idWZmZXJzX3Zpc2li bGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworIHVuaXF1ZV92aW9sYXRpb25f YnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworRFJPUCBUQUJMRSB1bmlxdWVfdGFiOworLS0gQ2F1Z2h0IGV4Y2VwdGlvbiBp biBQTC9wZ1NRTCBzdWJ0cmFuc2FjdGlvbiAoQkVHSU4uLi5FWENFUFRJT04pCitDUkVBVEUgVEVN UCBUQUJMRSBzdWJ4YWN0X3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIEZVTkNUSU9O IHN1YnhhY3RfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQKK0JFR0lOCisgICAgQkVHSU4K KyAgICAgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQor ICAgICAgICAgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHN1YnhhY3RfdGFiIFZBTFVFUyAo MSwgJydhYWEnJykgUkVUVVJOSU5HIGEpCisgICAgICAgICAgICBTRUxFQ1QgYSAvIDAgRlJPTSBp bnMnOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgICAgICBS RVRVUk4gJ2NhdWdodCc7CisgICAgRU5EOworICAgIFJFVFVSTiAnbm90IHJlYWNoZWQnOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl X3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qgc3VieGFjdF9leGNf ZnVuYygpOworIHN1YnhhY3RfZXhjX2Z1bmMgCistLS0tLS0tLS0tLS0tLS0tLS0KKyBjYXVnaHQK KygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMgc3VieGFjdF9idWZm ZXJzX3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworIHN1YnhhY3Rf YnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykK KworRFJPUCBGVU5DVElPTiBzdWJ4YWN0X2V4Y19mdW5jOworRFJPUCBUQUJMRSBzdWJ4YWN0X3Rh YjsKKy0tIEN1cnNvciAoRk9SIGxvb3ApIGluIGFib3J0ZWQgc3VidHJhbnNhY3Rpb247IHZlcmlm eSBwb3N0LWV4Y2VwdGlvbiB0cmFja2luZworQ1JFQVRFIFRFTVAgVEFCTEUgY3Vyc29yX3RhYiAo YSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIGN1cnNvcl90YWIgU0VMRUNUIGksIHJl cGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBpOworQ1JFQVRF IEZVTkNUSU9OIGN1cnNvcl9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAorREVDTEFSRQor ICAgIHJlYyByZWNvcmQ7CisgICAgY250IGludCA6PSAwOworQkVHSU4KKyAgICBCRUdJTgorICAg ICAgICBGT1IgcmVjIElOIFNFTEVDVCAqIEZST00gY3Vyc29yX3RhYiBMT09QCisgICAgICAgICAg ICBjbnQgOj0gY250ICsgMTsKKyAgICAgICAgICAgIElGIGNudCA9IDI1MCBUSEVOCisgICAgICAg ICAgICAgICAgUEVSRk9STSAxIC8gMDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5E IExPT1A7CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgICAg IFJFVFVSTiAnY2F1Z2h0IGFmdGVyICcgfHwgY250IHx8ICcgcm93cyc7CisgICAgRU5EOworICAg IFJFVFVSTiAnbm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVD VCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgY3Vyc29yX2V4Y19mdW5jKCk7CisgICAgY3Vyc29yX2V4Y19mdW5jICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjYXVnaHQgYWZ0ZXIgMjUwIHJvd3MKKygxIHJv dykKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMAorICAgICAg IEFTIGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlKCk7CisgY3Vyc29yX3N1YnhhY3RfYnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgRlVOQ1RJT04gY3Vy c29yX2V4Y19mdW5jOworRFJPUCBUQUJMRSBjdXJzb3JfdGFiOworLS0gVHJpZ2dlciBhYm9ydCB1 bmRlciBFWFBMQUlOIEFOQUxZWkU6IHZlcmlmeSB0aGF0IGJ1ZmZlciBhY3Rpdml0eSBmcm9tIGEK Ky0tIHRyaWdnZXIgdGhhdCB0aHJvd3MgYW4gZXJyb3IgaXMgc3RpbGwgcHJvcGVybHkgcHJvcGFn YXRlZC4KK0NSRUFURSBURU1QIFRBQkxFIHRyaWdfZXJyX3RhYiAoYSBpbnQpOworQ1JFQVRFIFRF TVAgVEFCTEUgdHJpZ193b3JrX3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRP IHRyaWdfd29ya190YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwKSBBUyBpOworLS0gV2FybSBsb2NhbCBidWZmZXJzIHNvIHRyaWdfd29ya190 YWIgcmVhZHMgYmVjb21lIGhpdHMKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyaWdfd29ya190YWI7 CisgY291bnQgCistLS0tLS0tCisgICA1MDAKKygxIHJvdykKKworQ1JFQVRFIEZVTkNUSU9OIHRy aWdfZXJyX2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKK0JFR0lOCisgICAgUEVSRk9STSBj b3VudCgqKSBGUk9NIHRyaWdfd29ya190YWI7CisgICAgUkFJU0UgRVhDRVBUSU9OICd0cmlnZ2Vy IGVycm9yJzsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NS RUFURSBUUklHR0VSIHRyaWdfZXJyIEJFRk9SRSBJTlNFUlQgT04gdHJpZ19lcnJfdGFiCisgICAg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ19lcnJfZnVuYygpOworLS0gTWVhc3Vy ZSBob3cgbWFueSBsb2NhbCBidWZmZXIgaGl0cyBhIHNjYW4gb2YgdHJpZ193b3JrX3RhYiBwcm9k dWNlcworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyB0ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyaWdfd29ya190YWI7Cisg Y291bnQgCistLS0tLS0tCisgICA1MDAKKygxIHJvdykKKworQ1JFQVRFIFRFTVAgVEFCTEUgdHJp Z19zZXJpYWxfcmVzdWx0IEFTCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgQVMgc2VyaWFsX2hpdHMg RlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CistLSBOb3cgdHJpZ2dlciB0aGUgc2Ft ZSBzY2FuIHZpYSBhIHRyaWdnZXIgdGhhdCBlcnJvcnMKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYpCisgICAgSU5TRVJUIElOVE8gdHJpZ19lcnJfdGFi IFZBTFVFUyAoMSk7CitFUlJPUjogIHRyaWdnZXIgZXJyb3IKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiB0cmlnX2Vycl9mdW5jKCkgbGluZSA0IGF0IFJBSVNFCistLSBUaGUgdHJpZ2dlciBz Y2FubmVkIHRyaWdfd29ya190YWIgYnV0IGVycm9yZWQgYmVmb3JlIEluc3RyU3RvcFRyaWdnZXIg cmFuLgorLS0gSW5zdHJTdG9wRmluYWxpemUgaW4gdGhlIFBHX0NBVENIIGVuc3VyZXMgYnVmZmVy IGRhdGEgaXMgc3RpbGwgcHJvcGFnYXRlZC4KK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCA+PSBzLnNl cmlhbF9oaXRzIC8gMgorICAgICAgIEFTIHRyaWdnZXJfYWJvcnRfYnVmZmVyc19wcm9wYWdhdGVk CitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKSwgdHJpZ19zZXJpYWxfcmVzdWx0IHM7 CisgdHJpZ2dlcl9hYm9ydF9idWZmZXJzX3Byb3BhZ2F0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHRyaWdfZXJyX3RhYiwg dHJpZ193b3JrX3RhYiwgdHJpZ19zZXJpYWxfcmVzdWx0OworRFJPUCBGVU5DVElPTiB0cmlnX2Vy cl9mdW5jOworLS0gUGFyYWxsZWwgd29ya2VyIGFib3J0OiB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5 IGlzIGN1cnJlbnRseSBOT1QgcHJvcGFnYXRlZCBvbiBhYm9ydC4KKy0tCistLSBXaGVuIGEgcGFy YWxsZWwgd29ya2VyIGFib3J0cywgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5IGFuZAorLS0gRXhlY1Bh cmFsbGVsUmVwb3J0SW5zdHJ1bWVudGF0aW9uIG5ldmVyIHJ1biwgc28gdGhlIHdvcmtlcidzIGJ1 ZmZlcgorLS0gYWN0aXZpdHkgaXMgbmV2ZXIgd3JpdHRlbiB0byBzaGFyZWQgbWVtb3J5LCBkZXNw aXRlIHRoZSBpbmZvcm1hdGlvbiBoYXZpbmcgYmVlbgorLS0gY2FwdHVyZWQgYnkgdGhlIHJlcyBv d25lciByZWxlYXNlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZy4KK0NSRUFURSBUQUJMRSBwYXJf YWJvcnRfdGFiIChhIGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gcGFyX2Fib3J0X3Rh YiBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAw KSBBUyBpOworLS0gV2FybSBzaGFyZWQgYnVmZmVycyBzbyBhbGwgcmVhZHMgYmVjb21lIGhpdHMK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9hYm9ydF90YWI7CisgY291bnQgCistLS0tLS0tCisg IDUwMDAKKygxIHJvdykKKworLS0gTWVhc3VyZSBzZXJpYWwgc2NhbiBkZWx0YSBhcyBhIHJlZmVy ZW5jZSAobGVhZGVyIHJlYWRzIGFsbCBibG9ja3MpCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDA7CitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgp OworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGI6OmludDIgRlJPTSBwYXJfYWJv cnRfdGFiIFdIRVJFIGEgPiAxMDAwOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3Ig dHlwZSBzbWFsbGludDogInh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IgorQ1JFQVRFIFRB QkxFIHBhcl9hYm9ydF9zZXJpYWxfcmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IEFT IHNlcmlhbF9kZWx0YSBGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKy0tIE5vdyBm b3JjZSBwYXJhbGxlbCB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGluZyBpbiBzY2FubmluZwor U0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw OworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0 aW9uID0gb2ZmOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247IC0tIEVuc3VyZSB3ZSBn ZXQgQ09OVEVYVCBsaW5lIGNvbnNpc3RlbnRseQorU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2VfcmVzZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBiOjppbnQy IEZST00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKK0VSUk9SOiAgaW52YWxpZCBpbnB1 dCBzeW50YXggZm9yIHR5cGUgc21hbGxpbnQ6ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eCIKK0NPTlRFWFQ6ICBwYXJhbGxlbCB3b3JrZXIKK1JFU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5 OworLS0gV29ya2VycyBzY2FubmVkIHRoZSB0YWJsZSBidXQgYWJvcnRlZCBiZWZvcmUgcmVwb3J0 aW5nIHN0YXRzIGJhY2suCistLSBUaGUgbGVhZGVyJ3MgZGVsdGEgc2hvdWxkIGJlIG11Y2ggbGVz cyB0aGFuIGEgc2VyaWFsIHNjYW4sIGRvY3VtZW50aW5nCistLSB0aGF0IHdvcmtlciBidWZmZXIg YWN0aXZpdHkgaXMgbG9zdCBvbiBhYm9ydC4KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgPCBzLnNl cmlhbF9kZWx0YSAvIDIKKyAgICAgICBBUyB3b3JrZXJfYWJvcnRfYnVmZmVyc19ub3RfcHJvcGFn YXRlZAorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHBhcl9hYm9ydF9zZXJpYWxf cmVzdWx0IHM7Cisgd29ya2VyX2Fib3J0X2J1ZmZlcnNfbm90X3Byb3BhZ2F0ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitSRVNFVCBwYXJh bGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9w YXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyOworUkVTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb247CitEUk9QIFRBQkxF IHBhcl9hYm9ydF90YWIsIHBhcl9hYm9ydF9zZXJpYWxfcmVzdWx0OworLS0gQ2xlYW51cAorRFJP UCBFWFRFTlNJT04gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWlsZApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk2ZjY3ZGM3ZmUKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24u YnVpbGQKQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vfc291 cmNlcyA9IGZpbGVzKAorICAndGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jJywKKykKKworaWYg aG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vfc291 cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAg ICAnLS1OQU1FJywgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnLAorICAgICctLUZJTEVERVND JywgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UgLSBzaG93IGJ1ZmZlciB1c2FnZSBzdGF0aXN0 aWNzIGZvciB0aGUgY3VycmVudCBzZXNzaW9uJyxdKQorZW5kaWYKKwordGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZSA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnLAor ICB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9t b2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2UKKwordGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMoCisgICd0ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlLmNvbnRyb2wnLAorICAndGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbCcs CispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAndGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZScs CisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJy ZW50X2J1aWxkX2RpcigpLAorICAncmVncmVzcyc6IHsKKyAgICAnc3FsJzogWworICAgICAgJ3Rl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uvc3FsL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2Uuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlL3NxbC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGFmMjE1OWM0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uvc3FsL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2Uuc3FsCkBAIC0wLDAgKzEsMjQ1IEBACitMT0FEICd0ZXN0X3Nlc3Npb25f YnVmZmVyX3VzYWdlJzsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2Fn ZTsKKworLS0gVmVyaWZ5IGFsbCBjb2x1bW5zIGFyZSBub24tbmVnYXRpdmUKK1NFTEVDVCBjb3Vu dCgqKSA9IDEgQVMgb2sgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkKK1dIRVJFIHNo YXJlZF9ibGtzX2hpdCA+PSAwIEFORCBzaGFyZWRfYmxrc19yZWFkID49IDAKKyAgQU5EIHNoYXJl ZF9ibGtzX2RpcnRpZWQgPj0gMCBBTkQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBs b2NhbF9ibGtzX2hpdCA+PSAwIEFORCBsb2NhbF9ibGtzX3JlYWQgPj0gMAorICBBTkQgbG9jYWxf Ymxrc19kaXJ0aWVkID49IDAgQU5EIGxvY2FsX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCB0ZW1w X2Jsa3NfcmVhZCA+PSAwIEFORCB0ZW1wX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBzaGFyZWRf YmxrX3JlYWRfdGltZSA+PSAwIEFORCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQg bG9jYWxfYmxrX3JlYWRfdGltZSA+PSAwIEFORCBsb2NhbF9ibGtfd3JpdGVfdGltZSA+PSAwCisg IEFORCB0ZW1wX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgdGVtcF9ibGtfd3JpdGVfdGltZSA+PSAw OworCistLSBWZXJpZnkgY291bnRlcnMgaW5jcmVhc2UgYWZ0ZXIgYnVmZmVyIGFjdGl2aXR5CitT RUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworCitDUkVBVEUgVEVNUCBU QUJMRSB0ZXN0X2J1Zl9hY3Rpdml0eSAoaWQgaW50LCBkYXRhIHRleHQpOworSU5TRVJUIElOVE8g dGVzdF9idWZfYWN0aXZpdHkgU0VMRUNUIGksIHJlcGVhdCgneCcsIDEwMCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwMCkgQVMgaTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfYnVmX2Fj dGl2aXR5OworCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIEFT IGJsb2Nrc19pbmNyZWFzZWQKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitE Uk9QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5OworCistLSBQYXJhbGxlbCBxdWVyeSB0ZXN0CitD UkVBVEUgVEFCTEUgcGFyX2RjX3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRP IHBhcl9kY190YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTAwMCkgQVMgaTsKKworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2RjX3RhYjsKKwor LS0gTWVhc3VyZSBzZXJpYWwgc2NhbiBkZWx0YSAobGVhZGVyIGRvZXMgYWxsIHRoZSB3b3JrKQor U0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworCitTRUxFQ1QgdGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2Rj X3RhYjsKKworQ1JFQVRFIFRFTVAgVEFCTEUgZGNfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNo YXJlZF9ibGtzX2hpdCBBUyBzZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlKCk7CisKKy0tIE1lYXN1cmUgcGFyYWxsZWwgc2NhbiBkZWx0YSB3aXRoIGxlYWRlciBOT1Qg cGFydGljaXBhdGluZyBpbiBzY2FubmluZy4KKy0tIFdvcmtlcnMgZG8gYWxsIHRhYmxlIHNjYW5u aW5nOyBsZWFkZXIgb25seSBydW5zIHRoZSBHYXRoZXIgbm9kZS4KK1NFVCBwYXJhbGxlbF9zZXR1 cF9jb3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK1NFVCBtaW5fcGFyYWxs ZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMjsKK1NFVCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKKworU0VM RUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHBhcl9kY190YWI7CisKKy0tIENvbmZpcm0gd2UgZ290IGEgc2ltaWxhciBoaXQgY291bnRl ciB0aHJvdWdoIHBhcmFsbGVsIHdvcmtlciBhY2N1bXVsYXRpb24KK1NFTEVDVCBzaGFyZWRfYmxr c19oaXQgPiBzLnNlcmlhbF9kZWx0YSAvIDIgQU5EIHNoYXJlZF9ibGtzX2hpdCA8IHMuc2VyaWFs X2RlbHRhICogMgorICAgICAgIEFTIGxlYWRlcl9idWZmZXJzX21hdGNoCitGUk9NIHRlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2UoKSwgZGNfc2VyaWFsX3Jlc3VsdCBzOworCitSRVNFVCBwYXJhbGxl bF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJh bGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyOworUkVTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb247CisKK0RST1AgVEFCTEUg cGFyX2RjX3RhYiwgZGNfc2VyaWFsX3Jlc3VsdDsKKworLS0KKy0tIEFib3J0L2V4Y2VwdGlvbiB0 ZXN0czogdmVyaWZ5IGJ1ZmZlciB1c2FnZSBzdXJ2aXZlcyB2YXJpb3VzIGVycm9yIHBhdGhzLgor LS0KKworLS0gUm9sbGVkLWJhY2sgZGl2aWRlLWJ5LXplcm8gdW5kZXIgRVhQTEFJTiBBTkFMWVpF CitDUkVBVEUgVEVNUCBUQUJMRSBleGNfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CisKK1NFTEVD VCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRikKKyAgICAgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIGV4 Y190YWIgVkFMVUVTICgxLCAnYWFhJykgUkVUVVJOSU5HIGEpCisgICAgICAgIFNFTEVDVCBhIC8g MCBGUk9NIGluczsKKworU0VMRUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMgZXhjZXB0aW9u X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKK0RS T1AgVEFCTEUgZXhjX3RhYjsKKworLS0gVW5pcXVlIGNvbnN0cmFpbnQgdmlvbGF0aW9uIGluIHJl Z3VsYXIgcXVlcnkKK0NSRUFURSBURU1QIFRBQkxFIHVuaXF1ZV90YWIgKGEgaW50IFVOSVFVRSwg YiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZBTFVFUyAoMSwgJ2ZpcnN0Jyk7 CisKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitJTlNFUlQgSU5U TyB1bmlxdWVfdGFiIFZBTFVFUyAoMSwgJ2R1cGxpY2F0ZScpOworCitTRUxFQ1QgbG9jYWxfYmxr c19oaXQgPiAwIEFTIHVuaXF1ZV92aW9sYXRpb25fYnVmZmVyc192aXNpYmxlCitGUk9NIHRlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKworRFJPUCBUQUJMRSB1bmlxdWVfdGFiOworCistLSBD YXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FMIHN1YnRyYW5zYWN0aW9uIChCRUdJTi4uLkVYQ0VQ VElPTikKK0NSRUFURSBURU1QIFRBQkxFIHN1YnhhY3RfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7 CisKK0NSRUFURSBGVU5DVElPTiBzdWJ4YWN0X2V4Y19mdW5jKCkgUkVUVVJOUyB0ZXh0IEFTICQk CitCRUdJTgorICAgIEJFR0lOCisgICAgICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMsIENPU1RTIE9GRikKKyAgICAgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBz dWJ4YWN0X3RhYiBWQUxVRVMgKDEsICcnYWFhJycpIFJFVFVSTklORyBhKQorICAgICAgICAgICAg U0VMRUNUIGEgLyAwIEZST00gaW5zJzsKKyAgICBFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96 ZXJvIFRIRU4KKyAgICAgICAgUkVUVVJOICdjYXVnaHQnOworICAgIEVORDsKKyAgICBSRVRVUk4g J25vdCByZWFjaGVkJzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCB0ZXN0 X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1Qgc3VieGFjdF9leGNfZnVuYygp OworCitTRUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBzdWJ4YWN0X2J1ZmZlcnNfdmlz aWJsZQorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKK0RST1AgRlVOQ1RJT04g c3VieGFjdF9leGNfZnVuYzsKK0RST1AgVEFCTEUgc3VieGFjdF90YWI7CisKKy0tIEN1cnNvciAo Rk9SIGxvb3ApIGluIGFib3J0ZWQgc3VidHJhbnNhY3Rpb247IHZlcmlmeSBwb3N0LWV4Y2VwdGlv biB0cmFja2luZworQ1JFQVRFIFRFTVAgVEFCTEUgY3Vyc29yX3RhYiAoYSBpbnQsIGIgY2hhcigy MDApKTsKK0lOU0VSVCBJTlRPIGN1cnNvcl90YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBpOworCitDUkVBVEUgRlVOQ1RJT04gY3Vy c29yX2V4Y19mdW5jKCkgUkVUVVJOUyB0ZXh0IEFTICQkCitERUNMQVJFCisgICAgcmVjIHJlY29y ZDsKKyAgICBjbnQgaW50IDo9IDA7CitCRUdJTgorICAgIEJFR0lOCisgICAgICAgIEZPUiByZWMg SU4gU0VMRUNUICogRlJPTSBjdXJzb3JfdGFiIExPT1AKKyAgICAgICAgICAgIGNudCA6PSBjbnQg KyAxOworICAgICAgICAgICAgSUYgY250ID0gMjUwIFRIRU4KKyAgICAgICAgICAgICAgICBQRVJG T1JNIDEgLyAwOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQgTE9PUDsKKyAgICBF WENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KKyAgICAgICAgUkVUVVJOICdjYXVn aHQgYWZ0ZXIgJyB8fCBjbnQgfHwgJyByb3dzJzsKKyAgICBFTkQ7CisgICAgUkVUVVJOICdub3Qg cmVhY2hlZCc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIGN1cnNvcl9leGNfZnVuYygpOworCitT RUxFQ1QgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwCisgICAgICAgQVMgY3Vy c29yX3N1YnhhY3RfYnVmZmVyc192aXNpYmxlCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2UoKTsKKworRFJPUCBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIGN1cnNv cl90YWI7CisKKy0tIFRyaWdnZXIgYWJvcnQgdW5kZXIgRVhQTEFJTiBBTkFMWVpFOiB2ZXJpZnkg dGhhdCBidWZmZXIgYWN0aXZpdHkgZnJvbSBhCistLSB0cmlnZ2VyIHRoYXQgdGhyb3dzIGFuIGVy cm9yIGlzIHN0aWxsIHByb3Blcmx5IHByb3BhZ2F0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSB0cmln X2Vycl90YWIgKGEgaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHRyaWdfd29ya190YWIgKGEgaW50 LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyB0cmlnX3dvcmtfdGFiIFNFTEVDVCBpLCByZXBl YXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKworLS0gV2Fy bSBsb2NhbCBidWZmZXJzIHNvIHRyaWdfd29ya190YWIgcmVhZHMgYmVjb21lIGhpdHMKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRyaWdfd29ya190YWI7CisKK0NSRUFURSBGVU5DVElPTiB0cmlnX2Vy cl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZPUk0gY291bnQo KikgRlJPTSB0cmlnX3dvcmtfdGFiOworICAgIFJBSVNFIEVYQ0VQVElPTiAndHJpZ2dlciBlcnJv cic7CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFU RSBUUklHR0VSIHRyaWdfZXJyIEJFRk9SRSBJTlNFUlQgT04gdHJpZ19lcnJfdGFiCisgICAgRk9S IEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ19lcnJfZnVuYygpOworCistLSBNZWFzdXJl IGhvdyBtYW55IGxvY2FsIGJ1ZmZlciBoaXRzIGEgc2NhbiBvZiB0cmlnX3dvcmtfdGFiIHByb2R1 Y2VzCitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIGNv dW50KCopIEZST00gdHJpZ193b3JrX3RhYjsKKworQ1JFQVRFIFRFTVAgVEFCTEUgdHJpZ19zZXJp YWxfcmVzdWx0IEFTCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgQVMgc2VyaWFsX2hpdHMgRlJPTSB0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKKy0tIE5vdyB0cmlnZ2VyIHRoZSBzYW1lIHNj YW4gdmlhIGEgdHJpZ2dlciB0aGF0IGVycm9ycworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2VfcmVzZXQoKTsKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRikKKyAg ICBJTlNFUlQgSU5UTyB0cmlnX2Vycl90YWIgVkFMVUVTICgxKTsKKworLS0gVGhlIHRyaWdnZXIg c2Nhbm5lZCB0cmlnX3dvcmtfdGFiIGJ1dCBlcnJvcmVkIGJlZm9yZSBJbnN0clN0b3BUcmlnZ2Vy IHJhbi4KKy0tIEluc3RyU3RvcEZpbmFsaXplIGluIHRoZSBQR19DQVRDSCBlbnN1cmVzIGJ1ZmZl ciBkYXRhIGlzIHN0aWxsIHByb3BhZ2F0ZWQuCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgPj0gcy5z ZXJpYWxfaGl0cyAvIDIKKyAgICAgICBBUyB0cmlnZ2VyX2Fib3J0X2J1ZmZlcnNfcHJvcGFnYXRl ZAorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHRyaWdfc2VyaWFsX3Jlc3VsdCBz OworCitEUk9QIFRBQkxFIHRyaWdfZXJyX3RhYiwgdHJpZ193b3JrX3RhYiwgdHJpZ19zZXJpYWxf cmVzdWx0OworRFJPUCBGVU5DVElPTiB0cmlnX2Vycl9mdW5jOworCistLSBQYXJhbGxlbCB3b3Jr ZXIgYWJvcnQ6IHdvcmtlciBidWZmZXIgYWN0aXZpdHkgaXMgY3VycmVudGx5IE5PVCBwcm9wYWdh dGVkIG9uIGFib3J0LgorLS0KKy0tIFdoZW4gYSBwYXJhbGxlbCB3b3JrZXIgYWJvcnRzLCBJbnN0 ckVuZFBhcmFsbGVsUXVlcnkgYW5kCistLSBFeGVjUGFyYWxsZWxSZXBvcnRJbnN0cnVtZW50YXRp b24gbmV2ZXIgcnVuLCBzbyB0aGUgd29ya2VyJ3MgYnVmZmVyCistLSBhY3Rpdml0eSBpcyBuZXZl ciB3cml0dGVuIHRvIHNoYXJlZCBtZW1vcnksIGRlc3BpdGUgdGhlIGluZm9ybWF0aW9uIGhhdmlu ZyBiZWVuCistLSBjYXB0dXJlZCBieSB0aGUgcmVzIG93bmVyIHJlbGVhc2UgaW5zdHJ1bWVudGF0 aW9uIGhhbmRsaW5nLgorQ1JFQVRFIFRBQkxFIHBhcl9hYm9ydF90YWIgKGEgaW50LCBiIGNoYXIo MjAwKSk7CitJTlNFUlQgSU5UTyBwYXJfYWJvcnRfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAy MDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CisKKy0tIFdhcm0gc2hhcmVk IGJ1ZmZlcnMgc28gYWxsIHJlYWRzIGJlY29tZSBoaXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSBw YXJfYWJvcnRfdGFiOworCistLSBNZWFzdXJlIHNlcmlhbCBzY2FuIGRlbHRhIGFzIGEgcmVmZXJl bmNlIChsZWFkZXIgcmVhZHMgYWxsIGJsb2NrcykKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19w ZXJfZ2F0aGVyID0gMDsKKworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQo KTsKK1NFTEVDVCBiOjppbnQyIEZST00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKKwor Q1JFQVRFIFRBQkxFIHBhcl9hYm9ydF9zZXJpYWxfcmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Js a3NfaGl0IEFTIHNlcmlhbF9kZWx0YSBGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsK KworLS0gTm93IGZvcmNlIHBhcmFsbGVsIHdpdGggbGVhZGVyIE5PVCBwYXJ0aWNpcGF0aW5nIGlu IHNjYW5uaW5nCitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVw bGVfY29zdCA9IDA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitTRVQgcGFyYWxsZWxfbGVhZGVy X3BhcnRpY2lwYXRpb24gPSBvZmY7CitTRVQgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSBvbjsgLS0g RW5zdXJlIHdlIGdldCBDT05URVhUIGxpbmUgY29uc2lzdGVudGx5CisKK1NFTEVDVCB0ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgYjo6aW50MiBGUk9NIHBhcl9hYm9y dF90YWIgV0hFUkUgYSA+IDEwMDA7CisKK1JFU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5OworCist LSBXb3JrZXJzIHNjYW5uZWQgdGhlIHRhYmxlIGJ1dCBhYm9ydGVkIGJlZm9yZSByZXBvcnRpbmcg c3RhdHMgYmFjay4KKy0tIFRoZSBsZWFkZXIncyBkZWx0YSBzaG91bGQgYmUgbXVjaCBsZXNzIHRo YW4gYSBzZXJpYWwgc2NhbiwgZG9jdW1lbnRpbmcKKy0tIHRoYXQgd29ya2VyIGJ1ZmZlciBhY3Rp dml0eSBpcyBsb3N0IG9uIGFib3J0LgorU0VMRUNUIHNoYXJlZF9ibGtzX2hpdCA8IHMuc2VyaWFs X2RlbHRhIC8gMgorICAgICAgIEFTIHdvcmtlcl9hYm9ydF9idWZmZXJzX25vdF9wcm9wYWdhdGVk CitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKSwgcGFyX2Fib3J0X3NlcmlhbF9yZXN1 bHQgczsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxl X2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNp cGF0aW9uOworCitEUk9QIFRBQkxFIHBhcl9hYm9ydF90YWIsIHBhcl9hYm9ydF9zZXJpYWxfcmVz dWx0OworCistLSBDbGVhbnVwCitEUk9QIEVYVEVOU0lPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4w LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTk4MzNiZTQ3MGEK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbApAQCAtMCwwICsxLDMxIEBA CisvKiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMg c291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8g VXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UiIHRvIGxvYWQg dGhpcyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZSgKKyAgICBPVVQgc2hhcmVkX2Jsa3NfaGl0IGJpZ2ludCwKKyAgICBPVVQgc2hhcmVkX2Js a3NfcmVhZCBiaWdpbnQsCisgICAgT1VUIHNoYXJlZF9ibGtzX2RpcnRpZWQgYmlnaW50LAorICAg IE9VVCBzaGFyZWRfYmxrc193cml0dGVuIGJpZ2ludCwKKyAgICBPVVQgbG9jYWxfYmxrc19oaXQg YmlnaW50LAorICAgIE9VVCBsb2NhbF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9VVCBsb2NhbF9i bGtzX2RpcnRpZWQgYmlnaW50LAorICAgIE9VVCBsb2NhbF9ibGtzX3dyaXR0ZW4gYmlnaW50LAor ICAgIE9VVCB0ZW1wX2Jsa3NfcmVhZCBiaWdpbnQsCisgICAgT1VUIHRlbXBfYmxrc193cml0dGVu IGJpZ2ludCwKKyAgICBPVVQgc2hhcmVkX2Jsa19yZWFkX3RpbWUgZG91YmxlIHByZWNpc2lvbiwK KyAgICBPVVQgc2hhcmVkX2Jsa193cml0ZV90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VU IGxvY2FsX2Jsa19yZWFkX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgbG9jYWxfYmxr X3dyaXRlX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgdGVtcF9ibGtfcmVhZF90aW1l IGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIHRlbXBfYmxrX3dyaXRlX3RpbWUgZG91YmxlIHBy ZWNpc2lvbgorKQorUkVUVVJOUyByZWNvcmQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAndGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZScKK0xBTkdVQUdFIEMgUEFSQUxMRUwgUkVTVFJJQ1RFRDsKKwor Q1JFQVRFIEZVTkNUSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKQorUkVUVVJO UyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vf cmVzZXQnCitMQU5HVUFHRSBDIFBBUkFMTEVMIFJFU1RSSUNURUQ7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNTBlYjFhMmZmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jCkBA IC0wLDAgKzEsOTUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHRlc3Rfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UuYworICoJICBzaG93IGJ1ZmZlciB1c2FnZSBzdGF0aXN0aWNzIGZvciB0aGUg Y3VycmVudCBzZXNzaW9uCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqCSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYworICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNz L2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNs dWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKKworUEdfTU9EVUxFX01BR0lDX0VYVCgKKwkJCQkJLm5hbWUgPSAidGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZSIsCisJCQkJCS52ZXJzaW9uID0gUEdfVkVSU0lPTgorKTsKKwor I2RlZmluZSBOVU1fQlVGRkVSX1VTQUdFX0NPTFVNTlMgMTYKKworUEdfRlVOQ1RJT05fSU5GT19W MSh0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCk7CisKKyNkZWZpbmUgSEFWRV9JTlNUUl9TVEFDSyAx CQkvKiBDaGFuZ2UgdG8gMCB3aGVuIHRlc3RpbmcgYmVmb3JlIHN0YWNrCisJCQkJCQkJCSAqIGNo YW5nZSAqLworCisvKgorICogU1FMIGZ1bmN0aW9uOiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl KCkKKyAqCisgKiBSZXR1cm5zIGEgc2luZ2xlIHJvdyB3aXRoIGFsbCBCdWZmZXJVc2FnZSBjb3Vu dGVycyBhY2N1bXVsYXRlZCBzaW5jZSB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBzZXNzaW9uLiBFeGNs dWRlcyBhbnkgdXNhZ2Ugbm90IHlldCBhZGRlZCB0byB0aGUgdG9wIG9mIHRoZQorICogc3RhY2sg KGUuZy4gaWYgdGhpcyBnZXRzIGNhbGxlZCBpbnNpZGUgYSBzdGF0ZW1lbnQgdGhhdCBhbHNvIGhh ZCBidWZmZXIKKyAqIGFjdGl2aXR5KS4KKyAqLworRGF0dW0KK3Rlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlEYXR1bQkJ dmFsdWVzW05VTV9CVUZGRVJfVVNBR0VfQ09MVU1OU107CisJYm9vbAkJbnVsbHNbTlVNX0JVRkZF Ul9VU0FHRV9DT0xVTU5TXTsKKwlCdWZmZXJVc2FnZSAqdXNhZ2U7CisKKwlpZiAoZ2V0X2NhbGxf cmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRF KQorCQllbG9nKEVSUk9SLCAicmV0dXJuIHR5cGUgbXVzdCBiZSBhIHJvdyB0eXBlIik7CisKKwlt ZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOworCisjaWYgSEFWRV9JTlNUUl9TVEFDSwor CXVzYWdlID0gJmluc3RyX3RvcC5idWZ1c2FnZTsKKyNlbHNlCisJdXNhZ2UgPSAmcGdCdWZmZXJV c2FnZTsKKyNlbmRpZgorCisJdmFsdWVzWzBdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVk X2Jsa3NfaGl0KTsKKwl2YWx1ZXNbMV0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5zaGFyZWRfYmxr c19yZWFkKTsKKwl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5zaGFyZWRfYmxrc19k aXJ0aWVkKTsKKwl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5zaGFyZWRfYmxrc193 cml0dGVuKTsKKwl2YWx1ZXNbNF0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX2hp dCk7CisJdmFsdWVzWzVdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19yZWFkKTsK Kwl2YWx1ZXNbNl0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX2RpcnRpZWQpOwor CXZhbHVlc1s3XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Jsa3Nfd3JpdHRlbik7CisJ dmFsdWVzWzhdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+dGVtcF9ibGtzX3JlYWQpOworCXZhbHVl c1s5XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnRlbXBfYmxrc193cml0dGVuKTsKKwl2YWx1ZXNb MTBdID0gRmxvYXQ4R2V0RGF0dW0oSU5TVFJfVElNRV9HRVRfTUlMTElTRUModXNhZ2UtPnNoYXJl ZF9ibGtfcmVhZF90aW1lKSk7CisJdmFsdWVzWzExXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJ TUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRfYmxrX3dyaXRlX3RpbWUpKTsKKwl2YWx1ZXNb MTJdID0gRmxvYXQ4R2V0RGF0dW0oSU5TVFJfVElNRV9HRVRfTUlMTElTRUModXNhZ2UtPmxvY2Fs X2Jsa19yZWFkX3RpbWUpKTsKKwl2YWx1ZXNbMTNdID0gRmxvYXQ4R2V0RGF0dW0oSU5TVFJfVElN RV9HRVRfTUlMTElTRUModXNhZ2UtPmxvY2FsX2Jsa193cml0ZV90aW1lKSk7CisJdmFsdWVzWzE0 XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT50ZW1wX2Js a19yZWFkX3RpbWUpKTsKKwl2YWx1ZXNbMTVdID0gRmxvYXQ4R2V0RGF0dW0oSU5TVFJfVElNRV9H RVRfTUlMTElTRUModXNhZ2UtPnRlbXBfYmxrX3dyaXRlX3RpbWUpKTsKKworCVBHX1JFVFVSTl9E QVRVTShIZWFwVHVwbGVHZXREYXR1bShoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBu dWxscykpKTsKK30KKworLyoKKyAqIFNRTCBmdW5jdGlvbjogdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZV9yZXNldCgpCisgKgorICogUmVzZXRzIGFsbCBCdWZmZXJVc2FnZSBjb3VudGVycyBvbiB0 aGUgdG9wIGluc3RydW1lbnRhdGlvbiBzdGFjayB0byB6ZXJvLgorICogVXNlZnVsIGluIHRlc3Rz IHRvIGF2b2lkIHRoZSBiYXNlbGluZS9kZWx0YSBwYXR0ZXJuLgorICovCitEYXR1bQordGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldChQR19GVU5DVElPTl9BUkdTKQoreworI2lmIEhBVkVf SU5TVFJfU1RBQ0sKKwltZW1zZXQoJmluc3RyX3RvcC5idWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZl clVzYWdlKSk7CisjZWxzZQorCW1lbXNldCgmcGdCdWZmZXJVc2FnZSwgMCwgc2l6ZW9mKEJ1ZmZl clVzYWdlKSk7CisjZW5kaWYKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuY29udHJvbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDFjZmIxNWE3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAorIyB0ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlIGV4dGVuc2lvbgorY29tbWVudCA9ICdzaG93IGJ1ZmZlciB1c2FnZSBzdGF0aXN0aWNz IGZvciB0aGUgY3VycmVudCBzZXNzaW9uJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVs ZV9wYXRobmFtZSA9ICckbGliZGlyL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnCityZWxvY2F0 YWJsZSA9IHRydWUKLS0gCjIuNDcuMQoK --0000000000009efe48064ee4a89d Content-Type: application/x-patch; name="v16-0009-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Disposition: attachment; filename="v16-0009-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp2kr8i8 RnJvbSBhNzBjOTUzYmQ2NzJmMWU5MzFhMTkxMjQ1ZmIyOWQwNDZiZTZkODI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxNiAwOS8xMF0g SW5kZXggc2NhbnM6IFNob3cgdGFibGUgYnVmZmVyIGFjY2Vzc2VzIHNlcGFyYXRlbHkKIGluIEVY UExBSU4gQU5BTFlaRQoKVGhpcyBzZXRzIHVwIGEgc2VwYXJhdGUgaW5zdHJ1bWVudGF0aW9uIHN0 YWNrIHRoYXQgaXMgdXNlZCB3aGlsc3QgYW4KSW5kZXggU2NhbiBvciBJbmRleCBPbmx5IFNjYW4g ZG9lcyBzY2FubmluZyBvbiB0aGUgdGFibGUsIGZvciBleGFtcGxlIGR1ZQp0byBhZGRpdGlvbmFs IGRhdGEgYmVpbmcgbmVlZGVkLgoKRVhQTEFJTiBBTkFMWVpFIHdpbGwgbm93IHNob3cgIlRhYmxl IEJ1ZmZlcnMiIHRoYXQgcmVwcmVzZW50IHN1Y2ggYWN0aXZpdHkuClRoZSBhY3Rpdml0eSBpcyBh bHNvIGluY2x1ZGVkIGluIHJlZ3VsYXIgIkJ1ZmZlcnMiIHRvZ2V0aGVyIHdpdGggaW5kZXgKYWN0 aXZpdHkgYW5kIHRoYXQgb2YgYW55IGNoaWxkIG5vZGVzLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8 bHVrYXNAZml0dGwuY29tPgpTdWdnZXN0ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFy YXplbC5kZT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29u YS5jb20+ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4KRGlzY3Vz c2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBUDUzUGt4 cm1wRUN6VkZwZWVFRUhER2U2dTYyNXMlMkJZa21WdjUtZ3czTF9ORFNmYmlBJTQwbWFpbC5nbWFp bC5jb20jY2I1ODNhMDhlOGUwOTZhYTFmMDkzYmIxNzg5MDYxNzMKCkFjdHVhbGx5IHBvcHVsYXRl IEkoTylTIHRhYmxlIHN0YWNrIHByZSBpbmRleCBwcmVmZXRjaGluZyBtZXJnZQotLS0KIGRvYy9z cmMvc2dtbC9wZXJmb3JtLnNnbWwgICAgICAgICAgICAgICAgICB8ICAxMyArKy0KIGRvYy9zcmMv c2dtbC9yZWYvZXhwbGFpbi5zZ21sICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgfCAgNDcgKysrKysrLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICB8ICA0NiArKysrKysrKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIHwgICAyICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jICAgfCAgNDEgKysrKysrLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgIHwgMTI3ICsrKysrKysrKysrKysrKysrLS0t LQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggICAgIHwgICA2ICsKIDgg ZmlsZXMgY2hhbmdlZCwgMjQ1IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5z Z21sCmluZGV4IDYwNGU4NTc4YThkLi5kMjhmNGYyMjUzNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3BlcmZvcm0uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCkBAIC03MzQs NiArNzM0LDcgQEAgV0hFUkUgdDEudW5pcXVlMSAmbHQ7IDEwIEFORCB0MS51bmlxdWUyID0gdDIu dW5pcXVlMjsKICAgIC0mZ3Q7ICBJbmRleCBTY2FuIHVzaW5nIHRlbmsyX3VuaXF1ZTIgb24gdGVu azIgdDIgIChjb3N0PTAuMjkuLjcuOTAgcm93cz0xIHdpZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAu MDAzLi4wLjAwMyByb3dzPTEuMDAgbG9vcHM9MTApCiAgICAgICAgICBJbmRleCBDb25kOiAodW5p cXVlMiA9IHQxLnVuaXF1ZTIpCiAgICAgICAgICBJbmRleCBTZWFyY2hlczogMTAKKyAgICAgICAg IFRhYmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTAKICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBo aXQ9MjQgcmVhZD02CiAgUGxhbm5pbmc6CiAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE1IGRpcnRp ZWQ9OQpAQCAtMTAwNSw3ICsxMDA2LDggQEAgRVhQTEFJTiBBTkFMWVpFIFNFTEVDVCAqIEZST00g cG9seWdvbl90YmwgV0hFUkUgZjEgQCZndDsgcG9seWdvbiAnKDAuNSwyLjApJzsKICAgIEluZGV4 IENvbmQ6IChmMSBAJmd0OyAnKCgwLjUsMikpJzo6cG9seWdvbikKICAgIFJvd3MgUmVtb3ZlZCBi eSBJbmRleCBSZWNoZWNrOiAxCiAgICBJbmRleCBTZWFyY2hlczogMQotICAgQnVmZmVyczogc2hh cmVkIGhpdD0xCisgICBUYWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTEKKyAgIEJ1ZmZlcnM6IHNo YXJlZCBoaXQ9MgogIFBsYW5uaW5nIFRpbWU6IDAuMDM5IG1zCiAgRXhlY3V0aW9uIFRpbWU6IDAu MDk4IG1zCiA8L3NjcmVlbj4KQEAgLTEwMTQsNyArMTAxNiw5IEBAIEVYUExBSU4gQU5BTFlaRSBT RUxFQ1QgKiBGUk9NIHBvbHlnb25fdGJsIFdIRVJFIGYxIEAmZ3Q7IHBvbHlnb24gJygwLjUsMi4w KSc7CiAgICAgdGhlbiByZWplY3RlZCBieSBhIHJlY2hlY2sgb2YgdGhlIGluZGV4IGNvbmRpdGlv bi4gIFRoaXMgaGFwcGVucyBiZWNhdXNlIGEKICAgICBHaVNUIGluZGV4IGlzIDxxdW90ZT5sb3Nz eTwvcXVvdGU+IGZvciBwb2x5Z29uIGNvbnRhaW5tZW50IHRlc3RzOiBpdCBhY3R1YWxseQogICAg IHJldHVybnMgdGhlIHJvd3Mgd2l0aCBwb2x5Z29ucyB0aGF0IG92ZXJsYXAgdGhlIHRhcmdldCwg YW5kIHRoZW4gd2UgaGF2ZQotICAgIHRvIGRvIHRoZSBleGFjdCBjb250YWlubWVudCB0ZXN0IG9u IHRob3NlIHJvd3MuCisgICAgdG8gZG8gdGhlIGV4YWN0IGNvbnRhaW5tZW50IHRlc3Qgb24gdGhv c2Ugcm93cy4gVGhlIDxsaXRlcmFsPlRhYmxlIEJ1ZmZlcnM8L2xpdGVyYWw+CisgICAgY291bnRz IGluZGljYXRlIGhvdyBtYW55IG9wZXJhdGlvbnMgd2VyZSBwZXJmb3JtZWQgb24gdGhlIHRhYmxl IGluc3RlYWQgb2YKKyAgICB0aGUgaW5kZXguIFRoaXMgbnVtYmVyIGlzIGluY2x1ZGVkIGluIHRo ZSA8bGl0ZXJhbD5CdWZmZXJzPC9saXRlcmFsPiBjb3VudHMuCiAgICA8L3BhcmE+CiAKICAgIDxw YXJhPgpAQCAtMTIwMywxMyArMTIwNywxNCBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUICogRlJP TSB0ZW5rMSBXSEVSRSB1bmlxdWUxICZsdDsgMTAwIEFORCB1bmlxdWUyICZndDsgOTAwMAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0mendzcDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBMaW1pdCAgKGNvc3Q9MC4yOS4uMTQuMzMg cm93cz0yIHdpZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAuMDUxLi4wLjA3MSByb3dzPTIuMDAgbG9v cHM9MSkKLSAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTYKKyAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 MTQKICAgIC0mZ3Q7ICBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3VuaXF1ZTIgb24gdGVuazEgIChj b3N0PTAuMjkuLjcwLjUwIHJvd3M9MTAgd2lkdGg9MjQ0KSAoYWN0dWFsIHRpbWU9MC4wNTEuLjAu MDcwIHJvd3M9Mi4wMCBsb29wcz0xKQogICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgJmd0 OyA5MDAwKQogICAgICAgICAgRmlsdGVyOiAodW5pcXVlMSAmbHQ7IDEwMCkKICAgICAgICAgIFJv d3MgUmVtb3ZlZCBieSBGaWx0ZXI6IDI4NwogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKLSAg ICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTYKKyAgICAgICAgIFRhYmxlIEJ1ZmZlcnM6IHNo YXJlZCBoaXQ9MTEKKyAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTQKICBQbGFubmluZyBU aW1lOiAwLjA3NyBtcwogIEV4ZWN1dGlvbiBUaW1lOiAwLjA4NiBtcwogPC9zY3JlZW4+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv ZXhwbGFpbi5zZ21sCmluZGV4IDViOGI1MjE4MDJlLi43MTA3MDczNmFjYiAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBs YWluLnNnbWwKQEAgLTUwOSw2ICs1MDksNyBAQCBFWFBMQUlOIEFOQUxZWkUgRVhFQ1VURSBxdWVy eSgxMDAsIDIwMCk7CiAgICAtJmd0OyAgSW5kZXggU2NhbiB1c2luZyB0ZXN0X3BrZXkgb24gdGVz dCAgKGNvc3Q9MC4yOS4uMTAuMjcgcm93cz05OSB3aWR0aD04KSAoYWN0dWFsIHRpbWU9MC4wMDku LjAuMDI1IHJvd3M9OTkuMDAgbG9vcHM9MSkKICAgICAgICAgIEluZGV4IENvbmQ6ICgoaWQgJmd0 OyAxMDApIEFORCAoaWQgJmx0OyAyMDApKQogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKKyAg ICAgICAgIFRhYmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MQogICAgICAgICAgQnVmZmVyczogc2hh cmVkIGhpdD00CiAgUGxhbm5pbmcgVGltZTogMC4yNDQgbXMKICBFeGVjdXRpb24gVGltZTogMC4w NzMgbXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBlMmIxZDM0M2NjYS4uNDMwOGE3ZjE3NjUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgdm9pZCBz aG93X2luc3RydW1lbnRhdGlvbl9jb3VudChjb25zdCBjaGFyICpxbGFiZWwsIGludCB3aGljaCwK IHN0YXRpYyB2b2lkIHNob3dfZm9yZWlnbnNjYW5faW5mbyhGb3JlaWduU2NhblN0YXRlICpmc3N0 YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyBjb25zdCBjaGFyICpleHBsYWluX2dldF9p bmRleF9uYW1lKE9pZCBpbmRleElkKTsKIHN0YXRpYyBib29sIHBlZWtfYnVmZmVyX3VzYWdlKEV4 cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSk7Ci1zdGF0aWMgdm9pZCBz aG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNh Z2UpOworc3RhdGljIHZvaWQgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29u c3QgQnVmZmVyVXNhZ2UgKnVzYWdlLCBjb25zdCBjaGFyICp0aXRsZSk7CiBzdGF0aWMgdm9pZCBz aG93X3dhbF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpOwog c3RhdGljIHZvaWQgc2hvd19tZW1vcnlfY291bnRlcnMoRXhwbGFpblN0YXRlICplcywKIAkJCQkJ CQkJIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKTsKQEAgLTYxMSw3 ICs2MTEsNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCX0KIAogCQlpZiAoYnVmdXNhZ2UpCi0J CQlzaG93X2J1ZmZlcl91c2FnZShlcywgYnVmdXNhZ2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2Uo ZXMsIGJ1ZnVzYWdlLCBOVUxMKTsKIAogCQlpZiAobWVtX2NvdW50ZXJzKQogCQkJc2hvd19tZW1v cnlfY291bnRlcnMoZXMsIG1lbV9jb3VudGVycyk7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBFeHBs YWluUHJpbnRTZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0 cmljcykKIAkJaWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmlj cy0+aW5zdHIuYnVmdXNhZ2UpKQogCQl7CiAJCQllcy0+aW5kZW50Kys7Ci0JCQlzaG93X2J1ZmZl cl91c2FnZShlcywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3Vz YWdlKGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCQkJZXMtPmluZGVudC0t OwogCQl9CiAJfQpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4 cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCQkJCQkJCUJZVEVT X1RPX0tJTE9CWVRFUyhtZXRyaWNzLT5ieXRlc1NlbnQpLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0 eVRleHQoIkZvcm1hdCIsIGZvcm1hdCwgZXMpOwogCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQlzaG93 X2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVm ZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCX0KIAogCUV4 cGxhaW5DbG9zZUdyb3VwKCJTZXJpYWxpemF0aW9uIiwgIlNlcmlhbGl6YXRpb24iLCB0cnVlLCBl cyk7CkBAIC0xOTcyLDYgKzE5NzIsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCXNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dz IFJlbW92ZWQgYnkgRmlsdGVyIiwgMSwKIAkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsKIAkJ CXNob3dfaW5kZXhzZWFyY2hlc19pbmZvKHBsYW5zdGF0ZSwgZXMpOworCisJCQlpZiAoZXMtPmJ1 ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVz LCAmKChJbmRleFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUpLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVf aW5zdHIuYnVmdXNhZ2UsICJUYWJsZSIpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9JbmRleE9ubHlT Y2FuOgogCQkJc2hvd19zY2FuX3F1YWwoKChJbmRleE9ubHlTY2FuICopIHBsYW4pLT5pbmRleHF1 YWwsCkBAIC0xOTg5LDYgKzE5OTIsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJIZWFwIEZldGNo ZXMiLCBOVUxMLAogCQkJCQkJCQkJIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+bnR1cGxlczIsIDAs IGVzKTsKIAkJCXNob3dfaW5kZXhzZWFyY2hlc19pbmZvKHBsYW5zdGF0ZSwgZXMpOworCisJCQlp ZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCQkJCXNob3dfYnVmZmVy X3VzYWdlKGVzLCAmKChJbmRleE9ubHlTY2FuU3RhdGUgKikgcGxhbnN0YXRlKS0+aW9zc19JbnN0 cnVtZW50LT50YWJsZV9pbnN0ci5idWZ1c2FnZSwgIlRhYmxlIik7CiAJCQlicmVhazsKIAkJY2Fz ZSBUX0JpdG1hcEluZGV4U2NhbjoKIAkJCXNob3dfc2Nhbl9xdWFsKCgoQml0bWFwSW5kZXhTY2Fu ICopIHBsYW4pLT5pbmRleHF1YWxvcmlnLApAQCAtMjI5MCw3ICsyMjk2LDcgQEAgRXhwbGFpbk5v ZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAogCS8qIFNob3cgYnVm ZmVyL1dBTCB1c2FnZSAqLwogCWlmIChlcy0+YnVmZmVycyAmJiBwbGFuc3RhdGUtPmluc3RydW1l bnQpCi0JCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0 ci5idWZ1c2FnZSk7CisJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVt ZW50LT5pbnN0ci5idWZ1c2FnZSwgTlVMTCk7CiAJaWYgKGVzLT53YWwgJiYgcGxhbnN0YXRlLT5p bnN0cnVtZW50KQogCQlzaG93X3dhbF91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+ aW5zdHIud2FsdXNhZ2UpOwogCkBAIC0yMzA5LDcgKzIzMTUsNyBAQCBFeHBsYWluTm9kZShQbGFu U3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCiAJCQlFeHBsYWluT3Blbldvcmtl cihuLCBlcyk7CiAJCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMs ICZpbnN0cnVtZW50LT5pbnN0ci5idWZ1c2FnZSk7CisJCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMs ICZpbnN0cnVtZW50LT5pbnN0ci5idWZ1c2FnZSwgTlVMTCk7CiAJCQlpZiAoZXMtPndhbCkKIAkJ CQlzaG93X3dhbF91c2FnZShlcywgJmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdlKTsKIAkJCUV4 cGxhaW5DbG9zZVdvcmtlcihuLCBlcyk7CkBAIC00MTA5LDcgKzQxMTUsNyBAQCBwZWVrX2J1ZmZl cl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAgKiBT aG93IGJ1ZmZlciB1c2FnZSBkZXRhaWxzLiAgVGhpcyBiZXR0ZXIgYmUgc3luYyB3aXRoIHBlZWtf YnVmZmVyX3VzYWdlLgogICovCiBzdGF0aWMgdm9pZAotc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFp blN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQorc2hvd19idWZmZXJfdXNhZ2Uo RXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlLCBjb25zdCBjaGFyICp0 aXRsZSkKIHsKIAlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCXsKQEAg LTQxMzQsNiArNDE0MCw4IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNv bnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKIAkJaWYgKGhhc19zaGFyZWQgfHwgaGFzX2xvY2FsIHx8 IGhhc190ZW1wKQogCQl7CiAJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlpZiAodGl0bGUp CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiJXMgIiwgdGl0bGUpOwogCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiQnVmZmVyczoiKTsKIAogCQkJaWYgKGhhc19zaGFy ZWQpCkBAIC00MTg5LDYgKzQxOTcsOCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUg KmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCWlmIChoYXNfc2hhcmVkX3RpbWluZyB8 fCBoYXNfbG9jYWxfdGltaW5nIHx8IGhhc190ZW1wX3RpbWluZykKIAkJewogCQkJRXhwbGFpbklu ZGVudFRleHQoZXMpOworCQkJaWYgKHRpdGxlKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0 ciwgIiVzICIsIHRpdGxlKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkkv TyBUaW1pbmdzOiIpOwogCiAJCQlpZiAoaGFzX3NoYXJlZF90aW1pbmcpCkBAIC00MjMwLDYgKzQy NDAsMTQgQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVy VXNhZ2UgKnVzYWdlKQogCX0KIAllbHNlCiAJeworCQljaGFyCSAgICpidWZmZXJzX3RpdGxlID0g TlVMTDsKKworCQlpZiAodGl0bGUpCisJCXsKKwkJCWJ1ZmZlcnNfdGl0bGUgPSBwc3ByaW50Zigi JXMgQnVmZmVycyIsIHRpdGxlKTsKKwkJCUV4cGxhaW5PcGVuR3JvdXAoYnVmZmVyc190aXRsZSwg YnVmZmVyc190aXRsZSwgdHJ1ZSwgZXMpOworCQl9CisKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdl cigiU2hhcmVkIEhpdCBCbG9ja3MiLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5zaGFyZWRfYmxr c19oaXQsIGVzKTsKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU2hhcmVkIFJlYWQgQmxvY2tz IiwgTlVMTCwKQEAgLTQyNTAsOCArNDI2OCwyMCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWlu U3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCQkJCQkJICAgdXNhZ2UtPnRl bXBfYmxrc19yZWFkLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlRlbXAgV3JpdHRl biBCbG9ja3MiLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbiwgZXMp OworCisJCWlmIChidWZmZXJzX3RpdGxlKQorCQkJRXhwbGFpbkNsb3NlR3JvdXAoYnVmZmVyc190 aXRsZSwgYnVmZmVyc190aXRsZSwgdHJ1ZSwgZXMpOworCiAJCWlmICh0cmFja19pb190aW1pbmcp CiAJCXsKKwkJCWNoYXIJICAgKnRpbWluZ3NfdGl0bGUgPSBOVUxMOworCisJCQlpZiAodGl0bGUp CisJCQl7CisJCQkJdGltaW5nc190aXRsZSA9IHBzcHJpbnRmKCIlcyBJL08gVGltaW5ncyIsIHRp dGxlKTsKKwkJCQlFeHBsYWluT3Blbkdyb3VwKHRpbWluZ3NfdGl0bGUsIHRpbWluZ3NfdGl0bGUs IHRydWUsIGVzKTsKKwkJCX0KKwogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlNoYXJlZCBJL08g UmVhZCBUaW1lIiwgIm1zIiwKIAkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdl LT5zaGFyZWRfYmxrX3JlYWRfdGltZSksCiAJCQkJCQkJCSAzLCBlcyk7CkBAIC00MjcwLDYgKzQz MDAsOSBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJV c2FnZSAqdXNhZ2UpCiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGVtcCBJL08gV3JpdGUgVGlt ZSIsICJtcyIsCiAJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9i bGtfd3JpdGVfdGltZSksCiAJCQkJCQkJCSAzLCBlcyk7CisKKwkJCWlmICh0aW1pbmdzX3RpdGxl KQorCQkJCUV4cGxhaW5DbG9zZUdyb3VwKHRpbWluZ3NfdGl0bGUsIHRpbWluZ3NfdGl0bGUsIHRy dWUsIGVzKTsKIAkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXgg MzU3MTc1YWMyY2IuLjU3YTc4MzI1ZjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUu YwpAQCAtODQ3LDYgKzg0NywyMCBAQCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dh bGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJcGxhbnN0YXRlX3RyZWVfd2Fs a2VyKG5vZGUsIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyLAogCQkJCQkJ ICAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIpOwogCisJLyogSW5kZXhTY2FuL0luZGV4T25seVNj YW4gaGF2ZSBhIHNlcGFyYXRlIGVudHJ5IHRvIHRyYWNrIHRhYmxlIGFjY2VzcyAqLworCWlmIChJ c0Eobm9kZSwgSW5kZXhTY2FuU3RhdGUpKQorCXsKKwkJSW5kZXhTY2FuU3RhdGUgKmlzcyA9IGNh c3ROb2RlKEluZGV4U2NhblN0YXRlLCBub2RlKTsKKworCQlJbnN0ckZpbmFsaXplQ2hpbGQoJmlz cy0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLCAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIp OworCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgSW5kZXhPbmx5U2NhblN0YXRlKSkKKwl7CisJCUlu ZGV4T25seVNjYW5TdGF0ZSAqaW9zcyA9IGNhc3ROb2RlKEluZGV4T25seVNjYW5TdGF0ZSwgbm9k ZSk7CisKKwkJSW5zdHJGaW5hbGl6ZUNoaWxkKCZpb3NzLT5pb3NzX0luc3RydW1lbnQtPnRhYmxl X2luc3RyLCAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIpOworCX0KKwogCUluc3RyRmluYWxpemVD aGlsZCgmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIsIHBhcmVudCk7CiAKIAlyZXR1cm4gZmFsc2U7 CkBAIC04OTIsNiArOTA2LDM4IEBAIEV4ZWNGaW5hbGl6ZVdvcmtlckluc3RydW1lbnRhdGlvbl93 YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQogCiAJbnVtX3dvcmtlcnMgPSBu b2RlLT53b3JrZXJfaW5zdHJ1bWVudC0+bnVtX3dvcmtlcnM7CiAKKwkvKgorCSAqIEZvbGQgcGVy LXdvcmtlciBJbmRleFNjYW4vSW5kZXhPbmx5U2NhbiB0YWJsZSBidWZmZXIgc3RhdHMgaW50byB0 aGUKKwkgKiBwZXItd29ya2VyIG5vZGUgc3RhdHMsIG1hdGNoaW5nIHdoYXQgRXhlY0ZpbmFsaXpl Tm9kZUluc3RydW1lbnRhdGlvbgorCSAqIGRvZXMgZm9yIHRoZSBsZWFkZXIuCisJICovCisJaWYg KElzQShub2RlLCBJbmRleFNjYW5TdGF0ZSkpCisJeworCQlJbmRleFNjYW5TdGF0ZSAqaXNzID0g Y2FzdE5vZGUoSW5kZXhTY2FuU3RhdGUsIG5vZGUpOworCisJCWlmIChpc3MtPmlzc19TaGFyZWRJ bmZvKQorCQl7CisJCQlpbnQJCQlud29ya2VycyA9IE1pbihudW1fd29ya2VycywgaXNzLT5pc3Nf U2hhcmVkSW5mby0+bnVtX3dvcmtlcnMpOworCisJCQlmb3IgKGludCBuID0gMDsgbiA8IG53b3Jr ZXJzOyBuKyspCisJCQkJSW5zdHJBY2N1bVN0YWNrKCZub2RlLT53b3JrZXJfaW5zdHJ1bWVudC0+ aW5zdHJ1bWVudFtuXS5pbnN0ciwKKwkJCQkJCQkJJmlzcy0+aXNzX1NoYXJlZEluZm8tPndpbnN0 cnVtZW50W25dLnRhYmxlX2luc3RyKTsKKwkJfQorCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgSW5k ZXhPbmx5U2NhblN0YXRlKSkKKwl7CisJCUluZGV4T25seVNjYW5TdGF0ZSAqaW9zcyA9IGNhc3RO b2RlKEluZGV4T25seVNjYW5TdGF0ZSwgbm9kZSk7CisKKwkJaWYgKGlvc3MtPmlvc3NfU2hhcmVk SW5mbykKKwkJeworCQkJaW50CQkJbndvcmtlcnMgPSBNaW4obnVtX3dvcmtlcnMsIGlvc3MtPmlv c3NfU2hhcmVkSW5mby0+bnVtX3dvcmtlcnMpOworCisJCQlmb3IgKGludCBuID0gMDsgbiA8IG53 b3JrZXJzOyBuKyspCisJCQkJSW5zdHJBY2N1bVN0YWNrKCZub2RlLT53b3JrZXJfaW5zdHJ1bWVu dC0+aW5zdHJ1bWVudFtuXS5pbnN0ciwKKwkJCQkJCQkJJmlvc3MtPmlvc3NfU2hhcmVkSW5mby0+ d2luc3RydW1lbnRbbl0udGFibGVfaW5zdHIpOworCQl9CisJfQorCiAJLyogQWNjdW11bGF0ZSB0 aGlzIG5vZGUncyBwZXItd29ya2VyIHN0YXRzIHRvIHBhcmVudCdzIHBlci13b3JrZXIgc3RhdHMg Ki8KIAlpZiAocGFyZW50ICYmIHBhcmVudC0+d29ya2VyX2luc3RydW1lbnQpCiAJewpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4IDc5Nzg1MTRlMWJjLi5i NTliNDY2MTU5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcElu ZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4u YwpAQCAtMjc2LDcgKzI3Niw3IEBAIEV4ZWNJbml0Qml0bWFwSW5kZXhTY2FuKEJpdG1hcEluZGV4 U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBTZXQgdXAgaW5z dHJ1bWVudGF0aW9uIG9mIGJpdG1hcCBpbmRleCBzY2FucyBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAo ZXN0YXRlLT5lc19pbnN0cnVtZW50KQotCQlpbmRleHN0YXRlLT5iaXNzX0luc3RydW1lbnQgPSBw YWxsb2MwX29iamVjdChJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pOworCQlpbmRleHN0YXRlLT5i aXNzX0luc3RydW1lbnQgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGVzdGF0ZS0+ZXNfcXVlcnlf aW5zdHItPmluc3RyX2N4dCwgc2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbikpOwogCiAJ LyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNo KG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGQ1MjAxMmU4YTY5Li5hYWM1ZTE0M2U2 ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC02Nyw2ICs2 Nyw3IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCUluZGV4U2Nh bkRlc2Mgc2NhbmRlc2M7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJSXRlbVBvaW50ZXIgdGlk OworCUluc3RydW1lbnRhdGlvbiAqdGFibGVfaW5zdHIgPSBOVUxMOwogCiAJLyoKIAkgKiBleHRy YWN0IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtODMsNiAr ODQsOSBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAllY29udGV4 dCA9IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OwogCXNsb3QgPSBub2RlLT5zcy5zc19TY2Fu VHVwbGVTbG90OwogCisJaWYgKG5vZGUtPmlvc3NfSW5zdHJ1bWVudCAmJiBub2RlLT5pb3NzX0lu c3RydW1lbnQtPnRhYmxlX2luc3RyLm5lZWRfc3RhY2spCisJCXRhYmxlX2luc3RyID0gJm5vZGUt Pmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHI7CisKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkK IAl7CiAJCS8qCkBAIC0xNjUsMTEgKzE2OSwyMiBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNj YW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCksCiAJ CQkJCQkJJm5vZGUtPmlvc3NfVk1CdWZmZXIpKQogCQl7CisJCQlib29sCQlmb3VuZDsKKwogCQkJ LyoKIAkJCSAqIFJhdHMsIHdlIGhhdmUgdG8gdmlzaXQgdGhlIGhlYXAgdG8gY2hlY2sgdmlzaWJp bGl0eS4KIAkJCSAqLwogCQkJSW5zdHJDb3VudFR1cGxlczIobm9kZSwgMSk7Ci0JCQlpZiAoIWlu ZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIG5vZGUtPmlvc3NfVGFibGVTbG90KSkKKworCQkJaWYg KHRhYmxlX2luc3RyKQorCQkJCUluc3RyUHVzaFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQkJZm91 bmQgPSBpbmRleF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCk7CisK KwkJCWlmICh0YWJsZV9pbnN0cikKKwkJCQlJbnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsKKwor CQkJaWYgKCFmb3VuZCkKIAkJCQljb250aW51ZTsJCS8qIG5vIHZpc2libGUgdHVwbGUsIHRyeSBu ZXh0IGluZGV4IGVudHJ5ICovCiAKIAkJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVT bG90KTsKQEAgLTQzNiw2ICs0NTEsNyBAQCBFeGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlT Y2FuU3RhdGUgKm5vZGUpCiAJCSAqIHdoaWNoIHdpbGwgaGF2ZSBhIG5ldyBJbmRleE9ubHlTY2Fu U3RhdGUgYW5kIHplcm9lZCBzdGF0cy4KIAkJICovCiAJCXdpbnN0cnVtZW50LT5uc2VhcmNoZXMg Kz0gbm9kZS0+aW9zc19JbnN0cnVtZW50LT5uc2VhcmNoZXM7CisJCUluc3RyQWNjdW1TdGFjaygm d2luc3RydW1lbnQtPnRhYmxlX2luc3RyLCAmbm9kZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9p bnN0cik7CiAJfQogCiAJLyoKQEAgLTYxMCw3ICs2MjYsMjEgQEAgRXhlY0luaXRJbmRleE9ubHlT Y2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJ LyogU2V0IHVwIGluc3RydW1lbnRhdGlvbiBvZiBpbmRleC1vbmx5IHNjYW5zIGlmIHJlcXVlc3Rl ZCAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQpCi0JCWluZGV4c3RhdGUtPmlvc3NfSW5z dHJ1bWVudCA9IHBhbGxvYzBfb2JqZWN0KEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbik7CisJewor CQlpbmRleHN0YXRlLT5pb3NzX0luc3RydW1lbnQgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGVz dGF0ZS0+ZXNfcXVlcnlfaW5zdHItPmluc3RyX2N4dCwgc2l6ZW9mKEluZGV4U2Nhbkluc3RydW1l bnRhdGlvbikpOworCisJCS8qCisJCSAqIFRyYWNrIHRhYmxlIGFuZCBpbmRleCBhY2Nlc3Mgc2Vw YXJhdGVseS4gV2UgaW50ZW50aW9uYWxseSBkb24ndAorCQkgKiBjb2xsZWN0IHRpbWluZyAoZXZl biBpZiBlbmFibGVkKSwgc2luY2Ugd2UgZG9uJ3QgbmVlZCBpdCwgYW5kCisJCSAqIEluZGV4T25s eU5leHQgY2FsbHMgSW5zdHJQdXNoU3RhY2sgLyBJbnN0clBvcFN0YWNrIChpbnN0ZWFkIG9mIHRo ZQorCQkgKiBmdWxsIEluc3RyTm9kZSopIHRvIHJlZHVjZSBvdmVyaGVhZC4KKwkJICovCisJCWlm ICgoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAhPSAwKQorCQl7 CisJCQlJbnN0ckluaXRPcHRpb25zKCZpbmRleHN0YXRlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxl X2luc3RyLCBJTlNUUlVNRU5UX0JVRkZFUlMpOworCQkJSW5zdHJRdWVyeVJlbWVtYmVyQ2hpbGQo ZXN0YXRlLT5lc19xdWVyeV9pbnN0ciwgJmluZGV4c3RhdGUtPmlvc3NfSW5zdHJ1bWVudC0+dGFi bGVfaW5zdHIpOworCQl9CisJfQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJ bG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5y ZWxsb2NrbW9kZTsKQEAgLTkyMyw0ICs5NTMsMTEgQEAgRXhlY0luZGV4T25seVNjYW5SZXRyaWV2 ZUluc3RydW1lbnRhdGlvbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCVNoYXJlZEluZm8t Pm51bV93b3JrZXJzICogc2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbik7CiAJbm9kZS0+ aW9zc19TaGFyZWRJbmZvID0gcGFsbG9jKHNpemUpOwogCW1lbWNweShub2RlLT5pb3NzX1NoYXJl ZEluZm8sIFNoYXJlZEluZm8sIHNpemUpOworCisJLyogQWdncmVnYXRlIHdvcmtlcnMnIHRhYmxl IGJ1ZmZlci9XQUwgdXNhZ2UgaW50byBsZWFkZXIncyBlbnRyeSAqLworCWZvciAoaW50IGkgPSAw OyBpIDwgbm9kZS0+aW9zc19TaGFyZWRJbmZvLT5udW1fd29ya2VyczsgaSsrKQorCXsKKwkJSW5z dHJBY2N1bVN0YWNrKCZub2RlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLAorCQkJCQkJ Jm5vZGUtPmlvc3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRbaV0udGFibGVfaW5zdHIpOworCX0K IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCAzOWY2NjkxZWUzNS4uN2M5 NTNmYTI3OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTg1LDcgKzg1 LDEwIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlFeHByQ29udGV4dCAqZWNv bnRleHQ7CiAJU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAJSW5kZXhTY2FuRGVzYyBzY2FuZGVz YzsKKwlJdGVtUG9pbnRlciB0aWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJYm9vbAkJZm91 bmQ7CisJSW5zdHJ1bWVudGF0aW9uICp0YWJsZV9pbnN0ciA9IE5VTEw7CiAKIAkvKgogCSAqIGV4 dHJhY3QgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gaW5kZXggc2NhbiBub2RlCkBAIC0xMDIs NiArMTA1LDkgQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQogCWVjb250ZXh0ID0g bm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJc2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBs ZVNsb3Q7CiAKKwlpZiAobm9kZS0+aXNzX0luc3RydW1lbnQgJiYgbm9kZS0+aXNzX0luc3RydW1l bnQtPnRhYmxlX2luc3RyLm5lZWRfc3RhY2spCisJCXRhYmxlX2luc3RyID0gJm5vZGUtPmlzc19J bnN0cnVtZW50LT50YWJsZV9pbnN0cjsKKwogCWlmIChzY2FuZGVzYyA9PSBOVUxMKQogCXsKIAkJ LyoKQEAgLTEzMiw4ICsxMzgsMjQgQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQog CS8qCiAJICogb2ssIG5vdyB0aGF0IHdlIGhhdmUgd2hhdCB3ZSBuZWVkLCBmZXRjaCB0aGUgbmV4 dCB0dXBsZS4KIAkgKi8KLQl3aGlsZSAoaW5kZXhfZ2V0bmV4dF9zbG90KHNjYW5kZXNjLCBkaXJl Y3Rpb24sIHNsb3QpKQorCXdoaWxlICgodGlkID0gaW5kZXhfZ2V0bmV4dF90aWQoc2NhbmRlc2Ms IGRpcmVjdGlvbikpICE9IE5VTEwpCiAJeworCQlpZiAodGFibGVfaW5zdHIpCisJCQlJbnN0clB1 c2hTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJZm9yICg7OykKKwkJeworCQkJZm91bmQgPSBpbmRl eF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBzbG90KTsKKwkJCWlmIChmb3VuZCB8fCAhc2NhbmRlc2Mt PnhzX2hlYXBfY29udGludWUpCisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAodGFibGVfaW5zdHIp CisJCQlJbnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQlpZiAodW5saWtlbHkoIWZvdW5k KSkKKwkJCWNvbnRpbnVlOworCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyoKQEAg LTE4MSw2ICsyMDMsNyBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9k ZSkKIAlEYXR1bQkgICAqbGFzdGZldGNoZWRfdmFsczsKIAlib29sCSAgICpsYXN0ZmV0Y2hlZF9u dWxsczsKIAlpbnQJCQljbXA7CisJSW5zdHJ1bWVudGF0aW9uICp0YWJsZV9pbnN0ciA9IE5VTEw7 CiAKIAllc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKIApAQCAtMjAwLDYgKzIyMyw5IEBAIElu ZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0YXRlICpub2RlKQogCWVjb250ZXh0ID0gbm9k ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJc2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNs b3Q7CiAKKwlpZiAobm9kZS0+aXNzX0luc3RydW1lbnQgJiYgbm9kZS0+aXNzX0luc3RydW1lbnQt PnRhYmxlX2luc3RyLm5lZWRfc3RhY2spCisJCXRhYmxlX2luc3RyID0gJm5vZGUtPmlzc19JbnN0 cnVtZW50LT50YWJsZV9pbnN0cjsKKwogCWlmIChzY2FuZGVzYyA9PSBOVUxMKQogCXsKIAkJLyoK QEAgLTI2MywzNiArMjg5LDY3IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0YXRl ICpub2RlKQogCQl9CiAKIAkJLyoKLQkJICogRmV0Y2ggbmV4dCB0dXBsZSBmcm9tIHRoZSBpbmRl eC4KKwkJICogRmV0Y2ggbmV4dCB2YWxpZCB0dXBsZSBmcm9tIHRoZSBpbmRleC4KIAkJICovCi1u ZXh0X2luZGV4dHVwbGU6Ci0JCWlmICghaW5kZXhfZ2V0bmV4dF9zbG90KHNjYW5kZXNjLCBGb3J3 YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCisJCWZvciAoOzspCiAJCXsKKwkJCUl0ZW1Qb2ludGVy IHRpZDsKKwkJCWJvb2wJCWZvdW5kOworCisJCQkvKiBUaW1lIHRvIGZldGNoIHRoZSBuZXh0IFRJ RCBmcm9tIHRoZSBpbmRleCAqLworCQkJdGlkID0gaW5kZXhfZ2V0bmV4dF90aWQoc2NhbmRlc2Ms IEZvcndhcmRTY2FuRGlyZWN0aW9uKTsKKworCQkJLyogSWYgd2UncmUgb3V0IG9mIGluZGV4IGVu dHJpZXMsIHdlJ3JlIGRvbmUgKi8KKwkJCWlmICh0aWQgPT0gTlVMTCkKKwkJCXsKKwkJCQkvKgor CQkJCSAqIE5vIG1vcmUgdHVwbGVzIGZyb20gdGhlIGluZGV4LiAgQnV0IHdlIHN0aWxsIG5lZWQg dG8gZHJhaW4KKwkJCQkgKiBhbnkgcmVtYWluaW5nIHR1cGxlcyBmcm9tIHRoZSBxdWV1ZSBiZWZv cmUgd2UncmUgZG9uZS4KKwkJCQkgKi8KKwkJCQlub2RlLT5pc3NfUmVhY2hlZEVuZCA9IHRydWU7 CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCUFzc2VydChJdGVtUG9pbnRlckVxdWFscyh0aWQsICZz Y2FuZGVzYy0+eHNfaGVhcHRpZCkpOworCisJCQlpZiAodGFibGVfaW5zdHIpCisJCQkJSW5zdHJQ dXNoU3RhY2sodGFibGVfaW5zdHIpOworCisJCQlmb3IgKDs7KQorCQkJeworCQkJCWZvdW5kID0g aW5kZXhfZmV0Y2hfaGVhcChzY2FuZGVzYywgc2xvdCk7CisJCQkJaWYgKGZvdW5kIHx8ICFzY2Fu ZGVzYy0+eHNfaGVhcF9jb250aW51ZSkKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlmICh0YWJs ZV9pbnN0cikKKwkJCQlJbnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsKKwogCQkJLyoKLQkJCSAq IE5vIG1vcmUgdHVwbGVzIGZyb20gdGhlIGluZGV4LiAgQnV0IHdlIHN0aWxsIG5lZWQgdG8gZHJh aW4gYW55Ci0JCQkgKiByZW1haW5pbmcgdHVwbGVzIGZyb20gdGhlIHF1ZXVlIGJlZm9yZSB3ZSdy ZSBkb25lLgorCQkJICogSWYgdGhlIGluZGV4IHdhcyBsb3NzeSwgd2UgaGF2ZSB0byByZWNoZWNr IHRoZSBpbmRleCBxdWFscyBhbmQKKwkJCSAqIE9SREVSIEJZIGV4cHJlc3Npb25zIHVzaW5nIHRo ZSBmZXRjaGVkIHR1cGxlLgogCQkJICovCi0JCQlub2RlLT5pc3NfUmVhY2hlZEVuZCA9IHRydWU7 Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAqIElmIHRoZSBpbmRleCB3YXMgbG9zc3ks IHdlIGhhdmUgdG8gcmVjaGVjayB0aGUgaW5kZXggcXVhbHMgYW5kCi0JCSAqIE9SREVSIEJZIGV4 cHJlc3Npb25zIHVzaW5nIHRoZSBmZXRjaGVkIHR1cGxlLgotCQkgKi8KLQkJaWYgKHNjYW5kZXNj LT54c19yZWNoZWNrKQotCQl7Ci0JCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90Owot CQkJaWYgKCFFeGVjUXVhbEFuZFJlc2V0KG5vZGUtPmluZGV4cXVhbG9yaWcsIGVjb250ZXh0KSkK KwkJCWlmIChmb3VuZCAmJiBzY2FuZGVzYy0+eHNfcmVjaGVjaykKIAkJCXsKLQkJCQkvKiBGYWls cyByZWNoZWNrLCBzbyBkcm9wIGl0IGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgKi8KLQkJCQlJ bnN0ckNvdW50RmlsdGVyZWQyKG5vZGUsIDEpOwotCQkJCS8qIGFsbG93IHRoaXMgbG9vcCB0byBi ZSBjYW5jZWxsYWJsZSAqLwotCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCQkJZ290byBu ZXh0X2luZGV4dHVwbGU7CisJCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKKwkJ CQlpZiAoIUV4ZWNRdWFsQW5kUmVzZXQobm9kZS0+aW5kZXhxdWFsb3JpZywgZWNvbnRleHQpKQor CQkJCXsKKwkJCQkJLyogRmFpbHMgcmVjaGVjaywgc28gZHJvcCBpdCBhbmQgbG9vcCBiYWNrIGZv ciBhbm90aGVyICovCisJCQkJCUluc3RyQ291bnRGaWx0ZXJlZDIobm9kZSwgMSk7CisJCQkJCS8q IGFsbG93IHRoaXMgbG9vcCB0byBiZSBjYW5jZWxsYWJsZSAqLworCQkJCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOworCQkJCQljb250aW51ZTsKKwkJCQl9CiAJCQl9CisKKwkJCWlmIChmb3VuZCkK KwkJCQlicmVhazsKIAkJfQogCisJCS8qIE5vIG1vcmUgaW5kZXggZW50cmllcywgcmUtcnVuIHRv IGNsZWFyIHRoZSByZW9yZGVyIHF1ZXVlICovCisJCWlmIChub2RlLT5pc3NfUmVhY2hlZEVuZCkK KwkJCWNvbnRpbnVlOworCiAJCWlmIChzY2FuZGVzYy0+eHNfcmVjaGVja29yZGVyYnkpCiAJCXsK IAkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CkBAIC04MTgsNiArODc1LDcgQEAg RXhlY0VuZEluZGV4U2NhbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJICogd2hpY2ggd2lsbCBo YXZlIGEgbmV3IEluZGV4T25seVNjYW5TdGF0ZSBhbmQgemVyb2VkIHN0YXRzLgogCQkgKi8KIAkJ d2luc3RydW1lbnQtPm5zZWFyY2hlcyArPSBub2RlLT5pc3NfSW5zdHJ1bWVudC0+bnNlYXJjaGVz OworCQlJbnN0ckFjY3VtU3RhY2soJndpbnN0cnVtZW50LT50YWJsZV9pbnN0ciwgJm5vZGUtPmlz c19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CiAJfQogCiAJLyoKQEAgLTk4MCw3ICsxMDM4LDIx IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAKIAkvKiBTZXQgdXAgaW5zdHJ1bWVudGF0aW9uIG9mIGluZGV4IHNjYW5zIGlm IHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQpCi0JCWluZGV4c3RhdGUt Pmlzc19JbnN0cnVtZW50ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9u KTsKKwl7CisJCWluZGV4c3RhdGUtPmlzc19JbnN0cnVtZW50ID0gTWVtb3J5Q29udGV4dEFsbG9j WmVybyhlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyLT5pbnN0cl9jeHQsIHNpemVvZihJbmRleFNjYW5J bnN0cnVtZW50YXRpb24pKTsKKworCQkvKgorCQkgKiBUcmFjayB0YWJsZSBhbmQgaW5kZXggYWNj ZXNzIHNlcGFyYXRlbHkuIFdlIGludGVudGlvbmFsbHkgZG9uJ3QKKwkJICogY29sbGVjdCB0aW1p bmcgKGV2ZW4gaWYgZW5hYmxlZCksIHNpbmNlIHdlIGRvbid0IG5lZWQgaXQsIGFuZAorCQkgKiBJ bmRleE5leHQgLyBJbmRleE5leHRXaXRoUmVvcmRlciBjYWxsIEluc3RyUHVzaFN0YWNrIC8KKwkJ ICogSW5zdHJQb3BTdGFjayAoaW5zdGVhZCBvZiB0aGUgZnVsbCBJbnN0ck5vZGUqKSB0byByZWR1 Y2Ugb3ZlcmhlYWQuCisJCSAqLworCQlpZiAoKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCAmIElOU1RS VU1FTlRfQlVGRkVSUykgIT0gMCkKKwkJeworCQkJSW5zdHJJbml0T3B0aW9ucygmaW5kZXhzdGF0 ZS0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLCBJTlNUUlVNRU5UX0JVRkZFUlMpOworCQkJ SW5zdHJRdWVyeVJlbWVtYmVyQ2hpbGQoZXN0YXRlLT5lc19xdWVyeV9pbnN0ciwgJmluZGV4c3Rh dGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CisJCX0KKwl9CiAKIAkvKiBPcGVuIHRo ZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nh bi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwpAQCAtMTg1OCw0ICsxOTMwLDExIEBA IEV4ZWNJbmRleFNjYW5SZXRyaWV2ZUluc3RydW1lbnRhdGlvbihJbmRleFNjYW5TdGF0ZSAqbm9k ZSkKIAkJU2hhcmVkSW5mby0+bnVtX3dvcmtlcnMgKiBzaXplb2YoSW5kZXhTY2FuSW5zdHJ1bWVu dGF0aW9uKTsKIAlub2RlLT5pc3NfU2hhcmVkSW5mbyA9IHBhbGxvYyhzaXplKTsKIAltZW1jcHko bm9kZS0+aXNzX1NoYXJlZEluZm8sIFNoYXJlZEluZm8sIHNpemUpOworCisJLyogQWdncmVnYXRl IHdvcmtlcnMnIHRhYmxlIGJ1ZmZlci9XQUwgdXNhZ2UgaW50byBsZWFkZXIncyBlbnRyeSAqLwor CWZvciAoaW50IGkgPSAwOyBpIDwgbm9kZS0+aXNzX1NoYXJlZEluZm8tPm51bV93b3JrZXJzOyBp KyspCisJeworCQlJbnN0ckFjY3VtU3RhY2soJm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9p bnN0ciwKKwkJCQkJCSZub2RlLT5pc3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRbaV0udGFibGVf aW5zdHIpOworCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1l bnRfbm9kZS5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKaW5kZXgg ZTZhM2Y5ZjE5NDEuLmRmMDg5Zjk4MTZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50X25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50 X25vZGUuaApAQCAtMTgsNiArMTgsOCBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX05PREVfSAogI2Rl ZmluZSBJTlNUUlVNRU5UX05PREVfSAogCisjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5o IgorCiAvKgogICogT2Zmc2V0IGFkZGVkIHRvIHBsYW5fbm9kZV9pZCB0byBjcmVhdGUgYSBzZWNv bmQgVE9DIGtleSBmb3IgcGVyLXdvcmtlciBzY2FuCiAgKiBpbnN0cnVtZW50YXRpb24uIEluc3Ry dW1lbnRhdGlvbiBhbmQgcGFyYWxsZWwtYXdhcmVuZXNzIGFyZSBpbmRlcGVuZGVudCwgc28KQEAg LTI3LDYgKzI5LDcgQEAKICAqLwogI2RlZmluZSBQQVJBTExFTF9LRVlfU0NBTl9JTlNUUlVNRU5U X09GRlNFVAlVSU5UNjRDT05TVCgweEQwMDAwMDAwMDAwMDAwMDApCiAKKwogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKglJbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gZm9yIGFnZ3JlZ2F0 ZSBmdW5jdGlvbiBleGVjdXRpb24KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTYsNiAr NTksOSBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24KIHsKIAkvKiBJ bmRleCBzZWFyY2ggY291bnQgKGluY3JlbWVudGVkIHdpdGggcGdzdGF0X2NvdW50X2luZGV4X3Nj YW4gY2FsbCkgKi8KIAl1aW50NjQJCW5zZWFyY2hlczsKKworCS8qIEluc3RydW1lbnRhdGlvbiB1 dGlsaXplZCBmb3IgdHJhY2tpbmcgYnVmZmVyIHVzYWdlIGR1cmluZyB0YWJsZSBhY2Nlc3MgKi8K KwlJbnN0cnVtZW50YXRpb24gdGFibGVfaW5zdHI7CiB9IEluZGV4U2Nhbkluc3RydW1lbnRhdGlv bjsKIAogLyoKLS0gCjIuNDcuMQoK --0000000000009efe48064ee4a89d--