From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id YcjDGOEsc2neDhEAWB0awg (envelope-from ) for ; Fri, 23 Jan 2026 03:10:09 -0500 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Nd0tIXlH; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 605EC378002; Fri, 23 Jan 2026 03:10:09 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id BB67A1E08D for ; Fri, 23 Jan 2026 03:10:06 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 511124BCA2E3 for ; Fri, 23 Jan 2026 08:10:06 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 511124BCA2E3 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Nd0tIXlH Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) by sourceware.org (Postfix) with ESMTPS id D7F924BCA40D for ; Fri, 23 Jan 2026 08:06:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D7F924BCA40D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D7F924BCA40D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.18 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1769155610; cv=none; b=Ryzg7dMiziKipqBJUP5GuoJ71ldZh21TSEH5fQupHUknSh76hBVT0hbBguzjCipKd01bFB+8lPzAG+R7GaNynH3b+MPh2V6rW1f9d585P1ZGKgj/1+NbgqvAvTNcqXooufzuJuqzXwCYSz48+j1nI4jxayLBHx2usn192fK+TmE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1769155610; c=relaxed/simple; bh=5a09D6RHCEqXpyukTl/GStfJcpe/HTrTlCquEAyUyjI=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=NQxBoThA5vWoZvC8JV8Z2joW66qquPWv7FoKlvahTvfPD/txAFGwXH4ch7iaJgtvVSof2Z5afVy2VuhG2LnwDXJhsA5wylnNleBmQGYdAy8duSVIHxIcGJtV9slp59Dldyn5HZDVkO4LXeoYQT9xRxzrnCEYulg3iGNpxvOuG0o= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769155610; x=1800691610; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5a09D6RHCEqXpyukTl/GStfJcpe/HTrTlCquEAyUyjI=; b=Nd0tIXlHAj+XZYvAv2YAgEAG6AaDZ1+9rX6L442AByOzNfV2YeT+ZC/9 CA1e6xD4huy7uvO5uNjCqFA0EXAptKA8QSQ6Jg/pHPT7pGTbsZ/Szpoi2 S1U8z2osmqZQE+VP2Psy4Jqb+19MnNxMEuiGjYARbvQKtrnNJMBNOyWDT aT6RSH4nWjWydVnq6PORUv47r4R0d7vk2K5mqP6A58KLvPqxkmGEynF+A xw6+SXgrMgmhSqJM92YphXL3SFRgfamDgybCaThSUd35HMrLmP5Cx6PnO hqaybh6pj6kklK9kH2z14wyiSbixMzqKkJSF+WUSWO/RL4z3Em/7GS7Vn Q==; X-CSE-ConnectionGUID: Sd3Vq0FoSdenRDg2XDbslA== X-CSE-MsgGUID: oQM3qhD/R4Czt2m09ZxOfA== X-IronPort-AV: E=McAfee;i="6800,10657,11679"; a="69603108" X-IronPort-AV: E=Sophos;i="6.21,248,1763452800"; d="scan'208";a="69603108" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jan 2026 00:06:15 -0800 X-CSE-ConnectionGUID: UxZLB+JtSTC6lZ/RjwdnMg== X-CSE-MsgGUID: NFUEC8+dR1qNjzQa+0nD5g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,248,1763452800"; d="scan'208";a="206785443" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jan 2026 00:06:14 -0800 From: Christina Schimpe To: gdb-patches@sourceware.org Cc: thiago.bauermann@linaro.org Subject: [PATCH v2 6/9] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace. Date: Fri, 23 Jan 2026 08:05:28 +0000 Message-Id: <20260123080532.878738-7-christina.schimpe@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260123080532.878738-1-christina.schimpe@intel.com> References: <20260123080532.878738-1-christina.schimpe@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org QWRkIGNvbW1hbmQgb3B0aW9uICctc2hhZG93IiB0byB0aGUgYmFja3RyYWNlIGNvbW1hbmQgdG8g cHJpbnQgdGhlIHNoYWRvdwpzdGFjayBiYWNrdHJhY2UgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIGJh Y2t0cmFjZS4KClRoaXMgb3B0aW9uIG1heSBiZSBjb21iaW5lZCB3aXRoIOKAnC1mcmFtZS1pbmZv 4oCdIGFuZCBpbXBsaWVzIOKAmC1uby1maWx0ZXJz4oCZCmFuZCDigJgtZnJhbWUtYXJndW1lbnRz IG5vbmXigJkuICBBbHNvIHRoZSBvcHRpb25zIEBzYW1wey1wYXN0LW1haW59LApAc2FtcHstcGFz dC1lbnRyeX0gb3IgQHNhbXB7LWhpZGV9IGFyZSBub3Qgc3VwcG9ydGVkLiAgU28gYnkgZGVmYXVs dCwKYWxsIGF2YWlsYWJsZSBzaGFkb3cgc3RhY2sgZnJhbWVzIGFyZSBwcmludGVkLgoKVGhpcyBp cyBhbiBleGFtcGxlIGZvciB0aGUgb3V0cHV0IG9mICdidCAtc2hhZG93JyBvbiBhbWQ2NCBsaW51 eDoKfn4KKGdkYikgYnQgLXNoYWRvdwovIzAgIDB4MDAwMDU1NTU1NTU1NTE0YSBpbiBjYWxsMSBh dCBhbWQ2NC1zaGFkb3ctc3RhY2suYzoyNwovIzEgIDB4MDAwMDU1NTU1NTU1NTE1ZiBpbiBtYWlu IGF0IGFtZDY0LXNoYWRvdy1zdGFjay5jOjM4Ci8jMiAgMHgwMDAwN2ZmZmY3YzJhMWNhIGluIF9f bGliY19zdGFydF9jYWxsX21haW4gYXQgLi4vc3lzZGVwcy9ucHRsL2xpYmNfc3RhcnRfY2FsbF9t YWluLmg6NTgKLyMzICAweDAwMDA3ZmZmZjdjMmEyOGIgaW4gX19saWJjX3N0YXJ0X21haW5faW1w bCBhdCAuLi9jc3UvbGliYy1zdGFydC5jOjM2MAovIzQgIDB4MDAwMDU1NTU1NTU1NTA2NSBpbiBf c3RhcnQKfn5+CgpOb3RlIHRoYXQgdGhlIG5vcm1hbCBiYWNrdHJhY2UgaW5jbHVkZXMgb25lIGFk ZGl0aW9uYWwgZnJhbWUsIHNpbmNlCnRoZSBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIHJlbGllcyBv biByZXR1cm4gYWRkcmVzc2VzIG9mIHRoZSBzaGFkb3cKc3RhY2sgb25seS4gIEJ1dCBleGNlcHQg dGhlIG1pc3NpbmcgZnJhbWUgYXJndW1lbnRzIGFuZCBmcmFtZSAjMCBvZgp0aGUgbm9ybWFsIGJh Y2t0cmFjZSwgdGhlIGJhY2t0cmFjZSBpcyB0aGUgc2FtZS4Kfn5+CihnZGIpIGJ0IC1wYXN0LW1h aW4KLyMwICBjYWxsMiAoKSBhdCBhbWQ2NC1zaGFkb3ctc3RhY2suYzoyMQovIzEgIDB4MDAwMDU1 NTU1NTU1NTE0YSBpbiBjYWxsMSAoKSBhdCBhbWQ2NC1zaGFkb3ctc3RhY2suYzoyNwovIzIgIDB4 MDAwMDU1NTU1NTU1NTE1ZiBpbiBtYWluICgpIGF0IGFtZDY0LXNoYWRvdy1zdGFjay5jOjM4Ci8j MyAgMHgwMDAwN2ZmZmY3YzJhMWNhIGluIF9fbGliY19zdGFydF9jYWxsX21haW4gKG1haW49bWFp bkBlbnRyeT0weDU1NTU1NTU1NTE0YyA8bWFpbj4sIGFyZ2M9YXJnY0BlbnRyeT0xLAogICAgYXJn dj1hcmd2QGVudHJ5PTB4N2ZmZmZmZmZlMjI4KSBhdCAuLi9zeXNkZXBzL25wdGwvbGliY19zdGFy dF9jYWxsX21haW4uaDo1OAovIzQgIDB4MDAwMDdmZmZmN2MyYTI4YiBpbiBfX2xpYmNfc3RhcnRf bWFpbl9pbXBsIChtYWluPTB4NTU1NTU1NTU1MTRjIDxtYWluPiwgYXJnYz0xLCBhcmd2PTB4N2Zm ZmZmZmZlMjI4LCBpbml0PTxvcHRpbWl6ZWQgb3V0PiwKICAgIGZpbmk9PG9wdGltaXplZCBvdXQ+ LCBydGxkX2Zpbmk9PG9wdGltaXplZCBvdXQ+LCBzdGFja19lbmQ9MHg3ZmZmZmZmZmUyMTgpIGF0 IC4uL2NzdS9saWJjLXN0YXJ0LmM6MzYwCi8jNSAgMHgwMDAwNTU1NTU1NTU1MDY1IGluIF9zdGFy dCAoKQp+fgoKVGhpcyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBmb3IgJ2J0IC1zaGFkb3cnIG9u IGFtZDY0LgpBbHRob3VnaCB0aGUgdGVzdCBpcyBPUyBpbmRlcGVuZGVudCB3ZSBjYW4gb25seSB0 ZXN0IHRoaXMgb24gbGludXgsCmFzIEdEQiBkb2VzIG5vdCBzdXBwb3J0IHNoYWRvdyBzdGFjayBv biBvdGhlciBPUyBmb3Igbm93LgpBbHNvIHdlIGRvIG5vdCBhZGQgYSB0ZXN0IGZvciAzMiBiaXQs IGFzIHN1cHBvcnQgZm9yIHNoYWRvdyBzdGFjayBpcwpsaW1pdGVkIHRvIDY0IGJpdCBieSB0aGUg bGludXgga2VybmVsLgotLS0KIGdkYi9ORVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMyArCiBnZGIvYW1kNjQtbGludXgtdGRlcC5jICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMjYgKwogZ2RiL2Fubm90YXRlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDkzICsrKy0KIGdkYi9hbm5vdGF0ZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxOCArLQogZ2RiL2RvYy9nZGIudGV4aW5mbyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDI3ICsKIGdkYi9nZGJhcmNoLWdlbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAzMiArKwogZ2RiL2dkYmFyY2gtZ2VuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDE1ICstCiBnZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5ICAgICAgICAgICAgICAgICAgICAg fCAgMjAgKy0KIGdkYi9zaGFkb3ctc3RhY2suYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDQ4MCArKysrKysrKysrKysrKysrKy0KIGdkYi9zaGFkb3ctc3RhY2suaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgNiArCiBnZGIvc3RhY2suYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNzMgKy0tCiBnZGIvc3RhY2suaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTUgKysKIC4uLi9nZGIuYXJjaC9hbWQ2NC1zaGFkb3ctc3RhY2stY21k cy5leHAgICAgICB8ICA4OCArKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL29wdGlvbnMuZXhw ICAgICAgICAgICAgfCAgIDIgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDg3NSBpbnNlcnRpb25zKCsp LCA2MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCmluZGV4 IDc0ZmMzNTNkN2U5Li4zN2IzYWRkMTFlZCAxMDA2NDQKLS0tIGEvZ2RiL05FV1MKKysrIGIvZ2Ri L05FV1MKQEAgLTMsNiArMyw5IEBACiAKICoqKiBDaGFuZ2VzIHNpbmNlIEdEQiAxNwogCisqIE5l dyAiLXNoYWRvdyIgY29tbWFuZCBsaW5lIG9wdGlvbiBmb3IgdGhlIGJhY2t0cmFjZSBjb21tYW5k IHRvIHByaW50IHRoZQorICBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIGluc3RlYWQgb2YgdGhlIG5v cm1hbCBiYWNrdHJhY2UuCisKICogU3VwcG9ydCBmb3IgLmdkYl9pbmRleCBzZWN0aW9ucyB3aXRo IHZlcnNpb24gbGVzcyB0aGFuIDcgaGFzIGJlZW4KICAgcmVtb3ZlZC4KIApkaWZmIC0tZ2l0IGEv Z2RiL2FtZDY0LWxpbnV4LXRkZXAuYyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKaW5kZXggNjU2 ZGFhMGYwZWUuLmE0ZWFiY2NmNjY3IDEwMDY0NAotLS0gYS9nZGIvYW1kNjQtbGludXgtdGRlcC5j CisrKyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKQEAgLTE5NjMsNiArMTk2MywyOSBAQCBhbWQ2 NF9saW51eF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sKICAgcmV0dXJuIGFkZHIgPT0gcmFu Z2Uuc2Vjb25kOwogfQogCisvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aGljaCBh cmUgY3VycmVudGx5IG9uIHRoZSBzaGFkb3cgc3RhY2sKKyAgIGJhc2VkIG9uIHRoZSBzaGFkb3cg c3RhY2sgbWVtb3J5IFJBTkdFIFtzdGFydF9hZGRyZXNzLCBlbmRfYWRkcmVzcykKKyAgIG9mIHRo ZSBjdXJyZW50IHRocmVhZC4gIEluIGNhc2Ugc2hhZG93IHN0YWNrIGlzIG5vdCBlbmFibGVkIGZv ciB0aGUKKyAgIGN1cnJlbnQgdGhyZWFkLCByZXR1cm4gLTEuICAqLworCitzdGF0aWMgbG9uZwor YW1kNjRfbGludXhfZ2V0X3NoYWRvd19zdGFja19zaXplCisgIChnZGJhcmNoICpnZGJhcmNoLAor ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IHNzcCwKKyAgIGNvbnN0IHN0ZDo6cGFp cjxDT1JFX0FERFIsIENPUkVfQUREUj4gcmFuZ2UpCit7CisgIC8qIEZvciB4ODYsIGlmIHdlIGRv bid0IGhhdmUgYSBzaGFkb3cgc3RhY2sgcG9pbnRlciwgd2UgY2FuIGFzc3VtZQorICAgICB0aGF0 IHRoZSBzaGFkb3cgc3RhY2sgaXMgZGlzYWJsZWQgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4gICov CisgIGlmICghc3NwLmhhc192YWx1ZSAoKSkKKyAgICByZXR1cm4gLTE7CisKKyAgY29uc3QgdW5z aWduZWQgbG9uZyBzaGFkb3dfc3RhY2tfYnl0ZXMgPSByYW5nZS5zZWNvbmQgLSAqc3NwOworCisg IGdkYl9hc3NlcnQgKChzaGFkb3dfc3RhY2tfYnl0ZXMgJSA4KSA9PSAwKTsKKworICByZXR1cm4g c2hhZG93X3N0YWNrX2J5dGVzIC8gODsKK30KKwogc3RhdGljIHZvaWQKIGFtZDY0X2xpbnV4X2lu aXRfYWJpX2NvbW1vbiAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKIAkJCSAgICAgaW50IG51bV9kaXNwX3N0ZXBfYnVmZmVycykKQEAgLTIwMjYsNiAr MjA0OSw5IEBAIGFtZDY0X2xpbnV4X2luaXRfYWJpX2NvbW1vbiAoc3RydWN0IGdkYmFyY2hfaW5m byBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAogICBzZXRfZ2RiYXJjaF90b3BfYWRk cl9lbXB0eV9zaGFkb3dfc3RhY2sKICAgICAoZ2RiYXJjaCwgYW1kNjRfbGludXhfdG9wX2FkZHJf ZW1wdHlfc2hhZG93X3N0YWNrKTsKKyAKKyAgc2V0X2dkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19z aXplCisgICAgKGdkYmFyY2gsIGFtZDY0X2xpbnV4X2dldF9zaGFkb3dfc3RhY2tfc2l6ZSk7CiB9 CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9nZGIvYW5ub3RhdGUuYyBiL2dkYi9hbm5vdGF0 ZS5jCmluZGV4IDFmM2E2ZDExNGIxLi5mOGU5MTk0NDA5NCAxMDA2NDQKLS0tIGEvZ2RiL2Fubm90 YXRlLmMKKysrIGIvZ2RiL2Fubm90YXRlLmMKQEAgLTUwNiwxMCArNTA2LDE1IEBAIGFubm90YXRl X2ZyYW1lX2FkZHJlc3NfZW5kICh2b2lkKQogfQogCiB2b2lkCi1hbm5vdGF0ZV9mcmFtZV9mdW5j dGlvbl9uYW1lICh2b2lkKQorYW5ub3RhdGVfZnJhbWVfZnVuY3Rpb25fbmFtZSAoYm9vbCBzaGFk b3dzdGFja19mcmFtZSkKIHsKICAgaWYgKGFubm90YXRpb25fbGV2ZWwgPT0gMikKLSAgICBwcmlu dGZfdW5maWx0ZXJlZCAoKCJcblwwMzJcMDMyZnJhbWUtZnVuY3Rpb24tbmFtZVxuIikpOworICAg IHsKKyAgICAgIGlmICghc2hhZG93c3RhY2tfZnJhbWUpCisJcHJpbnRmX3VuZmlsdGVyZWQgKCgi XG5cMDMyXDAzMmZyYW1lLWZ1bmN0aW9uLW5hbWVcbiIpKTsKKyAgICAgIGVsc2UKKwlwcmludGZf dW5maWx0ZXJlZCAoKCJcblwwMzJcMDMyc2hhZG93LXN0YWNrLWZyYW1lLWZ1bmN0aW9uLW5hbWVc biIpKTsKKyAgICB9CiB9CiAKIHZvaWQKQEAgLTUyMCw0NSArNTI1LDc1IEBAIGFubm90YXRlX2Zy YW1lX2FyZ3MgKHZvaWQpCiB9CiAKIHZvaWQKLWFubm90YXRlX2ZyYW1lX3NvdXJjZV9iZWdpbiAo dm9pZCkKK2Fubm90YXRlX2ZyYW1lX3NvdXJjZV9iZWdpbiAoYm9vbCBzaGFkb3dzdGFja19mcmFt ZSkKIHsKICAgaWYgKGFubm90YXRpb25fbGV2ZWwgPT0gMikKLSAgICBwcmludGZfdW5maWx0ZXJl ZCAoKCJcblwwMzJcMDMyZnJhbWUtc291cmNlLWJlZ2luXG4iKSk7CisgICAgeworICAgICAgaWYg KCFzaGFkb3dzdGFja19mcmFtZSkKKwlwcmludGZfdW5maWx0ZXJlZCAoKCJcblwwMzJcMDMyZnJh bWUtc291cmNlLWJlZ2luXG4iKSk7CisgICAgICBlbHNlCisJcHJpbnRmX3VuZmlsdGVyZWQgKCgi XG5cMDMyXDAzMnNoYWRvdy1zdGFjay1mcmFtZS1zb3VyY2UtYmVnaW5cbiIpKTsKKyAgICB9CiB9 CiAKIHZvaWQKLWFubm90YXRlX2ZyYW1lX3NvdXJjZV9maWxlICh2b2lkKQorYW5ub3RhdGVfZnJh bWVfc291cmNlX2ZpbGUgKGJvb2wgc2hhZG93c3RhY2tfZnJhbWUpCiB7CiAgIGlmIChhbm5vdGF0 aW9uX2xldmVsID09IDIpCi0gICAgcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5cMDMyXDAzMmZyYW1l LXNvdXJjZS1maWxlXG4iKSk7CisgICAgeworICAgICAgaWYgKCFzaGFkb3dzdGFja19mcmFtZSkK KwlwcmludGZfdW5maWx0ZXJlZCAoKCJcblwwMzJcMDMyZnJhbWUtc291cmNlLWZpbGVcbiIpKTsK KyAgICAgIGVsc2UKKwlwcmludGZfdW5maWx0ZXJlZCAoKCJcblwwMzJcMDMyc2hhZG93LXN0YWNr LWZyYW1lLXNvdXJjZS1maWxlXG4iKSk7CisgICAgfQogfQogCiB2b2lkCi1hbm5vdGF0ZV9mcmFt ZV9zb3VyY2VfZmlsZV9lbmQgKHZvaWQpCithbm5vdGF0ZV9mcmFtZV9zb3VyY2VfZmlsZV9lbmQg KGJvb2wgc2hhZG93c3RhY2tfZnJhbWUpCiB7CiAgIGlmIChhbm5vdGF0aW9uX2xldmVsID09IDIp Ci0gICAgcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5cMDMyXDAzMmZyYW1lLXNvdXJjZS1maWxlLWVu ZFxuIikpOworICAgIHsKKyAgICAgIGlmICghc2hhZG93c3RhY2tfZnJhbWUpCisJcHJpbnRmX3Vu ZmlsdGVyZWQgKCgiXG5cMDMyXDAzMmZyYW1lLXNvdXJjZS1maWxlLWVuZFxuIikpOworICAgICAg ZWxzZQorCXByaW50Zl91bmZpbHRlcmVkICgoIlxuXDAzMlwwMzJzaGFkb3ctc3RhY2stZnJhbWUt c291cmNlLWZpbGUtZW5kXG4iKSk7CisgICAgfQogfQogCiB2b2lkCi1hbm5vdGF0ZV9mcmFtZV9z b3VyY2VfbGluZSAodm9pZCkKK2Fubm90YXRlX2ZyYW1lX3NvdXJjZV9saW5lIChib29sIHNoYWRv d3N0YWNrX2ZyYW1lKQogewogICBpZiAoYW5ub3RhdGlvbl9sZXZlbCA9PSAyKQotICAgIHByaW50 Zl91bmZpbHRlcmVkICgoIlxuXDAzMlwwMzJmcmFtZS1zb3VyY2UtbGluZVxuIikpOworICAgIHsK KyAgICAgIGlmICghc2hhZG93c3RhY2tfZnJhbWUpCisJcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5c MDMyXDAzMmZyYW1lLXNvdXJjZS1saW5lXG4iKSk7CisgICAgICBlbHNlCisJcHJpbnRmX3VuZmls dGVyZWQgKCgiXG5cMDMyXDAzMnNoYWRvdy1zdGFjay1mcmFtZS1zb3VyY2UtbGluZVxuIikpOwor ICAgIH0KIH0KIAogdm9pZAotYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAodm9pZCkKK2Fubm90 YXRlX2ZyYW1lX3NvdXJjZV9lbmQgKGJvb2wgc2hhZG93c3RhY2tfZnJhbWUpCiB7CiAgIGlmIChh bm5vdGF0aW9uX2xldmVsID09IDIpCi0gICAgcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5cMDMyXDAz MmZyYW1lLXNvdXJjZS1lbmRcbiIpKTsKKyAgICB7CisgICAgICBpZiAoIXNoYWRvd3N0YWNrX2Zy YW1lKQorCXByaW50Zl91bmZpbHRlcmVkICgoIlxuXDAzMlwwMzJmcmFtZS1zb3VyY2UtZW5kXG4i KSk7CisgICAgICBlbHNlCisJcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5cMDMyXDAzMnNoYWRvdy1z dGFjay1mcmFtZS1zb3VyY2UtZW5kXG4iKSk7CisgICAgfQogfQogCiB2b2lkCi1hbm5vdGF0ZV9m cmFtZV93aGVyZSAodm9pZCkKK2Fubm90YXRlX2ZyYW1lX3doZXJlIChib29sIHNoYWRvd3N0YWNr X2ZyYW1lKQogewogICBpZiAoYW5ub3RhdGlvbl9sZXZlbCA9PSAyKQotICAgIHByaW50Zl91bmZp bHRlcmVkICgoIlxuXDAzMlwwMzJmcmFtZS13aGVyZVxuIikpOworICAgIHsKKyAgICAgIGlmICgh c2hhZG93c3RhY2tfZnJhbWUpCisJcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5cMDMyXDAzMmZyYW1l LXdoZXJlXG4iKSk7CisgICAgICBlbHNlCisJcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5cMDMyXDAz MnNoYWRvdy1zdGFjay1mcmFtZS13aGVyZVxuIikpOworICAgIH0KIH0KIAogdm9pZApAQCAtNTY4 LDYgKzYwMywzNiBAQCBhbm5vdGF0ZV9mcmFtZV9lbmQgKHZvaWQpCiAgICAgcHJpbnRmX3VuZmls dGVyZWQgKCgiXG5cMDMyXDAzMmZyYW1lLWVuZFxuIikpOwogfQogDAorCisvKiBBbm5vdGF0aW9u cyBmb3Igc2hhZG93IHN0YWNrIGZyYW1lcy4gICovCisKK3ZvaWQKK2Fubm90YXRlX3NoYWRvd3N0 YWNrX2ZyYW1lX2JlZ2luIChpbnQgbGV2ZWwsIGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBw YykKK3sKKyAgaWYgKGFubm90YXRpb25fbGV2ZWwgPiAxKQorICAgIHByaW50Zl91bmZpbHRlcmVk ICgoIlxuXDAzMlwwMzJzaGFkb3ctc3RhY2stZnJhbWUtYmVnaW4gJWQgJXNcbiIpLAorCQkgICAg ICAgbGV2ZWwsIHBhZGRyZXNzIChnZGJhcmNoLCBwYykpOworfQorCit2b2lkIGFubm90YXRlX3No YWRvd3N0YWNrX2ZyYW1lX2FkZHJlc3MgKHZvaWQpCit7CisgIGlmIChhbm5vdGF0aW9uX2xldmVs ID09IDIpCisgICAgcHJpbnRmX3VuZmlsdGVyZWQgKCgiXG5cMDMyXDAzMnNoYWRvdy1zdGFjay1m cmFtZS1hZGRyZXNzXG4iKSk7Cit9CisKK3ZvaWQKK2Fubm90YXRlX3NoYWRvd3N0YWNrX2ZyYW1l X2FkZHJlc3NfZW5kICh2b2lkKQoreworICBpZiAoYW5ub3RhdGlvbl9sZXZlbCA9PSAyKQorICAg IHByaW50Zl91bmZpbHRlcmVkICgoIlxuXDAzMlwwMzJzaGFkb3ctc3RhY2stZnJhbWUtYWRkcmVz cy1lbmRcbiIpKTsKK30KKwordm9pZCBhbm5vdGF0ZV9zaGFkb3dzdGFja19mcmFtZV9lbmQgKCkK K3sKKyAgaWYgKGFubm90YXRpb25fbGV2ZWwgPT0gMikKKyAgICBwcmludGZfdW5maWx0ZXJlZCAo KCJcblwwMzJcMDMyc2hhZG93LXN0YWNrLWZyYW1lLWVuZFxuIikpOworfQorCiB2b2lkCiBhbm5v dGF0ZV9hcnJheV9zZWN0aW9uX2JlZ2luIChpbnQgaWR4LCBzdHJ1Y3QgdHlwZSAqZWx0dHlwZSkK IHsKZGlmZiAtLWdpdCBhL2dkYi9hbm5vdGF0ZS5oIGIvZ2RiL2Fubm90YXRlLmgKaW5kZXggMWYx YTVlZGZhYTkuLjliNTk0NGVlOGY4IDEwMDY0NAotLS0gYS9nZGIvYW5ub3RhdGUuaAorKysgYi9n ZGIvYW5ub3RhdGUuaApAQCAtMTIxLDE1ICsxMjEsMTkgQEAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVf ZnVuY3Rpb25fY2FsbCAodm9pZCk7CiBleHRlcm4gdm9pZCBhbm5vdGF0ZV9zaWduYWxfaGFuZGxl cl9jYWxsZXIgKHZvaWQpOwogZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZnJhbWVfYWRkcmVzcyAodm9p ZCk7CiBleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9hZGRyZXNzX2VuZCAodm9pZCk7Ci1leHRl cm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9mdW5jdGlvbl9uYW1lICh2b2lkKTsKK2V4dGVybiB2b2lk IGFubm90YXRlX2ZyYW1lX2Z1bmN0aW9uX25hbWUgKGJvb2wgc2hhZG93c3RhY2tfZnJhbWUgPSBm YWxzZSk7CiBleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9hcmdzICh2b2lkKTsKLWV4dGVybiB2 b2lkIGFubm90YXRlX2ZyYW1lX3NvdXJjZV9iZWdpbiAodm9pZCk7Ci1leHRlcm4gdm9pZCBhbm5v dGF0ZV9mcmFtZV9zb3VyY2VfZmlsZSAodm9pZCk7Ci1leHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFt ZV9zb3VyY2VfZmlsZV9lbmQgKHZvaWQpOwotZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZnJhbWVfc291 cmNlX2xpbmUgKHZvaWQpOwotZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAo dm9pZCk7Ci1leHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV93aGVyZSAodm9pZCk7CitleHRlcm4g dm9pZCBhbm5vdGF0ZV9mcmFtZV9zb3VyY2VfYmVnaW4gKGJvb2wgc2hhZG93c3RhY2tfZnJhbWUg PSBmYWxzZSk7CitleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9zb3VyY2VfZmlsZSAoYm9vbCBz aGFkb3dzdGFja19mcmFtZSA9IGZhbHNlKTsKK2V4dGVybiB2b2lkIGFubm90YXRlX2ZyYW1lX3Nv dXJjZV9maWxlX2VuZCAoYm9vbCBzaGFkb3dzdGFja19mcmFtZSA9IGZhbHNlKTsKK2V4dGVybiB2 b2lkIGFubm90YXRlX2ZyYW1lX3NvdXJjZV9saW5lIChib29sIHNoYWRvd3N0YWNrX2ZyYW1lID0g ZmFsc2UpOworZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAoYm9vbCBzaGFk b3dzdGFja19mcmFtZSA9IGZhbHNlKTsKK2V4dGVybiB2b2lkIGFubm90YXRlX2ZyYW1lX3doZXJl IChib29sIHNoYWRvd3N0YWNrX2ZyYW1lID0gZmFsc2UpOwogZXh0ZXJuIHZvaWQgYW5ub3RhdGVf ZnJhbWVfZW5kICh2b2lkKTsKK2V4dGVybiB2b2lkIGFubm90YXRlX3NoYWRvd3N0YWNrX2ZyYW1l X2JlZ2luIChpbnQsIGdkYmFyY2ggKiwgQ09SRV9BRERSKTsKK2V4dGVybiB2b2lkIGFubm90YXRl X3NoYWRvd3N0YWNrX2ZyYW1lX2FkZHJlc3MgKHZvaWQpOworZXh0ZXJuIHZvaWQgYW5ub3RhdGVf c2hhZG93c3RhY2tfZnJhbWVfYWRkcmVzc19lbmQgKHZvaWQpOworZXh0ZXJuIHZvaWQgYW5ub3Rh dGVfc2hhZG93c3RhY2tfZnJhbWVfZW5kICh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgYW5ub3RhdGVf YXJyYXlfc2VjdGlvbl9iZWdpbiAoaW50LCBzdHJ1Y3QgdHlwZSAqKTsKIGV4dGVybiB2b2lkIGFu bm90YXRlX2VsdF9yZXAgKHVuc2lnbmVkIGludCk7CmRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50 ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwppbmRleCA3MDU5ZjczOTM1Yy4uZjUwZDk2YTA5 ZjMgMTAwNjQ0Ci0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4 aW5mbwpAQCAtODc0Nyw2ICs4NzQ3LDMxIEBAIFJlbGF0ZWQgc2V0dGluZzogQHJlZntzZXQgcHJp bnQgcmF3LWZyYW1lLWFyZ3VtZW50c30uCiBAaXRlbSAtZnJhbWUtaW5mbyBAY29kZXthdXRvfXxA Y29kZXtzb3VyY2UtbGluZX18QGNvZGV7bG9jYXRpb259fEBjb2Rle3NvdXJjZS1hbmQtbG9jYXRp b259fEBjb2Rle2xvY2F0aW9uLWFuZC1hZGRyZXNzfXxAY29kZXtzaG9ydC1sb2NhdGlvbn0KIFNl dCBwcmludGluZyBvZiBmcmFtZSBpbmZvcm1hdGlvbi4KIFJlbGF0ZWQgc2V0dGluZzogQHJlZntz ZXQgcHJpbnQgZnJhbWUtaW5mb30uCisKK0BpdGVtIC1zaGFkb3cKK1ByaW50IHRoZSBzaGFkb3cg c3RhY2sgYmFja3RyYWNlIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBiYWNrdHJhY2UuCitTaW1pbGFy IHRvIHRoZSBub3JtYWwgYmFja3RyYWNlIEB2YWx1ZXtHREJOfSBwcmludHMgb25lIGxpbmUgcGVy CitlbGVtZW50IChzby1jYWxsZWQgc2hhZG93IHN0YWNrIGZyYW1lcykgb24gdGhlIHNoYWRvdyBz dGFjay4KKworQSBzaGFkb3cgc3RhY2sgaXMgc3VwcG9ydGVkLCBmb3IgaW5zdGFuY2UsIHdpdGgg dGhlIEludGVsIENvbnRyb2wtRmxvdworRW5mb3JjZW1lbnQgVGVjaG5vbG9neSAoQHhyZWZ7Q0VU fSkgb24geDg2IGFuZCB0aGUgR3VhcmRlZCBDb250cm9sIFN0YWNrCitmZWF0dXJlIChAeHJlZntH Q1N9KSBvbiBBQXJjaDY0LgorCitUaGlzIG9wdGlvbiBtYXkgYmUgY29tYmluZWQgd2l0aCDigJwt ZnJhbWUtaW5mb+KAnSBhbmQgaW1wbGllcyDigJgtbm8tZmlsdGVyc+KAmQorYW5kIOKAmC1mcmFt ZS1hcmd1bWVudHMgbm9uZeKAmS4gIEFsc28gdGhlIG9wdGlvbnMgQHNhbXB7LXBhc3QtbWFpbn0s CitAc2FtcHstcGFzdC1lbnRyeX0gb3IgQHNhbXB7LWhpZGV9IGFyZSBub3Qgc3VwcG9ydGVkLiAg U28gYnkgZGVmYXVsdCwKK2FsbCBhdmFpbGFibGUgc2hhZG93IHN0YWNrIGZyYW1lcyBhcmUgcHJp bnRlZC4KKworVGhpcyBpcyBob3cgYSBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIGxvb2tzIGxpa2Ug b24gYW1kNjQ6CitAc21hbGxleGFtcGxlCitAZ3JvdXAKKyMwICAweDAwMDA1NTU1NTU1NTUxNGEg aW4gY2FsbDEgYXQgYW1kNjQtc2hhZG93LXN0YWNrLmM6MjcKKyMxICAweDAwMDA1NTU1NTU1NTUx NWYgaW4gbWFpbiBhdCBhbWQ2NC1zaGFkb3ctc3RhY2suYzozOAorIzIgIDB4MDAwMDdmZmZmN2My YTFjYSBpbiBfX2xpYmNfc3RhcnRfY2FsbF9tYWluIGF0IC4uL2xpYmNfbWFpbi5oOjU4CisjMyAg MHgwMDAwN2ZmZmY3YzJhMjhiIGluIF9fbGliY19zdGFydF9tYWluX2ltcGwgYXQgLi4vY3N1L2xp YmMtc3RhcnQuYzozNjAKKyM0ICAweDAwMDA1NTU1NTU1NTUwNjUgaW4gX3N0YXJ0CitAZW5kIGdy b3VwCitAZW5kIHNtYWxsZXhhbXBsZQogQGVuZCB0YWJsZQogCiBUaGUgb3B0aW9uYWwgQHZhcntx dWFsaWZpZXJ9IGlzIG1haW50YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCkBAIC0y NzE2MCw2ICsyNzE4NSw3IEBAIGluZm9ybWF0aW9uIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgY29y ZSBmaWxlLCBhbmQgd2lsbCBzaG93IG9uZSBvZiB0aGUgYWJvdmUKIG1lc3NhZ2VzIGRlcGVuZGlu ZyBvbiB3aGV0aGVyIHRoZSBzeW5jaHJvbm91cyBvciBhc3luY2hyb25vdXMgbW9kZSBpcyBzZWxl Y3RlZC4KIEB4cmVme01lbW9yeSBUYWdnaW5nfS4gQHhyZWZ7TWVtb3J5fS4KIAorQG5vZGUgR0NT CiBAc3Vic3Vic2VjdGlvbiBBQXJjaDY0IEd1YXJkZWQgQ29udHJvbCBTdGFjawogQGNpbmRleCBH dWFyZGVkIENvbnRyb2wgU3RhY2ssIEFBcmNoNjQKIEBjaW5kZXggR0NTLCBBQXJjaDY0CkBAIC0y NzI0OCw2ICsyNzI3NCw3IEBAIHJlZ2lzdGVycwogCiBAZW5kIGl0ZW1pemUKIAorQG5vZGUgQ0VU CiBAc3Vic3Vic2VjdGlvbiBJbnRlbCBDb250cm9sLUZsb3cgRW5mb3JjZW1lbnQgVGVjaG5vbG9n eS4KIEBjaW5kZXggSW50ZWwgQ29udHJvbC1GbG93IEVuZm9yY2VtZW50IFRlY2hub2xvZ3kuCiAK ZGlmZiAtLWdpdCBhL2dkYi9nZGJhcmNoLWdlbi5jIGIvZ2RiL2dkYmFyY2gtZ2VuLmMKaW5kZXgg Nzk0YmI0ZDUwZGMuLmJlNjU3MGFkOTdkIDEwMDY0NAotLS0gYS9nZGIvZ2RiYXJjaC1nZW4uYwor KysgYi9nZGIvZ2RiYXJjaC1nZW4uYwpAQCAtMjYyLDYgKzI2Miw3IEBAIHN0cnVjdCBnZGJhcmNo CiAgIGdkYmFyY2hfYWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5X3JhbmdlX2Z0eXBlICph ZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2UgPSBudWxscHRyOwogICBnZGJhcmNo X3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFja19mdHlwZSAqdG9wX2FkZHJfZW1wdHlfc2hhZG93 X3N0YWNrID0gbnVsbHB0cjsKICAgaW50IHNoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25l ZCA9IDg7CisgIGdkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19zaXplX2Z0eXBlICpnZXRfc2hhZG93 X3N0YWNrX3NpemUgPSBudWxscHRyOwogfTsKIAogLyogQ3JlYXRlIGEgbmV3IGBgc3RydWN0IGdk YmFyY2gnJyBiYXNlZCBvbiBpbmZvcm1hdGlvbiBwcm92aWRlZCBieQpAQCAtNTM1LDYgKzUzNiw3 IEBAIHZlcmlmeV9nZGJhcmNoIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKICAgLyogU2tpcCB2 ZXJpZnkgb2YgYWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5X3JhbmdlLCBoYXMgcHJlZGlj YXRlLiAgKi8KICAgLyogU2tpcCB2ZXJpZnkgb2YgdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNr LCBoYXMgcHJlZGljYXRlLiAgKi8KICAgLyogU2tpcCB2ZXJpZnkgb2Ygc2hhZG93X3N0YWNrX2Vs ZW1lbnRfc2l6ZV9hbGlnbmVkLCBpbnZhbGlkX3AgPT0gMC4gICovCisgIC8qIFNraXAgdmVyaWZ5 IG9mIGdldF9zaGFkb3dfc3RhY2tfc2l6ZSwgaGFzIHByZWRpY2F0ZS4gICovCiAgIGlmICghbG9n LmVtcHR5ICgpKQogICAgIGludGVybmFsX2Vycm9yIChfKCJ2ZXJpZnlfZ2RiYXJjaDogdGhlIGZv bGxvd2luZyBhcmUgaW52YWxpZCAuLi4lcyIpLAogCQkgICAgbG9nLmNfc3RyICgpKTsKQEAgLTE0 MTIsNiArMTQxNCwxMiBAQCBnZGJhcmNoX2R1bXAgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBz dHJ1Y3QgdWlfZmlsZSAqZmlsZSkKICAgZ2RiX3ByaW50ZiAoZmlsZSwKIAkgICAgICAiZ2RiYXJj aF9kdW1wOiBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQgPSAlc1xuIiwKIAkgICAg ICBwbG9uZ2VzdCAoZ2RiYXJjaC0+c2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkKSk7 CisgIGdkYl9wcmludGYgKGZpbGUsCisJICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9nZXRf c2hhZG93X3N0YWNrX3NpemVfcCgpID0gJWRcbiIsCisJICAgICAgZ2RiYXJjaF9nZXRfc2hhZG93 X3N0YWNrX3NpemVfcCAoZ2RiYXJjaCkpOworICBnZGJfcHJpbnRmIChmaWxlLAorCSAgICAgICJn ZGJhcmNoX2R1bXA6IGdldF9zaGFkb3dfc3RhY2tfc2l6ZSA9IDwlcz5cbiIsCisJICAgICAgaG9z dF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+Z2V0X3NoYWRvd19zdGFja19zaXplKSk7CiAg IGlmIChnZGJhcmNoLT5kdW1wX3RkZXAgIT0gTlVMTCkKICAgICBnZGJhcmNoLT5kdW1wX3RkZXAg KGdkYmFyY2gsIGZpbGUpOwogfQpAQCAtNTU3MSwzICs1NTc5LDI3IEBAIHNldF9nZGJhcmNoX3No YWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CiB7CiAgIGdkYmFyY2gtPnNoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCA9IHNoYWRv d19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZDsKIH0KKworYm9vbAorZ2RiYXJjaF9nZXRfc2hh ZG93X3N0YWNrX3NpemVfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCit7CisgIGdkYl9hc3Nl cnQgKGdkYmFyY2ggIT0gTlVMTCk7CisgIHJldHVybiBnZGJhcmNoLT5nZXRfc2hhZG93X3N0YWNr X3NpemUgIT0gTlVMTDsKK30KKworbG9uZworZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3NpemUg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4g c3NwLCBjb25zdCBzdGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JFX0FERFI+IHJhbmdlKQoreworICBn ZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOworICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5nZXRf c2hhZG93X3N0YWNrX3NpemUgIT0gTlVMTCk7CisgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisg ICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19zaXpl IGNhbGxlZFxuIik7CisgIHJldHVybiBnZGJhcmNoLT5nZXRfc2hhZG93X3N0YWNrX3NpemUgKGdk YmFyY2gsIHNzcCwgcmFuZ2UpOworfQorCit2b2lkCitzZXRfZ2RiYXJjaF9nZXRfc2hhZG93X3N0 YWNrX3NpemUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorCQkJCSAgIGdkYmFyY2hfZ2V0X3No YWRvd19zdGFja19zaXplX2Z0eXBlIGdldF9zaGFkb3dfc3RhY2tfc2l6ZSkKK3sKKyAgZ2RiYXJj aC0+Z2V0X3NoYWRvd19zdGFja19zaXplID0gZ2V0X3NoYWRvd19zdGFja19zaXplOworfQpkaWZm IC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmggYi9nZGIvZ2RiYXJjaC1nZW4uaAppbmRleCBjYmU5 NzBmZDcxNi4uMTU1ZDYwYjFiOGIgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJhcmNoLWdlbi5oCisrKyBi L2dkYi9nZGJhcmNoLWdlbi5oCkBAIC0xNzg1LDkgKzE3ODUsMTEgQEAgZXh0ZXJuIHZvaWQgc2V0 X2dkYmFyY2hfY29yZV9wYXJzZV9leGVjX2NvbnRleHQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBnZGJhcmMKICAgICAgdW53aW5kaW5nIGFuZCBpbmZlcmlvciBmdW5jdGlvbiBjYWxscwogICAg LSB0b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2s6IHJlcXVpcmVkIGZvciBzaGFkb3cgc3RhY2sg cG9pbnRlciB1bndpbmRpbmcKICAgIC0gc3NwX3JlZ251bTogcmVxdWlyZWQgZm9yIGluZmVyaW9y IGZ1bmN0aW9uIGNhbGxzLgotCiAgICBJZiB0aGUgc2hhZG93IHN0YWNrIGFsaWdubWVudCBpcyBu b3QgdGhlIHByZWRlZmF1bHQgb2YgOCBieXRlcywgY29uZmlndXJlCiAgICB0aGUgZ2RiYXJjaCB2 YWx1ZSBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQuCisgICBUbyBzdXBwb3J0IHRo ZSBjb21tYW5kIGxpbmUgb3B0aW9uICdiYWNrdHJhY2UgLXNoYWRvdycgaW4gYWRkaXRpb24gdG8g YWxsCisgICB2YWx1ZXMgYW5kIG1ldGhvZHMgbGlzdGVkIGFib3ZlIGFsc28gdGhlIGdkYmFyY2gg aG9vayBnZXRfc2hhZG93X3N0YWNrX3NpemUsCisgICBoYXMgdG8gYmUgcHJvdmlkZWQuCiAKICAg IElmIHBvc3NpYmxlLCByZXR1cm4gdGhlIHNoYWRvdyBzdGFjayBwb2ludGVyLiAgSWYgdGhlIHNo YWRvdyBzdGFjawogICAgZmVhdHVyZSBpcyBlbmFibGVkIHRoZW4gc2V0IFNIQURPV19TVEFDS19F TkFCTEVEIHRvIHRydWUsIG90aGVyd2lzZQpAQCAtMTgzMCwzICsxODMyLDE0IEBAIGV4dGVybiB2 b2lkIHNldF9nZGJhcmNoX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjayAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIGdkCiAKIGV4dGVybiBpbnQgZ2RiYXJjaF9zaGFkb3dfc3RhY2tfZWxlbWVu dF9zaXplX2FsaWduZWQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKIGV4dGVybiB2b2lkIHNl dF9nZGJhcmNoX3NoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIGludCBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQpOworCisv KiBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aGljaCBhcmUgY3VycmVudGx5IG9uIHRo ZSBzaGFkb3cgc3RhY2sKKyAgIGJhc2VkIG9uIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlciBTU1Ag YW5kIHRoZSBzaGFkb3cgc3RhY2sgbWVtb3J5CisgICBSQU5HRSBbc3RhcnRfYWRkcmVzcywgZW5k X2FkZHJlc3MpIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgIEluIGNhc2Ugc2hhZG93IHN0YWNr IGlzIG5vdCBlbmFibGVkIGZvciB0aGUgY3VycmVudCB0aHJlYWQsIHJldHVybiAtMS4gKi8KKwor ZXh0ZXJuIGJvb2wgZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3NpemVfcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpOworCit0eXBlZGVmIGxvbmcgKGdkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19z aXplX2Z0eXBlKSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8 Q09SRV9BRERSPiBzc3AsIGNvbnN0IHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQUREUj4gcmFu Z2UpOworZXh0ZXJuIGxvbmcgZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3NpemUgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gc3NwLCBjb25z dCBzdGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JFX0FERFI+IHJhbmdlKTsKK2V4dGVybiB2b2lkIHNl dF9nZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tfc2l6ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IGdkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19zaXplX2Z0eXBlICpnZXRfc2hhZG93X3N0YWNrX3Np emUpOwpkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2hfY29tcG9uZW50cy5weSBiL2dkYi9nZGJhcmNo X2NvbXBvbmVudHMucHkKaW5kZXggZDQ0ZTU5YTUyM2QuLjFmMjRhM2E2ZDcyIDEwMDY0NAotLS0g YS9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5CisrKyBiL2dkYi9nZGJhcmNoX2NvbXBvbmVudHMu cHkKQEAgLTI4MzAsOSArMjgzMCwxMSBAQCBwcm92aWRlZDoKICAgdW53aW5kaW5nIGFuZCBpbmZl cmlvciBmdW5jdGlvbiBjYWxscwogLSB0b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2s6IHJlcXVp cmVkIGZvciBzaGFkb3cgc3RhY2sgcG9pbnRlciB1bndpbmRpbmcKIC0gc3NwX3JlZ251bTogcmVx dWlyZWQgZm9yIGluZmVyaW9yIGZ1bmN0aW9uIGNhbGxzLgotCiBJZiB0aGUgc2hhZG93IHN0YWNr IGFsaWdubWVudCBpcyBub3QgdGhlIHByZWRlZmF1bHQgb2YgOCBieXRlcywgY29uZmlndXJlCiB0 aGUgZ2RiYXJjaCB2YWx1ZSBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQuCitUbyBz dXBwb3J0IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICdiYWNrdHJhY2UgLXNoYWRvdycgaW4gYWRk aXRpb24gdG8gYWxsCit2YWx1ZXMgYW5kIG1ldGhvZHMgbGlzdGVkIGFib3ZlIGFsc28gdGhlIGdk YmFyY2ggaG9vayBnZXRfc2hhZG93X3N0YWNrX3NpemUsCitoYXMgdG8gYmUgcHJvdmlkZWQuCiAK IElmIHBvc3NpYmxlLCByZXR1cm4gdGhlIHNoYWRvdyBzdGFjayBwb2ludGVyLiAgSWYgdGhlIHNo YWRvdyBzdGFjawogZmVhdHVyZSBpcyBlbmFibGVkIHRoZW4gc2V0IFNIQURPV19TVEFDS19FTkFC TEVEIHRvIHRydWUsIG90aGVyd2lzZQpAQCAtMjg5MywzICsyODk1LDE5IEBAIHRoaXMgdmFsdWUu CiAgICAgcHJlZGVmYXVsdD0iOCIsCiAgICAgaW52YWxpZD1GYWxzZSwKICkKKworTWV0aG9kKAor ICAgIGNvbW1lbnQ9IiIiCitSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aGljaCBhcmUg Y3VycmVudGx5IG9uIHRoZSBzaGFkb3cgc3RhY2sKK2Jhc2VkIG9uIHRoZSBzaGFkb3cgc3RhY2sg cG9pbnRlciBTU1AgYW5kIHRoZSBzaGFkb3cgc3RhY2sgbWVtb3J5CitSQU5HRSBbc3RhcnRfYWRk cmVzcywgZW5kX2FkZHJlc3MpIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KK0luIGNhc2Ugc2hhZG93 IHN0YWNrIGlzIG5vdCBlbmFibGVkIGZvciB0aGUgY3VycmVudCB0aHJlYWQsIHJldHVybiAtMS4K KyIiIiwKKyAgICB0eXBlPSJsb25nIiwKKyAgICBuYW1lPSJnZXRfc2hhZG93X3N0YWNrX3NpemUi LAorICAgIHBhcmFtcz1bCisgICAgICAgICgiY29uc3Qgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+ IiwgInNzcCIpLAorICAgICAgICAoImNvbnN0IHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQURE Uj4iLCAicmFuZ2UiKQorICAgIF0sCisgICAgcHJlZGljYXRlPVRydWUsCispCmRpZmYgLS1naXQg YS9nZGIvc2hhZG93LXN0YWNrLmMgYi9nZGIvc2hhZG93LXN0YWNrLmMKaW5kZXggNzdkN2MwN2Q5 NzAuLjgyZDk4YzczMzZjIDEwMDY0NAotLS0gYS9nZGIvc2hhZG93LXN0YWNrLmMKKysrIGIvZ2Ri L3NoYWRvdy1zdGFjay5jCkBAIC0yMyw4ICsyMywxNCBAQAogI2luY2x1ZGUgImZyYW1lLmgiCiAj aW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCiAjaW5jbHVkZSAic2hhZG93LXN0YWNrLmgiCisjaW5j bHVkZSAiYW5ub3RhdGUuaCIKKyNpbmNsdWRlICJzdGFjay5oIgorI2luY2x1ZGUgInNvbGliLmgi CisjaW5jbHVkZSAiZXZlbnQtdG9wLmgiCisjaW5jbHVkZSAiY2xpL2NsaS1zdHlsZS5oIgogCiBj bGFzcyByZWdjYWNoZTsKK3N0cnVjdCBiYWNrdHJhY2VfY21kX29wdGlvbnM7CiAKIGVudW0gY2xh c3Mgc3NwX3VwZGF0ZV9kaXJlY3Rpb24KIHsKQEAgLTQyLDE2ICs0OCwxOSBAQCBlbnVtIGNsYXNz IHNzcF91cGRhdGVfZGlyZWN0aW9uCiAKIHN0YXRpYyBDT1JFX0FERFIKIHVwZGF0ZV9zaGFkb3df c3RhY2tfcG9pbnRlciAoZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHNzcCwKKwkJCSAgICAg Y29uc3QgdW5zaWduZWQgaW50IGNvdW50LAogCQkJICAgICBjb25zdCBzc3BfdXBkYXRlX2RpcmVj dGlvbiBkaXJlY3Rpb24pCiB7CiAgIGJvb2wgaW5jcmVtZW50ID0gZ2RiYXJjaF9zdGFja19ncm93 c19kb3duIChnZGJhcmNoKQogCQkgICA/IGRpcmVjdGlvbiA9PSBzc3BfdXBkYXRlX2RpcmVjdGlv bjo6b3V0ZXIKIAkJICAgICA6IGRpcmVjdGlvbiA9PSBzc3BfdXBkYXRlX2RpcmVjdGlvbjo6aW5u ZXI7CiAKKyAgY29uc3QgaW50IGVsZW1lbnRfc2l6ZQorICAgID0gZ2RiYXJjaF9zaGFkb3dfc3Rh Y2tfZWxlbWVudF9zaXplX2FsaWduZWQgKGdkYmFyY2gpOwogICBpZiAoaW5jcmVtZW50KQotICAg IHJldHVybiBzc3AgKyBnZGJhcmNoX3NoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAo Z2RiYXJjaCk7CisgICAgcmV0dXJuIHNzcCArIGNvdW50ICogZWxlbWVudF9zaXplOwogICBlbHNl Ci0gICAgcmV0dXJuIHNzcCAtIGdkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGln bmVkIChnZGJhcmNoKTsKKyAgICByZXR1cm4gc3NwIC0gY291bnQgKiBlbGVtZW50X3NpemU7CiB9 CiAKIC8qIFNlZSBzaGFkb3ctc3RhY2suaC4gICovCkBAIC03MSw3ICs4MCw3IEBAIHZvaWQgc2hh ZG93X3N0YWNrX3B1c2ggKHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3QgQ09SRV9BRERSIG5ld19h ZGRyKQogICAgIHJldHVybjsKIAogICBjb25zdCBDT1JFX0FERFIgbmV3X3NzcAotICAgID0gdXBk YXRlX3NoYWRvd19zdGFja19wb2ludGVyIChnZGJhcmNoLCAqc3NwLAorICAgID0gdXBkYXRlX3No YWRvd19zdGFja19wb2ludGVyIChnZGJhcmNoLCAqc3NwLCAxLAogCQkJCSAgIHNzcF91cGRhdGVf ZGlyZWN0aW9uOjppbm5lcik7CiAKICAgLyogSWYgTkVXX1NTUCBkb2VzIG5vdCBwb2ludCB0byBz aGFkb3cgc3RhY2sgbWVtb3J5LCB3ZSBhc3N1bWUgdGhlCkBAIC0xMzIsNyArMTQxLDcgQEAgZHdh cmYyX3ByZXZfc3NwIChjb25zdCBmcmFtZV9pbmZvX3B0ciAmdGhpc19mcmFtZSwgdm9pZCAqKnRo aXNfY2FjaGUsCiAJICAgICBpbXBsZW1lbnQgdGhpcyB1bndpbmRlciB3aXRob3V0IHN1cHBvcnQg Zm9yIHNoYWRvdyBzdGFjawogCSAgICAgc3dpdGNoZXMgZm9yIG5vdy4gICovCiAJICBjb25zdCBD T1JFX0FERFIgbmV3X3NzcAotCSAgICA9IHVwZGF0ZV9zaGFkb3dfc3RhY2tfcG9pbnRlciAoZ2Ri YXJjaCwgc3NwLAorCSAgICA9IHVwZGF0ZV9zaGFkb3dfc3RhY2tfcG9pbnRlciAoZ2RiYXJjaCwg c3NwLCAxLAogCQkJCQkgICBzc3BfdXBkYXRlX2RpcmVjdGlvbjo6b3V0ZXIpOwogCiAJICAvKiBP biB4ODYsIGlmIE5FV19TU1AgcG9pbnRzIHRvIHRoZSBlbmQgb3V0c2lkZSBvZiBSQU5HRQpAQCAt MTY0LDMgKzE3Myw0NjYgQEAgZHdhcmYyX3ByZXZfc3NwIChjb25zdCBmcmFtZV9pbmZvX3B0ciAm dGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCiAgIHJldHZhbC0+bWFya19ieXRlc191bmF2 YWlsYWJsZSAoMCwgcmV0dmFsLT50eXBlICgpLT5sZW5ndGggKCkpOwogICByZXR1cm4gcmV0dmFs OwogfQorCisvKiBSZXR1cm4gdHJ1ZSwgaWYgUEMgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHN0YXRl bWVudC4gIE5vdGUgdGhhdCBpbiB0aGUKKyAgIG1pZGRsZSBvZiBhIHN0YXRlbWVudCBQQyByYW5n ZSBpbmNsdWRlcyBzYWwuZW5kIChTQUwuUEMsIFNBTC5FTkRdLgorICAgUmV0dXJuIGZhbHNlLCBp ZgorICAgLSBTQUwuSVNfU1RNVCBpcyBmYWxzZQorICAgLSB0aGVyZSBpcyBubyBsb2NhdGlvbiBp bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBTQUwsIHdoaWNoCisgICBjb3VsZCBoYXBw ZW4gaW4gY2FzZSBvZiBpbmxpbmVkIGZ1bmN0aW9ucworICAgLSBQQyBpcyBub3QgaW4gdGhlIHJh bmdlIChTQUwuUEMsIFNBTC5FTkRdLgorICAgVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIHN0 YWNrLmM6ZnJhbWVfc2hvd19hZGRyZXNzIGJ1dCBpcyB1c2VkCisgICB0byBkZXRlcm1pbmUgaWYg d2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBzdGF0ZW1lbnQgb25seSwgbm90IHRvIGRlY2lkZQor ICAgaWYgd2Ugc2hvdWxkIHByaW50IGEgZnJhbWUncyBhZGRyZXNzLiAgKi8KKworc3RhdGljIGJv b2wKK3BjX2luX21pZGRsZV9vZl9zdGF0ZW1lbnQgKENPUkVfQUREUiBwYywgc3ltdGFiX2FuZF9s aW5lIHNhbCkKK3sKKyAgaWYgKHNhbC5pc19zdG10ID09IGZhbHNlKQorICAgIHJldHVybiBmYWxz ZTsKKworICAvKiBJZiB0aGVyZSBpcyBhIGxpbmUgbnVtYmVyLCBidXQgbm8gUEMsIHRoZW4gdGhl cmUgaXMgbm8gbG9jYXRpb24KKyAgICAgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMg c2FsLiAgVGhlIG9ubHkgd2F5IHRoYXQgc2hvdWxkCisgICAgIGhhcHBlbiBpcyBmb3IgdGhlIGNh bGwgc2l0ZXMgb2YgaW5saW5lZCBmdW5jdGlvbnMgKFNBTCBjb21lcyBmcm9tCisgICAgIGZpbmRf c2FsX2Zvcl9wYykuICBPdGhlcndpc2UsIHdlIHdvdWxkIGhhdmUgc29tZSBQQyByYW5nZSBpZiB0 aGUgU0FMCisgICAgIGNhbWUgZnJvbSBhIGxpbmUgdGFibGUuICBIb3dldmVyLCBhcyB3ZSBkb24n dCBoYXZlIGEgZnJhbWUgZm9yIHRoaXMKKyAgICAgZnVuY3Rpb24gd2UgY2Fubm90IGFzc2VydCAo aW4gY29udHJhc3QgdG8gZnJhbWVfc2hvd19hZGRyZXNzKS4gICovCisgIGlmIChzYWwubGluZSAh PSAwICYmIHNhbC5wYyA9PSAwICYmIHNhbC5lbmQgPT0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisK KyAgcmV0dXJuIHBjID4gc2FsLnBjICYmIHBjIDw9IHNhbC5lbmQ7Cit9CisKK2VudW0gY2xhc3Mg c3NwX3Vud2luZF9zdG9wX3JlYXNvbgoreworICAvKiBObyBwYXJ0aWN1bGFyIHJlYXNvbjsgZWl0 aGVyIHdlIGhhdmVuJ3QgdHJpZWQgdW53aW5kaW5nIHlldCwgb3Igd2UKKyAgICAgZGlkbid0IGZh aWwuICAqLworICBub19lcnJvciA9IDAsCisKKyAgLyogV2UgY291bGQgbm90IHJlYWQgdGhlIG1l bW9yeSBvZiB0aGUgc2hhZG93IHN0YWNrIGVsZW1lbnQuICAqLworICBtZW1vcnlfcmVhZF9lcnJv cgorfTsKKworLyogSW5mb3JtYXRpb24gb2YgYSBzaGFkb3cgc3RhY2sgZnJhbWUgYmVsb25naW5n IHRvIGEgc2hhZG93IHN0YWNrIGVsZW1lbnQKKyAgIGF0IHNoYWRvdyBzdGFjayBwb2ludGVyIFNT UC4gICovCisKK2NsYXNzIHNoYWRvd19zdGFja19mcmFtZV9pbmZvCit7CitwdWJsaWM6CisgIC8q IElmIHBvc3NpYmxlLCB1bndpbmQgdGhlIHByZXZpb3VzIHNoYWRvdyBzdGFjayBmcmFtZSBpbmZv LiAgUkFOR0UgaXMKKyAgICAgdGhlIHNoYWRvdyBzdGFjayBtZW1vcnkgcmFuZ2UgW3N0YXJ0X2Fk ZHJlc3MsIGVuZF9hZGRyZXNzKSBiZWxvbmdpbmcKKyAgICAgdG8gdGhpcyBmcmFtZSdzIHNoYWRv dyBzdGFjayBwb2ludGVyLiAgSWYgd2UgY2Fubm90IHVud2luZCB0aGUKKyAgICAgcHJldmlvdXMg ZnJhbWUgaW5mbywgc2V0IHRoZSB1bndpbmRfc3RvcF9yZWFzb24gYXR0cmlidXRlLiAgSWYgd2UK KyAgICAgcmVhY2hlZCB0aGUgYm90dG9tIG9mIHRoZSBzaGFkb3cgc3RhY2sganVzdCBkb24ndCBy ZXR1cm4gYSB2YWx1ZS4gICovCisgIHN0ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNrX2ZyYW1lX2lu Zm8+IHVud2luZF9wcmV2X3NoYWRvd19zdGFja19mcmFtZV9pbmZvCisgICAgKGdkYmFyY2ggKmdk YmFyY2gsIHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQUREUj4gcmFuZ2UpOworCisgIC8qIFRo ZSBzaGFkb3cgc3RhY2sgcG9pbnRlci4gICovCisgIENPUkVfQUREUiBzc3A7CisKKyAgLyogVGhl IHZhbHVlIG9mIHRoZSBzaGFkb3cgc3RhY2sgYXQgU1NQLiAgKi8KKyAgQ09SRV9BRERSIHZhbHVl OworCisgIC8qIFRoZSBsZXZlbCBvZiB0aGUgZWxlbWVudCBvbiB0aGUgc2hhZG93IHN0YWNrLiAg Ki8KKyAgdW5zaWduZWQgbG9uZyBsZXZlbDsKKworICAvKiBJZiB1bndpbmRpbmcgb2YgdGhlIHBy ZXZpb3VzIGZyYW1lIGluZm8gZmFpbHMgYXNzaWduIHRoaXMgdmFsdWUgdG8gYQorICAgICBtYXRj aGluZyBjb25kaXRpb24gc3NwX3Vud2luZF9zdG9wX3JlYXNvbgorICAgICA+IHNzcF91bndpbmRf c3RvcF9yZWFzb246Om5vX2Vycm9yLiAgKi8KKyAgc3NwX3Vud2luZF9zdG9wX3JlYXNvbiB1bndp bmRfc3RvcF9yZWFzb24KKyAgICA9IHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yOwor fTsKKworLyogQXR0ZW1wdCB0byBvYnRhaW4gdGhlIGZ1bmN0aW9uIG5hbWUgYmFzZWQgb24gdGhl IHN5bWJvbCBvZiBQQy4gICovCisKK3N0YXRpYyBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFy PgorZmluZF9wY19mdW5uYW1lIChDT1JFX0FERFIgcGMpCit7CisgIHN5bWJvbCAqZnVuYyA9IGZp bmRfc3ltYm9sX2Zvcl9wYyAocGMpOworICBpZiAoZnVuYyAhPSBudWxscHRyKQorICAgIHJldHVy biBmaW5kX3N5bWJvbF9mdW5uYW1lIChmdW5jKTsKKworICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0 cjxjaGFyPiBmdW5uYW1lOworICBib3VuZF9taW5pbWFsX3N5bWJvbCBtc3ltYm9sID0gbG9va3Vw X21pbmltYWxfc3ltYm9sX2J5X3BjIChwYyk7CisgIGlmIChtc3ltYm9sLm1pbnN5bSAhPSBudWxs cHRyKQorICAgIGZ1bm5hbWUgPSBtYWtlX3VuaXF1ZV94c3RyZHVwIChtc3ltYm9sLm1pbnN5bS0+ cHJpbnRfbmFtZSAoKSk7CisKKyAgcmV0dXJuIGZ1bm5hbWU7Cit9CisKKy8qIFByaW50IGluZm9y bWF0aW9uIG9mIHNoYWRvdyBzdGFjayBmcmFtZSBpbmZvIEZSQU1FLiAgVGhlIG91dHB1dCBpcwor ICAgZm9ybWF0dGVkIGFjY29yZGluZyB0byBQUklOVF9XSEFULiAgRm9yIHRoZSBtZWFuaW5nIG9m IFBSSU5UX1dIQVQsIHNlZQorICAgZW51bSBwcmludF93aGF0IGNvbW1lbnRzIGluIGZyYW1lLmgu ICBOb3RlIHRoYXQgUFJJTlRfV0hBVCBpcyBvdmVycmlkZGVuLAorICAgaWYgUFJJTlRfT1BUSU9O Uy5wcmludF9mcmFtZV9pbmZvICE9IHByaW50X2ZyYW1lX2luZm9fYXV0by4gICovCisKK3N0YXRp YyB2b2lkCitkb19wcmludF9zaGFkb3dfc3RhY2tfZnJhbWVfaW5mbworICAodWlfb3V0ICp1aW91 dCwgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgIGNvbnN0IGZyYW1lX3ByaW50X29wdGlvbnMgJmZwX29w dHMsCisgICBjb25zdCBzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbyAmZnJhbWUsIHByaW50X3doYXQg cHJpbnRfd2hhdCkKK3sKKyAgaWYgKGZwX29wdHMucHJpbnRfZnJhbWVfaW5mbyAhPSBwcmludF9m cmFtZV9pbmZvX2F1dG8pCisgICAgeworICAgICAgLyogVXNlIHRoZSBzcGVjaWZpYyBmcmFtZSBp bmZvcm1hdGlvbiBkZXNpcmVkIGJ5IHRoZSB1c2VyLiAgKi8KKyAgICAgIHByaW50X3doYXQKKwk9 ICpwcmludF9mcmFtZV9pbmZvX3RvX3ByaW50X3doYXQgKGZwX29wdHMucHJpbnRfZnJhbWVfaW5m byk7CisgICAgfQorCisgIC8qIEluIGNvbnRyYXN0IHRvIGZpbmRfZnJhbWVfc2FsIHdoaWNoIGlz IHVzZWQgZm9yIHRoZSBvcmRpbmFyeSBiYWNrdHJhY2UKKyAgICAgY29tbWFuZCwgUEMgYWx3YXlz IHBvaW50cyBhdCB0aGUgcmV0dXJuIGluc3RydWN0aW9uICh3aGljaCBpcyAqYWZ0ZXIqIHRoZQor ICAgICBjYWxsIGluc3RydWN0aW9uKS4gIFNpbmNlIHdlIHdhbnQgdG8gZ2V0IHRoZSBsaW5lIGNv bnRhaW5pbmcgdGhlIGNhbGwKKyAgICAgKGJlY2F1c2UgdGhlIGNhbGwgaXMgd2hlcmUgdGhlIHVz ZXIgdGhpbmtzIHRoZSBwcm9ncmFtIGlzKSwgd2UgcGFzcyAxIGhlcmUKKyAgICAgYXMgc2Vjb25k IGFyZ3VtZW50LiAgKi8KKyAgc3ltdGFiX2FuZF9saW5lIHNhbCA9IGZpbmRfc2FsX2Zvcl9wYyAo ZnJhbWUudmFsdWUsIDEpOworCisgIGlmIChzaG91bGRfcHJpbnRfbG9jYXRpb24gKHByaW50X3do YXQpIHx8IHNhbC5zeW10YWIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICBnZGI6OnVuaXF1ZV94 bWFsbG9jX3B0cjxjaGFyPiBmdW5uYW1lID0gZmluZF9wY19mdW5uYW1lIChmcmFtZS52YWx1ZSk7 CisKKyAgICAgIHsgLyogRXh0cmEgc2NvcGUgdG8gcHJpbnQgZnJhbWUgdHVwbGUuICAqLworCXVp X291dF9lbWl0X3R1cGxlIHR1cGxlX2VtaXR0ZXIgKHVpb3V0LCAic2hhZG93LXN0YWNrLWZyYW1l Iik7CisKKwlhbm5vdGF0ZV9zaGFkb3dzdGFja19mcmFtZV9iZWdpbiAoZnJhbWUubGV2ZWwsIGdk YmFyY2gsCisJCQkJCSAgZnJhbWUudmFsdWUpOworCisJdWlvdXQtPnRleHQgKCIjIik7CisJdWlv dXQtPmZpZWxkX2ZtdF9zaWduZWQgKDIsIHVpX2xlZnQsICJsZXZlbCIsIGZyYW1lLmxldmVsKTsK KworCWFubm90YXRlX3NoYWRvd3N0YWNrX2ZyYW1lX2FkZHJlc3MgKCk7CisKKwkvKiBPbiB4ODYg dGhlcmUgY2FuIGJlIGEgc2hhZG93IHN0YWNrIHRva2VuIGF0IGJpdCA2My4gIEZvciB4MzIsCisJ ICAgdGhlIGFkZHJlc3Mgc2l6ZSBpcyBvbmx5IDMyIGJpdC4gIFRodXMsIHdlIHN0aWxsIG11c3Qg dXNlCisJICAgZ2RiYXJjaF9zaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQgKGFuZCBu b3QKKwkgICBnZGJhcmNoX2FkZHJfYml0KSB0byBkZXRlcm1pbmUgdGhlIHdpZHRoIG9mIHRoZSBh ZGRyZXNzIHRvIGJlCisJICAgcHJpbnRlZC4gICovCisJY29uc3QgaW50IGVsZW1lbnRfc2l6ZQor CSA9IGdkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkIChnZGJhcmNoKTsK KworCXVpb3V0LT5maWVsZF9zdHJpbmcKKwkgICgiYWRkciIsIGhleF9zdHJpbmdfY3VzdG9tIChm cmFtZS52YWx1ZSwgZWxlbWVudF9zaXplICogMiksCisJICAgYWRkcmVzc19zdHlsZS5zdHlsZSAo KSk7CisKKwlhbm5vdGF0ZV9zaGFkb3dzdGFja19mcmFtZV9hZGRyZXNzX2VuZCAoKTsKKworCXVp b3V0LT50ZXh0ICgiIGluICIpOworCXByaW50X2Z1bm5hbWUgKHVpb3V0LCBmdW5uYW1lLCB0cnVl KTsKKworCWlmIChwcmludF93aGF0ICE9IFNIT1JUX0xPQ0FUSU9OICYmIHNhbC5zeW10YWIgIT0g bnVsbHB0cikKKwkgIHByaW50X2ZpbGVuYW1lICh1aW91dCwgc2FsLCB0cnVlKTsKKworCWlmIChw cmludF93aGF0ICE9IFNIT1JUX0xPQ0FUSU9OCisJICAgICYmIChmdW5uYW1lID09IG51bGxwdHIg fHwgc2FsLnN5bXRhYiA9PSBudWxscHRyKQorCSAgICAmJiBzYWwucHNwYWNlICE9IG51bGxwdHIp CisJICB7CisJICAgIGNvbnN0IGNoYXIgKmxpYiA9IHNvbGliX25hbWVfZnJvbV9hZGRyZXNzIChz YWwucHNwYWNlLAorCQkJCQkJICAgICAgIGZyYW1lLnZhbHVlKTsKKwkgICAgaWYgKGxpYiAhPSBu dWxscHRyKQorCSAgICAgIHByaW50X2xpYiAodWlvdXQsIGxpYiwgdHJ1ZSk7CisJICB9CisgICAg ICB9IC8qIEV4dHJhIHNjb3BlIHRvIHByaW50IGZyYW1lIHR1cGxlLiAgKi8KKworICAgICAgdWlv dXQtPnRleHQgKCJcbiIpOworICAgIH0KKworICBpZiAocHJpbnRfd2hhdCA9PSBTUkNfTElORSB8 fCBwcmludF93aGF0ID09IFNSQ19BTkRfTE9DKQorICAgIHsKKyAgICAgIGJvb2wgbWlkX3N0YXRl bWVudCA9IHBjX2luX21pZGRsZV9vZl9zdGF0ZW1lbnQgKGZyYW1lLnZhbHVlLCBzYWwpOworCisg ICAgICAvKiBXaGlsZSBmb3IgdGhlIG9yZGluYXJ5IGJhY2t0cmFjZSBwcmludGluZyBvZiBwYyBp cyBiYXNlZCBvbgorCSBNSURfU1RBVEVNRU5UIGRldGVybWluZWQgYnkgc3RhY2suYzpmcmFtZV9z aG93X2FkZHJlc3MgYW5kIHRoZQorCSBhbmQgdGhlIHByaW50IGNvbmZpZ3VyYXRpb24sIGZvciBz aGFkb3cgc3RhY2sgYmFja3RyYWNlIHdlIGFsd2F5cworCSBwcmludCB0aGUgcGMvYWRkcmVzcyBv biB0aGUgc2hhZG93IHN0YWNrLiAgKi8KKyAgICAgIGJvb2wgcHJpbnRfYWRkcmVzcyA9IHRydWU7 CisgICAgICBwcmludF9zb3VyY2UgKHVpb3V0LCBnZGJhcmNoLCBmcmFtZS52YWx1ZSwgc2FsLCBw cmludF9hZGRyZXNzLAorCQkgICAgbWlkX3N0YXRlbWVudCwgIiIpOworICAgIH0KKworICBhbm5v dGF0ZV9zaGFkb3dzdGFja19mcmFtZV9lbmQgKCk7CisgIGdkYl9mbHVzaCAoZ2RiX3N0ZG91dCk7 Cit9CisKKy8qIFJlZGlyZWN0IG91dHB1dCB0byBhIHRlbXBvcmFyeSBidWZmZXIgZm9yIHRoZSBk dXJhdGlvbiBvZgorICAgZG9fcHJpbnRfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8uICAqLworCitz dGF0aWMgdm9pZAorcHJpbnRfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8KKyAgKGdkYmFyY2ggKmdk YmFyY2gsIGNvbnN0IGZyYW1lX3ByaW50X29wdGlvbnMgJmZwX29wdHMsCisgICBjb25zdCBzaGFk b3dfc3RhY2tfZnJhbWVfaW5mbyAmZnJhbWUsIHByaW50X3doYXQgcHJpbnRfd2hhdCkKK3sKKyAg ZG9fd2l0aF9idWZmZXJlZF9vdXRwdXQKKyAgICAoZG9fcHJpbnRfc2hhZG93X3N0YWNrX2ZyYW1l X2luZm8sIGN1cnJlbnRfdWlvdXQsIGdkYmFyY2gsCisgICAgIGZwX29wdHMsIGZyYW1lLCBwcmlu dF93aGF0KTsKK30KKworLyogRXh0cmFjdCBhIGNoYXIgYXJyYXkgd2hpY2ggY2FuIGJlIHVzZWQg Zm9yIHByaW50aW5nIGEgcmVhc29uYWJsZQorICAgZXJyb3IgbWVzc2FnZSBmb3IgUkVBU09OLiAg UkVBU09OIG11c3Qgbm90IGJlIE5PX0VSUk9SIGlmIHBhc3NlZAorICAgdG8gdGhpcyBmdW5jdGlv bi4gICovCisKK3N0YXRpYyBjb25zdCBjaGFyICoKK3NzcF91bndpbmRfc3RvcF9yZWFzb25fdG9f ZXJyX3N0cmluZyAoc3NwX3Vud2luZF9zdG9wX3JlYXNvbiByZWFzb24pCit7CisgIHN3aXRjaCAo cmVhc29uKQorICAgIHsKKyAgICBjYXNlIHNzcF91bndpbmRfc3RvcF9yZWFzb246Om1lbW9yeV9y ZWFkX2Vycm9yOgorICAgICAgcmV0dXJuIF8oInNoYWRvdyBzdGFjayBtZW1vcnkgcmVhZCBmYWls dXJlIik7CisgICAgfQorCisgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJpbnZhbGlkIHVud2lu ZCBzdG9wIHJlYXNvbi4iKTsKK30KKworLyogUmVhZCB0aGUgbWVtb3J5IGF0IHNoYWRvdyBzdGFj ayBwb2ludGVyIFNTUCBhbmQgYXNzaWduIGl0IHRvCisgICBSRVRVUk5fVkFMVUUuICBJbiBjYXNl IHdlIGNhbm5vdCByZWFkIHRoZSBtZW1vcnksIHNldCBSRUFTT04gdG8KKyAgIHNzcF91bndpbmRf c3RvcF9yZWFzb246Om1lbW9yeV9yZWFkX2Vycm9yIGFuZCByZXR1cm4gZmFsc2UuICAqLworCitz dGF0aWMgYm9vbAorcmVhZF9zaGFkb3dfc3RhY2tfbWVtb3J5IChnZGJhcmNoICpnZGJhcmNoLCBD T1JFX0FERFIgc3NwLAorCQkJICBDT1JFX0FERFIgJnJldHVybl92YWx1ZSwKKwkJCSAgc3NwX3Vu d2luZF9zdG9wX3JlYXNvbiAqcmVhc29uKQoreworICAvKiBPbiB4ODYgdGhlcmUgY2FuIGJlIGEg c2hhZG93IHN0YWNrIHRva2VuIGF0IGJpdCA2My4gIEZvciB4MzIsIHRoZQorICAgICBhZGRyZXNz IHNpemUgaXMgb25seSAzMiBiaXQuICBUaHVzLCB3ZSBzdGlsbCBtdXN0IHVzZQorICAgICBnZGJh cmNoX3NoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoYW5kIG5vdCBnZGJhcmNoX2Fk ZHJfYml0KQorICAgICB0byByZWFkIHRoZSBmdWxsIGVsZW1lbnQgZm9yIHgzMiBhcyB3ZWxsLiAg Ki8KKyAgY29uc3QgaW50IGVsZW1lbnRfc2l6ZQorICAgID0gZ2RiYXJjaF9zaGFkb3dfc3RhY2tf ZWxlbWVudF9zaXplX2FsaWduZWQgKGdkYmFyY2gpOworCisgIGNvbnN0IGJmZF9lbmRpYW4gYnl0 ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CisgIGlmICghc2FmZV9yZWFk X21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyIChzc3AsIGVsZW1lbnRfc2l6ZSwgYnl0ZV9vcmRlciwK KwkJCQkJICAmcmV0dXJuX3ZhbHVlKSkKKyAgICB7CisgICAgICAqcmVhc29uID0gc3NwX3Vud2lu ZF9zdG9wX3JlYXNvbjo6bWVtb3J5X3JlYWRfZXJyb3I7CisgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgfQorCisgIHJldHVybiB0cnVlOworfQorCisvKiAgSWYgcG9zc2libGUsIHJldHVybiB0aGUg c3RhcnRpbmcgc2hhZG93IHN0YWNrIGZyYW1lIGluZm8gbmVlZGVkIHRvIGhhbmRsZQorICAgIENP VU5UIG91dGVybW9zdCBmcmFtZXMuICBGUkFNRSBzaG91bGQgcG9pbnQgdG8gdGhlIGlubmVybW9z dCAobmV3ZXN0KQorICAgIGVsZW1lbnQgb2YgdGhlIHNoYWRvdyBzdGFjay4gIFJBTkdFIGlzIHRo ZSBzaGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlCisgICAgW3N0YXJ0X2FkZHJlc3MsIGVuZF9hZGRy ZXNzKSBjb3JyZXNwb25kaW5nIHRvIEZSQU1FJ3Mgc2hhZG93IHN0YWNrIHBvaW50ZXIuCisgICAg SWYgQ09VTlQgaXMgYmlnZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBvbiB0aGUgc2hh ZG93IHN0YWNrLCByZXR1cm4KKyAgICBGUkFNRS4gIEluIGNhc2Ugb2YgZmFpbHVyZSwgYXNzaWdu IGFuIGFwcHJvcHJpYXRlIHNzcF91bndpbmRfc3RvcF9yZWFzb24gaW4KKyAgICBGUkFNRS0+VU5X SU5EX3N0b3BfUkVBU09OLiAgKi8KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNr X2ZyYW1lX2luZm8+CitnZXRfdHJhaWxpbmdfb3V0ZXJtb3N0X3NoYWRvd19zdGFja19mcmFtZV9p bmZvCisgIChnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBzdGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JF X0FERFI+IHJhbmdlLAorICAgY29uc3QgVUxPTkdFU1QgY291bnQsIHNoYWRvd19zdGFja19mcmFt ZV9pbmZvICZmcmFtZSkKK3sKKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNr X3NpemVfcCAoZ2RiYXJjaCkpOworCisgIGNvbnN0IGxvbmcgc2hhZG93X3N0YWNrX3NpemUKKyAg ICA9IGdkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19zaXplIChnZGJhcmNoLAorCQkJCSAgICAgc3Rk OjpvcHRpb25hbDxDT1JFX0FERFI+IChmcmFtZS5zc3ApLAorCQkJCSAgICAgcmFuZ2UpOworCisg IC8qIFdlIHNob3VsZCBvbmx5IGdldCBoZXJlIGluIGNhc2Ugc2hhZG93IHN0YWNrIGlzIGVuYWJs ZWQgZm9yIHRoZQorICAgICBjdXJyZW50IHRocmVhZC4gICovCisgIGdkYl9hc3NlcnQgKHNoYWRv d19zdGFja19zaXplID49IDApOworCisgIGNvbnN0IGxvbmcgbGV2ZWwgPSBzaGFkb3dfc3RhY2tf c2l6ZSAtIGNvdW50OworCisgIC8qIENPVU5UIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBlbGVtZW50 cyBvbiB0aGUgc2hhZG93IHN0YWNrLiAgUmV0dXJuIHRoZQorICAgICBzdGFydGluZyBzaGFkb3cg c3RhY2sgZnJhbWUgaW5mbyBGUkFNRS4gICovCisgIGlmIChsZXZlbCA8PSAwKQorICAgIHJldHVy biBzdGQ6Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiAoZnJhbWUpOworCisgIENP UkVfQUREUiBuZXdfc3NwID0gdXBkYXRlX3NoYWRvd19zdGFja19wb2ludGVyCisgICAgKGdkYmFy Y2gsIGZyYW1lLnNzcCwgbGV2ZWwsIHNzcF91cGRhdGVfZGlyZWN0aW9uOjpvdXRlcik7CisKKyAg aWYgKGdkYmFyY2hfc3RhY2tfZ3Jvd3NfZG93biAoZ2RiYXJjaCkpCisgICAgZ2RiX2Fzc2VydCAo bmV3X3NzcCA8IHJhbmdlLnNlY29uZCk7CisgIGVsc2UKKyAgICBnZGJfYXNzZXJ0IChuZXdfc3Nw ID49IHJhbmdlLmZpcnN0KTsKKworICBDT1JFX0FERFIgbmV3X3ZhbHVlOworICBpZiAoIXJlYWRf c2hhZG93X3N0YWNrX21lbW9yeSAoZ2RiYXJjaCwgbmV3X3NzcCwgbmV3X3ZhbHVlLAorCQkJCSAm ZnJhbWUudW53aW5kX3N0b3BfcmVhc29uKSkKKyAgICByZXR1cm4ge307CisKKyAgcmV0dXJuIHN0 ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNrX2ZyYW1lX2luZm8+CisgICAgKHtuZXdfc3NwLCBuZXdf dmFsdWUsICh1bnNpZ25lZCBsb25nKSBsZXZlbCwKKyAgICAgIHNzcF91bndpbmRfc3RvcF9yZWFz b246Om5vX2Vycm9yfSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNrX2ZyYW1lX2lu Zm8+CitzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbzo6dW53aW5kX3ByZXZfc2hhZG93X3N0YWNrX2Zy YW1lX2luZm8KKyAgKGdkYmFyY2ggKmdkYmFyY2gsIHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVf QUREUj4gcmFuZ2UpCit7CisgIC8qIElmIHRoZSB1c2VyJ3MgYmFja3RyYWNlIGxpbWl0IGhhcyBi ZWVuIGV4Y2VlZGVkLCBzdG9wLiAgV2UgbXVzdAorICAgICBhZGQgdHdvIHRvIHRoZSBjdXJyZW50 IGxldmVsOyBvbmUgb2YgdGhvc2UgYWNjb3VudHMgZm9yCisgICAgIGJhY2t0cmFjZV9saW1pdCBi ZWluZyAxLWJhc2VkIGFuZCB0aGUgbGV2ZWwgYmVpbmcgMC1iYXNlZCwgYW5kIHRoZQorICAgICBv dGhlciBhY2NvdW50cyBmb3IgdGhlIGxldmVsIG9mIHRoZSBuZXcgZnJhbWUgaW5zdGVhZCBvZiB0 aGUgbGV2ZWwKKyAgICAgb2YgdGhlIGN1cnJlbnQgZnJhbWUuICAqLworICBpZiAodGhpcy0+bGV2 ZWwgKyAyID4gdXNlcl9zZXRfYmFja3RyYWNlX29wdGlvbnMuYmFja3RyYWNlX2xpbWl0KQorICAg IHJldHVybiB7fTsKKworICBDT1JFX0FERFIgbmV3X3NzcAorICAgID0gdXBkYXRlX3NoYWRvd19z dGFja19wb2ludGVyIChnZGJhcmNoLCB0aGlzLT5zc3AsIDEsCisJCQkJICAgc3NwX3VwZGF0ZV9k aXJlY3Rpb246Om91dGVyKTsKKworICAgaWYgKGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hhZG93 X3N0YWNrX3AgKGdkYmFyY2gpCisgICAgICAgJiYgZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFk b3dfc3RhY2sgKGdkYmFyY2gsIG5ld19zc3AsIHJhbmdlKSkKKyAgICAgcmV0dXJuIHt9OworICAg ZWxzZSBpZiAoZ2RiYXJjaF9zdGFja19ncm93c19kb3duIChnZGJhcmNoKSkKKyAgICB7CisgICAg ICAvKiBUaGUgc2hhZG93IHN0YWNrIGdyb3dzIGRvd253YXJkcy4gICovCisgICAgICBpZiAobmV3 X3NzcCA+PSByYW5nZS5zZWNvbmQpCisJeworCSAgLyogV2UgcmVhY2hlZCB0aGUgb3V0ZXJtb3N0 IGVsZW1lbnQgb2YgdGhlIHNoYWRvdyBzdGFjay4gICovCisJICByZXR1cm4ge307CisJfQorICAg ICAgLyogV2UgdXBkYXRlZCBuZXdfc3NwIHRvd2FyZHMgdGhlIG91dGVybW9zdCBlbGVtZW50IG9m IHRoZSBzaGFkb3cKKwkgc3RhY2sgYmVmb3JlLCBhbmQgbmV3X3NzcCBtdXN0IGJlIHBvaW50aW5n IHRvIHNoYWRvdyBzdGFjaworCSBtZW1vcnkuICAqLworICAgICAgZ2RiX2Fzc2VydCAobmV3X3Nz cCA+IHJhbmdlLmZpcnN0KTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBUaGUgc2hh ZG93IHN0YWNrIGdyb3dzIHVwd2FyZHMuICAqLworICAgICAgaWYgKG5ld19zc3AgPCByYW5nZS5m aXJzdCkKKwl7CisJICAvKiBXZSByZWFjaGVkIHRoZSBvdXRlcm1vc3QgZWxlbWVudCBvZiB0aGUg c2hhZG93IHN0YWNrLiAgKi8KKwkgIHJldHVybiB7fTsKKwl9CisgICAgICAvKiBXZSB1cGRhdGVk IG5ld19zc3AgdG93YXJkcyB0aGUgb3V0ZXJtb3N0IGVsZW1lbnQgb2YgdGhlIHNoYWRvdworCSBz dGFjayBiZWZvcmUsIGFuZCBuZXdfc3NwIG11c3QgYmUgcG9pbnRpbmcgdG8gc2hhZG93IHN0YWNr CisJIG1lbW9yeS4gICovCisgICAgICBnZGJfYXNzZXJ0IChuZXdfc3NwIDw9IHJhbmdlLnNlY29u ZCk7CisgICAgfQorCisgIENPUkVfQUREUiBuZXdfdmFsdWU7CisgIGlmICghcmVhZF9zaGFkb3df c3RhY2tfbWVtb3J5IChnZGJhcmNoLCBuZXdfc3NwLCBuZXdfdmFsdWUsCisJCQkJICZ0aGlzLT51 bndpbmRfc3RvcF9yZWFzb24pKQorICAgIHJldHVybiB7fTsKKworICByZXR1cm4gc3RkOjpvcHRp b25hbDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4KKyAgICAoe25ld19zc3AsIG5ld192YWx1ZSwg dGhpcy0+bGV2ZWwgKyAxLCBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjpub19lcnJvcn0pOworfQor CisvKiBQcmludCBhbGwgZWxlbWVudHMgb24gdGhlIHNoYWRvdyBzdGFjayBvciBqdXN0IHRoZSBp bm5lcm1vc3QgQ09VTlRfRVhQCisgICBmcmFtZXMuICAqLworCit2b2lkCitiYWNrdHJhY2Vfc2hh ZG93X2NvbW1hbmQgKGNvbnN0IGZyYW1lX3ByaW50X29wdGlvbnMgJmZwX29wdHMsCisJCQkgIGNv bnN0IGNoYXIgKmNvdW50X2V4cCwgaW50IGZyb21fdHR5KQoreworICBpZiAoIXRhcmdldF9oYXNf c3RhY2sgKCkpCisgICAgZXJyb3IgKF8oIk5vIHNoYWRvdyBzdGFjay4iKSk7CisKKyAgZ2RiYXJj aCAqZ2RiYXJjaCA9IGdldF9jdXJyZW50X2FyY2ggKCk7CisgIGlmICghZ2RiYXJjaF9hZGRyZXNz X2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2VfcCAoZ2RiYXJjaCkKKyAgICAgIHx8ICFnZGJh cmNoX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFja19wIChnZGJhcmNoKQorICAgICAgfHwgIWdk YmFyY2hfZ2V0X3NoYWRvd19zdGFja19zaXplX3AgKGdkYmFyY2gpCisgICAgICB8fCBnZGJhcmNo X3NzcF9yZWdudW0gKGdkYmFyY2gpID09IC0xKQorICAgIGVycm9yIChfKCJQcmludGluZyBvZiB0 aGUgc2hhZG93IHN0YWNrIGJhY2t0cmFjZSBpcyBub3Qgc3VwcG9ydGVkIGZvciIKKwkgICAgICIg dGhlIGN1cnJlbnQgdGFyZ2V0LiIpKTsKKworICByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhy ZWFkX3JlZ2NhY2hlIChpbmZlcmlvcl90aHJlYWQgKCkpOworICBib29sIHNoYWRvd19zdGFja19l bmFibGVkID0gZmFsc2U7CisKKyAgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IHN0YXJ0X3NzcAor ICAgID0gZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3BvaW50ZXIgKGdkYmFyY2gsIHJlZ2NhY2hl LAorCQkJCQlzaGFkb3dfc3RhY2tfZW5hYmxlZCk7CisKKyAgaWYgKCFzdGFydF9zc3AuaGFzX3Zh bHVlICgpIHx8ICFzaGFkb3dfc3RhY2tfZW5hYmxlZCkKKyAgICBlcnJvciAoXygiU2hhZG93IHN0 YWNrIGlzIG5vdCBlbmFibGVkIGZvciB0aGUgY3VycmVudCB0aHJlYWQuIikpOworCisgIC8qIENo ZWNrIGlmIFNUQVJUX1NTUCBwb2ludHMgdG8gYSBzaGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlIGFu ZCB1c2UKKyAgICAgdGhlIHJldHVybmVkIHJhbmdlIHRvIGRldGVybWluZSB3aGVuIHRvIHN0b3Ag dW53aW5kaW5nLgorICAgICBOb3RlIHRoYXQgYSBzaGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlIGNh biBjaGFuZ2UsIGR1ZSB0byBzaGFkb3cgc3RhY2sKKyAgICAgc3dpdGNoZXMgZm9yIGluc3RhbmNl IG9uIHg4NiBmb3IgYW4gaW50ZXItcHJpdmlsZWdlIGZhciBjYWxsIG9yIHdoZW4KKyAgICAgY2Fs bGluZyBhbiBpbnRlcnJ1cHQvZXhjZXB0aW9uIGhhbmRsZXIgYXQgYSBoaWdoZXIgcHJpdmlsZWdl IGxldmVsLgorICAgICBTaGFkb3cgc3RhY2sgZm9yIHVzZXJzcGFjZSBpcyBzdXBwb3J0ZWQgZm9y IGFtZDY0IGxpbnV4IHN0YXJ0aW5nIHdpdGgKKyAgICAgTGludXgga2VybmVsIHY2LjYuICBIb3dl dmVyLCBzaGFkb3cgc3RhY2sgc3dpdGNoZXMgYXJlIG5vdCBzdXBwb3J0ZWQKKyAgICAgZHVlIHRv IG1pc3Npbmcga2VybmVsIHNwYWNlIHN1cHBvcnQuICBXZSB0aGVyZWZvcmUgaW1wbGVtZW50IHRo aXMKKyAgICAgY29tbWFuZCB3aXRob3V0IHN1cHBvcnQgZm9yIHNoYWRvdyBzdGFjayBzd2l0Y2hl cyBmb3Igbm93LiAgKi8KKyAgYm9vbCBpc190b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sgPSBm YWxzZTsKKyAgc3RkOjpwYWlyPENPUkVfQUREUiwgQ09SRV9BRERSPiByYW5nZTsKKyAgaWYgKCFn ZGJhcmNoX2FkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSAoZ2RiYXJjaCwgKnN0 YXJ0X3NzcCwKKwkJCQkJCSAgICAgJnJhbmdlKSkKKyAgICB7CisgICAgICAvKiBGb3IgeDg2LCBp ZiB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2sgcG9pbnRlciBkb2VzIG5vdCBwb2ludCB0bworCSBz aGFkb3cgc3RhY2sgbWVtb3J5IGJ1dCBpcyB2YWxpZCwgdGhlIHNoYWRvdyBzdGFjayBpcyBlbXB0 eS4gICovCisgICAgICBpc190b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sgPSB0cnVlOworICAg IH0KKworICBpZiAoIWlzX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjaykKKyAgICB7CisgICAg ICAvKiBGb3IgQVJNJ3MgR3VhcmRlZCBDb250cm9sIFN0YWNrLCB0aGUgc2hhZG93IHN0YWNrIGNh biBiZSBlbXB0eQorCSBldmVuIHRob3VnaCBTVEFSVF9TU1AgcG9pbnRzIHRvIHNoYWRvdyBzdGFj ayBtZW1vcnkgcmFuZ2UuICAqLworICAgICAgaXNfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNr CisJPSBnZGJhcmNoX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFja19wIChnZGJhcmNoKQorCSAg JiYgZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sgKGdkYmFyY2gsICpzdGFydF9z c3AsIHJhbmdlKTsKKyAgICB9CisKKyAgaWYgKGlzX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFj aykKKyAgICB7CisgICAgICBnZGJfcHJpbnRmIChfKCJUaGUgc2hhZG93IHN0YWNrIGlzIGVtcHR5 LlxuIikpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAvKiBFeHRyYWN0IHRoZSBmaXJzdCBz aGFkb3cgc3RhY2sgZnJhbWUgaW5mbyAobGV2ZWwgMCkuICAqLworICBzc3BfdW53aW5kX3N0b3Bf cmVhc29uIHJlYXNvbiA9IHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yOworICBzdGQ6 Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiBjdXJyZW50OworICBDT1JFX0FERFIg bmV3X3ZhbHVlOworCisgIGlmIChyZWFkX3NoYWRvd19zdGFja19tZW1vcnkgKGdkYmFyY2gsICpz dGFydF9zc3AsIG5ld192YWx1ZSwgJnJlYXNvbikpCisgICAgY3VycmVudCA9IHsqc3RhcnRfc3Nw LCBuZXdfdmFsdWUsIDAsIHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yfTsKKworICBz dGQ6Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiB0cmFpbGluZyA9IGN1cnJlbnQ7 CisKKyAgTE9OR0VTVCBjb3VudCA9IC0xOworICBpZiAoY3VycmVudC5oYXNfdmFsdWUgKCkgJiYg Y291bnRfZXhwICE9IG51bGxwdHIpCisgICAgeworICAgICAgY291bnQgPSBwYXJzZV9hbmRfZXZh bF9sb25nIChjb3VudF9leHApOworICAgICAgLyogSWYgY291bnQgaXMgbmVnYXRpdmUsIHVwZGF0 ZSB0cmFpbGluZyB3aXRoIHRoZSBzaGFkb3cgc3RhY2sgZnJhbWUKKwkgaW5mbyBmcm9tIHdoaWNo IHdlIHNob3VsZCBzdGFydCBwcmludGluZy4gICovCisgICAgICBpZiAoY291bnQgPCAwKQorCXsK KwkgIHRyYWlsaW5nID0gZ2V0X3RyYWlsaW5nX291dGVybW9zdF9zaGFkb3dfc3RhY2tfZnJhbWVf aW5mbworCQkgICAgICAgKGdkYmFyY2gsIHJhbmdlLCBzdGQ6OmFicyAoY291bnQpLCAqY3VycmVu dCk7CisKKwkgIGlmICghdHJhaWxpbmcuaGFzX3ZhbHVlICgpKQorCSAgICByZWFzb24gPSBjdXJy ZW50LT51bndpbmRfc3RvcF9yZWFzb247CisJfQorICAgIH0KKworICBpZiAoIXRyYWlsaW5nLmhh c192YWx1ZSAoKSkKKyAgICB7CisgICAgICBnZGJfYXNzZXJ0IChyZWFzb24gIT0gc3NwX3Vud2lu ZF9zdG9wX3JlYXNvbjo6bm9fZXJyb3IpOworCisgICAgICBlcnJvciAoXygiQ2Fubm90IHByaW50 IHNoYWRvdyBzdGFjayBiYWNrdHJhY2U6ICVzLlxuIiksCisJICAgICBzc3BfdW53aW5kX3N0b3Bf cmVhc29uX3RvX2Vycl9zdHJpbmcgKHJlYXNvbikpOworICAgIH0KKworICBjdXJyZW50ID0gdHJh aWxpbmc7CisgIGZvciAoY3VycmVudCA9IHRyYWlsaW5nOyBjdXJyZW50Lmhhc192YWx1ZSAoKSAm JiBjb3VudCAhPSAwOyBjb3VudC0tKQorICAgIHsKKyAgICAgIFFVSVQ7CisKKyAgICAgIHByaW50 X3NoYWRvd19zdGFja19mcmFtZV9pbmZvIChnZGJhcmNoLCBmcF9vcHRzLCAqY3VycmVudCwgTE9D QVRJT04pOworCisgICAgICB0cmFpbGluZyA9IGN1cnJlbnQ7CisgICAgICBjdXJyZW50ID0gY3Vy cmVudC0+dW53aW5kX3ByZXZfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8gKGdkYmFyY2gsIHJhbmdl KTsKKyAgICB9CisKKyAgLyogSWYgd2UndmUgc3RvcHBlZCBiZWZvcmUgdGhlIGVuZCwgbWVudGlv biB0aGF0LiAgKi8KKyAgaWYgKGN1cnJlbnQuaGFzX3ZhbHVlICgpICYmIGZyb21fdHR5KQorICAg IGdkYl9wcmludGYgKF8oIihNb3JlIHNoYWRvdyBzdGFjayBmcmFtZXMgZm9sbG93Li4uKVxuIikp OworCisgIC8qIER1ZSB0byB0aGUgbG9vcCBhYm92ZSwgdHJhaWxpbmcgYWx3YXlzIGhhcyBhIHZh bHVlIGF0IHRoaXMgcG9pbnQuICAqLworICBnZGJfYXNzZXJ0ICh0cmFpbGluZy5oYXNfdmFsdWUg KCkpOworCisgIC8qIElmIHdlJ3ZlIHJ1biBvdXQgb2Ygc2hhZG93IHN0YWNrIGZyYW1lcywgYW5k IHRoZSByZWFzb24gYXBwZWFycyB0bworICAgICBiZSBhbiBlcnJvciBjb25kaXRpb24sIHByaW50 IGl0LiAgKi8KKyAgaWYgKCFjdXJyZW50Lmhhc192YWx1ZSAoKQorICAgICAgJiYgdHJhaWxpbmct PnVud2luZF9zdG9wX3JlYXNvbiA+IHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yKQor ICAgIGdkYl9wcmludGYgKF8oIlNoYWRvdyBzdGFjayBiYWNrdHJhY2Ugc3RvcHBlZCBhdCBzaGFk b3cgc3RhY2sgIiBcCisJCSAgInBvaW50ZXIgJXMgZHVlIHRvOiAlcy5cbiIpLAorCQlwYWRkcmVz cyAoZ2RiYXJjaCwgdHJhaWxpbmctPnNzcCksCisJCXNzcF91bndpbmRfc3RvcF9yZWFzb25fdG9f ZXJyX3N0cmluZworCQkgICh0cmFpbGluZy0+dW53aW5kX3N0b3BfcmVhc29uKSk7Cit9CisKZGlm ZiAtLWdpdCBhL2dkYi9zaGFkb3ctc3RhY2suaCBiL2dkYi9zaGFkb3ctc3RhY2suaAppbmRleCA1 ZjgzOTVlYzA0Ny4uNTM3MGJlY2ZjOWEgMTAwNjQ0Ci0tLSBhL2dkYi9zaGFkb3ctc3RhY2suaAor KysgYi9nZGIvc2hhZG93LXN0YWNrLmgKQEAgLTM1LDQgKzM1LDEwIEBAIHZvaWQgc2hhZG93X3N0 YWNrX3B1c2ggKHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3QgQ09SRV9BRERSIG5ld19hZGRyKTsK IHZhbHVlICpkd2FyZjJfcHJldl9zc3AgKGNvbnN0IGZyYW1lX2luZm9fcHRyICZ0aGlzX2ZyYW1l LAogCQkJdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pOwogCisvKiBJbXBsZW1lbnRhdGlv biBvZiAiYmFja3RyYWNlIHNoYWRvdyIgY29tYW5kLiAgKi8KKwordm9pZCBiYWNrdHJhY2Vfc2hh ZG93X2NvbW1hbmQKKyAgKGNvbnN0IGZyYW1lX3ByaW50X29wdGlvbnMgJmZwX29wdHMsCisgICBj b25zdCBjaGFyICpjb3VudF9leHAsIGludCBmcm9tX3R0eSk7CisKICNlbmRpZiAvKiBHREJfU0hB RE9XX1NUQUNLX0ggKi8KZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKaW5k ZXggMGY4YzUyZWNjOTMuLjgzYmQ0NTUwNmUyIDEwMDY0NAotLS0gYS9nZGIvc3RhY2suYworKysg Yi9nZGIvc3RhY2suYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgImxpbmVzcGVjLmgiCiAj aW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgogI2luY2x1ZGUgIm9iamZpbGVzLmgiCisjaW5jbHVk ZSAic2hhZG93LXN0YWNrLmgiCiAKICNpbmNsdWRlICJzeW1maWxlLmgiCiAjaW5jbHVkZSAiZXh0 ZW5zaW9uLmgiCkBAIC04Niw3ICs4Nyw3IEBAIGNvbnN0IGNoYXIgcHJpbnRfZnJhbWVfaW5mb19z b3VyY2VfYW5kX2xvY2F0aW9uW10gPSAic291cmNlLWFuZC1sb2NhdGlvbiI7CiBjb25zdCBjaGFy IHByaW50X2ZyYW1lX2luZm9fbG9jYXRpb25fYW5kX2FkZHJlc3NbXSA9ICJsb2NhdGlvbi1hbmQt YWRkcmVzcyI7CiBjb25zdCBjaGFyIHByaW50X2ZyYW1lX2luZm9fc2hvcnRfbG9jYXRpb25bXSA9 ICJzaG9ydC1sb2NhdGlvbiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBwcmludF9mcmFt ZV9pbmZvX2Nob2ljZXNbXSA9Citjb25zdCBjaGFyICpjb25zdCBwcmludF9mcmFtZV9pbmZvX2No b2ljZXNbXSA9CiB7CiAgIHByaW50X2ZyYW1lX2luZm9fYXV0bywKICAgcHJpbnRfZnJhbWVfaW5m b19zb3VyY2VfbGluZSwKQEAgLTE5MCw2ICsxOTEsNyBAQCBzdHJ1Y3QgYmFja3RyYWNlX2NtZF9v cHRpb25zCiAgIGJvb2wgZnVsbCA9IGZhbHNlOwogICBib29sIG5vX2ZpbHRlcnMgPSBmYWxzZTsK ICAgYm9vbCBoaWRlID0gZmFsc2U7CisgIGJvb2wgc2hhZG93ID0gZmFsc2U7CiB9OwogCiB1c2lu ZyBidF9mbGFnX29wdGlvbl9kZWYKQEAgLTIxMyw2ICsyMTUsMTQgQEAgc3RhdGljIGNvbnN0IGdk Yjo6b3B0aW9uOjpvcHRpb25fZGVmIGJhY2t0cmFjZV9jb21tYW5kX29wdGlvbl9kZWZzW10gPSB7 CiAgICAgW10gKGJhY2t0cmFjZV9jbWRfb3B0aW9ucyAqb3B0KSB7IHJldHVybiAmb3B0LT5oaWRl OyB9LAogICAgIE5fKCJDYXVzZXMgUHl0aG9uIGZyYW1lIGZpbHRlciBlbGlkZWQgZnJhbWVzIHRv IG5vdCBiZSBwcmludGVkLiIpLAogICB9LAorCisgIGJ0X2ZsYWdfb3B0aW9uX2RlZiB7CisgICAg InNoYWRvdyIsCisgICAgW10gKGJhY2t0cmFjZV9jbWRfb3B0aW9ucyAqb3B0KSB7IHJldHVybiAm b3B0LT5zaGFkb3c7IH0sCisgICAgTl8oIlByaW50IHNoYWRvdyBzdGFjayBmcmFtZXMgaW5zdGVh ZCBvZiBub3JtYWwgZnJhbWVzLlxuXAorVGhpcyBvcHRpb24gbWF5IGJlIGNvbWJpbmVkIHdpdGgg 4oCcLWZyYW1lLWluZm/igJ0gYW5kXG5cCitpbXBsaWVzIOKAmC1uby1maWx0ZXJz4oCZIGFuZCDi gJgtZnJhbWUtYXJndW1lbnRzIG5vbmXigJkuIiksCisgIH0sCiB9OwogCiAvKiBQcm90b3R5cGVz IGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwpAQCAtOTY4LDExICs5NzgsOSBAQCBkb19nZGJfZGlz YXNzZW1ibHkgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgIH0KIH0KIAotLyogQ29udmVy dHMgdGhlIFBSSU5UX0ZSQU1FX0lORk8gY2hvaWNlIHRvIGFuIG9wdGlvbmFsIGVudW0gcHJpbnRf d2hhdC4KLSAgIFZhbHVlIG5vdCBwcmVzZW50IGluZGljYXRlcyB0byB0aGUgY2FsbGVyIHRvIHVz ZSBkZWZhdWx0IHZhbHVlcwotICAgc3BlY2lmaWMgdG8gdGhlIGNvbW1hbmQgYmVpbmcgZXhlY3V0 ZWQuICAqLworLyogU2VlIHN0YWNrLmguICAqLwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxlbnVt IHByaW50X3doYXQ+CitzdGQ6Om9wdGlvbmFsPGVudW0gcHJpbnRfd2hhdD4KIHByaW50X2ZyYW1l X2luZm9fdG9fcHJpbnRfd2hhdCAoY29uc3QgY2hhciAqcHJpbnRfZnJhbWVfaW5mbykKIHsKICAg Zm9yIChpbnQgaSA9IDA7IHByaW50X2ZyYW1lX2luZm9fY2hvaWNlc1tpXSAhPSBOVUxMOyBpKysp CkBAIC0xMDIyLDcgKzEwMzAsNyBAQCBnZXRfdXNlcl9wcmludF93aGF0X2ZyYW1lX2luZm8gKHN0 ZDo6b3B0aW9uYWw8ZW51bSBwcmludF93aGF0PiAqd2hhdCkKIC8qIFJldHVybiB0cnVlIGlmIFBS SU5UX1dIQVQgaXMgY29uZmlndXJlZCB0byBwcmludCB0aGUgbG9jYXRpb24gb2YgYQogICAgZnJh bWUuICAqLwogCi1zdGF0aWMgYm9vbAorYm9vbAogc2hvdWxkX3ByaW50X2xvY2F0aW9uIChwcmlu dF93aGF0IHByaW50X3doYXQpCiB7CiAgIHJldHVybiAocHJpbnRfd2hhdCA9PSBMT0NBVElPTgpA QCAtMTAzMSwxNCArMTAzOSw5IEBAIHNob3VsZF9wcmludF9sb2NhdGlvbiAocHJpbnRfd2hhdCBw cmludF93aGF0KQogCSAgfHwgcHJpbnRfd2hhdCA9PSBTSE9SVF9MT0NBVElPTik7CiB9CiAKLS8q IFByaW50IHRoZSBzb3VyY2UgaW5mb3JtYXRpb24gZm9yIFBDIGFuZCBTQUwgdG8gVUlPVVQuICBC YXNlZCBvbiB0aGUKLSAgIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9uIGRpc2Fzc2VtYmxlLW5l eHQtbGluZSwgZGlzcGxheSBkaXNhc3NlbWJseQotICAgb2YgdGhlIG5leHQgc291cmNlIGxpbmUs IGluIGFkZGl0aW9uIHRvIGRpc3BsYXlpbmcgdGhlIHNvdXJjZSBsaW5lCi0gICBpdHNlbGYuICBQ cmludCBhbm5vdGF0aW9ucyBkZXNjcmliaW5nIHNvdXJjZSBmaWxlIGFuZCBhbmQgbGluZSBudW1i ZXIKLSAgIGJhc2VkIG9uIE1JRF9TVEFURU1FTlQgaW5mb3JtYXRpb24uICBJZiBTSE9XX0FERFJF U1MgaXMgdHJ1ZSwgcHJpbnQgdGhlCi0gICBwcm9ncmFtIGNvdW50ZXIgUEMgaW5jbHVkaW5nLCBp ZiBub24tZW1wdHksIFBDX0FERFJFU1NfRkxBR1MuICAqLworLyogU2VlIHN0YWNrLmguICAqLwog Ci1zdGF0aWMgdm9pZAordm9pZAogcHJpbnRfc291cmNlICh1aV9vdXQgKnVpb3V0LCBnZGJhcmNo ICpnZGJhcmNoLCBDT1JFX0FERFIgcGMsCiAJICAgICAgc3ltdGFiX2FuZF9saW5lIHNhbCwgYm9v bCBzaG93X2FkZHJlc3MsIGludCBtaWRfc3RhdGVtZW50LAogCSAgICAgIGNvbnN0IHN0ZDo6c3Ry aW5nICZwY19hZGRyZXNzX2ZsYWdzKQpAQCAtMTMwNCw3ICsxMzA3LDcgQEAgZ2V0X2xhc3RfZGlz cGxheWVkX3NhbCAoKQogCiAvKiBGaW5kIHRoZSBmdW5jdGlvbiBuYW1lIGZvciB0aGUgc3ltYm9s IFNZTS4gICovCiAKLXN0YXRpYyBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPgorZ2RiOjp1 bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4KIGZpbmRfc3ltYm9sX2Z1bm5hbWUgKGNvbnN0IHN5bWJv bCAqc3ltKQogewogICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBmdW5uYW1lOwpAQCAt MTM3MCwzMSArMTM3MywyOCBAQCBmaW5kX2ZyYW1lX2Z1bm5hbWUgKGNvbnN0IGZyYW1lX2luZm9f cHRyICZmcmFtZSwgZW51bSBsYW5ndWFnZSAqZnVubGFuZywKICAgcmV0dXJuIGZ1bm5hbWU7CiB9 CiAKLS8qIFByaW50IHRoZSBsaWJyYXJ5IExJQiB0byBVSU9VVCBmb3IgdGhlIHByaW50aW5nIG9m IGZyYW1lCi0gICBpbmZvcm1hdGlvbi4gICovCisvKiAgU2VlIHN0YWNrLmguICAqLwogCi1zdGF0 aWMgdm9pZAotcHJpbnRfbGliICh1aV9vdXQgKnVpb3V0LCBjb25zdCBjaGFyICpsaWIpCit2b2lk CitwcmludF9saWIgKHVpX291dCAqdWlvdXQsIGNvbnN0IGNoYXIgKmxpYiwgYm9vbCBzaGFkb3dz dGFja19mcmFtZSkKIHsKLSAgYW5ub3RhdGVfZnJhbWVfd2hlcmUgKCk7CisgIGFubm90YXRlX2Zy YW1lX3doZXJlIChzaGFkb3dzdGFja19mcmFtZSk7CiAgIHVpb3V0LT53cmFwX2hpbnQgKDIpOwog ICB1aW91dC0+dGV4dCAoIiBmcm9tICIpOwogICB1aW91dC0+ZmllbGRfc3RyaW5nICgiZnJvbSIs IGxpYiwgZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpKTsKIH0KIAotLyogUHJpbnQgdGhlIGZpbGVu bmFtZSBvZiBTQUwgdG8gVUlPVVQgZm9yIHRoZSBwcmludGluZyBvZiBmcmFtZQotICAgaW5mb3Jt YXRpb24uICAqLwotCi1zdGF0aWMgdm9pZAotcHJpbnRfZmlsZW5hbWUgKHVpX291dCAqdWlvdXQs IHN5bXRhYl9hbmRfbGluZSBzYWwpCit2b2lkCitwcmludF9maWxlbmFtZSAodWlfb3V0ICp1aW91 dCwgc3ltdGFiX2FuZF9saW5lIHNhbCwgYm9vbCBzaGFkb3dzdGFja19mcmFtZSkKIHsKLSAgYW5u b3RhdGVfZnJhbWVfc291cmNlX2JlZ2luICgpOworICBhbm5vdGF0ZV9mcmFtZV9zb3VyY2VfYmVn aW4gKHNoYWRvd3N0YWNrX2ZyYW1lKTsKICAgY29uc3QgY2hhciAqZmlsZW5hbWVfZGlzcGxheTsK IAogICBmaWxlbmFtZV9kaXNwbGF5ID0gc3ltdGFiX3RvX2ZpbGVuYW1lX2Zvcl9kaXNwbGF5IChz YWwuc3ltdGFiKTsKICAgdWlvdXQtPndyYXBfaGludCAoMyk7CiAgIHVpb3V0LT50ZXh0ICgiIGF0 ICIpOwotICBhbm5vdGF0ZV9mcmFtZV9zb3VyY2VfZmlsZSAoKTsKKyAgYW5ub3RhdGVfZnJhbWVf c291cmNlX2ZpbGUgKHNoYWRvd3N0YWNrX2ZyYW1lKTsKKwogICB1aW91dC0+ZmllbGRfc3RyaW5n ICgiZmlsZSIsIGZpbGVuYW1lX2Rpc3BsYXksIGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSk7CiAK ICAgaWYgKHVpb3V0LT5pc19taV9saWtlX3AgKCkpCkBAIC0xNDAzLDIxICsxNDAzLDIxIEBAIHBy aW50X2ZpbGVuYW1lICh1aV9vdXQgKnVpb3V0LCBzeW10YWJfYW5kX2xpbmUgc2FsKQogICAgICAg dWlvdXQtPmZpZWxkX3N0cmluZyAoImZ1bGxuYW1lIiwgZnVsbG5hbWUpOwogICAgIH0KIAotICBh bm5vdGF0ZV9mcmFtZV9zb3VyY2VfZmlsZV9lbmQgKCk7CisgIGFubm90YXRlX2ZyYW1lX3NvdXJj ZV9maWxlX2VuZCAoc2hhZG93c3RhY2tfZnJhbWUpOwogICB1aW91dC0+dGV4dCAoIjoiKTsKLSAg YW5ub3RhdGVfZnJhbWVfc291cmNlX2xpbmUgKCk7CisgIGFubm90YXRlX2ZyYW1lX3NvdXJjZV9s aW5lIChzaGFkb3dzdGFja19mcmFtZSk7CiAgIHVpb3V0LT5maWVsZF9zaWduZWQgKCJsaW5lIiwg c2FsLmxpbmUsIGxpbmVfbnVtYmVyX3N0eWxlLnN0eWxlICgpKTsKLSAgYW5ub3RhdGVfZnJhbWVf c291cmNlX2VuZCAoKTsKKyAgYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAoc2hhZG93c3RhY2tf ZnJhbWUpOwogfQogCi0vKiAgSWYgYXZhaWxhYmxlLCBwcmludCBGVU5OQU1FIHRvIFVJT1VUIGZv ciB0aGUgcHJpbnRpbmcgb2YgZnJhbWUKLSAgICBpbmZvcm1hdGlvbi4gICovCisvKiAgU2VlIHN0 YWNrLmguICAqLwogCi1zdGF0aWMgdm9pZAordm9pZAogcHJpbnRfZnVubmFtZSAodWlfb3V0ICp1 aW91dCwKLQkgICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gY29uc3QgJmZ1bm5h bWUpCisJICAgICAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGNvbnN0ICZmdW5uYW1l LAorCSAgICAgICBib29sIHNoYWRvd3N0YWNrX2ZyYW1lKQogewotICBhbm5vdGF0ZV9mcmFtZV9m dW5jdGlvbl9uYW1lICgpOworICBhbm5vdGF0ZV9mcmFtZV9mdW5jdGlvbl9uYW1lIChzaGFkb3dz dGFja19mcmFtZSk7CiAgIHN0cmluZ19maWxlIHN0YjsKICAgZ2RiX3B1dHMgKGZ1bm5hbWUgPyBm dW5uYW1lLmdldCAoKSA6ICI/PyIsICZzdGIpOwogICB1aW91dC0+ZmllbGRfc3RyZWFtICgiZnVu YyIsIHN0YiwgZnVuY3Rpb25fbmFtZV9zdHlsZS5zdHlsZSAoKSk7CkBAIC0yMjI2LDcgKzIyMjYs MTAgQEAgYmFja3RyYWNlX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQog ICBzY29wZWRfcmVzdG9yZSByZXN0b3JlX3NldF9iYWNrdHJhY2Vfb3B0aW9ucwogICAgID0gbWFr ZV9zY29wZWRfcmVzdG9yZSAoJnVzZXJfc2V0X2JhY2t0cmFjZV9vcHRpb25zLCBzZXRfYnRfb3B0 cyk7CiAKLSAgYmFja3RyYWNlX2NvbW1hbmRfMSAoZnBfb3B0cywgYnRfY21kX29wdHMsIGFyZywg ZnJvbV90dHkpOworICBpZiAoIWJ0X2NtZF9vcHRzLnNoYWRvdykKKyAgICBiYWNrdHJhY2VfY29t bWFuZF8xIChmcF9vcHRzLCBidF9jbWRfb3B0cywgYXJnLCBmcm9tX3R0eSk7CisgIGVsc2UKKyAg ICBiYWNrdHJhY2Vfc2hhZG93X2NvbW1hbmQgKGZwX29wdHMsIGFyZywgZnJvbV90dHkpOwogfQog CiAvKiBDb21wbGV0ZXIgZm9yIHRoZSAiYmFja3RyYWNlIiBjb21tYW5kLiAgKi8KZGlmZiAtLWdp dCBhL2dkYi9zdGFjay5oIGIvZ2RiL3N0YWNrLmgKaW5kZXggYWQyNzAwYjU5YTcuLmQ2MjYwN2Jh MzYxIDEwMDY0NAotLS0gYS9nZGIvc3RhY2suaAorKysgYi9nZGIvc3RhY2suaApAQCAtODQsNCAr ODQsNTkgQEAgdm9pZCBmcmFtZV9hcHBseV9hbGxfY21kX2NvbXBsZXRlciAoc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKmlnbm9yZSwKIAkJCQkgICAgY29tcGxldGlvbl90cmFja2VyICZ0cmFja2Vy LAogCQkJCSAgICBjb25zdCBjaGFyICp0ZXh0LCBjb25zdCBjaGFyICovKndvcmQqLyk7CiAKKy8q IFByaW50IHRoZSBmaWxlbm5hbWUgb2YgU0FMIHRvIFVJT1VUIGZvciB0aGUgcHJpbnRpbmcgb2Yg ZnJhbWUKKyAgIGluZm9ybWF0aW9uLiAgSW4gY2FzZSBTSEFET1dTVEFDS19GUkFNRSBpcyB0cnVl LCB3ZSBhbm5vdGF0ZSBmb3IgYQorICAgc2hhZG93IHN0YWNrIGZyYW1lLiAgSWYgaXQgaXMgZmFs c2UgKGRlZmF1bHQpLCB3ZSBhbm5vdGF0ZSBmb3IgYQorICAgbm9ybWFsIGZyYW1lLiAgKi8KKwor dm9pZCBwcmludF9maWxlbmFtZSAodWlfb3V0ICp1aW91dCwgc3ltdGFiX2FuZF9saW5lIHNhbCwK KwkJICAgICBib29sIHNoYWRvd3N0YWNrX2ZyYW1lID0gZmFsc2UpOworCisvKiBQcmludCB0aGUg bGlicmFyeSBMSUIgdG8gVUlPVVQgZm9yIHRoZSBwcmludGluZyBvZiBmcmFtZQorICAgaW5mb3Jt YXRpb24uICBJbiBjYXNlIFNIQURPV1NUQUNLX0ZSQU1FIGlzIHRydWUsIHdlIGFubm90YXRlIGZv ciBhCisgICBzaGFkb3cgc3RhY2sgZnJhbWUuICBJZiBpdCBpcyBmYWxzZSAoZGVmYXVsdCksIHdl IGFubm90YXRlIGZvciBhCisgICBub3JtYWwgZnJhbWUuICAqLworCit2b2lkIHByaW50X2xpYiAo dWlfb3V0ICp1aW91dCwgY29uc3QgY2hhciAqbGliLAorCQlib29sIHNoYWRvd3N0YWNrX2ZyYW1l ID0gZmFsc2UpOworCisvKiBJZiBhdmFpbGFibGUsIHByaW50IEZVTk5BTUUgdG8gVUlPVVQgZm9y IHRoZSBwcmludGluZyBvZiBmcmFtZQorICAgaW5mb3JtYXRpb24uICBJbiBjYXNlIFNIQURPV1NU QUNLX0ZSQU1FIGlzIHRydWUsIHdlIGFubm90YXRlIGZvciBhCisgICBzaGFkb3cgc3RhY2sgZnJh bWUuICBJZiBpdCBpcyBmYWxzZSAoZGVmYXVsdCksIHdlIGFubm90YXRlIGZvciBhCisgICBub3Jt YWwgZnJhbWUuICAqLworCit2b2lkIHByaW50X2Z1bm5hbWUgKHVpX291dCAqdWlvdXQsCisJCSAg ICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBjb25zdCAmZnVubmFtZSwKKwkJICAgIGJv b2wgc2hhZG93c3RhY2tfZnJhbWUgPSBmYWxzZSk7CisKKy8qIENvbnZlcnRzIHRoZSBQUklOVF9G UkFNRV9JTkZPIGNob2ljZSB0byBhbiBvcHRpb25hbCBlbnVtIHByaW50X3doYXQuCisgICBWYWx1 ZSBub3QgcHJlc2VudCBpbmRpY2F0ZXMgdG8gdGhlIGNhbGxlciB0byB1c2UgZGVmYXVsdCB2YWx1 ZXMKKyAgIHNwZWNpZmljIHRvIHRoZSBjb21tYW5kIGJlaW5nIGV4ZWN1dGVkLiAgKi8KKworc3Rk OjpvcHRpb25hbDxwcmludF93aGF0PiBwcmludF9mcmFtZV9pbmZvX3RvX3ByaW50X3doYXQKKyAg KGNvbnN0IGNoYXIgKnByaW50X2ZyYW1lX2luZm8pOworCisvKiBSZXR1cm4gdHJ1ZSBpZiBQUklO VF9XSEFUIGlzIGNvbmZpZ3VyZWQgdG8gcHJpbnQgdGhlIGxvY2F0aW9uIG9mIGEKKyAgIGZyYW1l LiAgKi8KKworYm9vbCBzaG91bGRfcHJpbnRfbG9jYXRpb24gKHByaW50X3doYXQgcHJpbnRfd2hh dCk7CisKKy8qIFByaW50IHRoZSBzb3VyY2UgaW5mb3JtYXRpb24gZm9yIFBDIGFuZCBTQUwgdG8g VUlPVVQuICBCYXNlZCBvbiB0aGUKKyAgIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9uIGRpc2Fz c2VtYmxlLW5leHQtbGluZSwgZGlzcGxheSBkaXNhc3NlbWJseQorICAgb2YgdGhlIG5leHQgc291 cmNlIGxpbmUsIGluIGFkZGl0aW9uIHRvIGRpc3BsYXlpbmcgdGhlIHNvdXJjZSBsaW5lCisgICBp dHNlbGYuICBQcmludCBhbm5vdGF0aW9ucyBkZXNjcmliaW5nIHNvdXJjZSBmaWxlIGFuZCBhbmQg bGluZSBudW1iZXIKKyAgIGJhc2VkIG9uIE1JRF9TVEFURU1FTlQgaW5mb3JtYXRpb24uICBJZiBT SE9XX0FERFJFU1MgaXMgdHJ1ZSwgcHJpbnQgdGhlCisgICBwcm9ncmFtIGNvdW50ZXIgUEMgaW5j bHVkaW5nLCBpZiBub24tZW1wdHksIFBDX0FERFJFU1NfRkxBR1MuICAqLworCit2b2lkIHByaW50 X3NvdXJjZSAodWlfb3V0ICp1aW91dCwgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjLAor CQkgICBzeW10YWJfYW5kX2xpbmUgc2FsLCBib29sIHNob3dfYWRkcmVzcywKKwkJICAgaW50IG1p ZF9zdGF0ZW1lbnQsIGNvbnN0IHN0ZDo6c3RyaW5nICZwY19hZGRyZXNzX2ZsYWdzKTsKKworLyog RmluZCB0aGUgZnVuY3Rpb24gbmFtZSBmb3IgdGhlIHN5bWJvbCBTWU0uICAqLworCitnZGI6OnVu aXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBmaW5kX3N5bWJvbF9mdW5uYW1lIChjb25zdCBzeW1ib2wg KnN5bSk7CisKKy8qIFRoZSBwb3NzaWJsZSBjaG9pY2VzIG9mICJzZXQgcHJpbnQgZnJhbWUtaW5m byIuICAqLworZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHByaW50X2ZyYW1lX2luZm9fY2hvaWNl c1s3XTsKKwogI2VuZGlmIC8qIEdEQl9TVEFDS19IICovCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL2FtZDY0LXNoYWRvdy1zdGFjay1jbWRzLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmFyY2gvYW1kNjQtc2hhZG93LXN0YWNrLWNtZHMuZXhwCmluZGV4IGU0ZGFlY2I1OTBkLi5j NTQ3ZGM0ZTQ5YSAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1zaGFk b3ctc3RhY2stY21kcy5leHAKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1zaGFk b3ctc3RhY2stY21kcy5leHAKQEAgLTEwOSw2ICsxMDksOTQgQEAgc2F2ZV92YXJzIHsgOjplbnYo R0xJQkNfVFVOQUJMRVMpIH0gewogCWdkYl90ZXN0ICJwcmludCAveCBcJHBsM19zc3AiICI9ICRz c3BfY2FsbDIiICJjaGVjayBwbDNfc3NwIG9mIGZyYW1lIDAiCiAgICAgfQogCisgICAgc2V0IGZp bGwgIlxbXlxyXG5cXSsiCisgICAgIyBCdWlsZCBzaGFkb3cgc3RhY2sgZnJhbWVzIHRvIHRlc3Qg dGhlICdiYWNrdHJhY2Ugc2hhZG93JyBjb21tYW5kLgorICAgIHNldCBzc3B2YWxfbWFpbiBbZ2V0 X3ZhbHVlb2YgIi96IiAiKihsb25nIGxvbmcgaW50Kikkc3NwX21haW4iICIiXQorICAgIHNldCBz c3B2YWxfY2FsbDEgW2dldF92YWx1ZW9mICIveiIgIioobG9uZyBsb25nIGludCopJHNzcF9jYWxs MSIgIiJdCisgICAgc2V0IHNzcHZhbF9jYWxsMiBbZ2V0X3ZhbHVlb2YgIi96IiAiKihsb25nIGxv bmcgaW50Kikkc3NwX2NhbGwyIiAiIl0KKyAgICBzZXQgZnJhbWUxICIjMFxbIFx0XF0qJHNzcHZh bF9jYWxsMiBpbiBjYWxsMSRmaWxsIgorICAgIHNldCBmcmFtZTIgIiMxXFsgXHRcXSokc3NwdmFs X2NhbGwxIGluIG1haW4kZmlsbCIKKyAgICBzZXQgZnJhbWUzICIjMlxbIFx0XF0qJHNzcHZhbF9t YWluJGZpbGwiCisKKyAgICAjIFdlIGNhbiBvbmx5IHRlc3QgdGhhdCB3ZSBwcmludCB0aGUgZmly c3QgMyBmcmFtZXMgY29ycmVjdGx5LCBhcyB0aGUKKyAgICAjIHNoYWRvdyBzdGFjayBlbmFibGVt ZW50IG1pZ2h0IGRlcGVuZCBvbiB0aGUgdW5kZXJseWluZyBPUy4KKyAgICBnZGJfdGVzdCAiYnQg LXNoYWRvdyIgXAorCVttdWx0aV9saW5lIFwKKwkgICAgIiRmcmFtZTEiIFwKKwkgICAgIiRmcmFt ZTIiIFwKKwkgICAgIiRmcmFtZTMiIFwKKwkgICAgIi4qIiBdIFwKKwkidGVzdCBzaGFkb3cgc3Rh Y2sgYmFja3RyYWNlIHVudGlsIHRoZSBib3R0b20gb2YgdGhlIHN0YWNrLiIKKworICAgIGdkYl90 ZXN0ICJidCAtc2hhZG93IDIiIFwKKwlbbXVsdGlfbGluZSBcCisJICAgICIkZnJhbWUxIiBcCisJ ICAgICIkZnJhbWUyIiBcCisJICAgICJcXChNb3JlIHNoYWRvdyBzdGFjayBmcmFtZXMgZm9sbG93 Li4uXFwpIiBdIFwKKwkidGVzdCBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIHdpdGggYSBwb3NpdGl2 ZSB2YWx1ZSBmb3IgY291bnQiCisKKyAgICAjIFdlIGNhbiBvbmx5IHRlc3QgdGhhdCB3ZSBwcmlu dCBhIHNpbmdsZSBmcmFtZSwgYXMgdGhlIHNoYWRvdyBzdGFjaworICAgICMgZW5hYmxlbWVudCBt aWdodCBkZXBlbmQgb24gdGhlIHVuZGVybHlpbmcgT1MuCisgICAgZ2RiX3Rlc3QgImJ0IC1zaGFk b3cgLTEiICJeIyRkZWNpbWFsXFsgXHRcXSokaGV4JGZpbGwiIFwKKwkidGVzdCBzaGFkb3cgc3Rh Y2sgYmFja3RyYWNlIHdpdGggYSBuZWdhdGl2ZSB2YWx1ZSBmb3IgY291bnQiCisKKyAgICAjIFRl c3QgYmFja3RyYWNlIGxpbWl0CisgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYmFja3RyYWNl IGxpbWl0IDIiCisgICAgZ2RiX3Rlc3QgImJ0IC1zaGFkb3ciIFwKKwlbbXVsdGlfbGluZSBcCisJ ICAgICIkZnJhbWUxIiBcCisJICAgICIkZnJhbWUyIiBdIFwKKwkidGVzdCBzaGFkb3cgc3RhY2sg YmFja3RyYWNlIHdpdGggbGltaXQiCisgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYmFja3Ry YWNlIGxpbWl0IHVubGltaXRlZCIgInJlc3RvcmUgYmFja3RyYWNlIGxpbWl0IGRlZmF1bHQiCisK KyAgICAjIFRlc3QgYW5ub3RhdGlvbnMgZm9yIGJ0IC1zaGFkb3cuCisgICAgc2F2ZV92YXJzIHsg OjpnZGJfcHJvbXB0IH0geworCisJIyBKdXN0IGxpa2UgZm9yIG90aGVyIGdkYiB0ZXN0cyB0ZXN0 aW5nIGFubm90YXRpb25zLCBub3RlOgorCSMgV2hlbiB0aGlzIHByb21wdCBpcyBpbiB1c2UgdGhl IGdkYl90ZXN0IHByb2NlZHVyZSBjYW5ub3QgYmUgdXNlZAorCSMgYmVjYXVzZSBpdCBhc3N1bWVz IHRoYXQgdGhlIGxhc3QgY2hhciBvZiB0aGUgZ2RiX3Byb21wdCBpcyBhCisJIyB3aGl0ZSBzcGFj ZS4gIFRoaXMgaXMgbm90IHRydWUgd2l0aCB0aGlzIGFubm90YXRlZCBwcm9tcHQuCisJIyBPbmUg YWx0ZXJuYXRpdmUgaXMgdG8gdXNlIGdkYl90ZXN0X211bHRpcGxlLgorCXNldCA6OmdkYl9wcm9t cHQgIlxyXG5cMDMyXDAzMnByZS1wcm9tcHRcclxuJDo6Z2RiX3Byb21wdCBcclxuXDAzMlwwMzJw cm9tcHRcclxuIgorCisJZ2RiX3Rlc3RfbXVsdGlwbGUgInNldCBhbm5vdGF0ZSAyIiAic2V0IGFu bm90YXRlIDIiIHsKKwkgICAgLXJlICJzZXQgYW5ub3RhdGUgMlxyXG4kZ2RiX3Byb21wdCQiIHsK KwkJcGFzcyAiYW5ub3RhdGlvbiBzZXQgYXQgbGV2ZWwgMiIKKwkgICAgfQorCSAgICAtcmUgIi4q JGdkYl9wcm9tcHQkIiB7CisJCWZhaWwgImFubm90YXRpb24gc2V0IGF0IGxldmVsIDIiCisJICAg IH0KKwkgICAgdGltZW91dCB7CisJCWZhaWwgImFubm90YXRpb24gc2V0IGF0IGxldmVsIDIgKHRp bWVvdXQpIgorCSAgICB9CisJfQorCisJc2V0IGlubmVyX2ZyYW1lX3JlIFttdWx0aV9saW5lIFwK KwkgICAgInNoYWRvdy1zdGFjay1mcmFtZS1hZGRyZXNzIiBcCisJICAgICIkaGV4XHJcblwwMzJc MDMyc2hhZG93LXN0YWNrLWZyYW1lLWFkZHJlc3MtZW5kIiBcCisJICAgICJcIGluIFxyXG5cMDMy XDAzMnNoYWRvdy1zdGFjay1mcmFtZS1mdW5jdGlvbi1uYW1lIiBcCisJICAgICIkZmlsbFxyXG5c MDMyXDAzMnNoYWRvdy1zdGFjay1mcmFtZS1zb3VyY2UtYmVnaW4iIFwKKwkgICAgIiBhdCBcclxu XDAzMlwwMzJzaGFkb3ctc3RhY2stZnJhbWUtc291cmNlLWZpbGVcclxuJGZpbGwiIFwKKwkgICAg IlwwMzJcMDMyc2hhZG93LXN0YWNrLWZyYW1lLXNvdXJjZS1maWxlLWVuZCIgXAorCSAgICAiOlxy XG5cMDMyXDAzMnNoYWRvdy1zdGFjay1mcmFtZS1zb3VyY2UtbGluZVxyXG4kZGVjaW1hbCIgXAor CSAgICAiXDAzMlwwMzJzaGFkb3ctc3RhY2stZnJhbWUtc291cmNlLWVuZFxyXG5cclxuXHJcbiJd CisKKwlzZXQgcmUgW211bHRpX2xpbmUgXAorCSAgICAic2hhZG93LXN0YWNrLWZyYW1lLWJlZ2lu IDAgJGhleCIgXAorCSAgICAiIzAgIFxyXG5cMDMyXDAzMiRpbm5lcl9mcmFtZV9yZVwwMzJcMDMy c2hhZG93LXN0YWNrLWZyYW1lLWVuZCIgXAorCSAgICAiXHJcblwwMzJcMDMyc2hhZG93LXN0YWNr LWZyYW1lLWJlZ2luIDEgJGhleCIgXAorCSAgICAiIzEgIFxyXG5cMDMyXDAzMiRpbm5lcl9mcmFt ZV9yZVwwMzJcMDMyc2hhZG93LXN0YWNrLWZyYW1lLWVuZCIgXAorCSAgICAiXFwoTW9yZSBzaGFk b3cgc3RhY2sgZnJhbWVzIGZvbGxvdy4uLlxcKSIgXAorCSAgICAiJGdkYl9wcm9tcHQkIiBdCisK KwlnZGJfdGVzdF9tdWx0aXBsZSAiYmFja3RyYWNlIC1zaGFkb3cgMiIgImJhY2t0cmFjZSBzaGFk b3cgd2l0aCBhbm5vdGF0aW9ucyIgeworCSAgICAtcmUgJHJlIHsKKwkJcGFzcyAkZ2RiX3Rlc3Rf bmFtZQorCSAgICB9CisJfQorICAgIH0KKyAgICBnZGJfdGVzdCAic2V0IGFubm90YXRlIDAiICIu KnBvc3QtcHJvbXB0LioiICJzZXQgYW5ub3RhdGUgMCIKKwogICAgIHdpdGhfdGVzdF9wcmVmaXgg InRlc3QgcmV0dXJuIGZyb20gY3VycmVudCBmcmFtZSIgewogCWdkYl90ZXN0ICJyZXR1cm4gKGlu dCkgMSIgIiMwLipjYWxsMS4qIiBcCiAJIlRlc3Qgc2hhZG93IHN0YWNrIHJldHVybiBmcm9tIGN1 cnJlbnQgZnJhbWUiIFwKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvb3B0aW9u cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL29wdGlvbnMuZXhwCmluZGV4IDBiOGRkYTUx ZDRkLi5jNTA5N2Y0NmIxNSAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9vcHRp b25zLmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL29wdGlvbnMuZXhwCkBAIC0yODYs NyArMjg2LDYgQEAgcHJvY193aXRoX3ByZWZpeCB0ZXN0LWJhY2t0cmFjZSB7fSB7CiAgICAgY2xl YW5fcmVzdGFydAogCiAgICAgdGVzdF9nZGJfY29tcGxldGVfdW5pcXVlICJiYWNrdHJhY2UiICJi YWNrdHJhY2UiCi0gICAgdGVzdF9nZGJfY29tcGxldGVfbm9uZSAiYmFja3RyYWNlICIKIAogICAg IGdkYl90ZXN0ICJiYWNrdHJhY2UgLSIgIkFtYmlndW91cyBvcHRpb24gYXQ6IC0iCiAgICAgZ2Ri X3Rlc3QgImJhY2t0cmFjZSAtLSIgIk5vIHN0YWNrXFwuIgpAQCAtMzAyLDYgKzMwMSw3IEBAIHBy b2Nfd2l0aF9wcmVmaXggdGVzdC1iYWNrdHJhY2Uge30gewogCSItcGFzdC1lbnRyeSIKIAkiLXBh c3QtbWFpbiIKIAkiLXJhdy1mcmFtZS1hcmd1bWVudHMiCisJIi1zaGFkb3ciCiAgICAgfQogCiAg ICAgIyBUZXN0IHRoYXQgd2UgY29tcGxldGUgdGhlIHF1YWxpZmllcnMsIGlmIHRoZXJlJ3MgYW55 LgotLSAKMi4zNC4xCgpJbnRlbCBEZXV0c2NobGFuZCBHbWJIDQpSZWdpc3RlcmVkIEFkZHJlc3M6 IERvcm5hY2hlciBTdHJhw59lIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55DQpUZWw6ICs0 OSA4OSA5OTEgNDMwLCB3d3cuaW50ZWwuZGUNCk1hbmFnaW5nIERpcmVjdG9yczogSGFycnkgRGVt YXMsIEplZmZyZXkgU2NobmVpZGVybWFuLCBZaW4gQ2hvbmcgU29ycmVsbA0KQ2hhaXJwZXJzb24g b2YgdGhlIFN1cGVydmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1DQpSZWdpc3RlcmVkIFNlYXQ6IE11 bmljaA0KQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQgTcO8bmNoZW4gSFJCIDE4Njky OAo=