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 1wfKUq-005OfM-2x for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jul 2026 16:42:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wfKTp-002LtA-2G for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jul 2026 16:41:37 +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 1wfKTn-002Lt0-2Q for pgsql-hackers@lists.postgresql.org; Thu, 02 Jul 2026 16:41:37 +0000 Received: from fout-b7-smtp.messagingengine.com ([202.12.124.150]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wfKTV-00000001F6l-3Fpa for pgsql-hackers@postgresql.org; Thu, 02 Jul 2026 16:41:34 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.stl.internal (Postfix) with ESMTP id 755441D0002A for ; Thu, 2 Jul 2026 12:41:16 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Thu, 02 Jul 2026 12:41:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1783010476; x=1783096876; bh=ogsnmHkAne 21P2vQi3DX+ZtP/kuuO2e0JDvLIHozy64=; b=gxdfil8p2L+QCpVia1Pn3GcGb1 MVv7NB3JHEP7Z/Gxt/Pe4iSBOQNRVAJkyyHWchqpahhbfjl7E8ybTSuF/zFuWFqy 47YJZSbB0HnWkDKcNqlB6o9SQl5vcy8R2QI7Utrg98vg5aq1cGqayA5bOKqvNiwa wVKBT7X9RUtOgpDAXHmjiFJpNfhQdlfvzynhELl+Y7Mqv0lNKLdTSL1TVB7d8P0Z OeEAqvd0dTaVqSfyPBbHWyaStQuW4bEToIx8VJaljSdy9mvNVe5dmU7Ivr4fD8zE SQwuxDqvCtot0YlW3t5ZWY1bFadlNwLAiV6gutFEVJTnVj2UM1Co6ZYABCOg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1783010476; x=1783096876; bh=ogsnmHkAne21P2vQi3DX+ZtP/kuuO2e0JDv LIHozy64=; b=oFR5nU/USwzd1g25rtdScGY/+iMzWVQxqfjNag9guGdv8pUNTWy /x32zwnIcy69KI7xD9ELSB+69yAF0tjfvRv2i6U9KDLRaSW7v4tRRn4tfpRCsZB+ nbAhyG/hTsvYkTZhxuOTBFj+NfZ0PPdSasnGy0g63ESLjBdOVJmyymTsb+75T4uH iNkRXyy3gHpWRwmU9nFzWy9oM3BoqAQU3mvPA44azYbqEfF/PG8jrfI2EX909J0t 167kNoU9JECSJYIk1abUcFbgz77U7RgQKgjETDxINv4+zbpX9+VIhK7ON7VQ4R3y 6/cqMRkBdnae5JgpO5Cxt7U6vsZFwjD1Uvg== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTEkxSEHlni24R1e4xl5P15aawFi3nZPeSkcLo2UD7UVXiRh19D57EbYYzYNHWZEgQ fXh1xMULs7XRRXO1fuSn4SjB04PnF22pWVzZu8NSG+3v/G3FHELrzoBWlkP2Ta0IC9hzE4 efB3rO5VObDtiwka835ZiOUdMu+lSm8S4nsefHDTl/6UE77yHzfux5n1QjC6mFUHgdVNq0 OLCFR01k6GsN6WA+lHOd92RCBz1/rkJODG28iAeI8EyeYH0BO/WmRgs4QFR+6Bvw3SLQlq GYacFmCQdEWqt9FTQbDB+V4Ucti8bpb8VbzuTyYvEEyisiL525b75FROj6GkXKP8Ev2LSl OO8pnzndtiRzKlmQkKeoiKASazZYA4BjKuj49cBDWO815xn/M1qqeXIA+JLaZWJ4wEBh3Y Xcrqf3zYz2ftoPLQSuPP+joIxDPRrd8bPVdvIbc21OsNJpl9LiPSKr4XotZBRFCYpce+mb RKVKtNdxAi5w8SDFvGJPcmjzlYwz20kOhqfatN+ctc4iwXix1kGBE4aSaE2a4YYXCu+2hG FNre31pWYrz4Mvab81/39qg+lueAQCRinnJRrcQtONPqgdb2Tdq8Qbc6ya4zNmwGEIMnO2 pVZP458ktyE4lmS79JDlSNCXrwDUnu365AhpjRtmXIXZbaejWEje/2udUcwg X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id D0BE470006B; Thu, 2 Jul 2026 12:41:15 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: APOwk72ga2TB Date: Thu, 02 Jul 2026 12:40:51 -0400 From: "Greg Burd" To: pgsql-hackers Message-Id: <57c9e23a-bb03-4d7c-81f5-551cd42f8b34@app.fastmail.com> In-Reply-To: <780845de-c0f9-4888-b43d-8d3caa7c2899@app.fastmail.com> References: <780845de-c0f9-4888-b43d-8d3caa7c2899@app.fastmail.com> Subject: Re: Tepid: selective index updates for heap relations Content-Type: multipart/mixed; boundary=3202a723b9a5d4132622fc7eaaa1d2d143f90e53 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Rebased onto 51cd5d6f052. The only interesting changes were in patch 0008: - origin/master gained a new feature between v49 and v50 ("Allow logical= replication conflicts to be logged to a table"), which touches the exac= t same subscription-option plumbing ours does. The rebase conflicted in = 6 files; I resolved by making both features coexist: - alter_subscription.sgml / create_subscription.sgml: the "alterable opt= ions" doc list now enumerates conflict_log_destination alongside hot_ind= exed_on_apply instead of standing alone. - pg_subscription.c: GetSubscription() now also copies subconflictlogrel= id (their field) next to our subhotindexedonapply copy =E2=80=94 indepen= dent lines, both needed. - system_views.sql: the pg_subscription GRANT SELECT column list now inc= ludes their subconflictlogrelid/subconflictlogdest in catalog-struct ord= er alongside our column. - subscriptioncmds.c =E2=80=94 the one genuine bug fix: both features ha= d independently claimed bit 0x00080000 for their SUBOPT_* flag. Real col= lision. Resolved by moving ours, SUBOPT_HOT_INDEXED_ON_APPLY, to 0x00100= 000; kept their SUBOPT_CONFLICT_LOG_DEST at 0x00080000. Also merged the = else if option-parsing chain, the CREATE/ALTER SUBSCRIPTION supported-op= ts bitmasks, and the tuple-update logic so both options parse and apply = independently (verified live: CREATE SUBSCRIPTION ... WITH (hot_indexed_= on_apply=3D'always', conflict_log_destination=3D'table') sets both field= s correctly). - catversion.h: bumped past current master (202607023). I validated the benchmark claims again, this time in EC2 on larger "meta= l" instance: m6id.metal - 128 vCPU, 512 GB RAM, 4=C3=971.7 TB local NVMe= (RAID0), Amazon Linux 2023. PG 20devel release build (cassert=3Doff). Result (origin/master vs tepid v50, scale 50, 32c/32t, 120s/cell): workload TPS master->tepid WAL/update ma= ster->tepid simple_update (control; HOT both) 132.9k -> 131.9k ( -1%) 448 -> 448 = B ( +0%) hot_indexed_update (1 of 4 idx) 172.4k -> 195.0k (+13%) 556 -> 422 = B (-24%) hot_indexed_mixed (80r/20w) 333.4k -> 346.8k ( +4%) 574 -> 438 = B (-24%) read_indexscan (read-only) 812.2k -> 803.5k ( -1%) n/a (read-on= ly) wide, 0 of 17 (control) 214.2k -> 213.6k ( -0%) 141 -> 143 = B ( +1%) wide, 1 of 17 indexes 93.8k -> 164.6k (+76%) 1649 -> 668 = B (-59%) wide, 4 of 17 indexes 93.7k -> 147.1k (+57%) 1783 -> 978 = B (-45%) wide, 8 of 17 indexes 98.8k -> 132.7k (+34%) 1967 -> 1494 = B (-24%) wide, 16 of 17 indexes 106.3k -> 106.8k ( +0%) 3222 -> 3219 = B ( -0%) best. -greg --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA5ZTRiNTE1YzYzY2ZlMjg5OTgyZmEwNmQxYmIzMzQ2MWY3OTJkMWIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDEv OV0gQWRkIHRlc3RzIHRvIGNvdmVyIGEgdmFyaWV0eSBvZiBoZWFwIEhPVCB1cGRhdGUKIGJl aGF2aW9ycwoKQWRkIHJlZ3Jlc3Npb24gY292ZXJhZ2UgZm9yIGV4aXN0aW5nIGNsYXNzaWMg SGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZQpiZWhhdmlvciwgY29tbWl0dGVkIGZpcnN0 IHNvIHRoZSBiZWhhdmlvcmFsIGNoYW5nZXMgaW4gdGhlIGxhdGVyIEhPVC1pbmRleGVkCmNv bW1pdHMgYXJlIGRpZmZhYmxlIGFnYWluc3QgYSBrbm93bi1nb29kIGJhc2VsaW5lLiAgVGhp cyBjb21taXQgYWRkcwp0ZXN0cyBzbyBhcyB0byBjb2RpZnkgZXhwbGljaXRseSB0aGUgSE9U IGNvbnRyYWN0IGZvciB0aGUgaGVhcCBBTS4KClRoZSBuZXcgaG90X3VwZGF0ZXMgcmVncmVz c2lvbiB0ZXN0IGV4ZXJjaXNlczoKLSBCYXNpYyBIT1QgdnMgbm9uLUhPVCB1cGRhdGUgZGVj aXNpb25zCi0gVGhlIGFsbC1vci1ub25lIHByb3BlcnR5IGFjcm9zcyBtdWx0aXBsZSBpbmRl eGVzCi0gUGFydGlhbCBpbmRleGVzIGFuZCBwcmVkaWNhdGUgaGFuZGxpbmcKLSBCUklOIChz dW1tYXJpemluZykgaW5kZXhlcyBhbGxvd2luZyBIT1QgdXBkYXRlcwotIFRPQVNUIGNvbHVt biBoYW5kbGluZyB3aXRoIEhPVAotIFVuaXF1ZSBjb25zdHJhaW50IGJlaGF2aW9yCi0gTXVs dGktY29sdW1uIGluZGV4ZXMKLSBQYXJ0aXRpb25lZCB0YWJsZSBIT1QgdXBkYXRlcwotIEhP VCBjaGFpbiBmb3JtYXRpb24gYW5kIHRoZSBpbmRleC1zY2FuIHdhbGsgb3ZlciBhIGNoYWlu CgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgfCA3NDUgKysrKysrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgfCAg IDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAgfCA2MDUg KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEzNTUgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3Vw ZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90 X3VwZGF0ZXMuc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9o b3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVz Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjczZmUzMzEw ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91 cGRhdGVzLm91dApAQCAtMCwwICsxLDc0NSBAQAorLS0KKy0tIEhPVF9VUERBVEVTCistLSBU ZXN0IEhlYXAtT25seSBUdXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLQorLS0gVGhp cyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVz ZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0gYW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUu Zy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFyZSBtb2RpZmllZCkuCistLQorLS0gV2UgdXNl IG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKKy0tIDEuIFN0YXRpc3RpY3MgZnVuY3Rp b25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAyLiBwYWdlaW5zcGVj dCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlvbgorLS0gMy4gRVhQTEFJTiB0 byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcworLS0KKy0tIExvYWQgcmVxdWly ZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNw ZWN0OworLS0gRnVuY3Rpb24gdG8gZ2V0IEhPVCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMg VEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5ULAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQK K0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitCRUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1l OjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJlYWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5z YWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIEluIGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBm b3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6 IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0 YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBmbHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291 bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGlu ZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlv bi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICBob3QgOj0gQ09BTEVTQ0UocGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICBDT0FM RVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQ2hl Y2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3Nv ciBvbiBzYW1lIHBhZ2UpCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2No YWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKK1JFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICBibG9ja19udW0gaW50OworICBwYWdlX2l0ZW0gcmVjb3JkOwor QkVHSU4KKyAgYmxvY2tfbnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gTG9vayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFn ZSB0aGF0IHBvaW50cyB0byBvdXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBwYWdlX2l0ZW0gSU4K KyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBf ZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCisgICAgICBBTkQgdF9j dGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8 fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCisgIExPT1AK KyAgICBSRVRVUk4gdHJ1ZTsKKyAgRU5EIExPT1A7CisKKyAgUkVUVVJOIGZhbHNlOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRp bmcgZnJvbSBhIGdpdmVuIHR1cGxlCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmlu dF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRB QkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3Rp ZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1 c2VfY29sdW1uCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsK KyAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICBuZXh0X2N0aWQgdGlkOwor ICBwb3NpdGlvbiBpbnQgOj0gMDsKKyAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAg cGFnZV9pdGVtIHJlY29yZDsKKyAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxz ZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0OworQkVHSU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9j dGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3Nv ciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9p dGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9P UAorICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcg fHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNl c3NvciA6PSB0cnVlOworICAgIEVYSVQ7CisgIEVORCBMT09QOworCisgIC0tIElmIG5vIHBy ZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBm b3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7 CisgIEVORCBJRjsKKworICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUg cG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJl bnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElO CisgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdI RVJFIGxwID0gbGluZV9wdHIKKyAgICBMT09QCisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8g bmFtZXMKKyAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAg ICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAgIFdIRU4gMSBUSEVOICdu b3JtYWwgKDEpJworICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAg ICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCisgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwg cGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAgRU5EOworCisgICAgICBS RVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50 X2N0aWQsCisgICAgICAgIGZsYWdzX25hbWUsCisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQs CisgICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3Rp ZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4KKyAgICAgIDsKKworICAgICAgSUYgcGFnZV9p dGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQg VEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3Rp ZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworCisgICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICBSRVRVUk47CisgICAg ICBFTkQgSUY7CisKKyAgICAgIGN1cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBw b3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3Np dGlvbiA9IDAgVEhFTgorICAgICAgUkVUVVJOOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5k ZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2luaXRpYWwnKTsKKy0tIEdldCBiYXNlbGluZQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBo b3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFNo b3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQp CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hF UkUgaWQgPSAxOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBk YXRlZDInIFdIRVJFIGlkID0gMjsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7CistLSBWZXJpZnkgSE9UIHVwZGF0ZXMg b2NjdXJyZWQKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAgMworKDEgcm93 KQorCistLSBEdW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZworV0lUSCBjdXJy ZW50X3R1cGxlIEFTICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDEKKykKK1NFTEVDVAorICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVw bGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90 X2NoYWluLmN0aWQsCisgIGxwX2ZsYWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBs ZSwKK0xBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUu Y3RpZCk7CisgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFn cyAgfCB0X2N0aWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCwx KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorIHQgICAgICAgICB8ICAgICAgICAgICAgICAxIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygyIHJvd3MpCisKKy0tIFZhY3V1bSB0aGUg cmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNlCitWQUNVVU0gaG90 X3Rlc3Q7CistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVtCitX SVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBw cmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJy ZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwg IGxwX2ZsYWdzICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBmICAgICAgICAgfCAgICAgICAgICAgICAg MCB8ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMSByb3cpCisKKy0tIE5vbi1IT1Qg dXBkYXRlICh1cGRhdGUgaW5kZXhlZCBjb2x1bW4pCitVUERBVEUgaG90X3Rlc3QgU0VUIGlu ZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisg ICAgICAgNCB8ICAgMworKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQg KG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4 ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTAp CisoMiByb3dzKQorCitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hF UkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0tLS0t LS0tLS0tLQorICAxIHwgICAgICAgICAxNTAKKygxIHJvdykKKworLS0gVmVyaWZ5IG9sZCB2 YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNp bmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChp bmRleGVkX2NvbCA9IDEwMCkKKygyIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVT RVQgZW5hYmxlX3NlcXNjYW47CistLSBBbGwtb3Itbm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcg b25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRhdGVzCitEUk9QIFRB QkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBp bnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsKK0NSRUFU RSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7CitDUkVBVEUgSU5E RVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOworSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0gVXBkYXRlIG9u bHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1u IGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChh bGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygx IHJvdykKKworLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7 CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKworLS0g UGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29u c2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4 dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKy0tIFBhcnRp YWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKK0NSRUFURSBJTkRFWCBo b3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0g J2FjdGl2ZSc7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAn ZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywg J2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywg J2RhdGEzJyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdhY3RpdmUnIHJv dyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQorLS0gU2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAob3V0c2lkZSBwcmVk aWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAn dXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAg MiB8ICAgMgorKDEgcm93KQorCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0 byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0Z3JlU1FMIGlz IGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNo ZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJl IG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxl dGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMgfCAg IDIKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZl JyByb3dzCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOworIGlkIHwgc3RhdHVzIAorLS0tLSstLS0tLS0tLQorICAxIHwgYWN0aXZl CisoMSByb3cpCisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9u LVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAg dmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVz dCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1 bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVzKQor VVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQor KDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGFsc28g YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBU T0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAor RFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90ZXh0 IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsK Ky0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCksICdzbWFsbCcp OworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNvbHVtbiB1 bmNoYW5nZWQKK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVw ZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cp CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERB VEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAzIHwgICAyCisoMSByb3cpCisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1 bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhv dF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkgdW5pcXVlIGNv bnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBG Uk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOworIGlkIHwgdW5pcXVlX2NvbCB8ICBkYXRhICAg CistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgMSB8ICAgICAgICAxMDAgfCB1cGRh dGVkCisgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAorKDIgcm93cykKKworLS0gVGhpcyBz aG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5p cXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFs dWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhvdF90ZXN0X3VuaXF1ZV9jb2xfa2V5 IgorREVUQUlMOiAgS2V5ICh1bmlxdWVfY29sKT0oMTAwKSBhbHJlYWR5IGV4aXN0cy4KKy0t IE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24tSE9UCitEUk9Q IFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xf YyBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7Cist LSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0t LS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKworLS0gUmVzZXQKK1VQREFU RSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKy0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBt dWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgY29sX2IgPSAyNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAg MAorKDEgcm93KQorCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIw OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICA0IHwgICAwCisoMSByb3cpCisKKy0t IFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhv dF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRleGVkKSAt IHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgNiB8ICAgMgorKDEgcm93KQorCistLSBQ YXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucworRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKK05PVElDRTog IHRhYmxlICJob3RfdGVzdF9wYXJ0aXRpb25lZCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5n CitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAorICAgIGlkIGludCwKKyAg ICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0 ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9O IEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0 MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVEFCTEUg aG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAg Rk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFM VUVTICgxLCA1MCwgMTAwLCAnaW5pdGlhbDEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOworLS0gVXBkYXRl IGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVS RSBpZCA9IDE7CistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVkIGNvbHVt bikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRh dGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4ZXMgd29y ayBvbiBwYXJ0aXRpb25zCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBX SEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitT RUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9 IDIwMDsKKyBpZCAKKy0tLS0KKyAgMgorKDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBj b2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAxCisoMSByb3cpCisKKy0t IFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFy dGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVHJpZ2dlciBtb2RpZmlj YXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBIT1QKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0bHkgZGV0ZWN0IHdoZW4gdHJpZ2dl cnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKKy0tIGhlYXBfbW9kaWZ5X3R1cGxlKCks IGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBpbiB0aGUgVVBEQVRFJ3MgU0VUIGNs YXVzZQorQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdHJpZ2dlcl9pZHggT04g aG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKKy0tIENyZWF0ZSBhIHRyaWdnZXIg dGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitC RUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOwor ICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRS SUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKKyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90 cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1v ZGlmeV90cmlnZ2VyZWRfY29sKCk7CitJTlNFUlQgSU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIG9ubHkgZGF0YSBjb2x1 bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uCistLSBTaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQgYW4gaW5kZXhlZCBjb2x1bW4KK1VQ REFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0g MTsKKy0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVwZGF0ZSAoaW5kZXhlZCBjb2x1bW4g d2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90cmlnZ2VyX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMSB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgdGhlIHRyaWdnZXJlZCBj b2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCitTRUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9N IGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOworIHRyaWdnZXJlZF9jb2wgCistLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMTAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90 X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVk X2NvbCgpOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSlNPTkIgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBKU09OQiBw YXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfanNvbmJfdGVzdCAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKKy0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lm aWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90X2pzb25iX25hbWVfaWR4IE9OIGhvdF9q c29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOworSU5TRVJUIElOVE8gaG90X2pzb25iX3Rl c3QgVkFMVUVTCisgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzAsImNpdHkiOiJO WUMifScpLAorICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoyNSwiY2l0eSI6IkxBIn0n KTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93 KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2UpIC0gc2hvdWxkIGJl IEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChuYW1lKSAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tu YW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29y a3MKK1NFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0IFdIRVJFIGRhdGEtPj4nbmFtZScg PSAnQWxpY2UyJzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCistLSBUZXN0IGpzb25i X2RlbGV0ZSBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0 cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAn Y2l0eScgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAzIHwgICAwCisoMSByb3cpCisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRl eGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDQgfCAgIDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVz dDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFhNTCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4g YmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBkb2MgeG1sCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CistLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVB VEUgSU5ERVggaG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3Bl cnNvbi9uYW1lL3RleHQoKScsIGRvYykpKTsKK0lOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKKyAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAorICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOworRVJST1I6ICBjb3VsZCBub3QgaWRlbnRpZnkgYSBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciB0eXBlIHhtbAorU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfeG1sX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBh dGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNr CistLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRo IHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCitVUERBVEUgaG90X3ht bF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9h Z2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF94bWxfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0K KyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2Mg PSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicg V0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAg MAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29ya3MKK1NFTEVDVCBpZCBGUk9NIGhv dF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBB UlJBWVsnQWxpY2UyJzo6dGV4dF07CitFUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0 OiB4bWxbXSA9IHRleHRbXQorTElORSAxOiAuLi5feG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9w ZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0EuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRB SUw6ICBObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1l bnQgdHlwZXMuCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUg Y2FzdHMuCitEUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2Fu IHVzZSBhbWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlz IG1hdGNoCitDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFS WSBLRVksCisgICAgdGFncyB0ZXh0W10sCisgICAgcHJvcGVydGllcyBqc29uYgorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKK0NSRUFU RSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRh Z3MpOworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CitJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVT CisgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXky IjoidmFsMiJ9JyksCisgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6 InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAg ICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9y ZGVyIGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUg SE9UCistLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIp CitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMSdd IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAg IDAKKygxIHJvdykKKworLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAtIGFmdGVy IGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKKy0tIGRlcGVuZGluZyBv biBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5cyBhbmQg dmFsdWVzKQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7ImtleTEi OiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDAKKygxIHJvdykKKworLS0gQWRkIG5ldyB0 YWcgLSBzaG91bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQorVVBE QVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFn NSddIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dp bl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMg fCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKK1NFTEVDVCBp ZCBGUk9NIGhvdF9naW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdI RVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5MSI6InZhbDFfbmV3In0nOworIGlkIAorLS0tLQor ICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90X2dpbl90ZXN0OworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQ2xlYW51cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMg aGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJp bnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRf aG90X2NvdW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA4ZmEwYTZjNDdmYi4uYmQ5NWNjMjQ5Nzcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTQzLDYgKzE0MywxMSBA QCB0ZXN0OiBldmVudF90cmlnZ2VyX2xvZ2luCiAjIHRoaXMgdGVzdCBhbHNvIHVzZXMgZXZl bnQgdHJpZ2dlcnMsIHNvIGxpa2V3aXNlIHJ1biBpdCBieSBpdHNlbGYKIHRlc3Q6IGZhc3Rf ZGVmYXVsdAogCisjIC0tLS0tLS0tLS0KKyMgSE9UIHVwZGF0ZXMgdGVzdHMKKyMgLS0tLS0t LS0tLQordGVzdDogaG90X3VwZGF0ZXMKKwogIyBydW4gdGFibGVzcGFjZSB0ZXN0IGF0IHRo ZSBlbmQgYmVjYXVzZSBpdCBkcm9wcyB0aGUgdGFibGVzcGFjZSBjcmVhdGVkIGR1cmluZwog IyBzZXR1cCB0aGF0IG90aGVyIHRlc3RzIG1heSB1c2UuCiB0ZXN0OiB0YWJsZXNwYWNlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmE4ODk0MDA2MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCkBAIC0wLDAgKzEsNjA1IEBACist LQorLS0gSE9UX1VQREFURVMKKy0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0 ZSBkZWNpc2lvbnMKKy0tCistLSBUaGlzIHRlc3Qgc3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMg dGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJvcHJpYXRlCistLSBhbmQgYXZv aWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRleGVkIGNvbHVtbnMgYXJlIG1v ZGlmaWVkKS4KKy0tCistLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgor LS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZCkKKy0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1p bmF0aW9uCistLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRh dGVzCistLQorCistLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMKK0NSRUFURSBFWFRFTlNJ T04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IEhP VCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291 bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5U LAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQKK0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitC RUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJl YWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5zYWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIElu IGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMg d29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAo QkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBm bHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGlj aXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShw Z19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp OworICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworCistLSBDaGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2Yg YSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9uIHNhbWUgcGFnZSkKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgdGFyZ2V0 X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgIGJsb2NrX251 bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHRh cmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBMb29rIGZvciBhIGRp ZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91ciB0YXJn ZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3Ms IHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFt ZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0 aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAg QU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScp Ojp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9PUAorICAgIFJFVFVSTiB0cnVlOworICBFTkQg TE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor CistLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRl eHQsIHN0YXJ0X2N0aWQgdGlkKQorUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQs IGN0aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVh bikgQVMKKyQkCisjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgorREVDTEFSRQorICBi bG9ja19udW0gaW50OworICBsaW5lX3B0ciBpbnQ7CisgIGN1cnJlbnRfY3RpZCB0aWQgOj0g c3RhcnRfY3RpZDsKKyAgbmV4dF9jdGlkIHRpZDsKKyAgcG9zaXRpb24gaW50IDo9IDA7Cisg IG1heF9pdGVyYXRpb25zIGludCA6PSAxMDA7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CisgIGZv dW5kX3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7CisgIGZsYWdzX25hbWUgdGV4dDsK K0JFR0lOCisgIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0 byBvdXIgc3RhcnRfY3RpZCkKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwg bHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAg IEFORCB0X2N0aWQgPSBzdGFydF9jdGlkCisgIExPT1AKKyAgICBjdXJyZW50X2N0aWQgOj0g KCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8 fCAnKScpOjp0aWQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICBFWElU OworICBFTkQgTE9PUDsKKworICAtLSBJZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQg d2l0aCB0aGUgZ2l2ZW4gY3RpZAorICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgor ICAgIGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOworICBFTkQgSUY7CisKKyAgLS0gRm9s bG93IHRoZSBjaGFpbiBmb3J3YXJkCisgIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlv bnMgTE9PUAorICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworCisgICAgRk9SIHBhZ2VfaXRlbSBJTgorICAgICAgU0VMRUNUIGxwLCBscF9m bGFncywgdF9jdGlkCisgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2Uo cmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAg TE9PUAorICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCisgICAgICBmbGFnc19uYW1l IDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCisgICAgICAgIFdIRU4gMCBUSEVOICd1bnVz ZWQgKDApJworICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMp JworICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4 dCB8fCAnKScKKyAgICAgIEVORDsKKworICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAg ICAgICBwb3NpdGlvbiwKKyAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICBmbGFnc19u YW1lLAorICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAocGFnZV9pdGVtLnRf Y3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQpOjpib29s ZWFuCisgICAgICA7CisKKyAgICAgIElGIHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KKyAgICAgICAgUkVUVVJOOwor ICAgICAgRU5EIElGOworCisgICAgICBuZXh0X2N0aWQgOj0gcGFnZV9pdGVtLnRfY3RpZDsK KworICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgUkVUVVJOOworICAgICAgRU5EIElGOworCisgICAgICBjdXJy ZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAx OworICAgIEVORCBMT09QOworCisgICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgIFJF VFVSTjsKKyAgICBFTkQgSUY7CisgIEVORCBMT09QOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKKworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVt bikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9p ZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgz LCAzMDAsICdpbml0aWFsJyk7CisKKy0tIEdldCBiYXNlbGluZQorU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBTaG91bGQgYmUgSE9UIHVwZGF0ZXMg KG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQorVVBEQVRFIGhvdF90ZXN0IFNF VCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKK1VQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7 CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hF UkUgaWQgPSAzOworCistLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gRHVtcCB0aGUgSE9UIGNo YWluIGJlZm9yZSBWQUNVVU1pbmcKK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hv dF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwK KyAgY2hhaW5fcG9zaXRpb24sCisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFn cywKKyAgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9j aGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworCistLSBWYWN1dW0gdGhl IHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQorVkFDVVVNIGhv dF90ZXN0OworCistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVt CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAor ICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBj dXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKTsKKworLS0gTm9uLUhPVCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVk IGNvbHVtbikKK1VQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBp bmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworU0VM RUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTUwOworCistLSBWZXJpZnkgb2xkIHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAorRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2Nv bCA9IDEwMDsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5 OiB1cGRhdGluZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0 ZXMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQs CisgICAgY29sX2MgaW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xf Yik7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwor CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFs Jyk7CisKKy0tIFVwZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVz ZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkCistLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVz IG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCitVUERBVEUgaG90X3Rl c3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworCistLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQg Y29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhl ZCA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRp Y2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisK K0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHN0YXR1cyB0ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworCistLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCitD UkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdI RVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1 bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5nZWQpCist LSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEn IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAo b3V0c2lkZSBwcmVkaWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Qg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFj dGl2ZScgdG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQorLS0gUG9zdGdy ZVNRTCBpcyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRp Y2F0ZSBjaGVjaworLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFs dWVzIGFyZSBvdXRzaWRlIHByZWRpY2F0ZQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMg PSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3Rp dmUnIHJvd3MKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7CisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24g bm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBo b3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwK KyAgICB2YWx1ZSBpbnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworCistLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmlu X2NvbCA9IDIwMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IGFsc28gYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0g VE9BU1QgYW5kIEhPVDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QK K0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90 ZXh0IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9j b2wpOworCistLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQorSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAn c21hbGwnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4g LSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBk YXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0t IFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1 bW4gdW5jaGFuZ2VkCitVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQo J3knLCAzMDAwKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK KworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFU RSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUg aW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhvdF90ZXN0 OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnZGF0 YTInKTsKKworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkCitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBo b3RfdGVzdCBPUkRFUiBCWSBpZDsKKworLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZp b2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBp ZCA9IDI7CisKKy0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBu b24tSE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2Ig aW50LAorICAgIGNvbF9jIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChj b2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAy MCwgMzAsICdkYXRhJyk7CisKKy0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1 bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29s X2EgPSAxNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUmVzZXQKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKworLS0gVXBkYXRl IGNvbF9iIChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNF VCBjb2xfYiA9IDIwOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKworLS0gVXBkYXRlIGRhdGEgKG5vdCBp bmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1 cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKK0RS T1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CisKK0NS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAorICAgIHBh cnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQs CisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkg UkFOR0UgKHBhcnRpdGlvbl9rZXkpOworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDEg UEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZP UiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBW QUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Rf cGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7CisKKy0tIFVw ZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBI T1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScg V0hFUkUgaWQgPSAxOworCistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVk IGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdF9wYXJ0MicpOworCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9u IHBhcnRpdGlvbnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9u ZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVt biBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisKKy0tIFZlcmlmeSBp bmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9U CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5 IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCistLSBo ZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4g dGhlIFVQREFURSdzIFNFVCBjbGF1c2UKKworQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwK KyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElO REVYIGhvdF90cmlnZ2VyX2lkeCBPTiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wp OworCistLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1 bW4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkK K1JFVFVSTlMgVFJJR0dFUiBBUyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9 IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkK KyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7CisKK0lO U0VSVCBJTlRPIGhvdF90cmlnZ2VyX3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7 CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwor CistLSBVcGRhdGUgb25seSBkYXRhIGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5k ZXhlZCBjb2x1bW4KKy0tIFNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2Rp ZmllZCBhbiBpbmRleGVkIGNvbHVtbgorVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRh dGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworCistLSBWZXJpZnkgaXQgd2FzIE5PVCBh IEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisKKy0t IFZlcmlmeSB0aGUgdHJpZ2dlcmVkIGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKK1NF TEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7 CisKK0RST1AgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElP TiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBKU09OQiBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tp bmcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRv IG5vbi1pbmRleGVkIEpTT05CIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworCitDUkVBVEUg VEFCTEUgaG90X2pzb25iX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBk YXRhIGpzb25iCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIENyZWF0ZSBleHBy ZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90 X2pzb25iX25hbWVfaWR4IE9OIGhvdF9qc29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwor CitJTlNFUlQgSU5UTyBob3RfanNvbmJfdGVzdCBWQUxVRVMKKyAgICAoMSwgJ3sibmFtZSI6 IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6Ik5ZQyJ9JyksCisgICAgKDIsICd7Im5hbWUiOiJC b2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09O IHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBE QVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScs ICczMScpIFdIRVJFIGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfanNvbmJfdGVzdCcpOworCistLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0t IFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hF UkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworCistLSBUZXN0IGpzb25iX2RlbGV0ZSBv biBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRp b24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hF UkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90 ZXN0Jyk7CisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRleGVkIHBhdGggLSBz aG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90 ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSIn KSBXSEVSRSBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0 dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0 aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRl cworCitDUkVBVEUgVEFCTEUgaG90X3htbF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZG9jIHhtbAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCistLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVBVEUgSU5ERVgg aG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1l L3RleHQoKScsIGRvYykpKTsKKworSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwor ICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJz b24+JyksCisgICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+ PC9wZXJzb24+Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90 ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9y IGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKKy0tIEZ1bGwgWE1MIHZhbHVl IHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1 aXJlIGluZGV4IGNvbXBhcmlzb24KK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8 cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJF IGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3Qn KTsKKworLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNl MjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBp bmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKKwor RFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBh bWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNo CisKK0NSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICB0YWdzIHRleHRbXSwKKyAgICBwcm9wZXJ0aWVzIGpzb25iCispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKKy0tIEdJTiBpbmRleCBvbiB0ZXh0IGFycmF5CitDUkVBVEUg SU5ERVggaG90X2dpbl90YWdzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luICh0YWdz KTsKKworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CisKK0lOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKKyAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKKyAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfZ2luX3Rlc3QnKTsKKworLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3Jk ZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBI T1QKKy0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikK K1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJ10g V0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5f dGVzdCcpOworCistLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0ZXIgYW1j b21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAorLS0gZGVwZW5kaW5nIG9uIEdJ TiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFuZCB2YWx1 ZXMpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5MSI6InZh bDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOworCistLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCitVUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOworCistLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yaworU0VMRUNUIGlkIEZST00gaG90 X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKK1NFTEVDVCBpZCBGUk9N IGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7ImtleTEiOiJ2YWwxX25ldyJ9 JzsKKworRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIENsZWFudXAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFC TEUgSUYgRVhJU1RTIGhvdF90ZXN0OworRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Rf cGFydGl0aW9uZWQgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3Rf Y2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9j aGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3Vu dCh0ZXh0KTsKK0RST1AgRVhURU5TSU9OIHBhZ2VpbnNwZWN0OwotLSAKMi41MC4xCgo= --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAyYThhOWYwNWJhZmViZWM5YjY1ZjhkMTU3NDc0MWI2ZWY2ZmFmNDMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDIv OV0gSWRlbnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRv cgogb24gVVBEQVRFCgpSZWZhY3RvciBleGVjdXRvciB1cGRhdGUgbG9naWMgdG8gZGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgY29sdW1ucyBoYXZlCmFjdHVhbGx5IGNoYW5nZWQgZHVyaW5n IGFuIFVQREFURSBvcGVyYXRpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGlzIHVwCnRvIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGluIGhlYXBfdXBkYXRlKCkuIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXM7CndoYXQgbW92ZXMgdG8gdGhlIGV4ZWN1dG9yIGlzIG9ubHkgdGhl IGRldGVybWluYXRpb24gb2YgdGhlICJtb2RpZmllZAppbmRleGVkIGF0dHJpYnV0ZXMiICht b2RpZmllZF9pZHhfYXR0cnMpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSByZXBs YWNlcyBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSBhbmQgaXMKY2FsbGVkIGJlZm9yZSB0 YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYW4K ZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9sZHMgdGhlIHR1cGxl IGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUgYnVmZmVyIGxvY2sg aXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFuZCBoZWFwX3Vw ZGF0ZSgpLgoKQmVzaWRlcyBpZGVudGlmeWluZyB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcwpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSB3YXMgYWxzbyBwYXJ0 aWFsbHkgcmVzcG9uc2libGUgZm9yIHRoZQpkZWNpc2lvbiBhYm91dCB3aGF0IHRvIFdBTCBs b2cgZm9yIHRoZSByZXBsaWNhIGlkZW50aXR5IGtleS4gVGhhdCBsb2dpYwptb3ZlcyBpbnRv IGhlYXBfdXBkYXRlKCkgYW5kIGludG8gdGhlIHJlcGxhY2VtZW50IGhlbHBlcgpIZWFwVXBk YXRlTW9kaWZpZWRJZHhBdHRycygpLCBzbyBzaW1wbGVfaGVhcF91cGRhdGUoKSBhbmQKaGVh cGFtX3R1cGxlX3VwZGF0ZSgpIHNoYXJlIHRoZSBzYW1lIGxvZ2ljIHNpbmNlIGJvdGggY2Fs bCBpbnRvCmhlYXBfdXBkYXRlKCkuCgpVcGRhdGVzIHN0ZW1taW5nIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBhbHNvIHVzZSB0aGUgbmV3CkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJz KCkgaW4gRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKCkuCgpFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycygpIHVzZXMgRXhlY0NvbXBhcmVTbG90QXR0cnMoKSB0byBpZGVudGlmeQp3aGlj aCBhdHRyaWJ1dGVzIGhhdmUgY2hhbmdlZCBhbmQgdGhlbiBpbnRlcnNlY3RzIHRoYXQgd2l0 aCB0aGUgc2V0IG9mCmluZGV4ZWQgYXR0cmlidXRlcyB0byBpZGVudGlmeSB0aGUgbW9kaWZp ZWQgaW5kZXhlZCBzZXQsIHRoZQptb2RpZmllZF9pZHhfYXR0cnMuCgpUaGlzIHBhdGNoIGlu dHJvZHVjZXMgYSBmZXcgaGVscGVyIGZ1bmN0aW9ucyB0byByZWR1Y2UgY29kZSBkdXBsaWNh dGlvbgphbmQgaW5jcmVhc2UgcmVhZGFiaWxpdHk6IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUo KSBhbmQKSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCksIHVzZWQgaW4gYm90aCBoZWFw X3VwZGF0ZSgpIGFuZApzaW1wbGVfaGVhcF91cGRhdGUoKS4KCmhlYXBfdXBkYXRlKCkgaXMg bm93IGNhbGxlZCB3aXRoIGxvY2ttb2RlIHByZS1kZXRlcm1pbmVkIGFuZCBhIGJvb2xlYW4K aW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1cGRhdGUgbWF5IGJlIEhPVCwgYm90aCBjb25zdC4g SWYgZHVyaW5nCmhlYXBfdXBkYXRlKCkgdGhlIG5ldyB0dXBsZSBmaXRzIG9uIHRoZSBzYW1l IHBhZ2UgYW5kIHRoYXQgYm9vbGVhbiBpcwp0cnVlLCB0aGUgdXBkYXRlIGlzIEhPVC4gU28g YWx0aG91Z2ggdGhlIGZ1bmN0aW9ucyBhbmQgdGltaW5nIG9mIHRoZQpIT1QgZGVjaXNpb24g Y29kZSBoYXZlIGNoYW5nZWQsIG5vbmUgb2YgdGhlIGxvZ2ljIGdvdmVybmluZyB3aGVuIEhP VCBpcwphbGxvd2VkIGhhcyBjaGFuZ2VkLgoKRGV2ZWxvcG1lbnQgb2YgdGhpcyBmZWF0dXJl IGV4cG9zZWQgbm9uZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciBpbiB0aHJlZQpleGlzdGluZyB0 ZXN0cywgd2hpY2ggaGF2ZSBiZWVuIGFkanVzdGVkIHRvIGF2b2lkIGluY29uc2lzdGVudCBy ZXN1bHRzCmR1ZSB0byB0dXBsZSBvcmRlcmluZyBkdXJpbmcgaGVhcCBwYWdlIHNjYW5zLgoK QXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpEaXNjdXNzaW9uOiBodHRw czovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTU1Ni8KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0Lzc4NTc0QjI0LUJF MEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQyU0MGFtYXpvbi5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0NjMgKysrKysrKysrKysr LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAg fCAgMzQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAg ICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyAgICAg ICAgICAgICB8ICA3MCArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jICAgICAgICB8ICA4OCArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQogLi4uL3NwZWNzL3N5c2NhY2hl LXVwZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwgICA2ICstCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgIDQgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAgMiArLQog MjMgZmlsZXMgY2hhbmdlZCwgNTg3IGluc2VydGlvbnMoKyksIDIyNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGFiZmQ4ZTg5NzBhLi5kYzMwN2Vi NmRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDYgKzM3LDggQEAK ICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRy YW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNz L3N5c2F0dHIuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy92YWxpZC5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKQEAgLTQ0LDggKzQ2LDExIEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC01Myw2ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgor I2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC03MCwxMSArNzYsOCBAQCBz dGF0aWMgdm9pZCBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRp b24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0aWMg dm9pZCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApOwogI2VuZGlm Ci1zdGF0aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24g cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAot CQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCQkJCQkgICBI ZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCQkJCSAgIGJvb2wg Kmhhc19leHRlcm5hbCk7CitzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJIEhlYXBUdXBsZSBvbGR0 dXAsIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxv Y2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJ CQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwK IAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMTkwLDcgKzMxOTMsNyBA QCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAg KiBTZWUgdGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBw YXJhbWV0ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2Vz IGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5 IHRha2VzIGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4gdGhl IGZhaWx1cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1cGxl J3MgdF9jdGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3Qs IGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMjAwLDE3ICszMjAz LDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAs CiAJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2Vk KCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0Owog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKLQlCaXRt YXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJpdG1hcHNl dCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQgICpp bnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKKwlCaXRt YXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqaWRfYXR0cnM7CiAJSXRlbUlkCQlscDsKIAlI ZWFwVHVwbGVEYXRhIG9sZHR1cDsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKQEAgLTMyMzEsMTMg KzMyMzAsMTIgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxl X2xvY2sgPSBmYWxzZTsKIAlib29sCQlpc2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRl ID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXplZF91cGRhdGUgPSBmYWxzZTsKIAlib29sCQlr ZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIAlib29s CQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRfbG9j a2VyczsKIAlib29sCQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwg PSBmYWxzZTsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJVHJhbnNh Y3Rpb25JZCB4bWF4X25ld190dXBsZSwKIAkJCQl4bWF4X29sZF90dXBsZTsKIAl1aW50MTYJ CWluZm9tYXNrX29sZF90dXBsZSwKQEAgLTMyNjgsMzMgKzMyNjYsMTggQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKICNlbmRpZgogCiAJLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBh dHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkgKgot CSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3 ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24g YSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNvbXB1dGUgdGhlCi0JICogbGlzdCBi ZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2FzZSwgaWYg d2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lz dGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRj aCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUKLQkgKiBjYWNo ZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KLQkgKgotCSAq IFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkgYW5k IGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGlu IHRoZSB0YWJsZS4KKwkgKiBGZXRjaCB0aGUgYXR0cmlidXRlcyB1c2VkIGFjcm9zcyBhbGwg aW5kZXhlcyBvbiB0aGlzIHJlbGF0aW9uIGFzIHdlbGwKKwkgKiBhcyB0aGUgcmVwbGljYSBp ZGVudGl0eSBhbmQgY29sdW1ucy4KIAkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVz IG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJlbGNh Y2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBJ TkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQpOwotCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICBJTkRF WF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCWludGVyZXN0aW5nX2F0dHJzID0gTlVM TDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVy cyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9 IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsKLQlpbnRl cmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaWRf YXR0cnMpOworCSAqIE5vdGU6IFdlIG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZvcmUgb2J0 YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0aGUKKwkgKiB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUg ZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtCisJICogY2F0 YWxvZ3MsIHdlIGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBs YXRlci4gS2VlcCBpbgorCSAqIG1pbmQgdGhhdCByZWxjYWNoZSByZXR1cm5zIGNvcGllcyBv ZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkKKwkgKiBhYm91dCByZWxjYWNo ZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1dCB3ZSBkbyBuZWVkIHRvIGZy ZWUKKwkgKiB0aGVtLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlpZF9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJ VE1BUF9JREVOVElUWV9LRVkpOwogCiAJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVt YmVyKG90aWQpOwogCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIs IE5VTEwpOwpAQCAtMzM0OCwyMCArMzMzMSwxNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRhdGVf aW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRf YXR0cnMpOwotCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCi0J CWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIsIGRvbid0 IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gVE1fRGVsZXRlZDsKIAl9CiAKIAkvKgotCSAqIEZp bGwgaW4gZW5vdWdoIGRhdGEgaW4gb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8gdG8gd29yawotCSAqIHByb3Blcmx5LgorCSAqIEZpbGwgaW4gZW5vdWdoIGRhdGEgaW4g b2xkdHVwIHRvIGRldGVybWluZSByZXBsaWNhIGlkZW50aXR5IGF0dHJpYnV0ZQorCSAqIHJl cXVpcmVtZW50cy4KIAkgKi8KIAlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsYXRpb24pOwogCW9sZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdl R2V0SXRlbShwYWdlLCBscCk7CkBAIC0zMzcyLDE2ICszMzUyLDU5IEBAIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCiAJbmV3dHVwLT50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbik7CiAKIAkvKgotCSAqIERldGVybWluZSBjb2x1bW5zIG1vZGlmaWVkIGJ5IHRo ZSB1cGRhdGUuICBBZGRpdGlvbmFsbHksIGlkZW50aWZ5Ci0JICogd2hldGhlciBhbnkgb2Yg dGhlIHVubW9kaWZpZWQgcmVwbGljYSBpZGVudGl0eSBrZXkgYXR0cmlidXRlcyBpbiB0aGUK LQkgKiBvbGQgdHVwbGUgaXMgZXh0ZXJuYWxseSBzdG9yZWQgb3Igbm90LiAgVGhpcyBpcyBy ZXF1aXJlZCBiZWNhdXNlIGZvcgotCSAqIHN1Y2ggYXR0cmlidXRlcyB0aGUgZmxhdHRlbmVk IHZhbHVlIHdvbid0IGJlIFdBTCBsb2dnZWQgYXMgcGFydCBvZiB0aGUKLQkgKiBuZXcgdHVw bGUgc28gd2UgbXVzdCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUu ICBTZWUKLQkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5LgorCSAqIEV4dHJhY3RSZXBsaWNh SWRlbnRpdHkoKSBuZWVkcyB0byBrbm93IGlmIGEgbW9kaWZpZWQgaW5kZXhlZCBhdHRyYnV0 ZQorCSAqIGlzIHVzZWQgYXMgYSByZXBsaWNhIGluZGVudGl0eSBvciBpZiBhbnkgb2YgdGhl IHJlcGxpY2EgaWRlbnRpdHkKKwkgKiBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2VkIGluIGFu IGluZGV4LCB1bm1vZGlmaWVkLCBhbmQgYXJlIHN0b3JlZAorCSAqIGV4dGVybmFsbHkgaW4g dGhlIG9sZCB0dXBsZSBiZWluZyByZXBsYWNlZC4gIEluIHRob3NlIGNhc2VzIGl0IG1heSBi ZQorCSAqIG5lY2Vzc2FyeSB0byBXQUwgbG9nIHRoZW0gdG8gc28gdGhleSBhcmUgYXZhaWxh YmxlIHRvIHJlcGxpY2FzLgogCSAqLwotCW1vZGlmaWVkX2F0dHJzID0gSGVhcERldGVybWlu ZUNvbHVtbnNJbmZvKHJlbGF0aW9uLCBpbnRlcmVzdGluZ19hdHRycywKLQkJCQkJCQkJCQkJ ICBpZF9hdHRycywgJm9sZHR1cCwKLQkJCQkJCQkJCQkJICBuZXd0dXAsICZpZF9oYXNfZXh0 ZXJuYWwpOworCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBibXNfb3ZlcmxhcChtb2RpZmllZF9p ZHhfYXR0cnMsIGlkX2F0dHJzKTsKKwlpZiAoIXJlcF9pZF9rZXlfcmVxdWlyZWQpCisJewor CQlCaXRtYXBzZXQgICphdHRyczsKKwkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdl dERlc2NyKHJlbGF0aW9uKTsKKwkJaW50CQkJYXR0aWR4ID0gLTE7CisKKwkJLyoKKwkJICog UmVkdWNlIHRoZSBzZXQgdW5kZXIgcmV2aWV3IHRvIG9ubHkgdGhlIHVubW9kaWZpZWQgaW5k ZXhlZCByZXBsaWNhCisJCSAqIGlkZW50aXR5IGtleSBhdHRyaWJ1dGVzLiAgaWR4X2F0dHJz IGlzIGNvcGllZCAoYnkgYm1zX2RpZmZlcmVuY2UoKSkKKwkJICogbm90IG1vZGlmaWVkIGhl cmUuCisJCSAqLworCQlhdHRycyA9IGJtc19kaWZmZXJlbmNlKGlkeF9hdHRycywgbW9kaWZp ZWRfaWR4X2F0dHJzKTsKKwkJYXR0cnMgPSBibXNfaW50X21lbWJlcnMoYXR0cnMsIGlkX2F0 dHJzKTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0 aWR4KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBh dHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlBdHRy TnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkvKgor CQkJICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FUVFJf QklUTUFQX0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLworCQkJ QXNzZXJ0KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9sZHR1 cCwgYXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8gY2hl Y2sgYXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJCQlp ZiAoaXNudWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51 bSAtIDEpLT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNrIGlm IHRoZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJ CWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0UG9p bnRlcih2YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAogCS8q CiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNhbiBn cmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KQEAgLTMzOTQsOSArMzQxNyw4IEBAIGhlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxhdGUg a2V5IGNvbHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2 ZSBhdCB0aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAobW9k aWZpZWRfYXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5v S2V5RXhjbHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNp dmU7CiAJCW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwogCQlr ZXlfaW50YWN0ID0gdHJ1ZTsKIApAQCAtMzQxMyw3ICszNDM1LDcgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1 cGxlIG5ld3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlRXhj bHVzaXZlOworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsKIAkJ bXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0ID0g ZmFsc2U7CiAJfQpAQCAtMzQ5Miw3ICszNTE0LDcgQEAgbDI6CiAJCQlib29sCQljdXJyZW50 X2lzX21lbWJlciA9IGZhbHNlOwogCiAJCQlpZiAoRG9lc011bHRpWGFjdElkQ29uZmxpY3Qo KE11bHRpWGFjdElkKSB4d2FpdCwgaW5mb21hc2ssCi0JCQkJCQkJCQkJKmxvY2ttb2RlLCAm Y3VycmVudF9pc19tZW1iZXIpKQorCQkJCQkJCQkJCWxvY2ttb2RlLCAmY3VycmVudF9pc19t ZW1iZXIpKQogCQkJewogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxP Q0spOwogCkBAIC0zNTAxLDcgKzM1MjMsNyBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5nIGEg bG9jayBhbmQgYWxyZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkgKi8K IAkJCQlpZiAoIWN1cnJlbnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9j ayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFwX2Fj cXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUsCiAJ CQkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJLyog d2FpdCBmb3IgbXVsdGl4YWN0ICovCkBAIC0zNTg2LDcgKzM2MDgsNyBAQCBsMjoKIAkJCSAq IGxvY2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxP Q0spOwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2Vs ZiksICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9s ZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZl X3R1cGxlX2xvY2spOwogCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0aW9uLCAm b2xkdHVwLnRfc2VsZiwKIAkJCQkJCQkgIFhMVFdfVXBkYXRlKTsKQEAgLTM2NDYsMTcgKzM2 NjgsMTQgQEAgbDI6CiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQotCQkJ VW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21v ZGUpOworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYp LCBsb2NrbW9kZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQogCQkJUmVs ZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAK LQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQkJYm1z X2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMpOwotCQlibXNfZnJlZSht b2RpZmllZF9hdHRycyk7Ci0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1z X2ZyZWUoaWR4X2F0dHJzKTsKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5 IHRoZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gcmVzdWx0OwogCX0K IApAQCAtMzY4Niw3ICszNzA1LDcgQEAgbDI6CiAJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFz ayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCSAg b2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRf aW5mb21hc2syLAotCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIHRydWUsCisJCQkJCQkJICB4 aWQsIGxvY2ttb2RlLCB0cnVlLAogCQkJCQkJCSAgJnhtYXhfb2xkX3R1cGxlLCAmaW5mb21h c2tfb2xkX3R1cGxlLAogCQkJCQkJCSAgJmluZm9tYXNrMl9vbGRfdHVwbGUpOwogCkBAIC0z ODAzLDcgKzM4MjIsNyBAQCBsMjoKIAkJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFw VHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCQkgIG9sZHR1 cC50X2RhdGEtPnRfaW5mb21hc2ssCiAJCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZv bWFzazIsCi0JCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIGZhbHNlLAorCQkJCQkJCQkgIHhp ZCwgbG9ja21vZGUsIGZhbHNlLAogCQkJCQkJCQkgICZ4bWF4X2xvY2tfb2xkX3R1cGxlLCAm aW5mb21hc2tfbG9ja19vbGRfdHVwbGUsCiAJCQkJCQkJCSAgJmluZm9tYXNrMl9sb2NrX29s ZF90dXBsZSk7CiAKQEAgLTM5NzYsMjAgKzM5OTUsOCBAQCBsMjoKIAkJICogdG8gZG8gYSBI T1QgdXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVl bgogCQkgKiBjaGFuZ2VkLgogCQkgKi8KLQkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmllZF9h dHRycywgaG90X2F0dHJzKSkKLQkJeworCQlpZiAoaG90X2FsbG93ZWQpCiAJCQl1c2VfaG90 X3VwZGF0ZSA9IHRydWU7Ci0KLQkJCS8qCi0JCQkgKiBJZiBub25lIG9mIHRoZSBjb2x1bW5z IHRoYXQgYXJlIHVzZWQgaW4gaG90LWJsb2NraW5nIGluZGV4ZXMKLQkJCSAqIHdlcmUgdXBk YXRlZCwgd2UgY2FuIGFwcGx5IEhPVCwgYnV0IHdlIGRvIHN0aWxsIG5lZWQgdG8gY2hlY2sK LQkJCSAqIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLCBh bmQgdXBkYXRlIHRob3NlCi0JCQkgKiBpbmRleGVzIGlmIHRoZSBjb2x1bW5zIHdlcmUgdXBk YXRlZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0Ci0JCQkgKiBlLmcuIHZhbHVlIGJvdW5k IGNoYW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KLQkJCSAqLwotCQkJaWYgKGJtc19v dmVybGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQotCQkJCXN1bW1hcml6ZWRfdXBk YXRlID0gdHJ1ZTsKLQkJfQogCX0KIAllbHNlCiAJewpAQCAtNDAwNSw4ICs0MDEyLDcgQEAg bDI6CiAJICogY29sdW1ucyBhcmUgbW9kaWZpZWQgb3IgaXQgaGFzIGV4dGVybmFsIGRhdGEu CiAJICovCiAJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkocmVsYXRp b24sICZvbGR0dXAsCi0JCQkJCQkJCQkJICAgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMs IGlkX2F0dHJzKSB8fAotCQkJCQkJCQkJCSAgIGlkX2hhc19leHRlcm5hbCwKKwkJCQkJCQkJ CQkgICByZXBfaWRfa2V5X3JlcXVpcmVkLAogCQkJCQkJCQkJCSAgICZvbGRfa2V5X2NvcGll ZCk7CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFy ZSBsb2dnZWQgKi8KQEAgLTQxMzYsNyArNDE0Miw3IEBAIGwyOgogCSAqIFJlbGVhc2UgdGhl IGxtZ3IgdHVwbGUgbG9jaywgaWYgd2UgaGFkIGl0LgogCSAqLwogCWlmIChoYXZlX3R1cGxl X2xvY2spCi0JCVVubG9ja1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxm KSwgKmxvY2ttb2RlKTsKKwkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1 cC50X3NlbGYpLCBsb2NrbW9kZSk7CiAKIAlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVs YXRpb24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVmZmVyKTsKIApAQCAtNDE1MCwz MSArNDE1NiwxMiBAQCBsMjoKIAkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CiAJfQogCi0J LyoKLQkgKiBJZiBpdCBpcyBhIEhPVCB1cGRhdGUsIHRoZSB1cGRhdGUgbWF5IHN0aWxsIG5l ZWQgdG8gdXBkYXRlIHN1bW1hcml6ZWQKLQkgKiBpbmRleGVzLCBsZXN0IHdlIGZhaWwgdG8g dXBkYXRlIHRob3NlIHN1bW1hcmllcyBhbmQgZ2V0IGluY29ycmVjdAotCSAqIHJlc3VsdHMg KGZvciBleGFtcGxlLCBtaW5tYXggYm91bmRzIG9mIHRoZSBibG9jayBtYXkgY2hhbmdlIHdp dGggdGhpcwotCSAqIHVwZGF0ZSkuCi0JICovCi0JaWYgKHVzZV9ob3RfdXBkYXRlKQotCXsK LQkJaWYgKHN1bW1hcml6ZWRfdXBkYXRlKQotCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3Vt bWFyaXppbmc7Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7Ci0JfQot CWVsc2UKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOwotCiAJaWYgKG9sZF9rZXlfdHVw bGUgIT0gTlVMTCAmJiBvbGRfa2V5X2NvcGllZCkKIAkJaGVhcF9mcmVldHVwbGUob2xkX2tl eV90dXBsZSk7CiAKLQlibXNfZnJlZShob3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9hdHRy cyk7Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAlibXNfZnJlZShpZF9hdHRycyk7Ci0JYm1z X2ZyZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsK KwlibXNfZnJlZShpZHhfYXR0cnMpOworCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBpcyBvd25l ZCBieSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICovCiAKIAlyZXR1cm4gVE1fT2s7CiB9 CkBAIC00MzQ3LDI4ICs0MzM0LDExNSBAQCBoZWFwX2F0dHJfZXF1YWxzKFR1cGxlRGVzYyB0 dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1ZTIsCiB9CiAK IC8qCi0gKiBDaGVjayB3aGljaCBjb2x1bW5zIGFyZSBiZWluZyB1cGRhdGVkLgotICoKLSAq IEdpdmVuIGFuIHVwZGF0ZWQgdHVwbGUsIGRldGVybWluZSAoYW5kIHJldHVybiBpbnRvIHRo ZSBvdXRwdXQgYml0bWFwc2V0KSwKLSAqIGZyb20gdGhvc2UgbGlzdGVkIGFzIGludGVyZXN0 aW5nLCB0aGUgc2V0IG9mIGNvbHVtbnMgdGhhdCBjaGFuZ2VkLgotICoKLSAqIGhhc19leHRl cm5hbCBpbmRpY2F0ZXMgaWYgYW55IG9mIHRoZSB1bm1vZGlmaWVkIGF0dHJpYnV0ZXMgKGZy b20gdGhvc2UKLSAqIGxpc3RlZCBhcyBpbnRlcmVzdGluZykgb2YgdGhlIG9sZCB0dXBsZSBp cyBhIG1lbWJlciBvZiBleHRlcm5hbF9jb2xzIGFuZCBpcwotICogc3RvcmVkIGV4dGVybmFs bHkuCisgKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRoZXI6IGEpIHRoZXJl IGFyZSBubyBtb2RpZmllZCBpbmRleGVkCisgKiBhdHRyaWJ1dGVzLCBvciBiKSB0aGUgbW9k aWZpZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGluZGV4ZXMuCisgKiBM YXRlciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBwZXJmb3JtIGEgSE9U IHVwZGF0ZSBpZiB0aGVyZSBpcworICogc3BhY2Ugb24gdGhlIHBhZ2UgZm9yIHRoZSBuZXcg dHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5lZAorICogdGhhdCBI T1QgaXMgYWxsb3dlZC4KKyAqLworYm9vbAorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJ CQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSkKK3sKKwlib29sCQlob3RfYWxsb3dlZDsK KworCS8qCisJICogTGV0J3MgYmUgb3B0aW1pc3RpYyBhbmQgc3RhcnQgb2ZmIGJ5IGFzc3Vt aW5nIHRoZSBiZXN0IGNhc2UsIG5vIGluZGV4ZXMKKwkgKiBuZWVkIHVwZGF0aW5nIGFuZCBI T1QgaXMgYWxsb3dhYmxlLgorCSAqLworCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkqc3VtbWFy aXplZF9vbmx5ID0gZmFsc2U7CisKKwkvKgorCSAqIENoZWNrIGZvciBjYXNlIChhKTsgd2hl biB0aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBIT1QgaXMKKwkgKiBh bGxvd2VkLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJzKSkK KwkJaG90X2FsbG93ZWQgPSB0cnVlOworCWVsc2UKKwl7CisJCUJpdG1hcHNldCAgKnN1bV9h dHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJ CQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEKTsKKworCQkvKgorCQkgKiBB dCBsZWFzdCBvbmUgaW5kZXggYXR0cmlidXRlIHdhcyBtb2RpZmllZCwgYnV0IGlzIHRoaXMg Y2FzZSAoYikKKwkJICogd2hlcmUgYWxsIHRoZSBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVz IGFyZSBvbmx5IHVzZWQgYnkKKwkJICogc3VtbWFyaXppbmcgaW5kZXhlcz8gIElmIGl0IGlz LCB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRob3NlCisJCSAqIGluZGV4ZXMsIGJ1dCB0aGlz IHVwZGF0ZSBjYW4gc3RpbGwgYmUgY29uc2lkZXJlZCBoZWFwLW9ubHkgKEhPVCkKKwkJICog YW5kIGF2b2lkIHVwZGF0aW5nIGFueSBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBvbiB0aGUg cmVsYXRpb24uCisJCSAqLworCQlpZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhfYXR0 cnMsIHN1bV9hdHRycykpCisJCXsKKwkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkJCSpzdW1t YXJpemVkX29ubHkgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE5v dyB3ZSBrbm93IGEpIG9uZSBvciBtb3JlIGluZGV4ZWQgYXR0cmlidXRlcyB3ZXJlIG1vZGlm aWVkCisJCQkgKiAoY2hhbmdlZCB2YWx1ZSwgbm90IGp1c3QgcmVmZXJlbmNlZCB3aXRoaW4g dGhlIFVQREFURSkgYW5kIHRoYXQKKwkJCSAqIGIpIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBh dHRyaWJ1dGVzIGlzIHVzZWQgYnkgYQorCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4LiBI T1QgaXMgbm90IGFsbG93ZWQuCisJCQkgKi8KKwkJCWhvdF9hbGxvd2VkID0gZmFsc2U7CisJ CX0KKworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCX0KKworCXJldHVybiBob3RfYWxsb3dl ZDsKK30KKworLyoKKyAqIElmIHdlJ3JlIG5vdCB1cGRhdGluZyBhbnkgYXR0cmlidXRlcyB1 c2VkIHdoZW4gZm9ybWluZyB0aGUgaW5kZXgga2V5cyB3ZSBjYW4KKyAqIGdyYWIgYSB3ZWFr ZXIgbG9jayB0eXBlLiBUaGlzIGFsbG93cyBmb3IgbW9yZSBjb25jdXJyZW5jeSB3aGVuIHdl IGFyZQorICogcnVubmluZyBzaW11bHRhbmVvdXNseSB3aXRoIGZvcmVpZ24ga2V5IGNoZWNr cy4KKyAqLworTG9ja1R1cGxlTW9kZQorSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJl bGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycykK K3sKKwlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZlOworCisJ Qml0bWFwc2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVs YXRpb24sCisJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlm ICghYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLCBrZXlfYXR0cnMpKQorCQlsb2Nr bW9kZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOworCisJYm1zX2ZyZWUoa2V5X2F0dHJz KTsKKworCXJldHVybiBsb2NrbW9kZTsKK30KKworLyoKKyAqIFJldHVybiBhIEJpdG1hcHNl dCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQgKGNoYW5nZWQpIGluZGV4ZWQK KyAqIGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5ld3R1cC4KICAqLwogc3RhdGlj IEJpdG1hcHNldCAqCi1IZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRp b24sCi0JCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAotCQkJCQkJIEJpdG1h cHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVw bGUgbmV3dHVwLAotCQkJCQkJIGJvb2wgKmhhc19leHRlcm5hbCkKK0hlYXBVcGRhdGVNb2Rp ZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFw VHVwbGUgbmV3dHVwKQogewogCWludAkJCWF0dGlkeDsKLQlCaXRtYXBzZXQgICptb2RpZmll ZCA9IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4X2F0 dHJzID0gTlVMTDsKIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVs YXRpb24pOwogCisJLyogR2V0IHRoZSBzZXQgb2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFs bCBpbmRleGVzIGZvciB0aGlzIHJlbGF0aW9uICovCisJYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisK KwkvKiBObyBpbmRleGVkIGF0dHJpYnV0ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAoYm1zX2lz X2VtcHR5KGF0dHJzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaGVhcCB1 cGRhdGUgZnVuY3Rpb24gaXMgdXNlZCBvdXRzaWRlIHRoZSBleGVjdXRvciBhbmQgc28gdW5s aWtlCisJICogaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIHdoZXJlIHRoZXJlIGlzIFJlc3VsdFJl bEluZm8gYW5kIEVTdGF0ZSB0bworCSAqIHByb3ZpZGUgdGhlIGNvbmNpc2Ugc2V0IG9mIGF0 dHJpYnV0ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQKKwkgKiAodmlhIEV4ZWNH ZXRBbGxVcGRhdGVkQ29scygpKSB3ZSBzaW1wbHkgY2hlY2sgYWxsIGluZGV4ZWQgYXR0cmli dXRlcyB0bworCSAqIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0 J3MgdGhlICJtb2RpZmllZCBpbmRleGVkCisJICogYXR0cmlidXRlcyIgb3IgIm1vZGlmaWVk X2lkeF9hdHRycyIuCisJICovCiAJYXR0aWR4ID0gLTE7Ci0Jd2hpbGUgKChhdHRpZHggPSBi bXNfbmV4dF9tZW1iZXIoaW50ZXJlc3RpbmdfY29scywgYXR0aWR4KSkgPj0gMCkKKwl3aGls ZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKIAl7 CiAJCS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0 cmlidXRlIG51bWJlciAqLwogCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwpAQCAtNDM4NCw3ICs0NDU4LDcgQEAg SGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkgKi8KIAkJ aWYgKGF0dHJudW0gPT0gMCkKIAkJewotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlciht b2RpZmllZCwgYXR0aWR4KTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVt YmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAK QEAgLTQzOTcsNyArNDQ3MSw3IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlv biByZWxhdGlvbiwKIAkJewogCQkJaWYgKGF0dHJudW0gIT0gVGFibGVPaWRBdHRyaWJ1dGVO dW1iZXIpCiAJCQl7Ci0JCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwg YXR0aWR4KTsKKwkJCQltb2RpZmllZF9pZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcihtb2Rp ZmllZF9pZHhfYXR0cnMsIGF0dGlkeCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAg LTQ0MTMsMjkgKzQ0ODcsMTIgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9u IHJlbGF0aW9uLAogCiAJCWlmICghaGVhcF9hdHRyX2VxdWFscyh0dXBkZXNjLCBhdHRybnVt LCB2YWx1ZTEsCiAJCQkJCQkJICB2YWx1ZTIsIGlzbnVsbDEsIGlzbnVsbDIpKQotCQl7Ci0J CQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOwotCQkJY29u dGludWU7Ci0JCX0KLQotCQkvKgotCQkgKiBObyBuZWVkIHRvIGNoZWNrIGF0dHJpYnV0ZXMg dGhhdCBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4gTm90ZQotCQkgKiB0aGF0IHN5c3Rl bSBhdHRyaWJ1dGVzIGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LgotCQkgKi8KLQkJaWYg KGF0dHJudW0gPCAwIHx8IGlzbnVsbDEgfHwKLQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1 cGRlc2MsIGF0dHJudW0gLSAxKS0+YXR0bGVuICE9IC0xKQotCQkJY29udGludWU7Ci0KLQkJ LyoKLQkJICogQ2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQg ZXh0ZXJuYWxseSBhbmQgaXMgYQotCQkgKiBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scy4KLQkJ ICovCi0JCWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHZhcmxlbmEgKikgRGF0dW1HZXRQb2lu dGVyKHZhbHVlMSkpICYmCi0JCQlibXNfaXNfbWVtYmVyKGF0dGlkeCwgZXh0ZXJuYWxfY29s cykpCi0JCQkqaGFzX2V4dGVybmFsID0gdHJ1ZTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9 IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAl9CiAKLQly ZXR1cm4gbW9kaWZpZWQ7CisJYm1zX2ZyZWUoYXR0cnMpOworCisJcmV0dXJuIG1vZGlmaWVk X2lkeF9hdHRyczsKIH0KIAogLyoKQEAgLTQ0NTMsMTIgKzQ1MTAsMTA2IEBAIHNpbXBsZV9o ZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpv dGlkLCBIZWFwVHVwbGUgdHVwCiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUTV9GYWlsdXJlRGF0 YSB0bWZkOwogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CisJVHVwbGVUYWJsZVNsb3QgKnNs b3Q7CisJQnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICpic2xvdDsKKwlIZWFwVHVwbGUJb2xk dHVwOworCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOworCUJpdG1hcHNldCAgKmlkeF9hdHRy cywKKwkJCSAgICptb2RpZmllZF9pZHhfYXR0cnM7CisJYm9vbAkJaG90X2FsbG93ZWQsCisJ CQkJc3VtbWFyaXplZF9vbmx5OworCUJ1ZmZlcgkJYnVmZmVyOwogCi0JcmVzdWx0ID0gaGVh cF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwKLQkJCQkJCSBHZXRDdXJyZW50Q29tbWFu ZElkKHRydWUpLCAwLAotCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCSB0cnVlIC8q IHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRl X2luZGV4ZXMpOworCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJLyoK KwkgKiBGZXRjaCB0aGlzIGJpdG1hcCBvZiBpbnRlcmVzdGluZyBhdHRyaWJ1dGVzIGZyb20g cmVsY2FjaGUgYmVmb3JlCisJICogb2J0YWluaW5nIGEgYnVmZmVyIGxvY2sgYmVjYXVzZSBp ZiB3ZSBhcmUgZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUKKwkgKiByZWxldmFudCBz eXN0ZW0gY2F0YWxvZ3Mgd2UgY291bGQgZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZldGNoIHRo ZW0KKwkgKiBsYXRlciBvbi4gUmVsY2FjaGUgd2lsbCByZXR1cm4gY29waWVzIG9mIGVhY2gg Yml0bWFwLCBzbyB3ZSBuZWVkIG5vdAorCSAqIHdvcnJ5IGFib3V0IHJlbGNhY2hlIGZsdXNo IGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaCB0aGlzIG9wZXJhdGlvbi4KKwkgKi8KKwlpZHhf YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRU Ul9CSVRNQVBfSU5ERVhFRCk7CisKKwlJTkpFQ1RJT05fUE9JTlQoInNpbXBsZV9oZWFwX3Vw ZGF0ZS1iZWZvcmUtcGluIiwgTlVMTCk7CisKKwkvKgorCSAqIFRvIHVwZGF0ZSBhIGhlYXAg dHVwbGUgd2UgbmVlZCB0byBmaW5kIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZAorCSAq IGF0dHJpYnV0ZXMgKCJtb2RpZmllZF9pZHhfYXR0cnMiKSBhbmQgdXNlIHRoYXQgdG8gZGV0 ZXJtaW5lIGlmIGEgSE9UCisJICogdXBkYXRlIGlzIGFsbG93YWJsZSBvciBub3QuIFdoZW4g dXBkYXRpbmcgaGVhcCB0dXBsZXMgdmlhIGV4ZWN1dGlvbiBvZgorCSAqIFVQREFURSBzdGF0 ZW1lbnRzIHRoaXMgc2V0IGlzIGNvbnN0cnVjdGVkIGJlZm9yZSBjYWxsaW5nIGludG8gdGhl IHRhYmxlCisJICogQU0ncyB1cGRhdGUgZnVuY3Rpb24gYnkgRXhlY1VwZGF0ZU1vZGlmaWVk SWR4QXR0cnMoKSB3aGljaCBjb21wYXJlcyB0aGUKKwkgKiBvbGQvbmV3IFR1cGxlVGFibGVT bG90cy4KKwkgKgorCSAqIEhlcmUgdGhpbmdzIGFyZSBhIGJpdCBkaWZmZXJlbnQsIHdlIGhh dmUgdGhlIG9sZCBUSUQgYW5kIHRoZSBuZXcgdHVwbGUsCisJICogbm90IHR3byBUdXBsZVRh YmxlU2xvdHMsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNvbnN0cnVjdCBhIHNpbWlsYXIKKwkg KiBiaXRtYXAgc28gYXMgdG8gYmUgYWJsZSB0byBrbm93IGlmIEhPVCB1cGRhdGVzIGFyZSBh bGxvd2VkIG9yIG5vdC4KKwkgKgorCSAqIFRvIGRvIHRoYXQgd2UgZmlyc3QgaGF2ZSB0byBm ZXRjaCB0aGUgb2xkIHR1cGxlIGl0c2VsZiwgYnV0IGJlY2F1c2UKKwkgKiBoZWFwYW1fZmV0 Y2hfcm93X3ZlcnNpb24oKSBpcyBzdGF0aWMsIHdlIHJlcGxpY2F0ZSBpbiBwYXJ0IHRoYXQg Y29kZQorCSAqIGhlcmUuCisJICoKKwkgKiBUaGlzIGlzIGEgYml0IHJlcGV0aXRpdmUgYmVj YXVzZSBoZWFwX3VwZGF0ZSgpIHdpbGwgYWdhaW4gZmluZCBhbmQgZm9ybQorCSAqIHRoZSBv bGQgSGVhcFR1cGxlIGZyb20gdGhlIG9sZCBUSUQgYW5kIGluIG1vc3QgY2FzZXMgdGhlIGNh bGxlcnMKKwkgKiAoaWdub3JpbmcgZXh0ZW5zaW9ucywgYXJlIGFsd2F5cyBjYXRhbG9nIHR1 cGxlIHVwZGF0ZXMpIGFscmVhZHkgaGFkIHRoZQorCSAqIHNldCBvZiBjaGFuZ2VkIGF0dHJp YnV0ZXMgKHRoZSAicmVwbGFjZXMiIGFycmF5KSwgYnV0IGZvciBub3cgdGhpcworCSAqIG1p bm9yIHJlcGV0aXRpb24gb2Ygd29yayBpcyBuZWNlc3NhcnkuCisJICovCisJc2xvdCA9IE1h a2VUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKSwgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSwgMCk7CisJYnNsb3QgPSAoQnVmZmVySGVhcFR1cGxlVGFibGVTbG90 ICopIHNsb3Q7CisKKwkvKgorCSAqIFNldCB0aGUgVElEIGluIHRoZSBzbG90IGFuZCB0aGVu IGZldGNoIHRoZSBvbGQgdHVwbGUgc28gd2UgY2FuIGV4YW1pbmUKKwkgKiBpdAorCSAqLwor CWJzbG90LT5iYXNlLnR1cGRhdGEudF9zZWxmID0gKm90aWQ7CisJaWYgKCFoZWFwX2ZldGNo KHJlbGF0aW9uLCBTbmFwc2hvdEFueSwgJmJzbG90LT5iYXNlLnR1cGRhdGEsICZidWZmZXIs IGZhbHNlKSkKKwl7CisJCS8qCisJCSAqIGhlYXBfdXBkYXRlKCkgY2hlY2tzIGZvciAhSXRl bUlkSXNOb3JtYWwobHApIGFuZCB3aWxsIHJldHVybiBmYWxzZQorCQkgKiBpbiB0aG9zZSBj YXNlcy4KKwkJICovCisJCUFzc2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRp b25HZXRSZWxpZChyZWxhdGlvbikpKTsKKworCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OworCisJCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCisJ CWJtc19mcmVlKGlkeF9hdHRycyk7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo c2xvdCk7CisKKwkJZWxvZyhFUlJPUiwgInR1cGxlIGNvbmN1cnJlbnRseSBkZWxldGVkIik7 CisKKwkJcmV0dXJuOworCX0KKworCUFzc2VydChidWZmZXIgIT0gSW52YWxpZEJ1ZmZlcik7 CisKKwkvKiBTdG9yZSBpbiBzbG90LCB0cmFuc2ZlcnJpbmcgZXhpc3RpbmcgcGluICovCisJ RXhlY1N0b3JlUGlubmVkQnVmZmVySGVhcFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBz bG90LCBidWZmZXIpOworCW9sZHR1cCA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwg ZmFsc2UsICZzaG91bGRGcmVlKTsKKworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7CisJbG9ja21vZGUg PSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9h dHRycyk7CisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9u LCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCisJcmVzdWx0ID0g aGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0 cnVlKSwgMCwKKwkJCQkJCSBJbnZhbGlkU25hcHNob3QsIHRydWUgLyogd2FpdCBmb3IgY29t bWl0ICovICwKKwkJCQkJCSAmdG1mZCwgbG9ja21vZGUsIG1vZGlmaWVkX2lkeF9hdHRycywg aG90X2FsbG93ZWQpOworCisJaWYgKHNob3VsZEZyZWUpCisJCWhlYXBfZnJlZXR1cGxlKG9s ZHR1cCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCWJtc19m cmVlKGlkeF9hdHRycyk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBl bnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQorCSAqCisJICogSWYgdGhlIHVwZGF0 ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhlIHVwZGF0 ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQg Y29sdW1ucywgc28gd2UgZWl0aGVyCisJICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRl eGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8KKwkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC00 NDY4LDYgKzQ2MTksMTAgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAogCQljYXNl IFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KKwkJCWlmICghSGVhcFR1cGxl SXNIZWFwT25seSh0dXApKQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKKwkJCWVs c2UgaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1t YXJpemluZzsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fVXBkYXRlZDoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDIyNjhjYzI3N2JjLi5lNmNi ODE5N2RlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHNtYXBpLmgiCi0j aW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cv aW5kZXguaCIKQEAgLTIyNCwyMCArMjIzLDI2IEBAIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBh bV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1 cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9u cywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJ CWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUg KmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJYm9v bCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUs CisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsK IAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUs ICZzaG91bGRGcmVlKTsKKwlib29sCQlob3RfYWxsb3dlZDsKKwlib29sCQlzdW1tYXJpemVk X29ubHk7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFzc2VydChJdGVtUG9pbnRlcklzVmFs aWQob3RpZCkpOworCisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJl bGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCSpsb2Nr bW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRf aWR4X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8K IAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0 dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9IGhl YXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRpb25zLAotCQkJCQkJ IGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUsIHVwZGF0ZV9pbmRl eGVzKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwbGUsIGNp ZCwgb3B0aW9ucywgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZkLCAqbG9ja21vZGUs IG1vZGlmaWVkX2lkeF9hdHRycywgaG90X2FsbG93ZWQpOwogCUl0ZW1Qb2ludGVyQ29weSgm dHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAgLTI1MCwxNiArMjU1 LDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCSAqIEhPVCwgaXQgY291bGQgYmUg dGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCiAJICog dXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KIAkgKi8K LQlpZiAocmVzdWx0ICE9IFRNX09rKQorCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJ aWYgKHJlc3VsdCA9PSBUTV9PaykKIAl7Ci0JCUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0g VFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJCWlmIChIZWFwVHVw bGVJc0hlYXBPbmx5KHR1cGxlKSkKKwkJeworCQkJaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJ CQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKKwkJfQorCQllbHNlCisJCQkq dXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CiAJfQotCWVsc2UgaWYgKCFIZWFwVHVwbGVJc0hl YXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9BbGwpOwot CWVsc2UKLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpIHx8 Ci0JCQkgICAoKnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpKTsKIAogCWlmIChzaG91bGRG cmVlKQogCQlwZnJlZSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpp bmRleCA2OGZmMDk2NmYxYy4uMTJjMjY3NGNiZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYwpAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQKIHNpbXBsZV90YWJsZV90dXBs ZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJICBUdXBs ZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkg IGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJICBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwpAQCAt MzcxLDcgKzM3Miw5IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVs LCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50Q29tbWFuZElkKHRydWUp LAogCQkJCQkJCQkwLCBzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQl0cnVl IC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsIHVw ZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKKwkJCQkJCQkJbW9k aWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CiAKIAlzd2l0Y2gg KHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2su YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IDRkMTc3Yzg2OGJiLi5i ZjQ1YzVjZjgyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTI2NzksOCArMjY3OSwx OCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVT bG90ICpzcGlsbGVkX3R1cGxlLAogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CiAJVE1fRmFp bHVyZURhdGEgdG1mZDsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVzOworCUJp dG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlUTV9SZXN1bHQJcmVzOwogCisJLyoK KwkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGJ5 IGNvbXBhcmluZyB0aGUgb2xkCisJICogKG9uZGlzaykgYW5kIG5ldyAoc3BpbGxlZCkgdHVw bGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBjb3JyZWN0CisJICogSE9UIGRlY2lz aW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAibm8gaW5kZXhlZCBjb2x1bW4gY2hh bmdlZCIpLgorCSAqLworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAorCQkJCQkJCQkJCQkJCW9uZGlza190dXBsZSwK KwkJCQkJCQkJCQkJCQlzcGlsbGVkX3R1cGxlKTsKKwogCS8qCiAJICogQ2Fycnkgb3V0IHRo ZSB1cGRhdGUsIHNraXBwaW5nIGxvZ2ljYWwgZGVjb2RpbmcgZm9yIGl0LgogCSAqLwpAQCAt MjY5MCw3ICsyNzAwLDcgQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUoUmVsYXRpb24gcmVs LCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJ CSAmdG1mZCwgJmxvY2ttb2RlLCAmdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAmdG1mZCwg JmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CiAJaWYg KHJlcyAhPSBUTV9PaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVf VF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCkBAIC0yNzExLDYgKzI3MjEsOCBAQCBhcHBs eV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGls bGVkX3R1cGxlLAogCX0KIAogCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNT X1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAxKTsKKworCWJtc19mcmVlKG1vZGlmaWVk X2lkeF9hdHRycyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGIyY2E1Y2JmMTE3Li42MjYyZjcxYmQ5MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMzLDYgKzMzLDcgQEAK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTkxMCw2ICs5MTEsNyBA QCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24JcmVsID0gcmVzdWx0 UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRpZCA9ICYoc2VhcmNo c2xvdC0+dHRzX3RpZCk7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzOwogCiAJ LyoKIAkgKiBXZSBzdXBwb3J0IG9ubHkgbm9uLXN5c3RlbSB0YWJsZXMsIHdpdGgKQEAgLTk0 OCw4ICs5NTAsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJ CQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlLCB0cnVl KTsKIAorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90LCBzbG90KTsKKwog CQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVz X3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSAgbW9k aWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOworCQlibXNfZnJlZShtb2RpZmll ZF9pZHhfYXR0cnMpOworCiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+ cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVw bGVzLmMKaW5kZXggN2Y0ZWJmOTU0MzIuLmJkYjliMTQ2ZGU3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1R1cGxlcy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRp bHMvZXhwYW5kZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC0yMDEyLDYgKzIwMTMsNzUgQEAgRXhlY0Zl dGNoU2xvdEhlYXBUdXBsZURhdHVtKFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJldHVybiBy ZXQ7CiB9CiAKKy8qCisgKiBFeGVjQ29tcGFyZVNsb3RBdHRycworICoKKyAqIENvbXBhcmUg dGhlIHN1YnNldCBvZiBhdHRyaWJ1dGVzIGluIGF0dHJzIGJld3R3ZWVuIFR1cGxlVGFibGVT bG90cyB0byBkZXRlY3QKKyAqIHdoaWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkLgorICoK KyAqIFJldHVybnMgYSByZXVzZWQgd2hlbiBwb3NzaWJsZSBCaXRtYXBzZXQgb2YgYXR0cmli dXRlIGluZGljZXMgKHVzaW5nCisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyIGNvbnZlbnRpb24pIHRoYXQgZGlmZmVyIGJldHdlZW4gdGhlIHR3bworICogc2xvdHMu CisgKi8KK0JpdG1hcHNldCAqCitFeGVjQ29tcGFyZVNsb3RBdHRycyhCaXRtYXBzZXQgKmF0 dHJzLCBUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJIFR1cGxlVGFibGVTbG90ICpzMSwgVHVw bGVUYWJsZVNsb3QgKnMyKQoreworCWludAkJCWF0dGlkeCA9IC0xOworCisJd2hpbGUgKChh dHRpZHggPSBibXNfbmV4dF9tZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDApCisJeworCQkv KiBhdHRpZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0 ZSBudW1iZXIgKi8KKwkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKwkJRGF0dW0JCXZhbHVlMSwKKwkJCQkJdmFs dWUyOworCQlib29sCQludWxsMSwKKwkJCQkJbnVsbDI7CisJCUNvbXBhY3RBdHRyaWJ1dGUg KmF0dDsKKworCQkvKgorCQkgKiBJZiBpdCdzIGEgd2hvbGUtdHVwbGUgcmVmZXJlbmNlLCBz YXkgIm5vdCBlcXVhbCIuICBJdCdzIG5vdCByZWFsbHkKKwkJICogd29ydGggc3VwcG9ydGlu ZyB0aGlzIGNhc2UsIHNpbmNlIGl0IGNvdWxkIG9ubHkgc3VjY2VlZCBhZnRlciBhCisJCSAq IG5vLW9wIHVwZGF0ZSwgd2hpY2ggaXMgaGFyZGx5IGEgY2FzZSB3b3J0aCBvcHRpbWl6aW5n IGZvci4KKwkJICovCisJCWlmIChhdHRybnVtID09IDApCisJCQljb250aW51ZTsKKworCQkv KgorCQkgKiBMaWtld2lzZSwgYXV0b21hdGljYWxseSBzYXkgIm5vdCBlcXVhbCIgZm9yIGFu eSBzeXN0ZW0gYXR0cmlidXRlCisJCSAqIG90aGVyIHRoYW4gdGFibGVPSUQ7IHdlIGNhbm5v dCBleHBlY3QgdGhlc2UgdG8gYmUgY29uc2lzdGVudCBpbiBhCisJCSAqIEhPVCBjaGFpbiwg b3IgZXZlbiB0byBiZSBzZXQgY29ycmVjdGx5IHlldCBpbiB0aGUgbmV3IHR1cGxlLgorCQkg Ki8KKwkJaWYgKGF0dHJudW0gPCAwKQorCQl7CisJCQlpZiAoYXR0cm51bSA9PSBUYWJsZU9p ZEF0dHJpYnV0ZU51bWJlcikKKwkJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBh dHRpZHgpOworCQkJZWxzZQorCQkJCWNvbnRpbnVlOworCQl9CisKKwkJYXR0ID0gVHVwbGVE ZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpOworCQl2YWx1ZTEgPSBzbG90 X2dldGF0dHIoczEsIGF0dHJudW0sICZudWxsMSk7CisJCXZhbHVlMiA9IHNsb3RfZ2V0YXR0 cihzMiwgYXR0cm51bSwgJm51bGwyKTsKKworCQkvKiBBIGNoYW5nZSB0by9mcm9tIE5VTEws IHNvIG5vdCBlcXVhbCAqLworCQlpZiAobnVsbDEgIT0gbnVsbDIpCisJCQljb250aW51ZTsK KworCQkvKiBCb3RoIE5VTEwsIG5vIGNoYW5nZS91bm1vZGlmaWVkICovCisJCWlmIChudWxs MikKKwkJeworCQkJYXR0cnMgPSBibXNfZGVsX21lbWJlcihhdHRycywgYXR0aWR4KTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGRhdHVtX2ltYWdlX2VxKHZhbHVlMSwgdmFsdWUy LCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQlhdHRycyA9IGJtc19kZWxfbWVt YmVyKGF0dHJzLCBhdHRpZHgpOworCX0KKworCXJldHVybiBhdHRyczsKK30KKwogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCQkJY29udmVuaWVuY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMKICAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5k ZXggYzMzM2Q3MTM5ZmEuLjFlNzkzMDdkMzNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYwpAQCAtMTgsNiArMTgsNyBAQAogICoJCUV4ZWNNb2RpZnlUYWJs ZQkJLSByZXRyaWV2ZSB0aGUgbmV4dCB0dXBsZSBmcm9tIHRoZSBub2RlCiAgKgkJRXhlY0Vu ZE1vZGlmeVRhYmxlCS0gc2h1dCBkb3duIHRoZSBNb2RpZnlUYWJsZSBub2RlCiAgKgkJRXhl Y1JlU2Nhbk1vZGlmeVRhYmxlIC0gcmVzY2FuIHRoZSBNb2RpZnlUYWJsZSBub2RlCisgKgkJ RXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMgLSBmaW5kIHNldCBvZiB1cGRhdGVkIGluZGV4 ZWQgY29sdW1ucwogICoKICAqCSBOT1RFUwogICoJCVRoZSBNb2RpZnlUYWJsZSBub2RlIHJl Y2VpdmVzIGlucHV0IGZyb20gaXRzIG91dGVyUGxhbiwgd2hpY2ggaXMKQEAgLTU2LDYgKzU3 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5oIgorI2luY2x1 ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNs dWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oIgpAQCAtMjAyLDYgKzIwNCw2MyBAQCBzdGF0aWMgdm9pZCBmaXJlQVNUcmlnZ2Vy cyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIEV4ZWNJbml0Rm9yUG9y dGlvbk9mKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJ CQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CiAKKy8qCisgKiBFeGVjVXBk YXRlTW9kaWZpZWRJZHhBdHRycworICoKKyAqIEZpbmQgdGhlIHNldCBvZiBhdHRyaWJ1dGVz IHJlZmVyZW5jZWQgYnkgdGhpcyByZWxhdGlvbiBhbmQgdXNlZCBpbiB0aGlzCisgKiBVUERB VEUgdGhhdCBub3cgZGlmZmVyIGluIHZhbHVlLiAgVGhpcyBpcyBkb25lIGJ5IHJldmlld2lu ZyBzbG90IGRhdHVtIHRoYXQKKyAqIGFyZSBpbiB0aGUgVVBEQVRFIHN0YXRtZW50IGFuZCBh cmUga25vd24gdG8gYmUgcmVmZXJlbmNlZCBieSBhdCBsZWFzdCBvbmUKKyAqIGluZGV4IGlu IHNvbWUgd2F5LiAgVGhpcyBzZXQgaXMgY2FsbGVkIHRoZSAibW9kaWZpZWQgaW5kZXhlZCBh dHRyaWJ1dGVzIiBvcgorICogIm1vZGlmaWVkX2lkeF9hdHRycyIuICBBbiBvdmVybGFwIG9m IGEgc2luZ2xlIGluZGV4J3MgYXR0cmlidXRlcyBhbmQgdGhpcworICogbW9kaWZpZWRfaWR4 X2F0dHJzIHNldCBzaWduYWxzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIG5ld190dHMg dXNlZCB0bworICogZm9ybSB0aGUgaW5kZXggZGF0dW0gaGF2ZSBjaGFuZ2VkLgorICoKKyAq IFJldHVybiBhIEJpdG1hcHNldCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQg KGNoYW5nZWQpIGluZGV4ZWQKKyAqIGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5l d3R1cC4KKyAqCisgKiBOb3RlOiBUaGVyZSBpcyBhIHNpbWlsYXIgZnVuY3Rpb24gY2FsbGVk IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgdGhhdCBvcGVyYXRlcworICogb24gdGhl IG9sZCBUSUQgYW5kIG5ldyBIZWFwVHVwbGUgcmF0aGVyIHRoYW4gdGhlIG9sZC9uZXcgVHVw bGVUYWJsZVNsb3RzIGFzCisgKiB0aGlzIGZ1bmN0aW9uIGRvZXMuICBUaGVzZSB0d28gZnVu Y3Rpb25zIHNob3VsZCBtaXJyb3Igb25lIGFub3RoZXIgdW50aWwKKyAqIHNvbWVkYXkgd2hl biBjYXRhbG9nIHR1cGxlIHVwZGF0ZXMgdHJhY2sgdGhlaXIgY2hhbmdlcyBhdm9pZGluZyB0 aGUgbmVlZCB0bworICogcmUtZGlzY292ZXIgdGhlbSBpbiBzaW1wbGVfaGVhcF91cGRhdGUo KS4KKyAqLworQml0bWFwc2V0ICoKK0V4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xk X3R0cywKKwkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKQoreworCVJlbGF0aW9u CXJlbGF0aW9uID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCVR1cGxlRGVz Ywl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJQml0bWFwc2V0ICAq YXR0cnM7CisKKwkvKiBJZiBubyBpbmRleGVzLCB3ZSdyZSBkb25lICovCisJaWYgKHJlc3Vs dFJlbEluZm8tPnJpX051bUluZGljZXMgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgor CSAqIEdldCB0aGUgc2V0IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBm b3IgdGhpcyByZWxhdGlvbiBmcm9tCisJICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVz IGEgY29weSBvZiB0aGUgYml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICoKKwkgKiBO b3RlOiBXZSBpbnRlbnRpb25hbGx5IHNjYW4gYWxsIGluZGV4ZWQgY29sdW1ucyB3aGVuIGxv b2tpbmcgZm9yCisJICogY2hhbmdlcyByYXRoZXIgdGhhbiByZWR1Y2UgdGhhdCBzZXQgYnkg aW50ZXJzZWN0aW5nIGl0IHdpdGgKKwkgKiBFeGVjR2V0QWxsVXBkYXRlZENvbHMoKS4gIERl c2lwdGUgdGhlIG5hbWUgaXQgcHJvdmlkZXMgdGhlIHNldCBvZgorCSAqIHRhcmdldGVkIGF0 dHJpYnV0ZXMgaW4gdGhlIFNRTCB1c2VkIGZvciB0aGUgVVBEQVRFIGFuZCBhbnkgdHJpZ2dl cnMsCisJICogYnV0IHRoYXQgZG9lc24ndCBpbmNsdWRlIGFueSBhdHRyaWJ1dGVzIHVwZGF0 ZWQgdXNpbmcKKwkgKiBoZWFwX21vZGlmaXlfdHVwbGUoKS4gVGhlcmUgaXMgb25lIHRlc3Qg aW4gdHNlYXJjaC5zcWwgdGhhdCBkb2VzIGp1c3QKKwkgKiB0aGF0LCBtb2RpZmllcyBhbiBp bmRleGVkIGF0dHJpYnV0ZSB0aGF0IGlzbid0IHNwZWNpZmllZCBpbiB0aGUgU1FMIGFuZAor CSAqIHNvIGlzbid0IHByZXNlbnQgaW4gdGhhdCBiaXRtYXBzZXQuCisJICovCisJYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRN QVBfSU5ERVhFRCk7CisKKwkvKgorCSAqIFdoZW4gdGhlcmUgYXJlIGluZGV4ZWQgYXR0cmli dXRlcyBtZW50aW9uZWQgaW4gdGhlIFVQREFURSB0aGVuIHdlIG5lZWQKKwkgKiB0byBmaW5k IHRoZSBzdWJzZXQgdGhhdCBjaGFuZ2VkIHZhbHVlLiAgVGhhdCdzIHRoZQorCSAqICJtb2Rp ZmllZF9pZHhfYXR0cnMiLgorCSAqLworCWF0dHJzID0gRXhlY0NvbXBhcmVTbG90QXR0cnMo YXR0cnMsIHR1cGRlc2MsIG9sZF90dHMsIG5ld190dHMpOworCisJcmV0dXJuIGF0dHJzOwor fQogCiAvKgogICogVmVyaWZ5IHRoYXQgdGhlIHR1cGxlcyB0byBiZSBwcm9kdWNlZCBieSBJ TlNFUlQgbWF0Y2ggdGhlCkBAIC0yNDQ2LDE0ICsyNTA1LDE3IEBAIEV4ZWNVcGRhdGVQcmVw YXJlU2xvdChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogICovCiBzdGF0aWMgVE1f UmVzdWx0CiBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCwg SGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJCSAgYm9vbCBj YW5TZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKKwkJCSAgSXRlbVBvaW50ZXIg dHVwbGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqb2xkU2xvdCwK KwkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgY2FuU2V0VGFnLCBVcGRhdGVDb250 ZXh0ICp1cGRhdGVDeHQpCiB7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBjb250ZXh0LT5lc3Rh dGU7CiAJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjOwogCWJvb2wJCXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxlZDsKIAlU TV9SZXN1bHQJcmVzdWx0OwogCisJLyogVGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkIGF0 dHJpYnV0ZXMgdGhhdCB0cmlnZ2VyIG5ldyBpbmRleCBlbnRyaWVzICovCisJQml0bWFwc2V0 ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKKwogCXVwZGF0ZUN4dC0+Y3Jvc3NQYXJ0 VXBkYXRlID0gZmFsc2U7CiAKIAkvKgpAQCAtMjU3MCw3ICsyNjMyLDE2IEBAIGxyZXBsYWNl OgogCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsKIAog CS8qCi0JICogcmVwbGFjZSB0aGUgaGVhcCB0dXBsZQorCSAqIE5leHQgdXAgd2UgbmVlZCB0 byBmaW5kIG91dCB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGhhdmUKKwkg KiBjaGFuZ2VkIGluIHZhbHVlIGFuZCBzaG91bGQgdHJpZ2dlciBhIG5ldyBpbmRleCB0dXBs ZS4gIFdlIGNvdWxkIHN0YXJ0CisJICogd2l0aCB0aGUgc2V0IG9mIHVwZGF0ZWQgY29sdW1u cyB2aWEgRXhlY0dldFVwZGF0ZWRDb2xzKCksIGJ1dCBpZiB3ZSBkbworCSAqIHdlIHdpbGwg b3Zlcmxvb2sgYXR0cmlidXRlcyBkaXJlY3RseSBtb2RpZmllZCBieSBoZWFwX21vZGlmeV90 dXBsZSgpCisJICogd2hpY2ggYXJlIG5vdCBrbm93biB0byBFeGVjR2V0VXBkYXRlZENvbHMo KS4KKwkgKi8KKwltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhB dHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsKKworCS8qCisJICogQ2FsbCBp bnRvIHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCiAJICoKIAkgKiBO b3RlOiBpZiBlc19jcm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hvdCwg d2UgY2hlY2sgdGhhdAogCSAqIHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNpYmxlIHRv IHRoYXQgc25hcHNob3QsIGFuZCB0aHJvdyBhCkBAIC0yNTg1LDYgKzI2NTYsNyBAQCBscmVw bGFjZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJ CQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZk LCAmdXBkYXRlQ3h0LT5sb2NrbW9kZSwKKwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAog CQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKIAogCXJldHVybiByZXN1bHQ7 CkBAIC0yODEyLDggKzI4ODQsOCBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICovCiByZWRvX2Fj dDoKIAkJbG9ja2VkdGlkID0gKnR1cGxlaWQ7Ci0JCXJlc3VsdCA9IEV4ZWNVcGRhdGVBY3Qo Y29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3QsCi0JCQkJ CQkJICAgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKKwkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFj dChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgb2xkU2xvdCwK KwkJCQkJCQkgICBzbG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJCS8qCiAJCSAq IElmIEV4ZWNVcGRhdGVBY3QgcmVwb3J0cyB0aGF0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0 ZSB3YXMgZG9uZSwKQEAgLTM2NjMsOCArMzczNSw4IEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJ CQlBc3NlcnQob2xkdHVwbGUgPT0gTlVMTCk7CiAKIAkJCQkJcmVzdWx0ID0gRXhlY1VwZGF0 ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLAotCQkJCQkJCQkJCSAgIE5V TEwsIG5ld3Nsb3QsIGNhblNldFRhZywKLQkJCQkJCQkJCQkgICAmdXBkYXRlQ3h0KTsKKwkJ CQkJCQkJCQkgICBOVUxMLCByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QsCisJCQkJ CQkJCQkJICAgbmV3c2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKIAogCQkJCQkvKgog CQkJCQkgKiBBcyBpbiBFeGVjVXBkYXRlKCksIGlmIEV4ZWNVcGRhdGVBY3QoKSByZXBvcnRz IHRoYXQgYQpAQCAtNDgxMSw3ICs0ODgzLDcgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0 ZSAqcHN0YXRlKQogCQkgKiBGb3IgVVBEQVRFL0RFTEVURS9NRVJHRSwgZmV0Y2ggdGhlIHJv dyBpZGVudGl0eSBpbmZvIGZvciB0aGUgdHVwbGUKIAkJICogdG8gYmUgdXBkYXRlZC9kZWxl dGVkL21lcmdlZC4gIEZvciBhIGhlYXAgcmVsYXRpb24sIHRoYXQncyBhIFRJRDsKIAkJICog b3RoZXJ3aXNlIHdlIG1heSBoYXZlIGEgd2hvbGVyb3cganVuayBhdHRyIHRoYXQgY2Fycmll cyB0aGUgb2xkCi0JCSAqIHR1cGxlIGluIHRvdG8uICBLZWVwIHRoaXMgaW4gc3RlcCB3aXRo IHRoZSBwYXJ0IG9mCisJCSAqIHR1cGxlIGluIHRvdGFsLiAgS2VlcCB0aGlzIGluIHN0ZXAg d2l0aCB0aGUgcGFydCBvZgogCQkgKiBFeGVjSW5pdE1vZGlmeVRhYmxlIHRoYXQgc2V0cyB1 cCByaV9Sb3dJZEF0dE5vLgogCQkgKi8KIAkJaWYgKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRF IHx8IG9wZXJhdGlvbiA9PSBDTURfREVMRVRFIHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwppbmRleCBmYjRlMDQyYmU4YS4uMDU1Zjc1NzEwN2YgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtMjQ4Miw3ICsyNDgyLDcgQEAgUmVsYXRpb25EZXN0 cm95UmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykK IAlibXNfZnJlZShyZWxhdGlvbi0+cmRfa2V5YXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24t PnJkX3BrYXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JYm1zX2Zy ZWUocmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0cik7CisJYm1zX2ZyZWUocmVsYXRpb24t PnJkX2luZGV4ZWRhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0 dHIpOwogCWlmIChyZWxhdGlvbi0+cmRfcHViZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJk X3B1YmRlc2MpOwpAQCAtNTI5MSw4ICs1MjkxLDggQEAgUmVsYXRpb25HZXRJbmRleFByZWRp Y2F0ZShSZWxhdGlvbiByZWxhdGlvbikKICAqCQkJCQkJCQkJKGJld2FyZTogZXZlbiBpZiBQ SyBpcyBkZWZlcnJhYmxlISkKICAqCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWQlD b2x1bW5zIGluIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkKICAqCQkJCQkJCQkJaW5k ZXggKGVtcHR5IGlmIEZVTEwpCi0gKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJ Q29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QKLSAqCUlOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBp bmRleGVzCisgKglJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5j ZWQgYnkgaW5kZXhlcworICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRAlDb2x1bW5z IG9ubHkgaW5jbHVkZWQgaW4gc3VtbWFyaXppbmcgaW5kZXhlcwogICoKICAqIEF0dHJpYnV0 ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0gYXR0cmlidXRlcyAoZS5n LiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAtNTMxNSw4ICs1MzE1 LDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIElu ZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7 CS8qIGNvbHVtbnMgaW4gdW5pcXVlIGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpwa2luZGV4 YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHByaW1hcnkgaW5kZXggKi8KIAlCaXRtYXBzZXQg ICppZGluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkgKi8K LQlCaXRtYXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJs b2NraW5nIGluZGV4ZXMgKi8KLQlCaXRtYXBzZXQgICpzdW1tYXJpemVkYXR0cnM7CS8qIGNv bHVtbnMgd2l0aCBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqaW5kZXhl ZGF0dHJzOwkvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLworCUJpdG1hcHNl dCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1ucyBvbmx5IGluIHN1bW1hcml6aW5nIGlu ZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5kZXhv aWRsaXN0OwogCU9pZAkJCXJlbHBraW5kZXg7CkBAIC01MzM1LDggKzUzMzUsOCBAQCBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0 bWFwS2luZCBhdHRyS2luZCkKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3Br YXR0cik7CiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKIAkJCQly ZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JCQljYXNlIElOREVYX0FU VFJfQklUTUFQX0hPVF9CTE9DS0lORzoKLQkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24t PnJkX2hvdGJsb2NraW5nYXR0cik7CisJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVY RUQ6CisJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJ CQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQkJcmV0dXJuIGJtc19j b3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJCQlkZWZhdWx0OgpAQCAtNTM4 MSw3ICs1MzgxLDcgQEAgcmVzdGFydDoKIAl1aW5kZXhhdHRycyA9IE5VTEw7CiAJcGtpbmRl eGF0dHJzID0gTlVMTDsKIAlpZGluZGV4YXR0cnMgPSBOVUxMOwotCWhvdGJsb2NraW5nYXR0 cnMgPSBOVUxMOworCWluZGV4ZWRhdHRycyA9IE5VTEw7CiAJc3VtbWFyaXplZGF0dHJzID0g TlVMTDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CkBAIC01NDQxLDcgKzU0NDEs NyBAQCByZXN0YXJ0OgogCQlpZiAoaW5kZXhEZXNjLT5yZF9pbmRhbS0+YW1zdW1tYXJpemlu ZykKIAkJCWF0dHJzID0gJnN1bW1hcml6ZWRhdHRyczsKIAkJZWxzZQotCQkJYXR0cnMgPSAm aG90YmxvY2tpbmdhdHRyczsKKwkJCWF0dHJzID0gJmluZGV4ZWRhdHRyczsKIAogCQkvKiBD b2xsZWN0IHNpbXBsZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBp IDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKQEAgLTU0NTAsOSArNTQ1 MCw5IEBAIHJlc3RhcnQ6CiAKIAkJCS8qCiAJCQkgKiBTaW5jZSB3ZSBoYXZlIGNvdmVyaW5n IGluZGV4ZXMgd2l0aCBub24ta2V5IGNvbHVtbnMsIHdlIG11c3QKLQkJCSAqIGhhbmRsZSB0 aGVtIGFjY3VyYXRlbHkgaGVyZS4gbm9uLWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50 bwotCQkJICogaG90YmxvY2tpbmdhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRo ZXkgYXJlIGluIGluZGV4LAotCQkJICogYW5kIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVt LgorCQkJICogaGFuZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJlLiBOb24ta2V5IGNvbHVtbnMg bXVzdCBiZSBhZGRlZCBpbnRvCisJCQkgKiBpbmRleGVkYXR0cnMgb3Igc3VtbWFyaXplZGF0 dHJzLCBzaW5jZSB0aGV5IGFyZSBpbiBpbmRleCwgYW5kCisJCQkgKiB1cGRhdGUgc2hvdWxk bid0IG1pc3MgdGhlbS4KIAkJCSAqCiAJCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5v dCBibG9jayBIT1QsIGJ1dCBkbyBuZWVkIHRvIGJlIHVwZGF0ZWQKIAkJCSAqIHdoZW4gdGhl IGNvbHVtbiB2YWx1ZSBjaGFuZ2VzLCB0aHVzIHJlcXVpcmUgYSBzZXBhcmF0ZQpAQCAtNTUx MywxMiArNTUxMywyMCBAQCByZXN0YXJ0OgogCQlibXNfZnJlZSh1aW5kZXhhdHRycyk7CiAJ CWJtc19mcmVlKHBraW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7Ci0J CWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMpOworCQlibXNfZnJlZShpbmRleGVkYXR0cnMp OwogCQlibXNfZnJlZShzdW1tYXJpemVkYXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9 CiAKKwkvKgorCSAqIFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNl ZCBieSBzdW1tYXJpemluZyBpbmRleGVzLiBUaGVuCisJICogYWRkIHRoYXQgaW50byB0aGUg b3RoZXIgaW5kZXhlZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCisJICog YXR0cmlidXRlcy4KKwkgKi8KKwlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMo c3VtbWFyaXplZGF0dHJzLCBpbmRleGVkYXR0cnMpOworCWluZGV4ZWRhdHRycyA9IGJtc19h ZGRfbWVtYmVycyhpbmRleGVkYXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24n dCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9mIHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJl bGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJk X2tleWF0dHIpOwpAQCAtNTUyNyw4ICs1NTM1LDggQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+ cmRfcGthdHRyID0gTlVMTDsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAly ZWxhdGlvbi0+cmRfaWRhdHRyID0gTlVMTDsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90 YmxvY2tpbmdhdHRyKTsKLQlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsK KwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOworCXJlbGF0aW9uLT5yZF9p bmRleGVkYXR0ciA9IE5VTEw7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRh dHRyKTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOwogCkBAIC01NTQz LDcgKzU1NTEsNyBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9rZXlhdHRyID0gYm1zX2Nv cHkodWluZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShwa2lu ZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0 cnMpOwotCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9j a2luZ2F0dHJzKTsKKwlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBibXNfY29weShpbmRl eGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1 bW1hcml6ZWRhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwpAQCAtNTU1Nyw4ICs1NTY1LDggQEAgcmVz dGFydDoKIAkJCXJldHVybiBwa2luZGV4YXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRN QVBfSURFTlRJVFlfS0VZOgogCQkJcmV0dXJuIGlkaW5kZXhhdHRyczsKLQkJY2FzZSBJTkRF WF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkc6Ci0JCQlyZXR1cm4gaG90YmxvY2tpbmdhdHRy czsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEOgorCQkJcmV0dXJuIGluZGV4 ZWRhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJcmV0 dXJuIHN1bW1hcml6ZWRhdHRyczsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRl eCA1MTc2NDc4YzI5NS4uMmRiZmFkOTIxMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM4 NSwxMSArMzg1LDEwIEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9kZWxldGUoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogZXh0ZXJuIHZvaWQgaGVh cF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiBU TV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqb3RpZCwKLQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkgQ29t bWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsCisJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAs IENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCQkJCSBTbmFwc2hvdCBjcm9z c2NoZWNrLCBib29sIHdhaXQsCi0JCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpOworCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3QgTG9ja1R1 cGxlTW9kZSBsb2NrbW9kZSwKKwkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9p ZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBo ZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwKIAkJ CQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xp Y3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtNDY0 LDYgKzQ2MywxMiBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBPZmZzZXROdW1i ZXIgKmRlYWQsIGludCBuZGVhZCwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQs IGludCBudW51c2VkKTsKIAorLyogaW4gaGVhcC9oZWFwYW0uYyAqLworZXh0ZXJuIGJvb2wg SGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFw c2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRf b25seSk7CitleHRlcm4gTG9ja1R1cGxlTW9kZSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21v ZGUoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMpOworCiAvKiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0 ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBW YWN1dW1QYXJhbXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGYyYzM2Njk2YmNhLi5hOTc3OGIzNTI4ZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC01ODYsNiArNTg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg VGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1 cmVEYXRhICp0bWZkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJ CQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCQkJIFRV X1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogCS8qIHNlZSB0YWJsZV90dXBs ZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCkBAIC0xNTk5LDEy ICsxNjAwLDEyIEBAIHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQs IHVpbnQzMiBvcHRpb25zLAogCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBj cm9zc2NoZWNrLAogCQkJCSAgIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExv Y2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0 ZV9pbmRleGVzKQorCQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlyZXR1cm4gcmVsLT5y ZF90YWJsZWFtLT50dXBsZV91cGRhdGUocmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJCSBj aWQsIG9wdGlvbnMsIHNuYXBzaG90LCBjcm9zc2NoZWNrLAotCQkJCQkJCQkJCSB3YWl0LCB0 bWZkLAotCQkJCQkJCQkJCSBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJ CSB3YWl0LCB0bWZkLCBsb2NrbW9kZSwKKwkJCQkJCQkJCQkgbW9kaWZpZWRfaWR4X2F0dHJz LCB1cGRhdGVfaW5kZXhlcyk7CiB9CiAKIC8qCkBAIC0yMDg5LDYgKzIwOTAsNyBAQCBleHRl cm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBv aW50ZXIgdGlkLAogCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRlcm4gdm9p ZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIg b3RpZCwKIAkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFNuYXBzaG90IHNuYXBz aG90LAorCQkJCQkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywK IAkJCQkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwogCiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDE3OThlNjAyN2Q0Li4xNjY2MWJjNjZkOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVk ZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2Mu aCIKICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAj aW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5v ZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTYxNSw2ICs2MTYsMTAg QEAgZXh0ZXJuIFR1cGxlRGVzYyBFeGVjQ2xlYW5UeXBlRnJvbVRMKExpc3QgKnRhcmdldExp c3QpOwogZXh0ZXJuIFR1cGxlRGVzYyBFeGVjVHlwZUZyb21FeHByTGlzdChMaXN0ICpleHBy TGlzdCk7CiBleHRlcm4gdm9pZCBFeGVjVHlwZVNldENvbE5hbWVzKFR1cGxlRGVzYyB0eXBl SW5mbywgTGlzdCAqbmFtZXNMaXN0KTsKIGV4dGVybiB2b2lkIFVwZGF0ZUNoYW5nZWRQYXJh bVNldChQbGFuU3RhdGUgKm5vZGUsIEJpdG1hcHNldCAqbmV3Y2hnKTsKK2V4dGVybiBCaXRt YXBzZXQgKkV4ZWNDb21wYXJlU2xvdEF0dHJzKEJpdG1hcHNldCAqYXR0cnMsCisJCQkJCQkJ CQkgICBUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpv bGRfdHRzLAorCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpOwogCiB0eXBl ZGVmIHN0cnVjdCBUdXBPdXRwdXRTdGF0ZQogewpAQCAtODE0LDUgKzgxOSw4IEBAIGV4dGVy biBSZXN1bHRSZWxJbmZvICpFeGVjTG9va3VwUmVzdWx0UmVsQnlPaWQoTW9kaWZ5VGFibGVT dGF0ZSAqbm9kZSwKIAkJCQkJCQkJCQkJICAgT2lkIHJlc3VsdG9pZCwKIAkJCQkJCQkJCQkJ ICAgYm9vbCBtaXNzaW5nX29rLAogCQkJCQkJCQkJCQkgICBib29sIHVwZGF0ZV9jYWNoZSk7 CitleHRlcm4gQml0bWFwc2V0ICpFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRS ZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMs CisJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7CiAKICNlbmRpZgkJCQkJ CQkvKiBFWEVDVVRPUl9IICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBmYTA3ZWJmOGZmNy4uMWVmNWMx NDY1YzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjIsNyArMTYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVsYXRpb25EYXRhCiAJQml0bWFwc2V0ICAqcmRfa2V5YXR0cjsJCS8qIGNvbHMgdGhhdCBj YW4gYmUgcmVmJ2QgYnkgZm9yZWlnbiBrZXlzICovCiAJQml0bWFwc2V0ICAqcmRfcGthdHRy OwkJLyogY29scyBpbmNsdWRlZCBpbiBwcmltYXJ5IGtleSAqLwogCUJpdG1hcHNldCAgKnJk X2lkYXR0cjsJCS8qIGluY2x1ZGVkIGluIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXggKi8KLQlC aXRtYXBzZXQgICpyZF9ob3RibG9ja2luZ2F0dHI7IC8qIGNvbHMgYmxvY2tpbmcgSE9UIHVw ZGF0ZSAqLworCUJpdG1hcHNldCAgKnJkX2luZGV4ZWRhdHRyOyAvKiBhbGwgY29scyByZWZl cmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpyZF9zdW1tYXJpemVkYXR0cjsJ LyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMgKi8KIAogCVB1YmxpY2F0 aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGljYXRpb24gZGVzY3JpcHRvciwgb3IgTlVM TCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODljMjdhYTE1MjkuLjg5Nzg4MDkxNTc2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTcwLDcgKzcwLDcgQEAgdHlwZWRlZiBlbnVt IEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJTkRFWF9BVFRSX0JJVE1BUF9LRVksCiAJSU5ERVhf QVRUUl9CSVRNQVBfUFJJTUFSWV9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlf S0VZLAotCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORywKKwlJTkRFWF9BVFRSX0JJ VE1BUF9JTkRFWEVELAogCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQsCiB9IEluZGV4 QXR0ckJpdG1hcEtpbmQ7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLm91dCBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUt cHJ1bmVkLm91dAppbmRleCBhNmE0ZThkYjk5Ni4uMDdlZjY3YTFlYjQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11 cGRhdGUtcHJ1bmVkLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQKQEAgLTE2LDggKzE2LDgg QEAgc3RlcCB3YWtlaW52YWw0Ogogc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPgogc3RlcCB3 YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgd2FrZWdyYW50NDogCi0JU0VMRUNU IEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4n KTsKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUt YmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdz aW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogIDx3 YWl0aW5nIC4uLj4KIHN0ZXAgZ3JhbnQxOiA8Li4uIGNvbXBsZXRlZD4KIEVSUk9SOiAgdHVw bGUgY29uY3VycmVudGx5IGRlbGV0ZWQKQEAgLTQyLDggKzQyLDggQEAgc3RlcCBta3JlbHM0 OgogCVNFTEVDVCBGUk9NIHZhY3Rlc3QubWtyZWxzKCdpbnRydWRlcicsIDEsIDEwMCk7ICAt LSByZXBvcHVsYXRlIExQX1VOVVNFRAogCiBzdGVwIHdha2VncmFudDQ6IAotCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7 Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJl Zm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2lt cGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKICA8d2Fp dGluZyAuLi4+CiBzdGVwIGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+CiBFUlJPUjogIGR1cGxp Y2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInBnX2NsYXNzX29p ZF9pbmRleCIKQEAgLTcxLDggKzcxLDggQEAgc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPgog c3RlcCB3YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgYXQ0OiBBTFRFUiBUQUJM RSB2YWN0ZXN0LmNoaWxkNTAgSU5IRVJJVCB2YWN0ZXN0Lm9yaWc1MDsKIHN0ZXAgd2FrZWdy YW50NDogCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBk YXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVD VCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVm b3JlLXBpbicpOwogIDx3YWl0aW5nIC4uLj4KIHN0ZXAgZ3JhbnQxOiA8Li4uIGNvbXBsZXRl ZD4KIHN0ZXAgd2FrZWdyYW50NDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRlLXBy dW5lZC5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYwppbmRleCBlM2E0Mjk1YmQxMi4uZmVmOWFjODk1 YTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVj cy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYwpAQCAt MTAzLDcgKzEwMyw3IEBAIHNlc3Npb24gczEKIHNldHVwCXsKIAlTRVQgZGVidWdfZGlzY2Fy ZF9jYWNoZXMgPSAwOwogCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfdXBkYXRl LWJlZm9yZS1waW4nLCAnd2FpdCcpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicsICd3YWl0Jyk7CiB9CiBz dGVwIGNhY2hlZmlsbDEJeyBTRUxFQ1QgRlJPTSB2YWN0ZXN0LnJlbG9pZF9jYXRjYWNoZV9z ZXQoJ3ZhY3Rlc3Qub3JpZzUwJyk7IH0KIHN0ZXAgZ3JhbnQxCXsgR1JBTlQgU0VMRUNUIE9O IHZhY3Rlc3Qub3JpZzUwIFRPIFBVQkxJQzsgfQpAQCAtMTQwLDggKzE0MCw4IEBAIHN0ZXAg bWtyZWxzNAl7CiAJU0VMRUNUIEZST00gdmFjdGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwg MTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBfVU5VU0VECiB9CiBzdGVwIHdha2VncmFudDQJewot CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZv cmUtcGluJyk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBf dXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2Rl dGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4n KTsKIH0KIHN0ZXAgYXQ0CXsgQUxURVIgVEFCTEUgdmFjdGVzdC5jaGlsZDUwIElOSEVSSVQg dmFjdGVzdC5vcmlnNTA7IH0KIHN0ZXAgd2FrZWludmFsNAl7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CmluZGV4IDAxZWUyOWZl ZTEwLi5hN2EyNDYzZTU0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKQEAgLTI4Nyw3ICsyODcsNyBAQCBERVRBSUw6ICBD b2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4KIElOU0VSVCBJTlRPIGd0ZXN0MXYg VkFMVUVTICg4LCBERUZBVUxUKSwgKDksIERFRkFVTFQpOyAgLS0gZXJyb3IKIEVSUk9SOiAg Y2Fubm90IGluc2VydCBhIG5vbi1ERUZBVUxUIHZhbHVlIGludG8gY29sdW1uICJiIgogREVU QUlMOiAgQ29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4uCi1TRUxFQ1QgKiBGUk9N IGd0ZXN0MXY7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXYgT1JERVIgQlkgYTsKICBhIHwgYiAg CiAtLS0rLS0tLQogIDMgfCAgNgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90cmlnZ2Vycy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJz Lm91dAppbmRleCA4ZmNiMzNhYzgxYS4uMDBlYmUzMDU4NzUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CkBAIC05NTksMTYgKzk1OSwyNCBAQCBOT1RJQ0U6 ICBtYWluX3ZpZXcgQkVGT1JFIFVQREFURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X3VwZF9z dG10KQogTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIFVQREFURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfdXBkX3N0bXQpCiBVUERBVEUgMAogLS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0 cmlnZ2VyCi1ERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVM RVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMCBBTkQgYiA9IDMxOwogTk9USUNFOiAg bWFpbl92aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3Rt dCkKIE5PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRf b2ZfZGVsKQotTk9USUNFOiAgT0xEOiAoMjEsMTApCi1OT1RJQ0U6ICBtYWluX3ZpZXcgSU5T VEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKIE5PVElDRTogIE9MRDogKDIw LDMxKQorTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfZGVsX3N0bXQpCitERUxFVEUgMQorREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJF IGEgPSAyMSBBTkQgYiA9IDEwOworTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUg U1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKK05PVElDRTogIG1haW5fdmlldyBJ TlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVsKQorTk9USUNFOiAgT0xEOiAo MjEsMTApCitOT1RJQ0U6ICBtYWluX3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0 ZXJfdmlld19kZWxfc3RtdCkKK0RFTEVURSAxCitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hF UkUgYSA9IDIxIEFORCBiID0gMzI7CitOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVU RSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92aWV3 IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCiBOT1RJQ0U6ICBPTEQ6 ICgyMSwzMikKIE5PVElDRTogIG1haW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChh ZnRlcl92aWV3X2RlbF9zdG10KQotREVMRVRFIDMKK0RFTEVURSAxCiBERUxFVEUgRlJPTSBt YWluX3ZpZXcgV0hFUkUgYSA9IDMxIFJFVFVSTklORyBhLCBiOwogTk9USUNFOiAgbWFpbl92 aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKIE5P VElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVs KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQKaW5kZXggNWI3YzIxMjNm MzcuLjZkYzE5M2YwMmQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3RzZWFyY2gub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5v dXQKQEAgLTI0OTMsNyArMjQ5Myw4IEBAIFNFTEVDVCB0b190c3F1ZXJ5KCdTS0lFUyAmIE15 IHwgYm9vS3MnKTsKICAnc2t5JyB8ICdib29rJwogKDEgcm93KQogCi0tLXRyaWdnZXIKKy0t IHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkgdXNlcyBoZWFwX21vZGlmeV90dXBsZSgpIHRv IHNldCBjb2x1bW4gJ2EnCistLSB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9y J3MgU0VULWNsYXVzZSB0cmFja2luZy4KIENSRUFURSBUUklHR0VSIHRzdmVjdG9ydXBkYXRl CiBCRUZPUkUgVVBEQVRFIE9SIElOU0VSVCBPTiB0ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBS T1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2Nh dGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC91cGRhdGFibGVfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 cGRhdGFibGVfdmlld3Mub3V0CmluZGV4IDdiMDBjNzQyNzc2Li5jZDZlNzFhYzQ5MCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dApA QCAtMzcyLDE1ICszNzIsMTUgQEAgSU5TRVJUIElOVE8gcndfdmlldzE2IChhLCBiKSBWQUxV RVMgKDMsICdSb3cgMycpOyAtLSBzaG91bGQgYmUgT0sKIFVQREFURSByd192aWV3MTYgU0VU IGE9MywgYWE9LTMgV0hFUkUgYT0zOyAtLSBzaG91bGQgZmFpbAogRVJST1I6ICBtdWx0aXBs ZSBhc3NpZ25tZW50cyB0byBzYW1lIGNvbHVtbiAiYSIKIFVQREFURSByd192aWV3MTYgU0VU IGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGJlIE9LCi1TRUxFQ1QgKiBGUk9NIGJhc2Vf dGJsOworU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBhOwogIGEgIHwgICBiICAg IAogLS0tLSstLS0tLS0tLQorIC0zIHwgUm93IDMKICAtMiB8IFJvdyAtMgogIC0xIHwgUm93 IC0xCiAgIDAgfCBSb3cgMAogICAxIHwgUm93IDEKICAgMiB8IFJvdyAyCi0gLTMgfCBSb3cg MwogKDYgcm93cykKIAogREVMRVRFIEZST00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNo b3VsZCBiZSBPSwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVk X3ZpcnR1YWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwu c3FsCmluZGV4IDBjYjE0ZWIwZTM2Li5iYzkxNzQyYTQ5MiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbApAQCAtMTI3LDcgKzEyNyw3IEBAIEFM VEVSIFZJRVcgZ3Rlc3QxdiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxMDA7CiBJTlNF UlQgSU5UTyBndGVzdDF2IFZBTFVFUyAoOCwgREVGQVVMVCk7ICAtLSBlcnJvcgogSU5TRVJU IElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQpLCAoOSwgREVGQVVMVCk7ICAtLSBl cnJvcgogCi1TRUxFQ1QgKiBGUk9NIGd0ZXN0MXY7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXYg T1JERVIgQlkgYTsKIERFTEVURSBGUk9NIGd0ZXN0MXYgV0hFUkUgYSA+PSA1OwogRFJPUCBW SUVXIGd0ZXN0MXY7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdn ZXJzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbAppbmRleCAyMjg1 ZTkwMTEwZS4uMTljMjU3MjIwMWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3RyaWdnZXJzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwK QEAgLTY2MCw3ICs2NjAsOSBAQCBVUERBVEUgbWFpbl92aWV3IFNFVCBiID0gMzIgV0hFUkUg YSA9IDIxIEFORCBiID0gMzEgUkVUVVJOSU5HIGEsIGI7CiBVUERBVEUgbWFpbl92aWV3IFNF VCBiID0gMCBXSEVSRSBmYWxzZTsKIAogLS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0cmln Z2VyCi1ERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVMRVRF IEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMCBBTkQgYiA9IDMxOworREVMRVRFIEZST00g bWFpbl92aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDEwOworREVMRVRFIEZST00gbWFpbl92 aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDMyOwogREVMRVRFIEZST00gbWFpbl92aWV3IFdI RVJFIGEgPSAzMSBSRVRVUk5JTkcgYSwgYjsKIAogXHNldCBRVUlFVCB0cnVlCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3RzZWFyY2guc3FsCmluZGV4IDhiM2Q3MDBmNTdjLi4wOTQxODFlNzc2NCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKQEAgLTc2MCw3ICs3NjAsOCBAQCBTRUxFQ1Qg dG9fdHN2ZWN0b3IoJ1NLSUVTIE15IGJvb0tzJyk7CiBTRUxFQ1QgcGxhaW50b190c3F1ZXJ5 KCdTS0lFUyBNeSBib29LcycpOwogU0VMRUNUIHRvX3RzcXVlcnkoJ1NLSUVTICYgTXkgfCBi b29LcycpOwogCi0tLXRyaWdnZXIKKy0tIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkgdXNl cyBoZWFwX21vZGlmeV90dXBsZSgpIHRvIHNldCBjb2x1bW4gJ2EnCistLSB3aXRob3V0IGdv aW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9yJ3MgU0VULWNsYXVzZSB0cmFja2luZy4KIENSRUFU RSBUUklHR0VSIHRzdmVjdG9ydXBkYXRlCiBCRUZPUkUgVVBEQVRFIE9SIElOU0VSVCBPTiB0 ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2ZWN0b3Jf dXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2NhdGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKaW5kZXggNGE2MDEyNmVjOTAuLjAx NzAwNDBjMDk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVf dmlld3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5z cWwKQEAgLTEyNSw3ICsxMjUsNyBAQCBJTlNFUlQgSU5UTyByd192aWV3MTYgVkFMVUVTICgz LCAnUm93IDMnLCAzKTsgLS0gc2hvdWxkIGZhaWwKIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAo YSwgYikgVkFMVUVTICgzLCAnUm93IDMnKTsgLS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndf dmlldzE2IFNFVCBhPTMsIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGZhaWwKIFVQREFU RSByd192aWV3MTYgU0VUIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGJlIE9LCi1TRUxF Q1QgKiBGUk9NIGJhc2VfdGJsOworU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBh OwogREVMRVRFIEZST00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNob3VsZCBiZSBPSwog LS0gUmVhZC1vbmx5IHZpZXdzCiBJTlNFUlQgSU5UTyByb192aWV3MTcgVkFMVUVTICgzLCAn Uk9XIDMnKTsKLS0gCjIuNTAuMQoK --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA0NGYzZDVhOTUzOWJjMjlkYzhiZGE3YTZkZWExNGIxODBhNmRiZmE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzoxNDo0NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDMv OV0gQWRkIHRoZSBIT1QtaW5kZXhlZCBvbi1kaXNrIGZvcm1hdDogaW5saW5lIGF0dHIKIGJp dG1hcCBhbmQgc3R1YnMKCkRlZmluZSB0aGUgb24tZGlzayByZXByZXNlbnRhdGlvbiBhIEhP VC1pbmRleGVkIHVwZGF0ZSBhbmQgaXRzIGxhdGVyCnBydW5lL2NvbGxhcHNlIHByb2R1Y2Us IGFoZWFkIG9mIHRoZSBjb2RlIHRoYXQgcmVhZHMgb3Igd3JpdGVzIGl0OgoKLSBIRUFQX0lO REVYRURfVVBEQVRFRCAoaHR1cF9kZXRhaWxzLmgpLCB0aGUgdF9pbmZvbWFzazIgYml0IG1h cmtpbmcgYQogIGhlYXAtb25seSB0dXBsZSB3aG9zZSBwcm9kdWNpbmcgVVBEQVRFIGFsc28g Y2hhbmdlZCBhbiBpbmRleGVkIGNvbHVtbjsgYW5kCi0gYWNjZXNzL2hvdF9pbmRleGVkLmgs IHRoZSBpbmxpbmUgZml4ZWQtc2l6ZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgc3RvcmVkIGlu CiAgdGhlIHRhaWwgb2Ygc3VjaCBhIHR1cGxlLCBwbHVzIHRoZSB4aWQtZnJlZSAiY29sbGFw c2Utc3Vydml2b3Igc3R1YiIgZm9ybWF0CiAgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHdpdGgg bmF0dHMgPT0gMCwgYSBmb3J3YXJkIGxpbmssIGFuZCB0aGUgc2VnbWVudCdzCiAgYml0bWFw KSBhbmQgdGhlIGFjY2Vzc29ycyBib3RoIHNoYXJlLgoKUkVBRE1FLkhPVC1JTkRFWEVEIGlu dHJvZHVjZXMgdGhlIGRlc2lnbiBhbmQgdGhlIHJlbGF4ZWQgY2xhc3NpYy1IT1QKaW52YXJp YW50OyBsYXRlciBjb21taXRzIGRvY3VtZW50IHRoZSBlbGlnaWJpbGl0eSwgd3JpdGUsIHJl YWQsIGFuZApwcnVuZS9jb2xsYXBzZSBtYWNoaW5lcnkgaW4gdGhlaXIgb3duIHNlY3Rpb25z LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3Jl ZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAgNTYgKysrKysr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaCAgICAgICAgICAgfCAxOTkgKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgg ICAgICAgICAgfCAgIDggKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjYyIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNGI3MDFlNDI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTAsMCArMSw1NiBAQAorSE9ULWluZGV4ZWQg dXBkYXRlcyAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSwgIkhPVC9TSVUiKQorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDbGFz c2ljIEhPVCAoc2VlIFJFQURNRS5IT1QpIGtlZXBzIGFuIFVQREFURSBvZmYgdGhlIGluZGV4 ZXMgb25seSB3aGVuIG5vCitpbmRleGVkIGNvbHVtbiBjaGFuZ2VkOiB0aGUgbmV3IHR1cGxl IGlzIGEgaGVhcC1vbmx5IHR1cGxlIGFwcGVuZGVkIHRvIHRoZQorY2hhaW4sIGFuZCBldmVy eSBpbmRleCBlbnRyeSBjb250aW51ZXMgdG8gcmVzb2x2ZSwgdmlhIHRoZSBzYW1lLXBhZ2Ug dF9jdGlkCitjaGFpbiwgdG8gYSB0dXBsZSB3aG9zZSBpbmRleGVkIHZhbHVlcyBzdGlsbCBl cXVhbCB0aGUgZW50cnkncyBrZXkuCisKK0hPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5kZXgg VXBkYXRlLCBTSVUpIHJlbGF4ZXMgdGhhdCB0bzogYW4gVVBEQVRFIG1heQorY2hhbmdlIGlu ZGV4ZWQgY29sdW1ucyBhbmQgc3RpbGwgYmUgYSBoZWFwLW9ubHkgdHVwbGUgb24gdGhlIHNh bWUgcGFnZSwKK3Byb3ZpZGVkIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBpbnNlcnRlZCBvbmx5 IGludG8gdGhlIGluZGV4ZXMgd2hvc2Uga2V5CithdHRyaWJ1dGVzIGFjdHVhbGx5IGNoYW5n ZWQuICBUaGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGRpZCBub3QgY2hhbmdlIGFyZQor bGVmdCB1bnRvdWNoZWQsIHdoaWNoIGlzIHdoZXJlIHRoZSB3cml0ZS1hbXBsaWZpY2F0aW9u IHNhdmluZyBjb21lcyBmcm9tLgorCitUaGUgcHJpY2UgaXMgdGhhdCBhIGNoYWluIG1heSBu b3cgY29udGFpbiB0dXBsZXMgd2l0aCBkaWZmZXJlbnQgaW5kZXgga2V5cywgc28KK2FuIGlu ZGV4IGVudHJ5IGZvciBhbiBvbGQga2V5IGNhbiBjaGFpbi1yZXNvbHZlIHRvIGEgbGl2ZSB0 dXBsZSB3aG9zZSBjdXJyZW50CitrZXkgZGlmZmVycy4gIFN1Y2ggYW4gZW50cnkgaXMgU1RB TEUuICBUaGUgcmVhZCBzaWRlIGRldGVjdHMgYW5kIGRyb3BzIHN0YWxlCitlbnRyaWVzIGJ5 IHRlc3RpbmcgdGhlIGhlYXAncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgYWdhaW5zdCB0 aGUgaW5kZXgncwora2V5IGNvbHVtbnMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGVs aWdpYmlsaXR5IHJ1bGVzLCB0aGUgd3JpdGUgcGF0aCwgdGhlIG9uLWNoYWluCityZXByZXNl bnRhdGlvbiwgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCwgcHJ1bmUvY29sbGFwc2Us IHZhY3V1bSByZWNsYW1hdGlvbiwKK3JlY292ZXJ5LCB0aGUgbG9naWNhbC1yZXBsaWNhdGlv biBhcHBseSBnYXRpbmcsIGFuZCB0aGUgc3RhdGlzdGljcy4KKworCitUaGUgY2xhc3NpYy1I T1QgaW52YXJpYW50IHdlIGFyZSByZWxheGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK0NsYXNzaWMgSE9UIHJlbGllcyBvbiB0d28gcHJvcGVy dGllczoKKworICAoYSkgZXZlcnkgbGl2ZSBpbmRleCBlbnRyeSByZXNvbHZlcywgdmlhIGEg c2FtZS1wYWdlIHRfY3RpZCBjaGFpbiwgdG8gdGhlCisgICAgICBjaGFpbidzIHJvb3QgbGlu ZSBwb2ludGVyOyBhbmQKKworICAoYikgdGhlIGluZGV4ZWQgdmFsdWVzIG9mIGV2ZXJ5IHR1 cGxlIG9uIHRoZSBjaGFpbiBlcXVhbCB0aGUga2V5IG9mIGV2ZXJ5CisgICAgICBpbmRleCBl bnRyeSB0aGF0IHJlYWNoZXMgaXQuCisKK0hPVC1pbmRleGVkIGtlZXBzIChhKSBidXQgYnJl YWtzIChiKTogYWZ0ZXIgYSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhlIGNoYWluCitob2xkcyB0 dXBsZXMgd2l0aCBkaWZmZXJlbnQga2V5cywgYW5kIGEgbmV3IGluZGV4IGVudHJ5IGlzIHBs YW50ZWQgdGhhdCBwb2ludHMKK2F0IHRoZSAqc3BlY2lmaWMqIGhlYXAtb25seSB0dXBsZSB3 aG9zZSBrZXkgaXQgbWF0Y2hlcyAtLSBub3QgbmVjZXNzYXJpbHkgdGhlCityb290LgorCisK K1RoZSBIT1QtaW5kZXhlZCBpbnZhcmlhbnQgKHRoZSBuZXcgY29udHJhY3QpCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFuIGluZGV4IGVu dHJ5IHBvaW50cyBhdCB0aGUgaGVhcC1vbmx5IHR1cGxlIHZlcnNpb24gd2hvc2UgaW5kZXhl ZCBrZXkgaXQKKyAgbWF0Y2hlZCBhdCBpbnNlcnRpb24gdGltZS4gIEEgY2hhaW4gd2FsayB0 aGF0IHJlYWNoZXMgYSBsaXZlIHR1cGxlIGJ5CisgIGNyb3NzaW5nIGEgSE9ULWluZGV4ZWQg aG9wICphZnRlciogdGhlIGVudHJ5J3Mgb3duIHRhcmdldCBtYXkgYmUgc3RhbGU6IGlmCisg IHRoZSB1bmlvbiBvZiB0aG9zZSBjcm9zc2VkIGhvcHMnIG1vZGlmaWVkIGF0dHJpYnV0ZXMg b3ZlcmxhcHMgdGhlIGluZGV4J3MKKyAga2V5IGNvbHVtbnMsIHRoZSBlbnRyeSBpcyBzdGFs ZSBhbmQgdGhlIHR1cGxlIGlzIGRyb3BwZWQgZnJvbSB0aGF0IHNjYW4uCisgIFRoZSByb3cg aXMKKyAgcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IHRoYXQgdGhlIHNhbWUgdXBk YXRlIGluc2VydGVkIGZvciB0aGUgbmV3CisgIGtleS4KKworVGhpcyBpcyB3aGF0IG1ha2Vz IGRyb3BwaW5nIGEgc3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwor cmVhY2hhYmxlIHRocm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRl eC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjZjZTQxNWM3MTUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKQEAgLTAsMCArMSwxOTkgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkLmgKKyAqCSAgSW5saW5lLXRyYWls aW5nIG1vZGlmaWVkLWF0dHJpYnV0ZXMgYml0bWFwIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJ VSkKKyAqCSAgdHVwbGVzLgorICoKKyAqIEEgaGVhcCB0dXBsZSBwcm9kdWNlZCBieSBhIEhP VC1pbmRleGVkIFVQREFURSBoYXMgSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0CisgKiBpbiB0 X2luZm9tYXNrMiBhbmQgY2FycmllcywgYXBwZW5kZWQgYWZ0ZXIgaXRzIG5vcm1hbCBhdHRy aWJ1dGUgZGF0YSwgYQorICogZml4ZWQtc2l6ZSBiaXRtYXAgcmVjb3JkaW5nIHdoaWNoIGhl YXAgYXR0cmlidXRlcyBjaGFuZ2VkIGF0IHRoaXMgY2hhaW4gaG9wCisgKiAocmVsYXRpdmUg dG8gdGhlIHByaW9yIGNoYWluIG1lbWJlcikuICBCaXQgKGF0dG51bSAtIDEpIGNvcnJlc3Bv bmRzIHRvIHVzZXIKKyAqIGF0dHJpYnV0ZSBhdHRudW0uCisgKgorICogVGhlIGJpdG1hcCBp cyBjZWlsKG5hdHRzIC8gOCkgYnl0ZXMsIHdoZXJlIG5hdHRzIGlzIHRoZSB0dXBsZSdzIG93 bgorICogYXR0cmlidXRlIGNvdW50IGF0IHRoZSB0aW1lIGl0IHdhcyB3cml0dGVuIChIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyBmb3IgYQorICogbGl2ZSB0dXBsZTsgcHJlc2VydmVkIHNl cGFyYXRlbHkgZm9yIGEgc3R1Yiwgc2VlIGJlbG93KS4gIEl0cyBsZW5ndGggaXMgbm90Cisg KiBzdG9yZWQgYXMgc3VjaDsgaXQgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRt YXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YKKyAqIHRoZSBsaW5lIHBvaW50ZXIncyBpdGVtIGFu ZCBpcyBsb2NhdGVkIHZpYSBJdGVtSWRHZXRMZW5ndGgoKSwgcGFzdCB0aGUKKyAqIGF0dHJp YnV0ZSBkYXRhOiByb3V0aW5lcyB0aGF0IGRlZm9ybSB0aGUgdHVwbGUgc3RvcCBhdCBuYXR0 cyBhbmQgbmV2ZXIgc2VlCisgKiBpdC4KKyAqCisgKiBCZWNhdXNlIEFERCBDT0xVTU4gcmFp c2VzIHRoZSByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nIGV4aXN0aW5nCisg KiB0dXBsZXMsIGEgY2hhaW4gY2FuIGhvbGQgdHVwbGVzIHdob3NlIGJpdG1hcHMgd2VyZSBz aXplZCBmb3IgZGlmZmVyZW50CisgKiAoc21hbGxlcikgbmF0dHMgdGhhbiB0aGUgcmVsYXRp b24gaGFzIG5vdy4gIENvbnN1bWVycyB0aGVyZWZvcmUgc2l6ZSBhbmQKKyAqIGxvY2F0ZSBh IHR1cGxlJ3MgYml0bWFwIGZyb20gdGhhdCB0dXBsZSdzIE9XTiB3cml0ZS10aW1lIG5hdHRz CisgKiAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBuZXZlciBmcm9tIHRoZSByZWxh dGlvbidzIGN1cnJlbnQgbmF0dHMuCisgKiBCaXQgcG9zaXRpb25zIGFyZSBhdHRyaWJ1dGUg YmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlcgorICogYml0 bWFwIHNpbXBseSBPUnMgaW50byB0aGUgbG93IGJ5dGVzIG9mIGEgbGFyZ2VyIGFjY3VtdWxh dG9yLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisjaWZuZGVmIEhPVF9JTkRFWEVEX0gKKyNkZWZpbmUgSE9UX0lOREVY RURfSAorCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImMu aCIKKworLyoKKyAqIE51bWJlciBvZiBieXRlcyBpbiB0aGUgdHJhaWxpbmcgbW9kaWZpZWQt YXR0cnMgYml0bWFwIGZvciBhIHJlbGF0aW9uIHdpdGgKKyAqIG5hdHRzIHVzZXIgYXR0cmli dXRlcyAob25lIGJpdCBwZXIgYXR0cmlidXRlLCBhdHRudW0gLSAxKS4KKyAqLworc3RhdGlj IGlubGluZSBTaXplCitIb3RJbmRleGVkQml0bWFwQnl0ZXMoaW50IG5hdHRzKQoreworCUFz c2VydChuYXR0cyA+PSAwKTsKKwlyZXR1cm4gKFNpemUpICgobmF0dHMgKyA3KSAvIDgpOwor fQorCisvKgorICogUmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIHRyYWlsaW5nIG1vZGlmaWVk LWF0dHJzIGJpdG1hcCBvZiBhIEhPVC1pbmRleGVkCisgKiB0dXBsZS4gIGl0ZW1fbGVuIGlz IEl0ZW1JZEdldExlbmd0aCgpIG9mIHRoZSB0dXBsZSdzIGxpbmUgcG9pbnRlcjsgbmF0dHMg aXMKKyAqIHRoZSByZWxhdGlvbidzIG51bWJlciBvZiBhdHRyaWJ1dGVzLiAgVGhlIGNhbGxl ciBtdXN0IGhhdmUgdmVyaWZpZWQgdGhhdAorICogdGhlIHR1cGxlIGhhcyBIRUFQX0lOREVY RURfVVBEQVRFRCBzZXQuCisgKi8KK3N0YXRpYyBpbmxpbmUgY29uc3QgdWludDggKgorSG90 SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRhdGEgKmh0 dXAsCisJCQkJCQkJU2l6ZSBpdGVtX2xlbiwgaW50IG5hdHRzKQoreworCXJldHVybiAoY29u c3QgdWludDggKikgKChjb25zdCBjaGFyICopIGh0dXAgKworCQkJCQkJCWl0ZW1fbGVuIC0g SG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSk7Cit9CisKKy8qIFdyaXRhYmxlIHZhcmlh bnQsIGZvciBPUi1pbmcgdGhlIHVuaW9uIG9udG8gYSBzdXJ2aXZpbmcgcmVkaXJlY3QgdGFy Z2V0LiAqLworc3RhdGljIGlubGluZSB1aW50OCAqCitIb3RJbmRleGVkR2V0TW9kaWZpZWRC aXRtYXBSVyhIZWFwVHVwbGVIZWFkZXJEYXRhICpodHVwLAorCQkJCQkJCSAgU2l6ZSBpdGVt X2xlbiwgaW50IG5hdHRzKQoreworCXJldHVybiAodWludDggKikgKChjaGFyICopIGh0dXAg KworCQkJCQkgIGl0ZW1fbGVuIC0gSG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSk7Cit9 CisKKy8qIFRydWUgaWYgdXNlciBhdHRyaWJ1dGUgYXR0bnVtICgxLWJhc2VkKSBpcyBzZXQg aW4gdGhlIGJpdG1hcC4gKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSG90SW5kZXhlZEF0dHJJ c01vZGlmaWVkKGNvbnN0IHVpbnQ4ICpiaXRtYXAsIEF0dHJOdW1iZXIgYXR0bnVtKQorewor CWludAkJCWJpdCA9IGF0dG51bSAtIDE7CisKKwlBc3NlcnQoYXR0bnVtID49IDEpOworCXJl dHVybiAoYml0bWFwW2JpdCAvIDhdICYgKDEgPDwgKGJpdCAlIDgpKSkgIT0gMDsKK30KKwor LyogU2V0IHVzZXIgYXR0cmlidXRlIGF0dG51bSAoMS1iYXNlZCkgaW4gdGhlIGJpdG1hcC4g Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSG90SW5kZXhlZFNldEF0dHJNb2RpZmllZCh1aW50 OCAqYml0bWFwLCBBdHRyTnVtYmVyIGF0dG51bSkKK3sKKwlpbnQJCQliaXQgPSBhdHRudW0g LSAxOworCisJQXNzZXJ0KGF0dG51bSA+PSAxKTsKKwliaXRtYXBbYml0IC8gOF0gfD0gKHVp bnQ4KSAoMSA8PCAoYml0ICUgOCkpOworfQorCisvKiBPUiB0aGUgZmlyc3QgbmJ5dGVzIG9m IHNyYyBpbnRvIGRzdC4gIGRzdCBtdXN0IGJlIGF0IGxlYXN0IG5ieXRlcyBsb25nOyBpdAor ICogbWF5IGJlIGxvbmdlciAoc2l6ZWQgZm9yIGEgbGFyZ2VyIG5hdHRzKSAtLSBiaXQgcG9z aXRpb25zIGFyZSBhdHRyaWJ1dGUKKyAqIGJhc2VkIGFuZCBpZGVudGljYWwgYWNyb3NzIHNp emVzLCBzbyBPUi1pbmcgb25seSBzcmMncyBieXRlcyBpcyBjb3JyZWN0LiAqLworc3RhdGlj IGlubGluZSB2b2lkCitIb3RJbmRleGVkQml0bWFwVW5pb24odWludDggKmRzdCwgY29uc3Qg dWludDggKnNyYywgaW50IHNyY19uYXR0cykKK3sKKwlTaXplCQluYnl0ZXMgPSBIb3RJbmRl eGVkQml0bWFwQnl0ZXMoc3JjX25hdHRzKTsKKworCWZvciAoU2l6ZSBpID0gMDsgaSA8IG5i eXRlczsgaSsrKQorCQlkc3RbaV0gfD0gc3JjW2ldOworfQorCisvKgorICogSXMgZXZlcnkg Yml0IHNldCBpbiBzdWIgYWxzbyBzZXQgaW4gc3VwZXI/ICBzdWIgaXMgc2l6ZWQgZm9yIHN1 Yl9uYXR0czsKKyAqIHN1cGVyIG11c3QgYmUgYXQgbGVhc3QgdGhhdCBsb25nLiAgVXNlZCBi eSBwcnVuZSB0byBkZWNpZGUgYSBjb2xsYXBzZQorICogc3Vydml2b3IgaXMgcmVjbGFpbWFi bGU6IHdoZW4gdGhlIGF0dHJpYnV0ZXMgYSBkZWFkIG1lbWJlciBjaGFuZ2VkIGFyZSBhbGwK KyAqIGNoYW5nZWQgYWdhaW4gYnkgbGF0ZXIgaG9wcywgZXZlcnkgaW5kZXggZW50cnkgcG9p bnRpbmcgYXQgdGhhdCBtZW1iZXIgaXMKKyAqIHN1cGVyc2VkZWQgKHN0YWxlKSwgc28gaXQg Y2FycmllcyBubyBsaXZlIGVudHJ5LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0hvdElu ZGV4ZWRCaXRtYXBJc1N1YnNldChjb25zdCB1aW50OCAqc3ViLCBjb25zdCB1aW50OCAqc3Vw ZXIsIGludCBzdWJfbmF0dHMpCit7CisJU2l6ZQkJbmJ5dGVzID0gSG90SW5kZXhlZEJpdG1h cEJ5dGVzKHN1Yl9uYXR0cyk7CisKKwlmb3IgKFNpemUgaSA9IDA7IGkgPCBuYnl0ZXM7IGkr KykKKwkJaWYgKChzdWJbaV0gJiB+c3VwZXJbaV0pICE9IDApCisJCQlyZXR1cm4gZmFsc2U7 CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTdHViIGxpbmUgcG9pbnRlcnMgKGNvbGxh cHNlIHN1cnZpdm9ycykuCisgKgorICogV2hlbiBwcnVuZSBjb2xsYXBzZXMgYSBkZWFkIEhP VC1pbmRleGVkIGNoYWluIGl0IGNhbm5vdCBrZWVwIHRoZSBkZWFkIGtleQorICogdHVwbGVz IGFzIGxpdmUgZGF0YS1iZWFyaW5nIHR1cGxlcyAodGhlaXIgWElEcyB3b3VsZCBob2xkIGJh Y2sKKyAqIHJlbGZyb3plbnhpZCkuICBFYWNoIHByZXNlcnZlZCBkZWFkIGtleSB0dXBsZSBp cyBpbnN0ZWFkIGNvbnZlcnRlZCB0byBhbgorICogeGlkLWZyZWUgInN0dWIiOiBhbiBMUF9O T1JNQUwgaXRlbSB3aG9zZSBIZWFwVHVwbGVIZWFkZXIgaXMgZnJvemVuIGFuZAorICogbWFy a2VkIG5vdC1hLXJlYWwtdHVwbGUgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldCwgSGVhcFR1 cGxlSGVhZGVyR2V0TmF0dHMKKyAqID09IDApLCB3aG9zZSB0X2N0aWQub2ZmbnVtIGZvcndh cmRzIHRvIHRoZSBuZXh0IGtleSB0dXBsZSBvbiB0aGUgcGFnZSwgYW5kCisgKiB3aG9zZSBw YXlsb2FkIGlzIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgZm9yIHRoZSBzZWdtZW50IGl0 IHJlcHJlc2VudHMgLS0KKyAqIGxvY2F0ZWQsIGxpa2UgYSBsaXZlIHR1cGxlJ3MgaW5saW5l IGJpdG1hcCwgaW4gdGhlIGZpbmFsCisgKiBIb3RJbmRleGVkQml0bWFwQnl0ZXMobmF0dHMp IGJ5dGVzIG9mIHRoZSBpdGVtLCBzbyB0aGUgc2FtZSBhY2Nlc3NvcnMgd29yaworICogZm9y IGJvdGguICBCZWNhdXNlIHRoZSBuYXR0cyBmaWVsZCBpcyBvdmVyd3JpdHRlbiB3aXRoIHRo ZSAwIHNlbnRpbmVsLCB0aGUKKyAqIHN0dWIncyB3cml0ZS10aW1lIG5hdHRzIChuZWVkZWQg dG8gc2l6ZS9sb2NhdGUgdGhhdCBiaXRtYXApIGlzIHByZXNlcnZlZCBpbgorICogdGhlIG90 aGVyd2lzZS11bnVzZWQgYmxvY2stbnVtYmVyIGhhbGYgb2YgdF9jdGlkOyBIb3RJbmRleGVk U3R1YkdldEZvcndhcmQKKyAqIHJlYWRzIG9ubHkgdGhlIG9mZnNldCBoYWxmLgorICoKKyAq IEEgc3R1YiBpcyBzaWduYXR1cmUtc2tpcHBlZCAobm90IHZpc2liaWxpdHktc2tpcHBlZCkg YnkgZXZlcnkgY29uc3VtZXIgdGhhdAorICogd2Fsa3MgTFBfTk9STUFMIGl0ZW1zLgorICov CitzdGF0aWMgaW5saW5lIGJvb2wKK0hvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY29uc3QgSGVh cFR1cGxlSGVhZGVyRGF0YSAqdHVwKQoreworCXJldHVybiAodHVwLT50X2luZm9tYXNrMiAm IEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwICYmCisJCUhlYXBUdXBsZUhlYWRlckdldE5h dHRzKHR1cCkgPT0gMDsKK30KKworLyogT2Zmc2V0IG9mIHRoZSBuZXh0IGtleSB0dXBsZSB0 aGlzIHN0dWIgZm9yd2FyZHMgdG8gKHNhbWUgcGFnZSkuICovCitzdGF0aWMgaW5saW5lIE9m ZnNldE51bWJlcgorSG90SW5kZXhlZFN0dWJHZXRGb3J3YXJkKGNvbnN0IEhlYXBUdXBsZUhl YWRlckRhdGEgKnR1cCkKK3sKKwlyZXR1cm4gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJO b0NoZWNrKCZ0dXAtPnRfY3RpZCk7Cit9CisKKy8qCisgKiBCaXRtYXAgc2l6aW5nIGFjcm9z cyB0aGUgcmVsYXRpb24ncyBsaWZldGltZS4KKyAqCisgKiBUaGUgdHJhaWxpbmcgYml0bWFw IGlzIGNlaWwobmF0dHMgLyA4KSBieXRlcywgd2hlcmUgbmF0dHMgaXMgdGhlIHJlbGF0aW9u J3MKKyAqIGF0dHJpYnV0ZSBjb3VudCAqYXQgdGhlIHRpbWUgdGhlIHR1cGxlIHdhcyB3cml0 dGVuKi4gIEFERCBDT0xVTU4gcmFpc2VzIHRoZQorICogcmVsYXRpb24ncyBuYXR0cyB3aXRo b3V0IHJld3JpdGluZyBleGlzdGluZyB0dXBsZXMsIHNvIGEgY2hhaW4gY2FuIGhvbGQKKyAq IHR1cGxlcyB3aG9zZSBiaXRtYXBzIHdlcmUgc2l6ZWQgZm9yIGRpZmZlcmVudCAoc21hbGxl cikgbmF0dHMgdGhhbiB0aGUKKyAqIHJlbGF0aW9uIGhhcyBub3cuICBFdmVyeSBjb25zdW1l ciBtdXN0IHRoZXJlZm9yZSBzaXplIGFuZCBsb2NhdGUgYSB0dXBsZSdzCisgKiBiaXRtYXAg ZnJvbSB0aGF0IHR1cGxlJ3Mgb3duIHdyaXRlLXRpbWUgbmF0dHMsIG5ldmVyIGZyb20gdGhl IHJlbGF0aW9uJ3MKKyAqIGN1cnJlbnQgbmF0dHMuCisgKgorICogRm9yIGEgbGl2ZSBIT1Qt aW5kZXhlZCB0dXBsZSB0aGUgd3JpdGUtdGltZSBuYXR0cyBpcyBIZWFwVHVwbGVIZWFkZXJH ZXROYXR0cworICogKGEgZnJlc2hseSBmb3JtZWQgVVBEQVRFIHR1cGxlIHN0b3JlcyB0aGUg ZnVsbCByZWxhdGlvbiBuYXR0cywgd2hpY2ggaXMgd2hhdAorICogaGVhcF9mb3JtX2hvdF9p bmRleGVkX3R1cGxlIHNpemVkIHRoZSBiaXRtYXAgd2l0aCkuICBBIHN0dWIgb3ZlcndyaXRl cyBuYXR0cworICogd2l0aCAwIGFzIGl0cyBzZW50aW5lbCwgc28gaXQgcHJlc2VydmVzIGl0 cyB3cml0ZS10aW1lIG5hdHRzIGluIHRoZSB1bnVzZWQKKyAqIGJsb2NrLW51bWJlciBoYWxm IG9mIHRfY3RpZCBpbnN0ZWFkICh0aGUgb2Zmc2V0IGhhbGYgaG9sZHMgdGhlIGZvcndhcmQK KyAqIGxpbmspLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0hvdEluZGV4ZWRTdHViU2V0 Qml0bWFwTmF0dHMoSGVhcFR1cGxlSGVhZGVyRGF0YSAqdHVwLCBpbnQgbmF0dHMpCit7CisJ QmxvY2tJZFNldCgmdHVwLT50X2N0aWQuaXBfYmxraWQsIChCbG9ja051bWJlcikgbmF0dHMp OworfQorCitzdGF0aWMgaW5saW5lIGludAorSG90SW5kZXhlZFN0dWJHZXRCaXRtYXBOYXR0 cyhjb25zdCBIZWFwVHVwbGVIZWFkZXJEYXRhICp0dXApCit7CisJcmV0dXJuIChpbnQpIEJs b2NrSWRHZXRCbG9ja051bWJlcigmdHVwLT50X2N0aWQuaXBfYmxraWQpOworfQorCisvKiBX cml0ZS10aW1lIG5hdHRzIG9mIGFueSBIT1QtaW5kZXhlZCBpdGVtIChsaXZlIHR1cGxlIG9y IHN0dWIpLiAqLworc3RhdGljIGlubGluZSBpbnQKK0hvdEluZGV4ZWRUdXBsZUJpdG1hcE5h dHRzKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRhdGEgKnR1cCkKK3sKKwlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1Yih0dXApKQorCQlyZXR1cm4gSG90SW5kZXhlZFN0dWJHZXRCaXRtYXBO YXR0cyh0dXApOworCXJldHVybiBIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXApOworfQor CisjZW5kaWYJCQkJCQkJLyogSE9UX0lOREVYRURfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBf ZGV0YWlscy5oCmluZGV4IDc3YTZjNDhmZDcxLi43ZWI3Zjg2ZjVlZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9odHVwX2RldGFpbHMuaApAQCAtMjg5LDcgKzI4OSwxMyBAQCBIRUFQX1hNQVhfSVNf S0VZU0hSX0xPQ0tFRCh1aW50MTYgaW5mb21hc2spCiAgKiBpbmZvcm1hdGlvbiBzdG9yZWQg aW4gdF9pbmZvbWFzazI6CiAgKi8KICNkZWZpbmUgSEVBUF9OQVRUU19NQVNLCQkJMHgwN0ZG CS8qIDExIGJpdHMgZm9yIG51bWJlciBvZiBhdHRyaWJ1dGVzICovCi0vKiBiaXRzIDB4MTgw MCBhcmUgYXZhaWxhYmxlICovCisjZGVmaW5lIEhFQVBfSU5ERVhFRF9VUERBVEVECTB4MDgw MAkvKiBIT1QgdHVwbGUgcHJvZHVjZWQgYnkgYW4gVVBEQVRFCisJCQkJCQkJCQkJICogdGhh dCBhbHNvIGNoYW5nZWQgYW4gaW5kZXhlZAorCQkJCQkJCQkJCSAqIGF0dHJpYnV0ZSAoSE9U L1NJVSk7IGluZGV4IHNjYW5zCisJCQkJCQkJCQkJICogdGhhdCByZWFjaCBpdCB2aWEgYSBj aGFpbiByZWNoZWNrCisJCQkJCQkJCQkJICogdGhlIGFycml2aW5nIGxlYWYga2V5IGFnYWlu c3QgdGhlCisJCQkJCQkJCQkJICogbGl2ZSB0dXBsZS4gKi8KKy8qIGJpdCAweDEwMDAgaXMg YXZhaWxhYmxlICovCiAjZGVmaW5lIEhFQVBfS0VZU19VUERBVEVECQkweDIwMDAJLyogdHVw bGUgd2FzIHVwZGF0ZWQgYW5kIGtleSBjb2xzCiAJCQkJCQkJCQkJICogbW9kaWZpZWQsIG9y IHR1cGxlIGRlbGV0ZWQgKi8KICNkZWZpbmUgSEVBUF9IT1RfVVBEQVRFRAkJMHg0MDAwCS8q IHR1cGxlIHdhcyBIT1QtdXBkYXRlZCAqLwotLSAKMi41MC4xCgo= --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0004-Add-HOT-indexed-updates-selective-index-maintena.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0004-Add-HOT-indexed-updates-selective-index-maintena.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBjNWZlZWU4NTdlN2RmNDJmMmEwZmM1MmExY2Q1ZTRiMGM2MTAxYzI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzozNToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDQv OV0gQWRkIEhPVC1pbmRleGVkIHVwZGF0ZXM6IHNlbGVjdGl2ZSBpbmRleCBtYWludGVuYW5j ZQogYW5kIHJlYWRzCgpJbXBsZW1lbnQgdGhlIEhPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5k ZXggVXBkYXRlKSBmZWF0dXJlIG9uIHRoZSBmb3VuZGF0aW9uCmxhaWQgYnkgdGhlIGV4ZWN1 dG9yJ3MgbW9kaWZpZWQtYXR0cmlidXRlIGlkZW50aWZpY2F0aW9uLgoKRWxpZ2liaWxpdHk6 IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBhIEhlYXBVcGRhdGVJbmRleE1vZGUg LS0KSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgKG5vdCBIT1Q7IGV2ZXJ5IGluZGV4IG5lZWRz IGFuIGVudHJ5KSwgSEVBUF9VUERBVEVfSE9UCihjbGFzc2ljIEhPVDsgbm8gaW5kZXggbmVl ZHMgYW4gZW50cnkpLCBvciBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUgKEhPVApjaGFp biwgb25seSB0aGUgY2hhbmdlZCBpbmRleGVzIG1haW50YWluZWQpIC0tIGNvbXB1dGVkIGZy b20gbW9kaWZpZWRfaWR4X2F0dHJzCmFuZCB0aGUgcGVyLXJlbGF0aW9uIGluZGV4ZWQtYXR0 cmlidXRlIHNldCAoUmVsYXRpb25HZXRJbmRleGVkQXR0cnMpLiAgQW4KVVBEQVRFIHRoYXQg Y2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBpcwpIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUgdW5sZXNzIGl0IGlzIGZvcmNlZCB0byBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBieQpvbmUgb2Y6IGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5n ZWQgKG5vdGhpbmcgdG8gc2tpcCksIGFuIGF0dHJpYnV0ZQpyZWZlcmVuY2VkIGJ5IGFuIGV4 cHJlc3Npb24gaW5kZXggY2hhbmdlZCAoZXhwcmVzc2lvbi1hd2FyZSBtYWludGVuYW5jZSBp cyBub3QKaW1wbGVtZW50ZWQgeWV0KSwgYSBzeXN0ZW0gY2F0YWxvZywgb3IgdGhlIGxvZ2lj YWwtcmVwbGljYXRpb24gYXBwbHkgZ2F0ZSAoc2VlCnRoZSBhcHBseS1nYXRpbmcgY29tbWl0 KS4gIFBhcnRpYWwgaW5kZXhlcywgZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBwYXJ0aXRpb25l ZAp0YWJsZXMsIGFuZCBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgYXJlIGFsbCBlbGlnaWJs ZSAtLSB0aGUgcmVhZCBwYXRoIGlzCmFjY2Vzcy1tZXRob2QgYWdub3N0aWMgYW5kIHRoZSBw cmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhlIGluZGV4J3MKYXR0cmlidXRlIHNldCwg c28gbm8gY2FydmUtb3V0IGlzIG5lZWRlZCBmb3IgdGhlbS4KCldyaXRlIHBhdGg6IHRoZSB0 YWJsZS1BTSB1cGRhdGUgY29udHJhY3QgY2FycmllcyBtb2RpZmllZCBhdHRyaWJ1dGVzIElO L09VVCBhcwphIEJpdG1hcHNldCAob24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1y b3cgc2VudGluZWwsClRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCB0byBzaWduYWwgImV2 ZXJ5IGluZGV4IG5lZWRzIGFuIGVudHJ5IiksIGFuZApoZWFwX3VwZGF0ZSwgZm9yIEhFQVBf U0VMRUNUSVZFX0lOREVYX1VQREFURSwga2VlcHMgdGhlIG5ldyB2ZXJzaW9uIG9uIHRoZSBI T1QKY2hhaW4gd2hpbGUgRXhlY0luc2VydEluZGV4VHVwbGVzIG1haW50YWlucyBvbmx5IHRo ZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMKY2hhbmdlZC4gIFRoZSBuZXcgaGVhcC1vbmx5 IHR1cGxlIHJlY29yZHMsIGluIGFuIGlubGluZSBiaXRtYXAgaW4gaXRzIHRhaWwsIHRoZQph dHRyaWJ1dGVzIHRoYXQgY2hhbmdlZCBhdCBpdHMgaG9wLiAgT25seSB0aGUgc3RvcmVkIHR1 cGxlIGNhcnJpZXMgdGhlIGJpdG1hcAphbmQgdGhlIEhFQVBfSU5ERVhFRF9VUERBVEVEIGZs YWc7IHRoZSBjYWxsZXIncyBpbi1tZW1vcnkgY29weSBpcyBsZWZ0IHVubWFya2VkCnNvIHRo ZSBmbGFnIG5ldmVyIHByb21pc2VzIGEgdHJhaWxpbmcgYml0bWFwIHRoYXQgaXMgbm90IHBy ZXNlbnQuCgpSZWFkIHBhdGg6IGEgY2hhaW4gd2FsayB0byB0aGUgbGl2ZSB0dXBsZSB1bmlv bnMgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZQpiaXRtYXBzIG9mIGV2ZXJ5IGhvcCBpdCBjcm9z c2VzLiAgVGhlIGluZGV4LWFjY2VzcyBsYXllciB0cmVhdHMgdGhhdApjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXAgYXMgdGhlIHN0YWxlbmVzcyBhdXRob3JpdHk6IGlmIGl0IG92ZXJsYXBz IHRoZQphcnJpdmluZyBpbmRleCdzIGtleSBjb2x1bW5zIHRoZSBlbnRyeSBpcyBzdGFsZSBh bmQgaXMgZHJvcHBlZCwgYW5kIHRoZSByb3cgaXMKcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNo IGVudHJ5IHRoZSBzYW1lIHVwZGF0ZSBwbGFudGVkLiAgVGhlIHJlYWQgcGF0aCBpcwphY2Nl c3MtbWV0aG9kIGFnbm9zdGljIGFuZCBuZWVkcyBubyB2YWx1ZSByZWNoZWNrIG9yIGxlYWYg a2V5OiBpdCBpcyBjb3JyZWN0CmV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQgYXdheSBhbmQg YmFjaywgYmVjYXVzZSB0aGUgdmFsdWUtcmVzdG9yaW5nIHVwZGF0ZQpwbGFudGVkIGEgZnJl c2ggZW50cnkgd2hvc2Ugd2FsayBjcm9zc2VzIG5vIGxhdGVyIGtleS1jaGFuZ2luZyBob3Au CgpVbmlxdWUgY2hlY2tzIGFyZSB0aGUgb25lIHBsYWNlIHRoYXQgZG9lcyBjb21wYXJlIHZh bHVlczogX2J0X2NoZWNrX3VuaXF1ZQpmZXRjaGVzIHRoZSBjb25mbGljdGluZyB0dXBsZSB1 bmRlciBTbmFwc2hvdERpcnR5IGFuZCwgb24gYSBjcm9zc2VkLWhvcAphcnJpdmFsLCBjb21w YXJlcyB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5n IGxlYWYgd2l0aAp0aGUgaW5kZXgncyBvd24gb3JkZXJpbmcgcHJvY2VkdXJlIChfYnRfaGVh cF9rZXlzX2VxdWFsX2xlYWYsIEJUT1JERVJfUFJPQwp1bmRlciBlYWNoIGNvbHVtbidzIGNv bGxhdGlvbikuICBVc2luZyB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhIGJpdHdp c2UKaW1hZ2UgY29tcGFyaXNvbiAtLSBkaXN0aW5ndWlzaGVzIGEgc3RhbGUgYW5jZXN0b3Ig bGVhZiBmcm9tIGEgZ2VudWluZWx5IGxpdmUKZHVwbGljYXRlIChlcXVhbCB1bmRlciB0aGUg b3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCkgYW5kLCBpbiB0aGUKaW4t ZmxpZ2h0IHdpbmRvdyBvZiBhIHJlc3RvcmluZyB1cGRhdGUsIHJvdXRlcyB0aGUgc3RhbGUt YW5jZXN0b3IgaGl0IGludG8KX2J0X2RvaW5zZXJ0J3MgeHdhaXQgc28gdGhlIGR1cGxpY2F0 ZSBpcyBzdGlsbCBjYXVnaHQuICBUaGUgY29tcGFyaXNvbiByZWFkcwpwbGFpbiBrZXkgY29s dW1ucyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3Q7IGl0IG5ldmVyIGV2YWx1YXRlcyBh biBpbmRleGVkCmV4cHJlc3Npb24sIGJlY2F1c2UgYW4gVVBEQVRFIHRvdWNoaW5nIGFuIGV4 cHJlc3Npb24taW5kZXggYXR0cmlidXRlIGlzCmluZWxpZ2libGUgZm9yIEhPVC1pbmRleGVk LCBzbyBhbiBleHByZXNzaW9uIGluZGV4IGlzIG5ldmVyIHRoZSBvbmUgcmVjZWl2aW5nCnRo ZSBmcmVzaCBlbnRyeSB3aG9zZSBpbnNlcnQgcnVucyB0aGlzIGNoZWNrLgoKQ28tYXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3JlZC1ieTogTmF0aGFu IEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgICB8ICAzNCArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICB8IDMwNiArKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgfCA0NjkgKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgIHwgMTg5 ICsrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faW5kZXhzY2FuLmMgICB8 IDE3MyArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICAg ICAgfCAgOTkgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAg ICAgICB8IDE2OCArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAg ICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyAgICAg ICAgICAgICAgIHwgIDY3ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAg ICAgICAgICAgICB8ICAgMiAtCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyAgICAg ICAgICAgICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgICAgICAgICAgfCAzMjcgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jICAgICAgIHwgIDM4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICB8ICAzMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyAgICAgICB8ICA3MyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMgICAgICAgICAgIHwgMjE5ICsrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmggICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgIHwgIDQ4ICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICB8ICA2MCArKwogc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICAgICAgfCAgNzEgKy0KIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUv cGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRl L3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0ICAgIHwgNzcxICsrKysrKystLS0tLS0t LS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCAgICAgICAgIHwg NjAzICsrKysrLS0tLS0tLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgfCAgIDIgKy0KIDMzIGZpbGVzIGNoYW5nZWQsIDI1NTcgaW5zZXJ0aW9u cygrKSwgMTM3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9SRUFETUUuSE9UIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VAppbmRleCA3NGU0MDdmMzc1YS4uNzEyMzY1NjE3M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVApAQCAtMTU2LDYgKzE1Niw0MCBAQCBhbGwgc3VtbWFyaXppbmcgaW5k ZXhlcy4gIChSZWFsaXN0aWNhbGx5LCB3ZSBvbmx5IG5lZWQgdG8gcHJvcGFnYXRlIHRoZQog dXBkYXRlIHRvIHRoZSBpbmRleGVzIHRoYXQgY29udGFpbiB0aGUgdXBkYXRlZCB2YWx1ZXMs IGJ1dCB0aGF0IGlzIHlldCB0bwogYmUgaW1wbGVtZW50ZWQuKQogCisKK1Blci1JbmRleCBV cGRhdGUgVHJhY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgdGhl IHRhYmxlIEFNIHBlcmZvcm1zIHRoZSB1cGRhdGUsIHRoZSBleGVjdXRvciBkZXRlcm1pbmVz IHdoaWNoCitpbmRleGVzIG5lZWQgbmV3IGVudHJpZXMgdXNpbmcgcGVyLWluZGV4IHRyYWNr aW5nLgorCitUaGUgdGFibGUgQU0gY29tbXVuaWNhdGVzIHdoZXRoZXIgYSBIT1QgdXBkYXRl IG9jY3VycmVkIHZpYSB0aGUKK3VwZGF0ZV9hbGxfaW5kZXhlcyBib29sZWFuIG91dHB1dCBv ZiB0YWJsZV90dXBsZV91cGRhdGUoKSwgdG9nZXRoZXIgd2l0aCB0aGUKK21vZGlmaWVkLWF0 dHJzIEJpdG1hcHNldCB0aGUgY2FsbGVyIHBhc3NlZCBpbiAoYXR0cmlidXRlIG51bWJlcnMg ZW5jb2RlZCB3aXRoCitGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKS4gIFdo ZW4gdXBkYXRlX2FsbF9pbmRleGVzIGlzIHRydWUgdGhlCit1cGRhdGUgd2FzIG5vbi1IT1Qg YW5kIGV2ZXJ5IGluZGV4IHJlcXVpcmVzIGEgbmV3IGVudHJ5ICh0aGUgdHVwbGUgaGFzIGEg bmV3CitUSUQpLiAgV2hlbiBmYWxzZSB0aGUgdXBkYXRlIHdhcyBIT1Q6IHRoZSBjYWxsZXIg Y29uc3VsdHMgbW9kaWZpZWRfYXR0cnMgd2l0aAorZWFjaCBpbmRleCdzIG93biBhdHRyaWJ1 dGVzIHRvIGluc2VydCBlbnRyaWVzIG9ubHkgaW50byB0aGUgaW5kZXhlcyB3aG9zZSBrZXkK K2F0dHJpYnV0ZXMgY2hhbmdlZCAoYSBIT1QtaW5kZXhlZCB1cGRhdGUpIG9yIG9ubHkgdGhl IHN1bW1hcml6aW5nIGluZGV4ZXMgKGEKK2NsYXNzaWMgSE9UIHVwZGF0ZSB0aGF0IGNoYW5n ZWQgYSBzdW1tYXJpemVkIGNvbHVtbiksIGFuZCBza2lwcyB0aGUgcmVzdC4KKworVGhlIGV4 ZWN1dG9yIHRoZW4gY2FsbHMgRXhlY1NldEluZGV4VW5jaGFuZ2VkKCkgdG8gcG9wdWxhdGUg dGhlIHBlci1pbmRleAoraWlfSW5kZXhVbmNoYW5nZWQgZmxhZyBvbiBlYWNoIEluZGV4SW5m by4gIFRoaXMgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciBlYWNoCitpbmRleCdzIGtleSB2YWx1 ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGUgdXBkYXRlLiAgRm9yIG5vbi1IT1QgdXBkYXRlcwor dGhlIGZsYWcgaXMgY2xlYXJlZCBvbiBldmVyeSBpbmRleCwgc28gZWFjaCBnZXRzIGEgZnJl c2ggZW50cnkgYXQgdGhlCituZXcgVElEOyB0aGUgZmxhZyBpcyBuZXZlciBhIHNraXAgb24g aXRzIG93biwganVzdCBhIGhpbnQgdG8gdGhlCitpbmRleCBBTSdzIGFtaW5zZXJ0IGZvciBv cHRpbWl6YXRpb25zIHN1Y2ggYXMgYm90dG9tLXVwIGRlbGV0aW9uIG9mCitsb2dpY2FsbHkg ZXF1aXZhbGVudCBkdXBsaWNhdGUgZW50cmllcy4KKworRXhlY0luc2VydEluZGV4VHVwbGVz IGNvbnN1bHRzIGlpX0luZGV4VW5jaGFuZ2VkIHRvIGRlY2lkZSB3aGV0aGVyIHRvCitza2lw IGEgbm9uLXN1bW1hcml6aW5nIGluZGV4IGR1cmluZyBhbiBVUERBVEU6IGlmIHRoZSBpbmRl eCBpcyBtYXJrZWQKK3VuY2hhbmdlZCwgdGhlIEhPVCBjaGFpbiByb290J3MgZXhpc3Rpbmcg ZW50cnkgc3RpbGwgcG9pbnRzIGF0IHRoZQordHVwbGUsIHNvIG5vIG5ldyBlbnRyeSBpcyBu ZWVkZWQuICBGb3Igbm9uLUhPVCB1cGRhdGVzIHRoZSBUSUQKK2NoYW5nZWQgYW5kIEV4ZWNT ZXRJbmRleFVuY2hhbmdlZCBtYXJrcyBldmVyeSBpbmRleCBhcyBjaGFuZ2VkLAorZm9yY2lu ZyBlYWNoIHRvIHJlY2VpdmUgYSBuZXcgZW50cnkuICBTdW1tYXJpemluZyBpbmRleGVzIGFs d2F5cyBnZXQKK3RoZSBvcHBvcnR1bml0eSB0byB1cGRhdGUgdGhlaXIgYmxvY2stbGV2ZWwg c3VtbWFyaWVzLgorCisKIEFib3J0IENhc2VzCiAtLS0tLS0tLS0tLQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKaW5kZXggNGI3MDFlNDI1ODYu LjVkNGEyYzdkNjZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9ULUlOREVYRUQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VC1JTkRFWEVECkBAIC01NCwzICs1NCwzMDkgQEAgVGhlIEhPVC1pbmRleGVkIGludmFyaWFu dCAodGhlIG5ldyBjb250cmFjdCkKIAogVGhpcyBpcyB3aGF0IG1ha2VzIGRyb3BwaW5nIGEg c3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwogcmVhY2hhYmxlIHRo cm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRleC4KKworCitFbGln aWJpbGl0eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKworVGhlIGV4ZWN1dG9yIGNvbXB1dGVzIG1vZGlmaWVkX2lkeF9h dHRycyAodGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0aGlzIFVQREFURQorY2hhbmdlZCwgYXR0 cmlidXRlIG51bWJlcnMgb2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXIpIGFuZAorcGFzc2VzIGl0IHRvIGhlYXBfdXBkYXRlIHZpYSB0YWJsZV90dXBsZV91 cGRhdGUuICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCitjbGFzc2lmaWVzIHRoZSB1cGRhdGU6 CisKKyAgSEVBUF9VUERBVEVfQUxMX0lOREVYRVMKKyAgICAgICAgSE9UIGlzIG5vdCBwZXJt aXR0ZWQ7IHRoZSBuZXcgdHVwbGUgZ29lcyBvbiBhIGZyZXNoIFRJRCBhbmQgZXZlcnkKKyAg ICAgICAgaW5kZXggZ2V0cyBhIG5ldyBlbnRyeS4KKyAgSEVBUF9IRUFQX09OTFlfVVBEQVRF CisgICAgICAgIG5vIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2Vk LCBzbyBubyBpbmRleCBuZWVkcyBhCisgICAgICAgIG5ldyBlbnRyeSAoY2xhc3NpYyBIT1Qp LgorICBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUKKyAgICAgICAgYXQgbGVhc3Qgb25l IG5vbi1zdW1tYXJpemluZyBpbmRleCdzIGF0dHJpYnV0ZSBjaGFuZ2VkLCBidXQgdGhlCisg ICAgICAgIHVwZGF0ZSBtYXkgc3RheSBvbiB0aGUgSE9UIGNoYWluIGFuZCBtYWludGFpbiBv bmx5IHRoZSBjaGFuZ2VkCisgICAgICAgIGluZGV4ZXMgc2VsZWN0aXZlbHkuCisKK0Egbm9u LXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5naW5nIHlpZWxkcyBIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUKK3VubGVzcyBvbmUgb2YgdGhlc2UgZm9yY2VzIEhFQVBf VVBEQVRFX0FMTF9JTkRFWEVTOgorCisgIDEuIFRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFw cGx5IHBhdGgsIGdhdGVkIHBlciBzdWJzY3JpcHRpb24gKHNlZSAiTG9naWNhbAorICAgICBy ZXBsaWNhdGlvbiIgYmVsb3cpLgorICAyLiBBbiBVUERBVEUgdG91Y2hpbmcgYW4gYXR0cmli dXRlIHJlZmVyZW5jZWQgYnkgYW4gZXhwcmVzc2lvbiBpbmRleAorICAgICAoc2VsZWN0aXZl IG1haW50ZW5hbmNlIG9mIGV4cHJlc3Npb24gaW5kZXhlcyBpcyBub3QgaW1wbGVtZW50ZWQg eWV0KS4KKyAgMy4gQW4gVVBEQVRFIHRoYXQgY2hhbmdlcyAqZXZlcnkqIGluZGV4ZWQgYXR0 cmlidXRlOiB0aGVyZSBpcyBubyBpbmRleCB0bworICAgICBza2lwLCBzbyBhIHBsYWluIG5v bi1IT1QgdXBkYXRlIGlzIGNoZWFwZXIuCisKK1N5c3RlbSBjYXRhbG9ncyBzdGF5IGNsYXNz aWMtSE9UIG9ubHk6IGEgY2F0YWxvZyBVUERBVEUgdGhhdCBjaGFuZ2VzIGEKK25vbi1zdW1t YXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBmYWxscyBiYWNrIHRvIEhFQVBfVVBEQVRFX0FM TF9JTkRFWEVTLCBiZWNhdXNlCitjYXRhbG9nIHJlYWRzIGdvIHRocm91Z2ggbWFueSBwYXRo cyBub3QgYWxsIHByb3ZlbiBzYWZlIGFnYWluc3Qgc3RhbGUgY2hhaW4KK2VudHJpZXMuICBU aGlzIGlzIHRoZSBwcmUtSE9ULWluZGV4ZWQgYmVoYXZpb3VyIGZvciBzdWNoIHVwZGF0ZXMu CisKK0lOREVYX0FUVFJfQklUTUFQX0lOREVYRUQgKGNhY2hlZCBpbiByZF9pbmRleGVkYXR0 cikgaXMgdGhlIHNldCBvZiBjb2x1bW5zCityZWZlcmVuY2VkIGJ5IG5vbi1zdW1tYXJpemlu ZyBpbmRleGVzIHBsdXMsIGZvbGRlZCBpbiwgdGhlIGNvbHVtbnMgcmVmZXJlbmNlZAorb25s eSBieSBzdW1tYXJpemluZyBpbmRleGVzLCBzbyB0aGF0IGEgY2hhbmdlIHRvIGEgc3VtbWFy aXppbmctb25seSBjb2x1bW4gaXMKK3NlZW4gYnkgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZSBj b21wYXJpc29uIChpdHMgaW5kZXggaXMgbWFpbnRhaW5lZCB2aWEgdGhlCitjbGFzc2ljLUhP VCBzdW1tYXJpemluZyBwYXRoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgZmlsdGVyZWQg YnkgdGhlCitjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoIGlzIGFjY2Vzcy1tZXRo b2QgYWdub3N0aWMsIHNvIGEgY2hhbmdlIHRvIGEKK2NvbHVtbiBjb3ZlcmVkIGJ5IGFueSBp bmRleCBpcyBIT1QtaW5kZXhlZCByZWdhcmRsZXNzIG9mIHRoZSBpbmRleCdzIGFjY2Vzcwor bWV0aG9kLiAgU3VtbWFyaXppbmcgaW5kZXhlcyAoZS5nLiBCUklOKSBrZWVwIG5vIHBlci1y b3cgbGVhZiB0aGF0IGNhbiBnbworc3RhbGUgYW5kIGFyZSBtYWludGFpbmVkIHZpYSB0aGUg c3VtbWFyaXppbmcgcGF0aC4KKworCitUaGUgd3JpdGUgcGF0aAorLS0tLS0tLS0tLS0tLS0K KworRm9yIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSwgaGVhcF91cGRhdGU6CisKKyAg LSBzdG9yZXMgdGhlIG5ldyB0dXBsZSBhcyBhIGhlYXAtb25seSB0dXBsZSBvbiB0aGUgc2Ft ZSBwYWdlLCBsaW5rZWQgaW50bworICAgIHRoZSBjaGFpbiB2aWEgdF9jdGlkLCBleGFjdGx5 IGxpa2UgY2xhc3NpYyBIT1Q7IGFuZAorICAtIHNldHMgSEVBUF9JTkRFWEVEX1VQREFURUQg KHRfaW5mb21hc2syIGJpdCAweDA4MDApIG9uIHRoZSBuZXcgdHVwbGUgdG8KKyAgICBtYXJr IHRoYXQgdGhlIGNoYWluIG5vdyBjYXJyaWVzIGRpZmZlcmluZyBrZXlzLgorCitUaGVyZSBp cyBubyBzZXBhcmF0ZSBvbi1wYWdlIG1ldGEtaXRlbTogdGhlIGJpdCBvbiB0aGUgaGVhcC1v bmx5IHR1cGxlIGlzIHRoZQorZW50aXJlIG9uLWRpc2sgZm9vdHByaW50LiAgQXMgZm9yIGNs YXNzaWMgSE9ULCBpZiB0aGUgbmV3IHR1cGxlIGRvZXMgbm90IGZpdAorb24gdGhlIHBhZ2Ug dGhlIHVwZGF0ZSBmYWxscyBiYWNrIHRvIGEgbm9uLUhPVCAobmV3LXBhZ2UpIHVwZGF0ZS4K KworVGhlIGlubGluZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgaXMgY2VpbChuYXR0cy84KSBi eXRlcywgc2l6ZWQgYnkgdGhlIHR1cGxlJ3MKK09XTiBhdHRyaWJ1dGUgY291bnQgYXQgd3Jp dGUgdGltZSAoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMpLCBub3QgdGhlIHJlbGF0aW9uJ3MK K2N1cnJlbnQgbmF0dHMuICBBREQgQ09MVU1OIHJhaXNlcyB0aGUgcmVsYXRpb24ncyBuYXR0 cyB3aXRob3V0IHJld3JpdGluZworZXhpc3RpbmcgdHVwbGVzLCBzbyBvbmUgY2hhaW4gY2Fu IGhvbGQgaG9wcyB3aG9zZSBiaXRtYXBzIHdlcmUgc2l6ZWQgZm9yCitkaWZmZXJlbnQgKHNt YWxsZXIpIG5hdHRzOyBldmVyeSBjb25zdW1lciBsb2NhdGVzIGFuZCBzaXplcyBhIGhvcCdz IGJpdG1hcAorZnJvbSB0aGF0IGhvcCdzIG93biB3cml0ZS10aW1lIG5hdHRzIChIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyBpbgorYWNjZXNzL2hvdF9pbmRleGVkLmgpLiAgQSBjb2xs YXBzZS1zdXJ2aXZvciBzdHViIG92ZXJ3cml0ZXMgbmF0dHMgd2l0aCBpdHMgMAorc2VudGlu ZWwsIHNvIGl0IHByZXNlcnZlcyBpdHMgd3JpdGUtdGltZSBuYXR0cyBpbiB0aGUgdW51c2Vk IGJsb2NrLW51bWJlciBoYWxmCitvZiB0X2N0aWQgKHRoZSBvZmZzZXQgaGFsZiBpcyB0aGUg Zm9yd2FyZCBsaW5rKS4gIEJpdCBwb3NpdGlvbnMgYXJlIGF0dHJpYnV0ZQorYmFzZWQgYW5k IGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlciBiaXRtYXAgc2ltcGx5IE9S cyBpbnRvIHRoZSBsb3cKK2J5dGVzIG9mIGEgbGFyZ2VyIGNyb3NzZWQtYXR0cmlidXRlIGFj Y3VtdWxhdG9yLiAgRFJPUCBDT0xVTU4ga2VlcHMgdGhlIGF0dG51bQorc2xvdCAoaXQgbmV2 ZXIgcmVudW1iZXJzKSwgc28gZXhpc3RpbmcgYml0bWFwcyBzdGF5IGFsaWduZWQuCisKK0Fm dGVyIHRoZSB1cGRhdGUsIHRhYmxlX3R1cGxlX3VwZGF0ZSByZXBvcnRzIHVwZGF0ZV9hbGxf aW5kZXhlcyA9IGZhbHNlICh0aGUKK3R1cGxlIGlzIGhlYXAtb25seSkuICBUaGUgZXhlY3V0 b3IgdGhlbiBtYWludGFpbnMgaW5kZXhlcyBzZWxlY3RpdmVseToKK0V4ZWNTZXRJbmRleFVu Y2hhbmdlZCBtYXJrcyBlYWNoIGluZGV4IHdob3NlIGtleSBhdHRyaWJ1dGVzIGRpZCBub3Qg Y2hhbmdlIGFzCit1bmNoYW5nZWQsIGFuZCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMgaW5zZXJ0 cyBhIGZyZXNoIGVudHJ5IG9ubHkgaW50byB0aGUKK2luZGV4ZXMgdGhhdCBkaWQgY2hhbmdl LiAgRWFjaCBzdWNoIGVudHJ5IHBvaW50cyBhdCB0aGUgbmV3IHR1cGxlJ3Mgb3duIFRJRC4K KworCitUaGUgY2hhaW4gYW5kIHRoZSB0d28ga2luZHMgb2YgbGVhZiBlbnRyeQorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FmdGVyIGEgSE9ULWlu ZGV4ZWQgdXBkYXRlIHRoZXJlIGFyZSwgZm9yIGEgY2hhbmdlZCBpbmRleCwgdHdvIGtpbmRz IG9mIGxlYWYKK2VudHJ5IHJlYWNoaW5nIHRoZSBjaGFpbjoKKworICAtIHRoZSBwcmUtdXBk YXRlIGVudHJ5IGZvciB0aGUgT0xEIGtleSwgc3RpbGwgcG9pbnRpbmcgYXQgYW4gb2xkZXIg Y2hhaW4KKyAgICBtZW1iZXIgKG5vdyBzdGFsZSBvbmNlIHRoZSB3YWxrIGNyb3NzZXMgdGhl IEhPVC1pbmRleGVkIGhvcCk7IGFuZAorICAtIHRoZSBmcmVzaCBlbnRyeSBmb3IgdGhlIE5F VyBrZXksIHBvaW50aW5nIGF0IHRoZSBuZXcgaGVhcC1vbmx5IHR1cGxlLgorCitJbmRleCBi dWlsZCBhbmQgUkVJTkRFWCBpbmRleCBhIGxpdmUgSE9ULWluZGV4ZWQgdHVwbGUgdW5kZXIg aXRzIE9XTiBUSUQgKG5vdAordGhlIGNoYWluIHJvb3QpLCBzbyB0aGUgZnJlc2hseSBidWls dCBlbnRyeSBoYXMgbm8gaG9wIGFmdGVyIGl0IGFuZCBpcyBuZXZlcgordHJlYXRlZCBhcyBz dGFsZS4KKworCitSZWFkLXNpZGUgY29ycmVjdG5lc3M6IHRoZSBjcm9zc2VkLWF0dHJpYnV0 ZSBiaXRtYXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCitoZWFwX2hvdF9zZWFyY2hfYnVmZmVyIHdhbGtzIHRoZSBjaGFpbiBmcm9t IHRoZSBlbnRyeSdzIHRhcmdldCB0byB0aGUgbGl2ZQordmlzaWJsZSB0dXBsZS4gIEVhY2gg aG9wIGl0IGNyb3NzZXMgYWZ0ZXIgdGhlIGVudHJ5J3Mgb3duIHRhcmdldCAtLSBhIGxpdmUK K0hPVC1pbmRleGVkIG1lbWJlciwgYSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViLCBvciBhIGNv bGxhcHNlZCAocmVkaXJlY3RlZCkKK3ByZWZpeCAtLSBjb250cmlidXRlcyB0aGF0IGhvcCdz IGlubGluZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgdG8gYSBydW5uaW5nCit1bmlvbiwgSW5k ZXhGZXRjaFRhYmxlRGF0YS54c19ob3RfaW5kZXhlZF9jcm9zc2VkLCBhbmQgc2V0cworKmhv dF9pbmRleGVkX3JlY2hlY2sgdG8gZmxhZyB0aGF0IHRoZSB3YWxrIGNyb3NzZWQgYXQgbGVh c3Qgb25lIHN1Y2ggaG9wLgorCitUaGUgaW5kZXgtYWNjZXNzIGxheWVyIChpbmRleF9mZXRj aF9oZWFwKSB0ZXN0cyB0aGF0IHVuaW9uIGFnYWluc3QgdGhlCithcnJpdmluZyBpbmRleCdz IGtleSBjb2x1bW5zLiAgQW55IG92ZXJsYXAgbWVhbnMgYSBjcm9zc2VkIGhvcCBjaGFuZ2Vk IG9uZSBvZgordGhpcyBpbmRleCdzIGlucHV0cywgc28gdGhlIGVudHJ5J3Mgc3RvcmVkIGtl eSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgbGl2ZQordHVwbGU6IEluZGV4U2NhbkRlc2MueHNf aG90X2luZGV4ZWRfc3RhbGUgaXMgc2V0LCBhbmQgSW5kZXhTY2FuLAorSW5kZXhPbmx5U2Nh biwgQ0xVU1RFUiwgYW5kIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIHJlcGxpY2EtaWRlbnRp dHkgbG9va3VwcworZHJvcCB0aGUgdHVwbGUuICBJZiB0aGUgdW5pb24gaXMgZGlzam9pbnQg ZnJvbSB0aGUgaW5kZXgncyBrZXkgY29sdW1ucywgbm9uZQorb2YgdGhlIGluZGV4J3MgaW5w dXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhlIGVudHJ5IGlzIGN1cnJlbnQg YW5kCit0aGUgcm93IGlzIHJldHVybmVkLgorCitUaGUgdW5pb24gaXMgY29tcGxldGU6IGV2 ZXJ5IGNyb3NzZWQgbGl2ZSBob3AgYW5kIHN0dWIgY29udHJpYnV0ZXMgaXRzCitiaXRtYXAs IGFuZCBjaGFpbiBjb2xsYXBzZSBvbmx5IGV2ZXIgcmVjbGFpbXMgYSBtZW1iZXIgd2hvc2Ug YXR0cmlidXRlcyBhcmUgYQorc3Vic2V0IG9mIHRoZSBzdXJ2aXZpbmcgbGF0ZXIgaG9wcyAo c2VlICJQcnVuZSBhbmQgY2hhaW4gY29sbGFwc2UiKSwgc28gYQorcmVhZGVyIGNyb3NzaW5n IHRoZSBzdXJ2aXZvcnMgc3RpbGwgc2VlcyBldmVyeSBjb2xsYXBzZWQgaG9wJ3MgYXR0cmli dXRlcy4KK0Rpc2pvaW50bmVzcyB0aGVyZWZvcmUgcmVsaWFibHkgbWVhbnMgdGhlIGVudHJ5 IGlzIGN1cnJlbnQuCisKK1RoaXMgbmVlZHMgbm8gdmFsdWUgY29tcGFyaXNvbiBhbmQgbm8g bGVhZiBrZXksIHNvIGl0IHNlcnZlcyBlcXVhbGl0eSwgcmFuZ2UsCithbmQgaW5lcXVhbGl0 eSBzY2FucyB1bmlmb3JtbHksIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZCB3aG9zZSBj b2x1bW5zIGFyZQorZWxpZ2libGUgZm9yIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGFuZCBpcyBj b3JyZWN0IGV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQKK2F3YXkgYW5kIGJhY2sgKFggLT4g WSAtPiBYKTogdGhlIHVwZGF0ZSB0aGF0IHJlc3RvcmVkIHRoZSB2YWx1ZSBwbGFudGVkIGEK K2ZyZXNoIGVudHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gbGl2ZSB0dXBsZSwgd2hvc2Ugd2Fs ayBjcm9zc2VzIG5vIGxhdGVyCitrZXktY2hhbmdpbmcgaG9wLCBzbyB0aGF0IGVudHJ5IHVu aXF1ZWx5IHJldHVybnMgdGhlIHJvdyB3aGlsZSB0aGUgc3RhbGUKK2FuY2VzdG9yIGVudHJ5 IC0tIHdob3NlIHdhbGsgZG9lcyBjcm9zcyB0aGUgY2hhbmdpbmcgaG9wcyAtLSBpcyBkcm9w cGVkLgorCitUaGUgcmVhZCBtZWNoYW5pc20gbmV2ZXIgcmVjb25zdHJ1Y3RzIG9yIGNvbXBh cmVzIGFuIGluZGV4IGtleSwgc28gaXQgbmVlZHMgbm8KK3Blci1hY2Nlc3MtbWV0aG9kIHN1 cHBvcnQuICAobmJ0cmVlIGtlZXBzIGFuIGludGVybmFsIGxlYWYta2V5IGNvbXBhcmlzb24s CitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYsIHVzZWQgb25seSBieSBfYnRfY2hlY2tfdW5p cXVlIHRvIHRlbGwgYSBzdGFsZSBjaGFpbgorZW50cnkgZnJvbSBhIGxpdmUgZHVwbGljYXRl IGR1cmluZyBhIHVuaXF1ZSBpbnNlcnQ7IGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSByZWFkCitw YXRoLikKKworVW5pcXVlIGNoZWNrcy4gIF9idF9jaGVja191bmlxdWUgZmV0Y2hlcyB0aGUg Y29uZmxpY3RpbmcgdHVwbGUgdW5kZXIKK1NuYXBzaG90RGlydHkgYW5kLCB3aGVuIHRoZSBj aGFpbiB3YWxrIGNyb3NzZWQgYSBIT1QtaW5kZXhlZCBob3AsIGNvbXBhcmVzIHRoZQorbGl2 ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5nIGxlYWYgd2l0aCB0 aGUgaW5kZXgncyBvd24KK29yZGVyaW5nIHByb2NlZHVyZSAoX2J0X2hlYXBfa2V5c19lcXVh bF9sZWFmLCB1c2luZyBCVE9SREVSX1BST0MgdW5kZXIgZWFjaAorY29sdW1uJ3MgY29sbGF0 aW9uKS4gIFRoaXMgcmVjaGVjayBpcyByZWFjaGVkIG9ubHkgZm9yIGFuIGluZGV4IHJlY2Vp dmluZyBhCitmcmVzaCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGU7IEhlYXBV cGRhdGVIb3RBbGxvd2FibGUgZGlzcXVhbGlmaWVzCithbnkgVVBEQVRFIHRoYXQgdG91Y2hl cyBhbiBleHByZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSwgc28gdGhlIGluZGV4IGhlcmUgbmV2 ZXIKK2hhcyBhbiBleHByZXNzaW9uIGtleSBjb2x1bW4gKGV2ZXJ5IGtleSBjb2x1bW4gaXMg YSBwbGFpbiBhdHRyaWJ1dGUpLCBhbmQgdGhlCitjb21wYXJpc29uIHJlYWRzIGF0dHJpYnV0 ZSB2YWx1ZXMgc3RyYWlnaHQgZnJvbSB0aGUgaGVhcCBzbG90IC0tIG5vIGV4cHJlc3Npb24K K2V2YWx1YXRpb24gb3IgZXhlY3V0b3Igc3RhdGUgaXMgbmVlZGVkLiAgVXNpbmcgdGhlIG9w Y2xhc3MgY29tcGFyYXRvciAtLSBub3QgYQorYml0d2lzZSBpbWFnZSBjb21wYXJpc29uIC0t IG1lYW5zIGEga2V5Cit0aGF0IHdhcyBjeWNsZWQgYXdheSBhbmQgYmFjayAoWCAtPiBZIC0+ IFgpIGRvZXMgbm90IHJhaXNlIGEgc3B1cmlvdXMKK2R1cGxpY2F0ZSBhZ2FpbnN0IGl0cyBv d24gc3RhbGUgbGVhZiwgd2hpbGUgYSBnZW51aW5lbHkgbGl2ZSBkdXBsaWNhdGUgKGVxdWFs Cit1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCwgZS5n LiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcworc3RpbGwgZGV0ZWN0ZWQuICAoQXBwZW5kaXgg QSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCisKKworQXBwZW5kaWNlcwor LS0tLS0tLS0tLQorCitBcHBlbmRpeCBBOiBXaHkgdGhlIHVuaXF1ZS1jaGVjayBwYXRoIG5l ZWRzIGEgdmFsdWUgY29tcGFyaXNvbiBhdCBhbGwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlz IGlzIHRoZSBvbmUgcGxhY2UgSE9ULWluZGV4ZWQgZG9lcyBjb21wYXJlIGEga2V5IHZhbHVl LCBldmVuIHRob3VnaCB0aGUKK3JlYWQgcGF0aCBkZWxpYmVyYXRlbHkgYXZvaWRzIG9uZS4g IFRoZSByZXN0IG9mIHRoaXMgYXBwZW5kaXggZXhwbGFpbnMgd2h5IHRoZQorY29tcGFyaXNv biBpcyBuZWVkZWQsIHdoeSBpdCBtdXN0IHVzZSB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIHJh dGhlciB0aGFuIGEKK2JpdHdpc2Ugb25lLCBhbmQgd2h5IHRoZSBBQkEgY2FzZSBpcyB3aGF0 IGZvcmNlcyB0aGUgaXNzdWUuCisKKzEuIFRoZSBzZXR1cDogd2h5IGEgdW5pcXVlIGluc2Vy dCBjYW4gZXZlbiByZWFjaCBhIHN0YWxlIGxlYWYKKworVW5kZXIgY2xhc3NpYyBIT1QsIGFu IGluZGV4IGhhcyBleGFjdGx5IG9uZSBsZWFmIGVudHJ5IHBlciBsb2dpY2FsIHJvdywgYW5k CitldmVyeSBsZWFmIGVudHJ5J3Mga2V5IG1hdGNoZXMgdGhlIGxpdmUgdHVwbGUgaXQgY2hh aW4tcmVzb2x2ZXMgdG8uICBTbworX2J0X2NoZWNrX3VuaXF1ZSBjYW4gdHJ1c3Q6ICJpZiBJ IGZpbmQgYSBsZWFmIHdob3NlIGtleSBlcXVhbHMgbXkgbmV3IGtleSwgYW5kCitpdCByZXNv bHZlcyB0byBhIGxpdmUgdHVwbGUsIHRoYXQncyBhIGdlbnVpbmUgZHVwbGljYXRlLiIKKwor SE9UL1NJVSBicmVha3MgdGhhdCBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlLiAgQSBIT1Qt aW5kZXhlZCBVUERBVEUgdGhhdAorY2hhbmdlcyBjb2x1bW4gYSBmcm9tIFggdG8gWToKKyAt IGluc2VydHMgYSBmcmVzaCBsZWFmIGVudHJ5IChZIC0+IG5ldyB0dXBsZSkgaW50byBpZHhf YSwgYW5kCisgLSBsZWF2ZXMgdGhlIG9sZCBsZWFmIGVudHJ5IChYIC0+IG9sZCBjaGFpbiBy b290KSBpbiBwbGFjZS4KKworVGhhdCBvbGQgKFggLT4gcm9vdCkgZW50cnkgaXMgbm93IHN0 YWxlOiBpdCBzdGlsbCBjaGFpbi1yZXNvbHZlcyB0byBhIGxpdmUKK3R1cGxlLCBidXQgdGhh dCBsaXZlIHR1cGxlJ3MgY3VycmVudCBhIGlzIFksIG5vdCBYLiAgVGhlIHJlYWQgcGF0aCBo YW5kbGVzIHRoaXMKK3dpdGggdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAobm8gdmFs dWUgY29tcGFyaXNvbiBuZWVkZWQpOiBpZiB0aGUgd2FsaworZnJvbSB0aGUgZW50cnkncyB0 YXJnZXQgdG8gdGhlIGxpdmUgdHVwbGUgY3Jvc3NlcyBhIGhvcCB0aGF0IGNoYW5nZWQgYSwg dGhlCitlbnRyeSBpcyBzdGFsZSBhbmQgZHJvcHBlZC4KKworV2hlbiB5b3Ugbm93IElOU0VS VCBhIHJvdyB3aXRoIGEgPSBYLCBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zIGlkeF9hIGZvciBr ZXkgWAorYW5kIGZpbmRzIHRoYXQgc3RhbGUgKFggLT4gcm9vdCkgbGVhZi4gIEl0IG11c3Qg ZGVjaWRlOiBpcyB0aGlzIGEgcmVhbAorY29uZmxpY3Q/CisKKzIuIFdoeSB0aGUgcmVhZC1w YXRoIGJpdG1hcCBpcyBub3Qgc3VmZmljaWVudCBoZXJlCisKK1RoZSByZWFkIHBhdGgncyBs b2dpYyBpczogInRoaXMgZW50cnkgY3Jvc3NlZCBhIGhvcCB0aGF0IGNoYW5nZWQgYSA9PiBz dGFsZSA9PgorZHJvcCBpdCwgdGhlIGZyZXNoIGVudHJ5IHdpbGwgc3VwcGx5IHRoZSByb3cu IiAgRm9yIHNjYW5zIHRoYXQncyBjb3JyZWN0IGFuZAorY29tcGxldGUsIGJlY2F1c2UgZXZl cnkgbGl2ZSByb3cgaGFzIGV4YWN0bHkgb25lIG5vbi1zdGFsZSBlbnRyeSB0aGF0CityZS1z dXBwbGllcyBpdC4KKworQnV0IGEgdW5pcXVlIGNoZWNrIGlzIGFza2luZyBhIGRpZmZlcmVu dCBxdWVzdGlvbi4gIEl0IGlzIG5vdCAic2hvdWxkIEkgcmV0dXJuCit0aGlzIHJvdz8iIC0t IGl0IGlzICJkb2VzIHRoZSBsaXZlIHR1cGxlIHRoaXMgZW50cnkgcmVzb2x2ZXMgdG8gY29u ZmxpY3Qgd2l0aAordGhlIGtleSBJJ20gaW5zZXJ0aW5nPyIgIFRoZSBiaXRtYXAgY2FuIG9u bHkgdGVsbCB5b3UgImFuIGluZGV4ZWQgYXR0cmlidXRlCitjaGFuZ2VkIHNvbWV3aGVyZSBv biB0aGUgY2hhaW4uIiAgSXQgY2Fubm90IHRlbGwgeW91IHdoYXQgdGhlIGxpdmUgdmFsdWUg aXMKK25vdywgYW5kIHRoYXQgaXMgZXhhY3RseSB3aGF0IHlvdSBuZWVkIHRvIGtub3cgdG8g ZGV0ZWN0IGEgZHVwbGljYXRlLgorCitUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBBQkEgcHJv YmxlbS4gIENvbnNpZGVyOgorCisgIElOU0VSVCAoYT0xMCkgICAgICAgICAgICAgICAgICBM UFsxXSBhPTEwICAgKHJvb3QpCisgIFVQREFURSBhPTExICAgKEhPVC1pbmRleGVkKSAgICBM UFsyXSBhPTExICAgYml0bWFwIHthfSwgbGVhZiAoMTEpLT5MUFsyXQorICBVUERBVEUgYT0x MCAgIChIT1QtaW5kZXhlZCkgICAgTFBbM10gYT0xMCAgIGJpdG1hcCB7YX0sIGxlYWYgKDEw KS0+TFBbM10sIGxpdmUKKworaWR4X2Egbm93IGhhcyBsZWF2ZXMgKDEwKS0+TFBbMV0gW3N0 YWxlIGFuY2VzdG9yXSwgKDExKS0+TFBbMl0gW3N0YWxlXSwgYW5kCisoMTApLT5MUFszXSBb ZnJlc2gsIGxpdmVdLgorCitOb3cgSU5TRVJUIChhPTEwKSwgYSBnZW51aW5lIGR1cGxpY2F0 ZSBvZiB0aGUgbGl2ZSByb3cuICBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zCitmb3Iga2V5IDEw IGFuZCBmaW5kcyB0aGUgKDEwKS0+TFBbMV0gc3RhbGUgYW5jZXN0b3IgZW50cnkuICBUaGUg Y2hhaW4gd2FsayBmcm9tCitMUFsxXSB0byB0aGUgbGl2ZSB0dXBsZSBMUFszXSBjcm9zc2Vz IGhvcHMgdGhhdCBjaGFuZ2VkIGEgKDEwLT4xMSwgdGhlbgorMTEtPjEwKSwgc28gdGhlIGJp dG1hcCBzYXlzICJzdGFsZS4iICBJZiB0aGUgdW5pcXVlIGNoZWNrIHRydXN0ZWQgdGhlIGJp dG1hcAorYWxvbmUgaXQgd291bGQgc2tpcCAoMTApLT5MUFsxXSBhcyBzdGFsZSBhbmQgbWlz cyB0aGUgcmVhbCBkdXBsaWNhdGUuICBUaGUKK2JpdG1hcCBpcyBmb29sZWQgYmVjYXVzZSBh IGNoYW5nZWQgKHNvIHRoZSBiaXQgaXMgc2V0KSBldmVuIHRob3VnaCBpdCBjaGFuZ2VkCiti YWNrIHRvIHRoZSBzYW1lIHZhbHVlOiAiYW4gYXR0cmlidXRlIGNoYW5nZWQgb24gdGhlIGNo YWluIiBpcyBub3QgInRoZSBsaXZlCit2YWx1ZSBkaWZmZXJzIGZyb20gdGhpcyBsZWFmJ3Mg a2V5LiIgIFVuZGVyIEFCQSB0aGV5IGRpdmVyZ2UuCisKK1RoZSBzaGFycGVyIGNhc2UgaXMg Y29uY3VycmVuY3kuICBXaGlsZSB0aGUgcmVzdG9yaW5nIFVQREFURSAoYTogMTEgLT4gMTAp IGlzCitpbiBmbGlnaHQsIGl0IGhhcyB3cml0dGVuIGl0cyBuZXcgaGVhcCB0dXBsZSBidXQg bm90IHlldCBpbnNlcnRlZCB0aGUgZnJlc2gKKygxMCktPkxQWzNdIGxlYWYuICBBIGNvbmN1 cnJlbnQgSU5TRVJUIChhPTEwKSBydW5uaW5nIGl0cyBfYnRfY2hlY2tfdW5pcXVlIHNjYW4K K2luIHRoYXQgd2luZG93IHNlZXMgb25seSB0aGUgc3RhbGUgKDEwKS0+TFBbMV0gYW5jZXN0 b3IuICBUaGUgdmFsdWUgcmVjaGVjaworYmVsb3cgbWFrZXMgdGhhdCBoaXQgcmVzb2x2ZSB0 byB4d2FpdCBvbiB0aGUgaW4tZmxpZ2h0IHVwZGF0ZXIgKHZpYQorX2J0X2RvaW5zZXJ0J3Mg d2FpdC1hbmQtcmVjaGVjayksIHNvIHRoZSBpbnNlcnRlciByZS1jaGVja3MgYWZ0ZXIgdGhl IHVwZGF0ZXIKK2NvbW1pdHMgYW5kIGZpbmRzIHRoZSBjb25mbGljdC4gIEEgYml0bWFwLW9u bHkgdmVyZGljdCB3b3VsZCBza2lwIHRoZSBhbmNlc3RvcgorYmVmb3JlIHJlYWNoaW5nIHRo ZSB4d2FpdCBsb2dpYyBhbmQgYWRtaXQgYSBkdXBsaWNhdGUgLS0gd2hpY2ggaXMgd2h5IHRo ZQorcmVjaGVjayBpcyBhIGNvcnJlY3RuZXNzIHJlcXVpcmVtZW50LCBub3QgbWVyZWx5IGFu IG9wdGltaXphdGlvbi4KKworMy4gV2h5IGEgdmFsdWUgY29tcGFyaXNvbiBmaXhlcyBpdCwg YW5kIHdoeSBpdCBtdXN0IGJlIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IKKworU28gdGhlIHVu aXF1ZSBwYXRoIG5lZWRzIHRvIGxvb2sgYXQgdGhlIGFjdHVhbCBsaXZlIHZhbHVlLCBub3Qg anVzdCAiZGlkCitzb21ldGhpbmcgY2hhbmdlLiIgIF9idF9jaGVja191bmlxdWUgZmV0Y2hl cyB0aGUgY29uZmxpY3RpbmcgdHVwbGUgdW5kZXIKK1NuYXBzaG90RGlydHkgYW5kLCB3aGVu IGhpX3JlY2hlY2sgc2F5cyBhIEhPVC1pbmRleGVkIGhvcCB3YXMgY3Jvc3NlZCwgY2FsbHMK K19idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB0byBjb21wYXJlIHRoZSBsaXZlIHR1cGxlJ3Mg Y3VycmVudCBrZXkgYWdhaW5zdCB0aGUKK2Fycml2aW5nIGxlYWYncyBzdG9yZWQga2V5Ogor CisgLSBsaXZlIGtleSBlcXVhbHMgdGhlIGxlYWYga2V5IC0+IGdlbnVpbmUgZHVwbGljYXRl IChvciBhbiBpbi1mbGlnaHQgY29uZmxpY3QKKyAgIHJlYWNoZWQgYXMgeHdhaXQpIC0tIGNv cnJlY3Q6IEFCQSBiYWNrIHRvIFggaXMgYSByZWFsIGNvbmZsaWN0IHdpdGggYSBuZXcgWC4K KyAtIGxpdmUga2V5IGRpZmZlcnMgLT4gdGhlIGxlYWYgaXMgdHJ1bHkgc3RhbGUgLT4gc2tp cCBpdCAodGhlIGZyZXNoIGVudHJ5CisgICBoYW5kbGVzIHRoZSByZWFsIHJvdykuCisKK1do aWNoIGVxdWFsaXR5PyAgVHdvIGNhbmRpZGF0ZXM6CisKK0JpdHdpc2UvaW1hZ2UgY29tcGFy aXNvbiAoZGF0dW1faW1hZ2VfZXEpIGNvbXBhcmVzIHJhdyBieXRlcy4gIFRoYXQgaXMgd3Jv bmcKK2ZvciB1bmlxdWUgY2hlY2tpbmcgaW4gdGhlIGRhbmdlcm91cyBkaXJlY3Rpb24uICBV bmlxdWVuZXNzIGluIFBvc3RncmVTUUwgaXMKK2RlZmluZWQgYnkgdGhlIGluZGV4IG9wY2xh c3MncyBlcXVhbGl0eSBvcGVyYXRvciwgbm90IGJ5dGUgaWRlbnRpdHksIGFuZCBtYW55Cit0 eXBlcyBoYXZlIHZhbHVlcyBlcXVhbCB1bmRlciB0aGUgb3BjbGFzcyBidXQgYnl0ZS1kaXN0 aW5jdDoKKyAtIG51bWVyaWM6IDEuMCBhbmQgMS4wMCBhcmUgb3BjbGFzcy1lcXVhbCwgZGlm ZmVyZW50IG9uLWRpc2sgYnl0ZXMuCisgLSBmbG9hdDg6IC0wLjAgYW5kICswLjAgYXJlIGVx dWFsLCBkaWZmZXJlbnQgYml0IHBhdHRlcm5zLgorIC0gdGV4dC9jaXRleHQgdW5kZXIgYSBu b25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbjogY2Fub25pY2FsbHktZXF1aXZhbGVudAorICAg c3RyaW5ncyB0aGF0IGFyZSBub3QgYnl0ZS1pZGVudGljYWwuCisKK0EgYml0d2lzZSBjb21w YXJpc29uIHdvdWxkIGNvbmNsdWRlICJub3QgZXF1YWwgPT4gc3RhbGUgPT4gc2tpcCIgZm9y IGEgbGl2ZQorMS4wMCB2ZXJzdXMgYW4gaW5zZXJ0ZWQgMS4wIGFuZCBtaXNzIGEgZ2VudWlu ZSB2aW9sYXRpb24gLS0gYSBjb3JyZWN0bmVzcyBob2xlCithcyBiYWQgYXMgdGhlIEFCQSBv bmUuCisKK1NvIF9idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB1c2VzIHRoZSBpbmRleCdzIG93 biBCVE9SREVSX1BST0MgKGJ0cmVlIHN1cHBvcnQKK2Z1bmN0aW9uIDEpIHVuZGVyIGVhY2gg a2V5IGNvbHVtbidzIGNvbGxhdGlvbiwgdGhlIHNhbWUgbWFjaGluZXJ5IF9idF9jb21wYXJl CithbmQgX2J0X21rc2NhbmtleSB1c2UgdG8gZGVmaW5lIGVxdWFsaXR5IGZvciB0aGUgaW5k ZXguICBBIHplcm8gcmVzdWx0IG1lYW5zCisiZXF1YWwgYXMgdGhlIGluZGV4IGRlZmluZXMg ZXF1YWxpdHksIiB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIHVuaXF1ZS12aW9sYXRpb24KK2Nv bmRpdGlvbiwgYW5kIHRoZSB2ZXJkaWN0IGFncmVlcyB3aXRoIHRoZSBpbmRleCdzIG93biBu b3Rpb24gb2YgdW5pcXVlbmVzcyBpbgorYm90aCBkaXJlY3Rpb25zLgorCis0LiBXaHkgbm8g ZXhwcmVzc2lvbiBldmFsdWF0aW9uIGlzIG5lZWRlZAorCitfYnRfaGVhcF9rZXlzX2VxdWFs X2xlYWYgcmVhZHMgZWFjaCBrZXkgY29sdW1uIHN0cmFpZ2h0IGZyb20gdGhlIGhlYXAgc2xv dAorKHNsb3RfZ2V0YXR0cikgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSBsZWFmIGRhdHVtOyBp dCBkb2VzIG5vdCBldmFsdWF0ZSBpbmRleGVkCitleHByZXNzaW9ucyBhbmQgbmVlZHMgbm8g ZXhlY3V0b3Igc3RhdGUuICBUaGF0IGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGUKK3JlY2hl Y2sgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2VpdmluZyBhIGZyZXNo IGVudHJ5IGR1cmluZyBhCitIT1QtaW5kZXhlZCB1cGRhdGUsIGFuZCBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGRpc3F1YWxpZmllcyBhbnkgVVBEQVRFIHRoYXQKK3RvdWNoZXMgYW4gYXR0 cmlidXRlIHJlZmVyZW5jZWQgYnkgYW4gZXhwcmVzc2lvbiBpbmRleAorKElOREVYX0FUVFJf QklUTUFQX0VYUFJFU1NJT04gY2FwdHVyZXMgZXZlcnkgc3VjaCBhdHRyaWJ1dGUpLiAgU28g YSBIT1QtaW5kZXhlZAorY2hhaW4gbmV2ZXIgaGFzIGEgY3Jvc3NlZCBob3AgYWZmZWN0aW5n IGFuIGV4cHJlc3Npb24gaW5kZXgsIHRoZSBpbmRleCByZWFjaGluZwordGhlIHJlY2hlY2sg bmV2ZXIgaGFzIGFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkgaW5ka2V5IGlzIGEg cmVhbAorYXR0cmlidXRlIG51bWJlciksIGFuZCB0aGVyZSBpcyBub3RoaW5nIHRvIGV2YWx1 YXRlLiAgSWYgc2VsZWN0aXZlIG1haW50ZW5hbmNlCitvZiBleHByZXNzaW9uIGluZGV4ZXMg aXMgaW1wbGVtZW50ZWQgaW4gdGhlIGZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbgorZXhwcmVz c2lvbi1ldmFsdWF0aW5nIGNvbXBhcmlzb24gKGUuZy4gRm9ybUluZGV4RGF0dW0pIHdvdWxk IGJlIHJlaW50cm9kdWNlZC4KKworNS4gV2h5IHRoZSBhc3ltbWV0cnkgKGJpdG1hcCBvbiBy ZWFkLCB2YWx1ZSByZWNoZWNrIG9uIHVuaXF1ZSkgaXMgaW50ZW50aW9uYWwKKworSXQgbG9v a3MgbGlrZSB0d28gZGlmZmVyZW50IGFuc3dlcnMgdG8gdGhlIHNhbWUgcXVlc3Rpb24sIGJ1 dCB0aGUgcXVlc3Rpb25zCitkaWZmZXI6CisKKyAtIFJlYWQvc2NhbiBwYXRoOiAic2hvdWxk IHRoaXMgcm93IGJlIHJldHVybmVkPyIgIEEgc3RhbGUgZW50cnkgaXMgcmVkdW5kYW50Cisg ICAodGhlIGZyZXNoIGVudHJ5IHN1cHBsaWVzIHRoZSByb3cpLCBzbyB0aGUgY29uc2VydmF0 aXZlIGJpdG1hcCB2ZXJkaWN0IGlzCisgICBzdWZmaWNpZW50IC0tIHdvcnN0IGNhc2UgdW5k ZXIgQUJBIHlvdSBkcm9wIGEgcmVkdW5kYW50IGVudHJ5IGFuZCB0aGUgZnJlc2gKKyAgIG9u ZSBzdGlsbCByZXR1cm5zIHRoZSByb3cuICBObyB2YWx1ZSBjb21wYXJpc29uLCBzbyByZWFk cyBzdGF5CisgICBhY2Nlc3MtbWV0aG9kLWFnbm9zdGljIGFuZCBjaGVhcC4KKyAtIFVuaXF1 ZS1jaGVjayBwYXRoOiAiaXMgdGhpcyBhIGNvbmZsaWN0PyIgIEEgd3JvbmcgInN0YWxlIiB2 ZXJkaWN0IGhlcmUgZG9lcworICAgbm90IGp1c3QgZHJvcCBhIHJlZHVuZGFudCBlbnRyeTsg aXQgc2lsZW50bHkgYWRtaXRzIGEgZHVwbGljYXRlLCBjb3JydXB0aW5nCisgICB0aGUgY29u c3RyYWludC4gIEl0IGNhbm5vdCB0b2xlcmF0ZSB0aGUgYml0bWFwJ3MgZmFsc2UgInN0YWxl IiB1bmRlciBBQkEgYW5kCisgICBtdXN0IGNvbnN1bHQgdGhlIGxpdmUgdmFsdWUgKG9yIHdh aXQgb24gYW4gaW4tZmxpZ2h0IHVwZGF0ZXIpIHZpYSB0aGUKKyAgIG9wY2xhc3MgY29tcGFy YXRvci4KKworVGhlIGJpdG1hcCBpcyBhIGZpbHRlciAoYSBuZWNlc3NhcnkgY29uZGl0aW9u OiAiY291bGQgYmUgc3RhbGUiKTsgdGhlIG9wY2xhc3MKK3JlY2hlY2sgaXMgdGhlIGF1dGhv cml0eSAodGhlIHN1ZmZpY2llbnQgY29uZGl0aW9uOiAiaXMgdGhlIGxpdmUga2V5IGFjdHVh bGx5CitkaWZmZXJlbnQsIG9yIGlzIGEgY29uZmxpY3RpbmcgdXBkYXRlIGluIGZsaWdodCIp LiAgVGhlIHVuaXF1ZSBwYXRoIGxheWVycyB0aGUKK2F1dGhvcml0eSBvbiB0b3Agb2YgdGhl IGZpbHRlciBwcmVjaXNlbHkgYmVjYXVzZSBpdHMgZXJyb3IgbW9kZSBpcwordW5mb3JnaXZp bmcuCisKK0luIG9uZSBzZW50ZW5jZTogdGhlIHVuaXF1ZSBjaGVjayBjb21wYXJlcyB0aGUg bGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IHRvIHRoZQorYXJyaXZpbmcgbGVhZiB3aXRoIHRo ZSBpbmRleCdzIG93biBlcXVhbGl0eSAobm90IGJ5dGVzKSBiZWNhdXNlIHRoZQorY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwIGNhbiBvbmx5IHNheSAic29tZXRoaW5nIGNoYW5nZWQiIC0t IHRydWUgdW5kZXIgYW4KK1gtPlktPlggY3ljbGUgZXZlbiB0aG91Z2ggdGhlIHZhbHVlIGlz IGJhY2sgdG8gWCAtLSBhbmQgb25seSBhbiBvcGNsYXNzLWNvcnJlY3QKK3ZhbHVlIGNvbXBh cmlzb24gKHdoaWNoIGFsc28gcm91dGVzIGFuIGluLWZsaWdodCByZXN0b3JpbmcgdXBkYXRl IHRvIHh3YWl0KSBjYW4KK2JvdGggcmVjb2duaXplIHRoZSBjeWNsZWQtYmFjayB2YWx1ZSBh cyBhIGdlbnVpbmUgZHVwbGljYXRlIGFuZCBjYXRjaAorZHVwbGljYXRlcyB0aGF0IGFyZSBv cGNsYXNzLWVxdWFsIGJ1dCBub3QgYnl0ZS1pZGVudGljYWwsIGVpdGhlciBvZiB3aGljaCBh CitiaXRtYXAgb3IgYSBiaXR3aXNlIGNvbXBhcmlzb24gd291bGQgZ2V0IHdyb25nLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBkYzMwN2ViNmRjNC4uOTBhNWFhYTUxYjMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL2hlYXBhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIK ICNpbmNsdWRlICJhY2Nlc3MvaGlvLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVk LmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9z dWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgpAQCAtNDQsMTMgKzQ1 LDE0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCIK ICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgIm5vZGVzL2xvY2tv cHRpb25zLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCisjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBA IC03OCw2ICs4MCw4IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2lucGxhY2VfcmVsX2xvY2soSGVh cFR1cGxlIG9sZHR1cCk7CiAjZW5kaWYKIHN0YXRpYyBCaXRtYXBzZXQgKkhlYXBVcGRhdGVN b2RpZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgSGVhcFR1 cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCk7CitzdGF0aWMgSGVhcFR1cGxlIGhlYXBf Zm9ybV9ob3RfaW5kZXhlZF90dXBsZShIZWFwVHVwbGUgdHVwLCBpbnQgcmVsbmF0dHMsCisJ CQkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOwogc3Rh dGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxvY2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBM b2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVf bG9jayk7CkBAIC0yMTA5LDkgKzIxMTMsMjUgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVs YXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJCSAqIElmIHRoaXMgaXMg dGhlIHNpbmdsZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZSwgd2UgY2FuIHJlaW5pdCB0aGUK IAkJICogcGFnZSBpbnN0ZWFkIG9mIHJlc3RvcmluZyB0aGUgd2hvbGUgdGhpbmcuICBTZXQg ZmxhZywgYW5kIGhpZGUKIAkJICogYnVmZmVyIHJlZmVyZW5jZXMgZnJvbSBYTG9nSW5zZXJ0 LgorCQkgKgorCQkgKiBBbHNvIHJlcXVpcmUgdGhhdCB0aGUgcGFnZSdzIHR1cGxlIGFyZWEg Y29udGFpbnMgbm90aGluZyBvdGhlciB0aGFuCisJCSAqIHRoaXMgdHVwbGUuICBWYWN1dW0n cyBscF90cnVuY2F0ZV9vbmx5IHNlY29uZCBwYXNzCisJCSAqIChQUlVORV9WQUNVVU1fQ0xF QU5VUCkgZG9lcyBub3QgY2FsbCBQYWdlUmVwYWlyRnJhZ21lbnRhdGlvbiwgc28gYQorCQkg KiBwYWdlIGNhbiBsZWdpdGltYXRlbHkgZW5kIHVwIHdpdGggb25lIExQX1VOVVNFRCBzbG90 IGF0IG9mZnNldCAxCisJCSAqIHBsdXMgb3JwaGFuIHR1cGxlIGJ5dGVzIGxlZnQgb3ZlciBm cm9tIHRoZSBwcmV2aW91cyBsaWZldGltZS4gSWYKKwkJICogaGVhcF9pbnNlcnQgcmV1c2Vz IHRoYXQgTFBfVU5VU0VEIHNsb3QsIHByaW1hcnkncyBwYWdlIGtlZXBzIHRoZQorCQkgKiBv cnBoYW4gYnl0ZXMgd2hpbGUgYSBzdGFuZGJ5IHJlcGxheWluZyBJTlNFUlQrSU5JVCB6ZXJv ZXMgdGhlbS4KKwkJICogRW1pdHRpbmcgSU5TRVJUK0lOSVQgaW4gdGhhdCBjYXNlIHRyaXBz IHdhbF9jb25zaXN0ZW5jeV9jaGVja2luZy4KKwkJICogRmFsbGluZyBiYWNrIHRvIGEgcmVn dWxhciBJTlNFUlQgKHdpdGggdGhlIEZQSSBvbiBmaXJzdCB0b3VjaCBhZnRlcgorCQkgKiBh IGNoZWNrcG9pbnQpIGtlZXBzIHJlcGxheSBieXRlLWlkZW50aWNhbCB3aXRob3V0IHNhY3Jp ZmljaW5nIGNyYXNoCisJCSAqIHNhZmV0eS4KKwkJICoKKwkJICogTk9URTogVGhpcyBtdXN0 IG1pcnJvciB0aGUgbG9naWMgaW4gaGVhcF9tdWx0aV9pbnNlcnQoKS4KIAkJICovCiAJCWlm IChJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGhlYXB0dXAtPnRfc2VsZikpID09IEZp cnN0T2Zmc2V0TnVtYmVyICYmCi0JCQlQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09 IEZpcnN0T2Zmc2V0TnVtYmVyKQorCQkJUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKSA9 PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBw ZXIgPT0KKwkJCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3NwZWNpYWwgLSBNQVhBTElHTiho ZWFwdHVwLT50X2xlbikpCiAJCXsKIAkJCWluZm8gfD0gWExPR19IRUFQX0lOSVRfUEFHRTsK IAkJCWJ1ZmZsYWdzIHw9IFJFR0JVRl9XSUxMX0lOSVQ7CkBAIC0zMjAyLDkgKzMyMjIsMTEg QEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKnRpZCkKICAqLwogVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAotCQkJQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMgcGdfYXR0cmlidXRlX3VudXNl ZCgpLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCisJCQlDb21tYW5kSWQgY2lk LCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2VkKCksCisJCQlTbmFwc2hvdCBj cm9zc2NoZWNrLCBib29sIHdhaXQsCiAJCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3Qg TG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKLQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRf aWR4X2F0dHJzLCBjb25zdCBib29sIGhvdF9hbGxvd2VkKQorCQkJY29uc3QgQml0bWFwc2V0 ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQlIZWFwVXBkYXRlSW5kZXhNb2RlIGhvdF9tb2Rl KQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJy ZW50VHJhbnNhY3Rpb25JZCgpOwpAQCAtMzIzMCw2ICszMjUyLDkgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1 cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxlX2xvY2sgPSBmYWxzZTsKIAlib29sCQlp c2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRlID0gZmFsc2U7CisJYm9vbAkJaG90X2lu ZGV4ZWQgPSBmYWxzZTsJLyogSE9ULWluZGV4ZWQgdXBkYXRlIChtb2RpZmllZCBhbgorCQkJ CQkJCQkJCSAqIGluZGV4ZWQgYXR0ciBidXQgc3RheWVkIEhPVCkgKi8KKwlTaXplCQloaV9i bWJ5dGVzID0gMDsgLyogdHJhaWxpbmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIHNpemUsIGlm IGFueSAqLwogCWJvb2wJCWtleV9pbnRhY3Q7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJl ZCA9IGZhbHNlOwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWRfbmV3ID0gZmFsc2U7CkBA IC0zNzk0LDYgKzM4MTksMzggQEAgbDI6CiAKIAluZXd0dXBzaXplID0gTUFYQUxJR04obmV3 dHVwLT50X2xlbik7CiAKKwkvKgorCSAqIEtlZXAgSE9ULWluZGV4ZWQgKFNJVSkgY2hhaW5z IHVuaWZvcm0uICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIHJldHVybnMKKwkgKiBIRUFQX0hF QVBfT05MWV9VUERBVEUgd2hlbmV2ZXIgdGhpcyB1cGRhdGUgbW9kaWZpZXMgbm8gaW5kZXhl ZAorCSAqIGF0dHJpYnV0ZS4gIEJ1dCBpZiB0aGUgdHVwbGUgYmVpbmcgdXBkYXRlZCBpcyBh bHJlYWR5IGEgSE9ULWluZGV4ZWQKKwkgKiBjaGFpbiBtZW1iZXIgKGl0IGNhcnJpZXMgSEVB UF9JTkRFWEVEX1VQREFURUQpLCBlbWl0dGluZyBhIGNsYXNzaWMtSE9UCisJICogdmVyc2lv biB3b3VsZCBzcGxpY2UgYSBub24tSEVBUF9JTkRFWEVEX1VQREFURUQgdHVwbGUgaW50byB0 aGUgY2hhaW4uCisJICogVGhlIHBydW5lL2NvbGxhcHNlIG1hY2hpbmVyeSBmb3J3YXJkcyBv bmx5IEhFQVBfSU5ERVhFRF9VUERBVEVEIG1lbWJlcnMKKwkgKiB0aHJvdWdoIGJyaWRnZXMs IHNvIHN1Y2ggYSBjbGFzc2ljLUhPVCB2ZXJzaW9uLCBvbmNlIGl0IGRpZXMgbWlkCisJICog Y29sbGFwc2VkLWNoYWluLCBoYXMgbm8gaGFuZGxlciBhbmQgdHJpcHMgdGhlICJub3QgbGlu a2VkIHRvIGZyb20gYW55CisJICogSE9UIGNoYWluIiBlcnJvci4gIFByb21vdGUgdG8gSEVB UF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFIGluc3RlYWQ6IHdpdGggYW4KKwkgKiBlbXB0eSBt b2RpZmllZC1hdHRycyBzZXQgdGhlIG5ldyB2ZXJzaW9uIGNhcnJpZXMgSEVBUF9JTkRFWEVE X1VQREFURUQKKwkgKiBhbmQgYW4gZW1wdHkgaW5saW5lLXRyYWlsaW5nIGJpdG1hcCwgaW5z ZXJ0cyBpbnRvIG5vIGluZGV4IChub3RoaW5nCisJICogY2hhbmdlZCksIGFuZCBrZWVwcyBl dmVyeSBjaGFpbiBtZW1iZXIgdW5pZm9ybS4gIENhdGFsb2cgcmVsYXRpb25zIGFyZQorCSAq IGNsYXNzaWMtSE9UIG9ubHkgYW5kIG5ldmVyIGNhcnJ5IEhFQVBfSU5ERVhFRF9VUERBVEVE LCBzbyB0aGlzIG5ldmVyCisJICogZmlyZXMgZm9yIHRoZW0uCisJICovCisJaWYgKGhvdF9t b2RlID09IEhFQVBfSEVBUF9PTkxZX1VQREFURSAmJgorCQkob2xkdHVwLnRfZGF0YS0+dF9p bmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJaG90X21vZGUgPSBI RUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEU7CisKKwkvKgorCSAqIEEgSE9ULWluZGV4ZWQg dXBkYXRlIGFwcGVuZHMgYSBmaXhlZC1zaXplIGlubGluZS10cmFpbGluZworCSAqIG1vZGlm aWVkLWF0dHJzIGJpdG1hcCB0byB0aGUgbmV3IHR1cGxlIChzZWUgYWNjZXNzL2hvdF9pbmRl eGVkLmgpLgorCSAqIFJlc2VydmUgcm9vbSBmb3IgaXQgaW4gdGhlIHBhZ2UtZml0IGNhbGN1 bGF0aW9uIG5vdywgd2hpbGUgd2Ugc3RpbGwKKwkgKiBtaWdodCB0YWtlIHRoZSBzYW1lLXBh Z2UgSE9UIHBhdGg7IGlmIHRoZSB1cGRhdGUgbGF0ZXIgZHJvcHMgdG8gbm9uLUhPVAorCSAq ICh0aGUgdHVwbGUgZG9lcyBub3QgZml0IG9uIHRoZSBwYWdlKSBpdCBpcyBzdG9yZWQgd2l0 aG91dCB0aGUgYml0bWFwIGFuZAorCSAqIHRoZSByZXNlcnZhdGlvbiBpcyBzaW1wbHkgY29u c2VydmF0aXZlLgorCSAqLworCWlmIChob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRF WF9VUERBVEUpCisJCWhpX2JtYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0ZXMoUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pKTsKKwluZXd0dXBzaXplID0gTUFY QUxJR04obmV3dHVwLT50X2xlbiArIGhpX2JtYnl0ZXMpOworCiAJaWYgKG5lZWRfdG9hc3Qg fHwgbmV3dHVwc2l6ZSA+IHBhZ2VmcmVlKQogCXsKIAkJVHJhbnNhY3Rpb25JZCB4bWF4X2xv Y2tfb2xkX3R1cGxlOwpAQCAtMzg5MSw3ICszOTQ4LDcgQEAgbDI6CiAJCXsKIAkJCS8qIE5v dGUgd2UgYWx3YXlzIHVzZSBXQUwgYW5kIEZTTSBkdXJpbmcgdXBkYXRlcyAqLwogCQkJaGVh cHR1cCA9IGhlYXBfdG9hc3RfaW5zZXJ0X29yX3VwZGF0ZShyZWxhdGlvbiwgbmV3dHVwLCAm b2xkdHVwLCAwKTsKLQkJCW5ld3R1cHNpemUgPSBNQVhBTElHTihoZWFwdHVwLT50X2xlbik7 CisJCQluZXd0dXBzaXplID0gTUFYQUxJR04oaGVhcHR1cC0+dF9sZW4gKyBoaV9ibWJ5dGVz KTsKIAkJfQogCQllbHNlCiAJCQloZWFwdHVwID0gbmV3dHVwOwpAQCAtMzk5MiwxMCArNDA0 OSwxMCBAQCBsMjoKIAl7CiAJCS8qCiAJCSAqIFNpbmNlIHRoZSBuZXcgdHVwbGUgaXMgZ29p bmcgaW50byB0aGUgc2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlCi0JCSAqIHRvIGRvIGEg SE9UIHVwZGF0ZS4gIENoZWNrIGlmIGFueSBvZiB0aGUgaW5kZXggY29sdW1ucyBoYXZlIGJl ZW4KLQkJICogY2hhbmdlZC4KKwkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYg SGVhcFVwZGF0ZUhvdEFsbG93YWJsZSgpIGhhcworCQkgKiBzYW5jdGlvbmVkIGl0IChIRUFQ X0hFQVBfT05MWV9VUERBVEUgb3IgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFKS4KIAkJ ICovCi0JCWlmIChob3RfYWxsb3dlZCkKKwkJaWYgKGhvdF9tb2RlICE9IEhFQVBfVVBEQVRF X0FMTF9JTkRFWEVTKQogCQkJdXNlX2hvdF91cGRhdGUgPSB0cnVlOwogCX0KIAllbHNlCkBA IC00MDA0LDYgKzQwNjEsMjcgQEAgbDI6CiAJCVBhZ2VTZXRGdWxsKHBhZ2UpOwogCX0KIAor CS8qCisJICogRm9yIGEgc2FtZS1wYWdlIEhPVC1pbmRleGVkIHVwZGF0ZSwgcmVwbGFjZSBo ZWFwdHVwIHdpdGggYSBjb3B5IHRoYXQKKwkgKiBjYXJyaWVzIHRoZSBpbmxpbmUtdHJhaWxp bmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIChhbmQKKwkgKiBIRUFQX0lOREVYRURfVVBEQVRF RCkuICBEb25lIGhlcmUsIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24sCisJICogYmVj YXVzZSBpdCBhbGxvY2F0ZXM7IHRoZSBiaXRtYXAncyBzaXplIHdhcyByZXNlcnZlZCBpbiBu ZXd0dXBzaXplCisJICogYWJvdmUuICBPbmx5IHRoZSBzdG9yZWQgdHVwbGUgKGhlYXB0dXAp IGdldHMgdGhlIGJpdG1hcCBhbmQgdGhlIGZsYWc7CisJICogdGhlIGNhbGxlcidzIG5ld3R1 cCBtdXN0IE5PVCBiZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQsIGJlY2F1c2UgaXQK KwkgKiBoYXMgbm8gdHJhaWxpbmcgYml0bWFwIC0tIHNlZSB0aGUgZmxhZyBoYW5kbGluZyBi ZWxvdy4KKwkgKi8KKwlpZiAodXNlX2hvdF91cGRhdGUgJiYgaG90X21vZGUgPT0gSEVBUF9T RUxFQ1RJVkVfSU5ERVhfVVBEQVRFKQorCXsKKwkJSGVhcFR1cGxlCWV4dDsKKworCQlleHQg PSBoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVwbGUoaGVhcHR1cCwKKwkJCQkJCQkJCQkgIFJl bGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSwKKwkJCQkJCQkJCQkgIG1v ZGlmaWVkX2lkeF9hdHRycyk7CisJCWlmIChoZWFwdHVwICE9IG5ld3R1cCkKKwkJCWhlYXBf ZnJlZXR1cGxlKGhlYXB0dXApOworCQloZWFwdHVwID0gZXh0OworCX0KKwogCS8qCiAJICog Q29tcHV0ZSByZXBsaWNhIGlkZW50aXR5IHR1cGxlIGJlZm9yZSBlbnRlcmluZyB0aGUgY3Jp dGljYWwgc2VjdGlvbiBzbwogCSAqIHdlIGRvbid0IFBBTklDIHVwb24gYSBtZW1vcnkgYWxs b2NhdGlvbiBmYWlsdXJlLgpAQCAtNDA0MCw2ICs0MTE4LDI5IEBAIGwyOgogCQlIZWFwVHVw bGVTZXRIZWFwT25seShoZWFwdHVwKTsKIAkJLyogTWFyayB0aGUgY2FsbGVyJ3MgY29weSB0 b28sIGluIGNhc2UgZGlmZmVyZW50IGZyb20gaGVhcHR1cCAqLwogCQlIZWFwVHVwbGVTZXRI ZWFwT25seShuZXd0dXApOworCisJCS8qCisJCSAqIEZvciBhIEhPVC1pbmRleGVkIHVwZGF0 ZSwgdGhlIG5ldyBsaXZlIHR1cGxlIGNhcnJpZXMKKwkJICogSEVBUF9JTkRFWEVEX1VQREFU RUQgc28gaW5kZXggc2NhbnMgd2Fsa2luZyB0aGUgY2hhaW4ga25vdyBpdCBpcyBhCisJCSAq IEhPVC1pbmRleGVkIGhvcCBjYXJyeWluZyBhbiBpbmxpbmUtdHJhaWxpbmcgbW9kaWZpZWQt YXR0cnMgYml0bWFwLgorCQkgKgorCQkgKiBTZXQgdGhlIGZsYWcgb25seSBvbiBoZWFwdHVw LCB0aGUgdmVyc2lvbiBhY3R1YWxseSBzdG9yZWQgb24gdGhlCisJCSAqIHBhZ2U6IGhlYXB0 dXAgY2FycmllcyB0aGUgdHJhaWxpbmcgYml0bWFwLCBzbyB0aGUgZmxhZydzIHByb21pc2Ug KGEKKwkJICogYml0bWFwIG9jY3VwaWVzIHRoZSBmaW5hbCBIb3RJbmRleGVkQml0bWFwQnl0 ZXMobmF0dHMpIGJ5dGVzIG9mIHRoZQorCQkgKiBpdGVtKSBob2xkcy4gIFRoZSBjYWxsZXIn cyBuZXd0dXAgaXMgYSBzZXBhcmF0ZSBpbi1tZW1vcnkgdHVwbGUKKwkJICogd2hvc2UgdF9s ZW4gZG9lcyBub3QgaW5jbHVkZSB0aGUgYml0bWFwOyBtYXJraW5nIGl0CisJCSAqIEhFQVBf SU5ERVhFRF9VUERBVEVEIHdvdWxkIGFzc2VydCBhIHRyYWlsaW5nIGJpdG1hcCB0aGF0IGlz IG5vdAorCQkgKiB0aGVyZSwgc28gYW55IGxhdGVyIHJlYWRlciB1c2luZyBJdGVtSWRHZXRM ZW5ndGgoKS1yZWxhdGl2ZSBhY2Nlc3MKKwkJICogd291bGQgbWlzcmVhZCBhdHRyaWJ1dGUg ZGF0YSBhcyB0aGUgYml0bWFwLiAgV2UgdGhlcmVmb3JlIGxlYXZlCisJCSAqIG5ld3R1cCdz IGZsYWcgY2xlYXIuICBOb3RoaW5nIHJlYWRzIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAg b2ZmIGFuCisJCSAqIGluLW1lbW9yeSB0dXBsZTsgZXZlcnkgY29uc3VtZXIgcmVhZHMgaXQg ZnJvbSB0aGUgcGFnZSB2aWEgdGhlIGxpbmUKKwkJICogcG9pbnRlcidzIGxlbmd0aC4KKwkJ ICovCisJCWlmIChob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUpCisJ CXsKKwkJCWhlYXB0dXAtPnRfZGF0YS0+dF9pbmZvbWFzazIgfD0gSEVBUF9JTkRFWEVEX1VQ REFURUQ7CisJCQlob3RfaW5kZXhlZCA9IHRydWU7CisJCX0KIAl9CiAJZWxzZQogCXsKQEAg LTQxNDQsNyArNDI0NSw4IEBAIGwyOgogCWlmIChoYXZlX3R1cGxlX2xvY2spCiAJCVVubG9j a1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUpOwog Ci0JcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKHJlbGF0aW9uLCB1c2VfaG90X3VwZGF0ZSwg bmV3YnVmICE9IGJ1ZmZlcik7CisJcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKHJlbGF0aW9u LCB1c2VfaG90X3VwZGF0ZSwgaG90X2luZGV4ZWQsCisJCQkJCQkJIG5ld2J1ZiAhPSBidWZm ZXIpOwogCiAJLyoKIAkgKiBJZiBoZWFwdHVwIGlzIGEgcHJpdmF0ZSBjb3B5LCByZWxlYXNl IGl0LiAgRG9uJ3QgZm9yZ2V0IHRvIGNvcHkgdF9zZWxmCkBAIC00MjkwLDcgKzQzOTIsNyBA QCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApCiAKIC8qCiAgKiBD aGVjayBpZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZSdzIHZhbHVlcyBhcmUgdGhlIHNhbWUu ICBTdWJyb3V0aW5lIGZvcgotICogSGVhcERldGVybWluZUNvbHVtbnNJbmZvLgorICogSGVh cFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMuCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX2F0dHJf ZXF1YWxzKFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBE YXR1bSB2YWx1ZTIsCkBAIC00MzM0LDYzICs0NDM2LDEwMyBAQCBoZWFwX2F0dHJfZXF1YWxz KFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2 YWx1ZTIsCiB9CiAKIC8qCi0gKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRo ZXI6IGEpIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleGVkCi0gKiBhdHRyaWJ1dGVzLCBv ciBiKSB0aGUgbW9kaWZpZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGlu ZGV4ZXMuCi0gKiBMYXRlciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBw ZXJmb3JtIGEgSE9UIHVwZGF0ZSBpZiB0aGVyZSBpcwotICogc3BhY2Ugb24gdGhlIHBhZ2Ug Zm9yIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5l ZAotICogdGhhdCBIT1QgaXMgYWxsb3dlZC4KKyAqIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUg LS0KKyAqCisgKiBDbGFzc2lmeSBhbiBVUERBVEUgZm9yIEhPVCBlbGlnaWJpbGl0eSBmcm9t IHRoZSBzZXQgb2YgaW5kZXhlZCBhdHRyaWJ1dGVzCisgKiBpdCBjaGFuZ2VkIChtb2RpZmll ZF9pZHhfYXR0cnMsIGNvbXB1dGVkIGJ5IHRoZSBleGVjdXRvcik6CisgKgorICogICBIRUFQ X1VQREFURV9BTExfSU5ERVhFUyAgIEhPVCBpcyBub3QgcGVybWl0dGVkOyB0aGUgbmV3IHR1 cGxlIGdvZXMgb24gYQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZXNoIFRJ RCBhbmQgZXZlcnkgaW5kZXggZ2V0cyBhIG5ldyBlbnRyeS4KKyAqICAgSEVBUF9IRUFQX09O TFlfVVBEQVRFICAgICBDbGFzc2ljIEhPVDogbm8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCwgc28g bm8gaW5kZXggbmVlZHMgYSBuZXcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnRyeSBhbmQgdGhlIG5ldyB0dXBsZSBqb2lucyB0aGUgY2hhaW4gdmlhIGEKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0X2N0aWQgZm9yd2FyZCBsaW5rLgorICogICBIRUFQ X1NFTEVDVElWRV9JTkRFWF9VUERBVEUgSE9UIHdpdGggc2VsZWN0aXZlIGluZGV4IHVwZGF0 ZTogYXQgbGVhc3Qgb25lCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLXN1 bW1hcml6aW5nIGluZGV4J3MgYXR0cmlidXRlIGNoYW5nZWQsIGJ1dAorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZSBuZXcgdHVwbGUgY2FuIHN0aWxsIGpvaW4gdGhlIEhP VCBjaGFpbiBvbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIHBh Z2U7IG9ubHkgdGhlIGluZGV4ZXMgd2hvc2UKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdHRyaWJ1dGVzIGNoYW5nZWQgcmVjZWl2ZSBhIG5ldyBlbnRyeS4KKyAqCisgKiBU aGlzIHJvdXRpbmUgb25seSBjbGFzc2lmaWVzIHRoZSB1cGRhdGU7IGhlYXBfdXBkYXRlKCkg cGVyZm9ybXMgaXQgYW5kIG1heQorICogc3RpbGwgZmFsbCBiYWNrIHRvIGEgbm9uLUhPVCB1 cGRhdGUgd2hlbiB0aGUgbmV3IHR1cGxlIGRvZXMgbm90IGZpdCBvbiB0aGUKKyAqIHBhZ2Us IGV4YWN0bHkgYXMgZm9yIGNsYXNzaWMgSE9ULgogICovCi1ib29sCi1IZWFwVXBkYXRlSG90 QWxsb3dhYmxlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywKLQkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KQorSGVhcFVwZGF0 ZUluZGV4TW9kZQorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpCiB7Ci0JYm9vbAkJaG90X2Fs bG93ZWQ7CisJY29uc3QgQml0bWFwc2V0ICphbGxfaWR4X2F0dHJzOwogCiAJLyoKLQkgKiBM ZXQncyBiZSBvcHRpbWlzdGljIGFuZCBzdGFydCBvZmYgYnkgYXNzdW1pbmcgdGhlIGJlc3Qg Y2FzZSwgbm8gaW5kZXhlcwotCSAqIG5lZWQgdXBkYXRpbmcgYW5kIEhPVCBpcyBhbGxvd2Fi bGUuCisJICogQ2FzZSAoYSk6IG5vIGluZGV4ZWQgYXR0cmlidXRlIHdhcyBtb2RpZmllZCAt PiBjbGFzc2ljIEhPVC4KIAkgKi8KLQlob3RfYWxsb3dlZCA9IHRydWU7Ci0JKnN1bW1hcml6 ZWRfb25seSA9IGZhbHNlOworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJz KSkKKwkJcmV0dXJuIEhFQVBfSEVBUF9PTkxZX1VQREFURTsKIAogCS8qCi0JICogQ2hlY2sg Zm9yIGNhc2UgKGEpOyB3aGVuIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleCBhdHRyaWJ1 dGVzIEhPVCBpcwotCSAqIGFsbG93ZWQuCisJICogQ2FzZSAoYik6IGF0IGxlYXN0IG9uZSBp bmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkLiAgSWYgYWxsIG9mIHRoZW0gYXJlCisJICogdXNl ZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMsIHdlIGNhbiBzdGlsbCB0YWtlIHRoZSBj bGFzc2ljIEhPVAorCSAqIHBhdGggLS0gdGhlIHN1bW1hcml6aW5nIGluZGV4IEFNIGdldHMg YSBuZXcgZW50cnkgdmlhIGFtaW5zZXJ0IGFuZCBubworCSAqIG5vbi1zdW1tYXJpemluZyBp bmRleCBuZWVkcyB0byBjaGFuZ2UuCiAJICovCi0JaWYgKGJtc19pc19lbXB0eShtb2RpZmll ZF9pZHhfYXR0cnMpKQotCQlob3RfYWxsb3dlZCA9IHRydWU7Ci0JZWxzZQotCXsKLQkJQml0 bWFwc2V0ICAqc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sCi0JCQkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOwor CWlmIChibXNfaXNfc3Vic2V0KG1vZGlmaWVkX2lkeF9hdHRycywgUmVsYXRpb25HZXRJbmRl eEF0dHJCaXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJCQkJCQkJCQlJTkRFWF9BVFRSX0JJ VE1BUF9TVU1NQVJJWkVEKSkpCisJCXJldHVybiBIRUFQX0hFQVBfT05MWV9VUERBVEU7CiAK LQkJLyoKLQkJICogQXQgbGVhc3Qgb25lIGluZGV4IGF0dHJpYnV0ZSB3YXMgbW9kaWZpZWQs IGJ1dCBpcyB0aGlzIGNhc2UgKGIpCi0JCSAqIHdoZXJlIGFsbCB0aGUgbW9kaWZpZWQgaW5k ZXggYXR0cmlidXRlcyBhcmUgb25seSB1c2VkIGJ5Ci0JCSAqIHN1bW1hcml6aW5nIGluZGV4 ZXM/ICBJZiBpdCBpcywgdGhlbiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aG9zZQotCQkgKiBpbmRl eGVzLCBidXQgdGhpcyB1cGRhdGUgY2FuIHN0aWxsIGJlIGNvbnNpZGVyZWQgaGVhcC1vbmx5 IChIT1QpCi0JCSAqIGFuZCBhdm9pZCB1cGRhdGluZyBhbnkgbm9uLXN1bW1hcml6aW5nIGlu ZGV4ZXMgb24gdGhlIHJlbGF0aW9uLgotCQkgKi8KLQkJaWYgKGJtc19pc19zdWJzZXQobW9k aWZpZWRfaWR4X2F0dHJzLCBzdW1fYXR0cnMpKQotCQl7Ci0JCQlob3RfYWxsb3dlZCA9IHRy dWU7Ci0JCQkqc3VtbWFyaXplZF9vbmx5ID0gdHJ1ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJ CS8qCi0JCQkgKiBOb3cgd2Uga25vdyBhKSBvbmUgb3IgbW9yZSBpbmRleGVkIGF0dHJpYnV0 ZXMgd2VyZSBtb2RpZmllZAotCQkJICogKGNoYW5nZWQgdmFsdWUsIG5vdCBqdXN0IHJlZmVy ZW5jZWQgd2l0aGluIHRoZSBVUERBVEUpIGFuZCB0aGF0Ci0JCQkgKiBiKSBhdCBsZWFzdCBv bmUgb2YgdGhvc2UgYXR0cmlidXRlcyBpcyB1c2VkIGJ5IGEKLQkJCSAqIG5vbi1zdW1tYXJp emluZyBpbmRleC4gSE9UIGlzIG5vdCBhbGxvd2VkLgotCQkJICovCi0JCQlob3RfYWxsb3dl ZCA9IGZhbHNlOwotCQl9CisJLyoKKwkgKiBBIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0 dHJpYnV0ZSBjaGFuZ2VkLiAgSE9ULWluZGV4ZWQgaXMgc3VwcG9ydGVkCisJICogd2hlbmV2 ZXIgdGhlIHJlbGF0aW9uIGNhbiB0b2xlcmF0ZSBleHRyYSBpbmRleCBlbnRyaWVzIGluIGEg Y2hhaW4gd2hvc2UKKwkgKiBwZXItY2hhaW4tbWVtYmVyIGtleXMgbWF5IGRpZmZlci4gIFRo ZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFwcGx5IHBhdGgKKwkgKiBpcyBnYXRlZCBhYm92ZSBi eSBob3RfaW5kZXhlZF9vbl9hcHBseS4gIFRoZSByZW1haW5pbmcKKwkgKiBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBmYWxsYmFja3MgYXJlOgorCSAqCisJICogLSBBbiBVUERBVEUgdGhh dCBtb2RpZmllcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uCisJ ICogaW5kZXguICBTZWxlY3RpdmUgbWFpbnRlbmFuY2Ugb2YgYW4gZXhwcmVzc2lvbiBpbmRl eCByZXF1aXJlcworCSAqIGV2YWx1YXRpbmcgdGhlIGluZGV4ZWQgZXhwcmVzc2lvbiB0byBk ZWNpZGUgd2hldGhlciBpdHMgdmFsdWUgKGhlbmNlCisJICogaXRzIGVudHJ5KSBjaGFuZ2Vk OyB0aGF0IGV4cHJlc3Npb24tYXdhcmUgcGF0aCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LAor CSAqIHNvIHN1Y2ggYW4gdXBkYXRlIGZhbGxzIGJhY2sgdG8gbm9uLUhPVC4gIFVwZGF0ZXMg dGhhdCBkbyBub3QgdG91Y2ggYW55CisJICogZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUg c3RheSBlbGlnaWJsZS4KKwkgKgorCSAqIC0gQW4gVVBEQVRFIHRoYXQgbW9kaWZpZXMgZXZl cnkgaW5kZXhlZCBhdHRyaWJ1dGUgb2YgdGhlIHJlbGF0aW9uLgorCSAqIEhPVC1pbmRleGVk IG9ubHkgcGF5cyBvZmYgd2hlbiBpdCBjYW4gc2tpcCBtYWludGFpbmluZyBhdCBsZWFzdCBv bmUKKwkgKiBpbmRleCB3aG9zZSBrZXkgZGlkIG5vdCBjaGFuZ2U7IGlmIGFsbCBpbmRleGVk IGF0dHJpYnV0ZXMgY2hhbmdlZCB0aGVyZQorCSAqIGlzIG5vdGhpbmcgdG8gc2tpcCwgc28g YSBwbGFpbiBub24tSE9UIHVwZGF0ZSBpcyBjaGVhcGVyIChpdCBhdm9pZHMgdGhlCisJICog Y2hhaW4td2FsayBhbmQgYml0bWFwLW92ZXJsYXAgb3ZlcmhlYWQpLgorCSAqLworCWFsbF9p ZHhfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwK KwkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CiAKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQl9CisJLyoKKwkgKiBTeXN0ZW0gY2F0YWxvZ3Mga2VlcCBjbGFz c2ljIEhPVCAoYW4gVVBEQVRFIHRvdWNoaW5nIG5vIG5vbi1zdW1tYXJpemluZworCSAqIGlu ZGV4ZWQgYXR0cmlidXRlIGFscmVhZHkgcmV0dXJuZWQgSEVBUF9IRUFQX09OTFlfVVBEQVRF IGFib3ZlKSwgYnV0IGRvCisJICogTk9UIHRha2UgdGhlIEhPVC1pbmRleGVkIHBhdGg6IGNh dGFsb2cgcmVhZHMgZ28gdGhyb3VnaCBtYW55IGNvZGUgcGF0aHMKKwkgKiAoc3lzdGFibGUg aW5kZXggc2NhbnMsIFNuYXBzaG90RGlydHkgdW5pcXVlIGNoZWNrcywgc2Vxc2NhbnMgaW4K KwkgKiBvcmRlcmluZ3MgdGhlIGNoYWluLXdhbGsgZGVkdXAgZG9lcyBub3QgY292ZXIpIHRo YXQgYXJlIG5vdCBhbGwgcHJvdmVuCisJICogc2FmZSBhZ2FpbnN0IHN0YWxlIGNoYWluIGVu dHJpZXMuICBGYWxsaW5nIGJhY2sgdG8gYSBub24tSE9UIHVwZGF0ZQorCSAqIGhlcmUgaXMg ZXhhY3RseSB0aGUgcHJlLUhPVC1pbmRleGVkIGJlaGF2aW91ciBmb3Igc3VjaCBjYXRhbG9n IHVwZGF0ZXMuCisJICovCisJaWYgKElzQ2F0YWxvZ1JlbGF0aW9uKHJlbGF0aW9uKSkKKwkJ cmV0dXJuIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOwogCi0JcmV0dXJuIGhvdF9hbGxvd2Vk OworCS8qCisJICogRGlzcXVhbGlmeSB3aGVuIHRoZSB1cGRhdGUgdG91Y2hlcyBhbiBhdHRy aWJ1dGUgcmVmZXJlbmNlZCBieSBhbgorCSAqIGV4cHJlc3Npb24gaW5kZXggKHNlZSBjYXNl IDEgYWJvdmUpLiAgVXBkYXRlcyB0aGF0IGxlYXZlIGV2ZXJ5CisJICogZXhwcmVzc2lvbi1p bmRleCBhdHRyaWJ1dGUgdW5jaGFuZ2VkIHJlbWFpbiBlbGlnaWJsZS4KKwkgKi8KKwlpZiAo Ym1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQlSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkgSU5ERVhfQVRUUl9C SVRNQVBfRVhQUkVTU0lPTikpKQorCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7 CisKKwkvKgorCSAqIElmIGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQsIGEgSE9U LXNlbGVjdGl2ZSB1cGRhdGUgY291bGQgbm90CisJICogc2tpcCBhbnkgaW5kZXggLS0gZWFj aCBpbmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5IGFueXdheSAtLSBzbyBpdCB3b3VsZAorCSAq IHBheSB0aGUgSE9UL1NJVSBjaGFpbi13YWxrIGFuZCBiaXRtYXAtb3ZlcmxhcCBvdmVyaGVh ZCBmb3Igbm8gc2F2ZWQKKwkgKiBpbmRleCBtYWludGVuYW5jZS4gIEZhbGwgYmFjayB0byBh IHBsYWluIG5vbi1IT1QgdXBkYXRlIGluIHRoYXQgY2FzZS4KKwkgKi8KKwlpZiAoYm1zX2lz X3N1YnNldChhbGxfaWR4X2F0dHJzLCBtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4g SEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CisKKwlyZXR1cm4gSEVBUF9TRUxFQ1RJVkVfSU5E RVhfVVBEQVRFOwogfQogCiAvKgpAQCAtNDQwMiwxNSArNDU0NCwzMyBAQCBMb2NrVHVwbGVN b2RlCiBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQogewogCUxvY2tUdXBsZU1vZGUg bG9ja21vZGUgPSBMb2NrVHVwbGVFeGNsdXNpdmU7CisJY29uc3QgQml0bWFwc2V0ICprZXlf YXR0cnM7CisKKwkvKgorCSAqIENvbW1vbiBmYXN0IHBhdGg6IHdoZW4gbm8gaW5kZXhlZCBh dHRyaWJ1dGUgY2hhbmdlZCAoZS5nLiBwZ2JlbmNoLXN0eWxlCisJICogIlVQREFURSB0IFNF VCBub25faWR4X2NvbCA9IC4uLiIgb3IgdGhlIHdpZGVfMCAiVVBEQVRFIHQgU0VUIGlkID0g aWQiCisJICogd29ya2xvYWQgYWZ0ZXIgdGhlIGV4ZWN1dG9yJ3MgZmFzdCBwYXRoIGluIEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKSwKKwkgKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMg ZW1wdHkgYW5kIGEga2V5IGNvbHVtbiBjYW5ub3QgaGF2ZSBjaGFuZ2VkLiAgU2tpcAorCSAq IHRoZSByZWxjYWNoZSBsb29rdXAgYW5kIHJldHVybiB0aGUgd2Vha2VyIGxvY2sgaW1tZWRp YXRlbHkuICBBdCBoaWdoCisJICogVFBTIHRoaXMgYXZvaWRzIGEgcGVyLVVQREFURSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcCBjYWxsIChhbmQgaXRzCisJICogYm1zX2NvcHkpIG9u IHRoZSBLRVkgYml0bWFwLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4 X2F0dHJzKSkKKwkJcmV0dXJuIExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOwogCi0JQml0bWFw c2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24s Ci0JCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKwkvKgorCSAqIEJv cnJvdyB0aGUgY2FjaGVkIGJpdG1hcCByYXRoZXIgdGhhbiBjb3B5aW5nIGl0OyB3ZSBvbmx5 IHRlc3Qgb3ZlcmxhcAorCSAqIGFuZCBuZXZlciBtdXRhdGUgb3IgZnJlZSBrZXlfYXR0cnMu ICBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUgcnVucworCSAqIHdpdGhvdXQgYnVmZmVy IGxvY2tzIGJ1dCB0aGUgcmVsY2FjaGUgZW50cnkgaXMgcGlubmVkIGJ5IHRoZSBjYWxsZXIn cworCSAqIGxvY2sgb24gdGhlIHJlbGF0aW9uLCBhbmQgd2UgdG91Y2ggbm90aGluZyBiZXR3 ZWVuIGZldGNoIGFuZCB0aGUKKwkgKiBibXNfb3ZlcmxhcCB0aGF0IGNvdWxkIHRyaWdnZXIg YSByZWxjYWNoZSBpbnZhbGlkYXRpb24uCisJICovCisJa2V5X2F0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJCQkJCQkJCQkgSU5ERVhf QVRUUl9CSVRNQVBfS0VZKTsKIAogCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0 dHJzLCBrZXlfYXR0cnMpKQogCQlsb2NrbW9kZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZl OwogCi0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKLQogCXJldHVybiBsb2NrbW9kZTsKIH0KIApA QCAtNDQ5NSw2ICs0NjU1LDcxIEBAIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlbGF0 aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwCiAJcmV0 dXJuIG1vZGlmaWVkX2lkeF9hdHRyczsKIH0KIAorLyoKKyAqIGhlYXBfZm9ybV9ob3RfaW5k ZXhlZF90dXBsZQorICoKKyAqIFJldHVybiBhIG5ld2x5IHBhbGxvYydkIGNvcHkgb2YgdHVw IHRoYXQgY2FycmllcyB0aGUgZml4ZWQtc2l6ZQorICogaW5saW5lLXRyYWlsaW5nIG1vZGlm aWVkLWF0dHJpYnV0ZXMgYml0bWFwIChzZWUgYWNjZXNzL2hvdF9pbmRleGVkLmgpLAorICog d2l0aCBIRUFQX0lOREVYRURfVVBEQVRFRCBzZXQuICBUaGUgYml0bWFwIHJlY29yZHMgdGhl IHVzZXIgYXR0cmlidXRlcyBpbgorICogbW9kaWZpZWRfaWR4X2F0dHJzICh0aGUgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRoaXMgVVBEQVRFIGNoYW5nZWQsIHVzaW5nIHRoZQorICogRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBvZmZzZXQgY29udmVudGlvbik7IGFuIGVt cHR5IHNldCB5aWVsZHMKKyAqIGFuIGFsbC16ZXJvIGJpdG1hcCwgd2hpY2ggaXMgY29ycmVj dCBmb3IgdGhlIGNoYWluLXVuaWZvcm1pdHkgcHJvbW90aW9uIG9mCisgKiBhIGNsYXNzaWMt SE9UIHVwZGF0ZSBvbiBhbiBhbHJlYWR5LUhPVC1pbmRleGVkIGNoYWluLgorICoKKyAqIFRo ZSBiaXRtYXAgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0 cykgYnl0ZXMgb2YgdGhlCisgKiB0dXBsZSwgd2hlcmUgbmF0dHMgaXMgdGhlIHR1cGxlJ3Mg b3duIGF0dHJpYnV0ZSBjb3VudAorICogKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKSAtLSB3 aGljaCBhIHJlYWRlciByZWNvdmVycyBmcm9tIHRoZSBzdG9yZWQgdHVwbGUsCisgKiBzbyB0 aGUgYml0bWFwIHN0YXlzIGxvY2F0YWJsZSBldmVuIGFmdGVyIHRoZSByZWxhdGlvbidzIG5h dHRzIGxhdGVyIGdyb3dzCisgKiB2aWEgQUREIENPTFVNTi4gIEZvciBhIGZyZXNobHkgZm9y bWVkIFVQREFURSB0dXBsZSB0aGlzIGVxdWFscyB0aGUKKyAqIHJlbGF0aW9uJ3MgY3VycmVu dCBuYXR0czsgd2UgYXNzZXJ0IHRoYXQgdG8gY2F0Y2ggYW55IGZ1dHVyZSBkaXZlcmdlbmNl LgorICogVGhlIGJpdG1hcCBzaXRzIHBhc3QgdGhlIGF0dHJpYnV0ZSBkYXRhLCBzbyBoZWFw X2RlZm9ybV90dXBsZSBuZXZlciBzZWVzCisgKiBpdC4gIFRoZSBjYWxsZXIgbXVzdCBoYXZl IHJlc2VydmVkIHJvb20gZm9yIHRoZSBleHRyYSBieXRlcyBpbiB0aGUgcGFnZS1maXQKKyAq IGNhbGN1bGF0aW9uLCBhbmQgbXVzdCBmcmVlIHRoZSByZXR1cm5lZCB0dXBsZS4KKyAqLwor c3RhdGljIEhlYXBUdXBsZQoraGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxlKEhlYXBUdXBs ZSB0dXAsIGludCByZWxuYXR0cywKKwkJCQkJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycykKK3sKKwlpbnQJCQluYXR0cyA9IEhlYXBUdXBsZUhlYWRlckdldE5hdHRz KHR1cC0+dF9kYXRhKTsKKwlTaXplCQlibWJ5dGVzOworCVNpemUJCW5ld2xlbjsKKwlIZWFw VHVwbGUJbmV3dHVwbGU7CisJdWludDgJICAgKmJpdG1hcDsKKwlpbnQJCQl4ID0gLTE7CisK KwkvKgorCSAqIFRoZSBiaXRtYXAgaXMgc2l6ZWQgYW5kIGxvY2F0ZWQgYnkgdGhlIHR1cGxl J3Mgb3duIG5hdHRzOyBhIGZyZXNobHkKKwkgKiBmb3JtZWQgVVBEQVRFIHR1cGxlIGNhcnJp ZXMgdGhlIGZ1bGwgcmVsYXRpb24gbmF0dHMuICBJZiB0aGVzZSBldmVyCisJICogZGl2ZXJn ZSB0aGUgcGFnZS1maXQgcmVzZXJ2YXRpb24gKG1hZGUgd2l0aCByZWxuYXR0cykgYW5kIHRo ZSBhY3R1YWwKKwkgKiBiaXRtYXAgc2l6ZSB3b3VsZCBkaXNhZ3JlZS4KKwkgKi8KKwlBc3Nl cnQobmF0dHMgPT0gcmVsbmF0dHMpOworCWJtYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0 ZXMobmF0dHMpOworCW5ld2xlbiA9IHR1cC0+dF9sZW4gKyBibWJ5dGVzOworCisJbmV3dHVw bGUgPSAoSGVhcFR1cGxlKSBwYWxsb2MwKEhFQVBUVVBMRVNJWkUgKyBuZXdsZW4pOworCW5l d3R1cGxlLT50X2xlbiA9IG5ld2xlbjsKKwluZXd0dXBsZS0+dF9zZWxmID0gdHVwLT50X3Nl bGY7CisJbmV3dHVwbGUtPnRfdGFibGVPaWQgPSB0dXAtPnRfdGFibGVPaWQ7CisJbmV3dHVw bGUtPnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpICgoY2hhciAqKSBuZXd0dXBsZSArIEhF QVBUVVBMRVNJWkUpOworCisJLyogY29weSB0aGUgb3JpZ2luYWwgdHVwbGU7IHRoZSB0cmFp bGluZyBiaXRtYXAgYnl0ZXMgc3RheSB6ZXJvICovCisJbWVtY3B5KG5ld3R1cGxlLT50X2Rh dGEsIHR1cC0+dF9kYXRhLCB0dXAtPnRfbGVuKTsKKwluZXd0dXBsZS0+dF9kYXRhLT50X2lu Zm9tYXNrMiB8PSBIRUFQX0lOREVYRURfVVBEQVRFRDsKKworCWJpdG1hcCA9IEhvdEluZGV4 ZWRHZXRNb2RpZmllZEJpdG1hcFJXKG5ld3R1cGxlLT50X2RhdGEsIG5ld2xlbiwgbmF0dHMp OworCXdoaWxlICgoeCA9IGJtc19uZXh0X21lbWJlcihtb2RpZmllZF9pZHhfYXR0cnMsIHgp KSA+PSAwKQorCXsKKwkJQXR0ck51bWJlcglhdHRudW0gPSB4ICsgRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlcjsKKworCQkvKiBvbmx5IHVzZXIgYXR0cmlidXRlcyBjYW4g YmUgbW9kaWZpZWQtYW5kLWluZGV4ZWQgKi8KKwkJaWYgKGF0dG51bSA+PSAxKQorCQkJSG90 SW5kZXhlZFNldEF0dHJNb2RpZmllZChiaXRtYXAsIGF0dG51bSk7CisJfQorCisJcmV0dXJu IG5ld3R1cGxlOworfQorCiAvKgogICoJc2ltcGxlX2hlYXBfdXBkYXRlIC0gcmVwbGFjZSBh IHR1cGxlCiAgKgpAQCAtNDUwNSw3ICs0NzMwLDcgQEAgSGVhcFVwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBu ZXd0dXAKICAqLwogdm9pZAogc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJICAg VFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAgYm9vbCAqdXBkYXRl X2FsbF9pbmRleGVzKQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1fRmFpbHVyZURhdGEg dG1mZDsKQEAgLTQ1MTQsMTQgKzQ3MzksMTUgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0 dXAKIAlCdWZmZXJIZWFwVHVwbGVUYWJsZVNsb3QgKmJzbG90OwogCUhlYXBUdXBsZQlvbGR0 dXA7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7Ci0JQml0bWFwc2V0ICAqaWR4X2F0dHJz LAotCQkJICAgKm1vZGlmaWVkX2lkeF9hdHRyczsKLQlib29sCQlob3RfYWxsb3dlZCwKLQkJ CQlzdW1tYXJpemVkX29ubHk7CisJQml0bWFwc2V0ICAqaWR4X2F0dHJzOworCUJpdG1hcHNl dCAgKmxvY2FsX21vZGlmaWVkX2lkeF9hdHRyczsKKwlIZWFwVXBkYXRlSW5kZXhNb2RlIGhv dF9tb2RlOwogCUJ1ZmZlcgkJYnVmZmVyOwogCiAJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxp ZChvdGlkKSk7CiAKKwkqdXBkYXRlX2FsbF9pbmRleGVzID0gZmFsc2U7CisKIAkvKgogCSAq IEZldGNoIHRoaXMgYml0bWFwIG9mIGludGVyZXN0aW5nIGF0dHJpYnV0ZXMgZnJvbSByZWxj YWNoZSBiZWZvcmUKIAkgKiBvYnRhaW5pbmcgYSBidWZmZXIgbG9jayBiZWNhdXNlIGlmIHdl IGFyZSBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZQpAQCAtNDU3MSw4ICs0Nzk3LDYg QEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAkJICovCiAJCUFzc2VydChSZWxhdGlv blN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpKTsKIAotCQkq dXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwotCiAJCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBu b3QgeWV0IGluaXRpYWxpemVkICovCiAJCWJtc19mcmVlKGlkeF9hdHRycyk7CiAJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CkBAIC00NTg4LDEzICs0ODEyLDE0IEBA IHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJRXhlY1N0b3JlUGlubmVkQnVmZmVySGVh cFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBzbG90LCBidWZmZXIpOwogCW9sZHR1cCA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsICZzaG91bGRGcmVlKTsKIAot CW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlbGF0 aW9uLCBvbGR0dXAsIHR1cCk7Ci0JbG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9j a21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycyk7Ci0JaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOworCWxvY2FsX21vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7CisJbG9ja21vZGUg PSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIGxvY2FsX21vZGlmaWVk X2lkeF9hdHRycyk7CisJaG90X21vZGUgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0 aW9uLCBsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMpOwogCi0JcmVzdWx0ID0gaGVhcF91cGRh dGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgMCwK KwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwLCBHZXRDdXJyZW50 Q29tbWFuZElkKHRydWUpLAorCQkJCQkJIDAgLyogb3B0aW9ucyAqLyAsCiAJCQkJCQkgSW52 YWxpZFNuYXBzaG90LCB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRt ZmQsIGxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxvd2VkKTsKKwkJCQkJ CSAmdG1mZCwgbG9ja21vZGUsIGxvY2FsX21vZGlmaWVkX2lkeF9hdHRycywgaG90X21vZGUp OwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cCk7CkBAIC00 NjAyLDE0ICs0ODI3LDYgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCWJtc19mcmVlKGlkeF9hdHRycyk7CiAK LQkvKgotCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQg Zm9yIHRoZSB0dXBsZQotCSAqCi0JICogSWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBt dXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhlIHVwZGF0ZSBpcwotCSAqIEhPVCwgaXQg Y291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0 aGVyCi0JICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFs bC4KLQkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwogCXN3aXRjaCAocmVzdWx0 KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC00NjE4LDExICs0ODM1LDE0IEBA IHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJCQlicmVhazsKIAogCQljYXNlIFRNX09r OgotCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KLQkJCWlmICghSGVhcFR1cGxlSXNIZWFw T25seSh0dXApKQotCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKLQkJCWVsc2UgaWYg KHN1bW1hcml6ZWRfb25seSkKLQkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemlu ZzsKKworCQkJLyoKKwkJCSAqIElmIHRoZSB0dXBsZSBzdG9yZWQgYnkgaGVhcF91cGRhdGUg aXMgaGVhcC1vbmx5IHRoaXMgd2FzIGEgSE9UCisJCQkgKiB1cGRhdGUgYW5kIChzdWJqZWN0 IHRvIHBlci1pbmRleCBjaGVja3MpIG5vdCBldmVyeSBpbmRleCBuZWVkcworCQkJICogYSBu ZXcgZW50cnk7IG90aGVyd2lzZSBldmVyeSBpbmRleCBtdXN0IGdldCBvbmUgcG9pbnRpbmcg YXQgdGhlCisJCQkgKiBuZXcgdHVwbGUncyBUSUQuCisJCQkgKi8KKwkJCSp1cGRhdGVfYWxs X2luZGV4ZXMgPSAhSGVhcFR1cGxlSXNIZWFwT25seSh0dXApOwogCQkJYnJlYWs7CiAKIAkJ Y2FzZSBUTV9VcGRhdGVkOgpAQCAtNDYzNyw2ICs0ODU3LDggQEAgc2ltcGxlX2hlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSB0dXAKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgaGVhcF91cGRhdGUg c3RhdHVzOiAldSIsIHJlc3VsdCk7CiAJCQlicmVhazsKIAl9CisKKwlibXNfZnJlZShsb2Nh bF9tb2RpZmllZF9pZHhfYXR0cnMpOwogfQogCiAKQEAgLTgyMDEsMzkgKzg0MjMsNTIgQEAg aW5kZXhfZGVsZXRlX2NoZWNrX2h0aWQoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUsCiAJ QXNzZXJ0KE9mZnNldE51bWJlcklzVmFsaWQoaXN0YXR1cy0+aWR4b2ZmbnVtKSk7CiAKIAlp ZiAodW5saWtlbHkoaW5kZXhwYWdlaG9mZm51bSA+IG1heG9mZikpCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAotCQkJCSBlcnJt c2dfaW50ZXJuYWwoImhlYXAgdGlkIGZyb20gaW5kZXggdHVwbGUgKCV1LCV1KSBwb2ludHMg cGFzdCBlbmQgb2YgaGVhcCBwYWdlIGxpbmUgcG9pbnRlciBhcnJheSBhdCBvZmZzZXQgJXUg b2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wiIiwKLQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoaHRpZCksCi0JCQkJCQkJCSBpbmRleHBhZ2Vob2ZmbnVtLAotCQkJCQkJ CQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBkZWxzdGF0ZS0+aWJsa251bSwKLQkJCQkJCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKGRlbHN0YXRlLT5pcmVsKSkpKTsKKwl7CisJCS8qCisJ CSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGEgc3RhbGUgYnRyZWUgZW50cnkgY2Fu IG91dGxpdmUgaGVhcAorCQkgKiBwcnVuaW5nL3ZhY3V1bSBvZiB0aGUgcGFnZSBpdCB0YXJn ZXRzOyBpZiB0aGUgdGFyZ2V0IG9mZnNldCBpcyBwYXN0CisJCSAqIHRoZSBjdXJyZW50IG1h eCwgdHJlYXQgYXMgdmFjdXVtYWJsZSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKwkJICogaW5k ZXgtY29ycnVwdGlvbiBlcnJvci4KKwkJICovCisJCXJldHVybjsKKwl9CiAKIAlpaWQgPSBQ YWdlR2V0SXRlbUlkKHBhZ2UsIGluZGV4cGFnZWhvZmZudW0pOwogCWlmICh1bmxpa2VseSgh SXRlbUlkSXNVc2VkKGlpZCkpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVS UkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJoZWFwIHRp ZCBmcm9tIGluZGV4IHR1cGxlICgldSwldSkgcG9pbnRzIHRvIHVudXNlZCBoZWFwIHBhZ2Ug aXRlbSBhdCBvZmZzZXQgJXUgb2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wiIiwKLQkJCQkJ CQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaHRpZCksCi0JCQkJCQkJCSBpbmRleHBh Z2Vob2ZmbnVtLAotCQkJCQkJCQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBkZWxzdGF0ZS0+aWJs a251bSwKLQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGRlbHN0YXRlLT5pcmVs KSkpKTsKKwl7CisJCS8qCisJCSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGEgc3Rh bGUgYnRyZWUgZW50cnkgY2FuIGxlZ2l0aW1hdGVseQorCQkgKiBwb2ludCBhdCBhbiBMUCB0 aGF0IGhhcyBzaW5jZSBiZWVuIHJlY2xhaW1lZCB0byBMUF9VTlVTRUQgYnkKKwkJICogcHJ1 bmluZyBiZWZvcmUgVkFDVVVNIHByb2Nlc3NlZCB0aGUgaW5kZXguICBUcmVhdCB0aGF0IGFz ICJ0aGUKKwkJICogY2hhaW4gaXMgdmFjdXVtYWJsZSIgKGNhbGxlcidzIGRvd25zdHJlYW0g Y2hhaW4gd2FsayB3aWxsIHJlYWNoIHRoZQorCQkgKiBzYW1lIGNvbmNsdXNpb24pIHJhdGhl ciB0aGFuIGFuIGluZGV4LWNvcnJ1cHRpb24gZXJyb3IuCisJCSAqLworCQlyZXR1cm47CisJ fQogCi0JaWYgKEl0ZW1JZEhhc1N0b3JhZ2UoaWlkKSkKKwkvKgorCSAqIEEgcmVkaXJlY3Qg dGFyZ2V0IChMUF9SRURJUkVDVCkgaXMgYSB2YWxpZCBjaGFpbiByb290OiBhbiBpbmRleCBl bnRyeQorCSAqIHBvaW50aW5nIGF0IGl0IGlzIGxlZ2l0aW1hdGUgYW5kIHRoZSBjYWxsZXIn cyBjaGFpbiB3YWxrIGRlY2lkZXMKKwkgKiBkZWxldGFiaWxpdHkuICBPbmx5IGdlbnVpbmVs eSBub3JtYWwgdHVwbGVzIGFyZSBpbnNwZWN0ZWQgYmVsb3cuCisJICovCisJaWYgKEl0ZW1J ZElzTm9ybWFsKGlpZCkpCiAJewogCQlIZWFwVHVwbGVIZWFkZXIgaHR1cDsKIAotCQlBc3Nl cnQoSXRlbUlkSXNOb3JtYWwoaWlkKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShwYWdlLCBpaWQpOwogCiAJCWlmICh1bmxpa2VseShIZWFwVHVwbGVIZWFk ZXJJc0hlYXBPbmx5KGh0dXApKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiaGVh cCB0aWQgZnJvbSBpbmRleCB0dXBsZSAoJXUsJXUpIHBvaW50cyB0byBoZWFwLW9ubHkgdHVw bGUgYXQgb2Zmc2V0ICV1IG9mIGJsb2NrICV1IGluIGluZGV4IFwiJXNcIiIsCi0JCQkJCQkJ CQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihodGlkKSwKLQkJCQkJCQkJCSBpbmRleHBh Z2Vob2ZmbnVtLAotCQkJCQkJCQkJIGlzdGF0dXMtPmlkeG9mZm51bSwgZGVsc3RhdGUtPmli bGtudW0sCi0JCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmly ZWwpKSkpOworCQl7CisJCQkvKgorCQkJICogQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRz IGEgZnJlc2ggaW5kZXggZW50cnkgdGhhdCBwb2ludHMKKwkJCSAqIGRpcmVjdGx5IGF0IGEg aGVhcC1vbmx5IHR1cGxlOyB0aG9zZSB0dXBsZXMgY2FycnkKKwkJCSAqIEhFQVBfSU5ERVhF RF9VUERBVEVELiAgQSBzdGFsZSBidHJlZSBlbnRyeSBjYW4gYWxzbyBhcnJpdmUgYXQgYQor CQkJICogaGVhcC1vbmx5IHR1cGxlIHdoZW4gYSBjaGFpbiByb290IGdvdCBwcnVuZWQgb3V0 LiAgQm90aCBhcmUKKwkJCSAqIGxlZ2FsIHVuZGVyIEhPVC1pbmRleGVkOyBleGVtcHQgdGhl bSBmcm9tIHRoZSAiaW5kZXggZW50cmllcworCQkJICogbXVzdCB0YXJnZXQgY2hhaW4gcm9v dHMiIGludmFyaWFudCBhbmQgbGV0IHRoZSBjYWxsZXIncyBjaGFpbgorCQkJICogd2FsayBk ZWNpZGUgd2hldGhlciB0aGUgZW50cnkgaXMgZGVsZXRhYmxlLgorCQkJICovCisJCX0KIAl9 CiB9CiAKQEAgLTg0NDgsNyArODY4Myw3IEBAIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyhS ZWxhdGlvbiByZWwsIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCiAJCQkvKiBBcmUg YW55IHR1cGxlcyBmcm9tIHRoaXMgSE9UIGNoYWluIG5vbi12YWN1dW1hYmxlPyAqLwogCQkJ aWYgKGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRtcCwgcmVsLCBidWYsICZTbmFwc2hvdE5v blZhY3V1bWFibGUsCi0JCQkJCQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlKSkKKwkJ CQkJCQkJCSAgICZoZWFwVHVwbGUsIE5VTEwsIHRydWUsIE5VTEwsIE5VTEwsIE5VTEwpKQog CQkJCWNvbnRpbnVlOwkJLyogY2FuJ3QgZGVsZXRlIGVudHJ5ICovCiAKIAkJCS8qIENhbGxl ciB3aWxsIGRlbGV0ZSwgc2luY2Ugd2hvbGUgSE9UIGNoYWluIGlzIHZhY3V1bWFibGUgKi8K QEAgLTkwMzAsOSArOTI2NSwyMCBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwg QnVmZmVyIG9sZGJ1ZiwKIAkJfQogCX0KIAotCS8qIElmIG5ldyB0dXBsZSBpcyB0aGUgc2lu Z2xlIGFuZCBmaXJzdCB0dXBsZSBvbiBwYWdlLi4uICovCisJLyoKKwkgKiBJZiBuZXcgdHVw bGUgaXMgdGhlIHNpbmdsZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZSwgcmVwbGF5IGNhbiBy ZWluaXQKKwkgKiB0aGUgcGFnZSBmcm9tIHNjcmF0Y2guCisJICoKKwkgKiBBbHNvIHJlcXVp cmUgdGhhdCB0aGUgcGFnZSdzIHR1cGxlIGFyZWEgY29udGFpbnMgbm90aGluZyBvdGhlciB0 aGFuIHRoaXMKKwkgKiB0dXBsZS4gIFNlZSBoZWFwX2luc2VydCBmb3Igd2h5IHRoaXMgbWF0 dGVycyB3aGVuIHZhY3V1bSBoYXMgbGVmdCBvcnBoYW4KKwkgKiB0dXBsZSBieXRlcyBiZWhp bmQgYW4gTFBfVU5VU0VEIHNsb3QuCisJICoKKwkgKiBOT1RFOiB0aGlzIG11c3QgbWlycm9y IHRoZSBzYW1lIGxvZ2ljIGluIGhlYXBfaW5zZXJ0KCkKKwkgKi8KIAlpZiAoSXRlbVBvaW50 ZXJHZXRPZmZzZXROdW1iZXIoJihuZXd0dXAtPnRfc2VsZikpID09IEZpcnN0T2Zmc2V0TnVt YmVyICYmCi0JCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIpCisJCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIgJiYKKwkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBwZXIgPT0KKwkJKChQYWdl SGVhZGVyKSBwYWdlKS0+cGRfc3BlY2lhbCAtIE1BWEFMSUdOKG5ld3R1cC0+dF9sZW4pKQog CXsKIAkJaW5mbyB8PSBYTE9HX0hFQVBfSU5JVF9QQUdFOwogCQlpbml0ID0gdHJ1ZTsKQEAg LTkwOTQsNiArOTM0MCw3IEBAIGxvZ19oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxuLCBCdWZm ZXIgb2xkYnVmLAogCSAqIFRoZSAnZGF0YScgZG9lc24ndCBpbmNsdWRlIHRoZSBjb21tb24g cHJlZml4IG9yIHN1ZmZpeC4KIAkgKi8KIAlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ4bGhk ciwgU2l6ZU9mSGVhcEhlYWRlcik7CisKIAlpZiAocHJlZml4bGVuID09IDApCiAJewogCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCBlNmNiODE5N2RlYy4uNWY2NWM0ZThmOGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjI0LDQ4ICsyMjQsMzcg QEAgaGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIg b3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCUNvbW1hbmRJZCBjaWQsIHVpbnQz MiBvcHRpb25zLAogCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVj aywKIAkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCi0JCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJQml0bWFwc2V0ICoq bW9kaWZpZWRfYXR0cnMpCiB7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1 cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxk RnJlZSk7Ci0JYm9vbAkJaG90X2FsbG93ZWQ7Ci0JYm9vbAkJc3VtbWFyaXplZF9vbmx5Owor CUhlYXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGU7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAog CUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOwogCi0JaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOwotCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2Nr bW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfbW9kZSA9IEhlYXBV cGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sICptb2RpZmllZF9hdHRycyk7CisJKmxvY2tt b2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCAqbW9kaWZpZWRf YXR0cnMpOwogCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNs b3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCXR1cGxl LT50X3RhYmxlT2lkID0gc2xvdC0+dHRzX3RhYmxlT2lkOwogCi0JcmVzdWx0ID0gaGVhcF91 cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIG9wdGlvbnMsIGNyb3NzY2hlY2ss IHdhaXQsCi0JCQkJCQkgdG1mZCwgKmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhv dF9hbGxvd2VkKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVw bGUsIGNpZCwgb3B0aW9ucywKKwkJCQkJCSBjcm9zc2NoZWNrLCB3YWl0LAorCQkJCQkJIHRt ZmQsICpsb2NrbW9kZSwgKm1vZGlmaWVkX2F0dHJzLCBob3RfbW9kZSk7CiAJSXRlbVBvaW50 ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgotCSAqIERl Y2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBs ZQotCSAqCi0JICogTm90ZTogaGVhcF91cGRhdGUgcmV0dXJucyB0aGUgdGlkIChsb2NhdGlv bikgb2YgdGhlIG5ldyB0dXBsZSBpbiB0aGUKLQkgKiB0X3NlbGYgZmllbGQuCi0JICoKLQkg KiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVz LiBJZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0 ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1cGRhdGUgb25seSBz dW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgorCSAqIFRlbGwgdGhlIGNhbGxl ciB3aGV0aGVyIGV2ZXJ5IGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5LiAgSWYgdGhlIG5ldwor CSAqIHR1cGxlIGlzIG5vdCBoZWFwLW9ubHkgdGhlIHVwZGF0ZSB3YXMgbm90IEhPVDogaXQg aXMgYW4gaW5kZXBlbmRlbnQKKwkgKiB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNoIGVudHJ5 IGluIGV2ZXJ5IGluZGV4LCB3aGljaCB3ZSBzaWduYWwgYnkKKwkgKiBhZGRpbmcgdGhlIHdo b2xlLXJvdyBhdHRyaWJ1dGUgdG8gKm1vZGlmaWVkX2F0dHJzLiAgT3RoZXJ3aXNlIChjbGFz c2ljCisJICogSE9UIG9yIEhPVC1pbmRleGVkKSB0aGUgY2FsbGVyIGNvbnN1bHRzIHRoZSBw ZXItaW5kZXggYXR0cmlidXRlcy4KIAkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwotCWlmIChyZXN1bHQgPT0gVE1fT2spCi0JewotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25s eSh0dXBsZSkpCi0JCXsKLQkJCWlmIChzdW1tYXJpemVkX29ubHkpCi0JCQkJKnVwZGF0ZV9p bmRleGVzID0gVFVfU3VtbWFyaXppbmc7Ci0JCX0KLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfQWxsOwotCX0KKwlpZiAocmVzdWx0ID09IFRNX09rICYmICFIZWFwVHVwbGVJ c0hlYXBPbmx5KHR1cGxlKSkKKwkJKm1vZGlmaWVkX2F0dHJzID0gYm1zX2FkZF9tZW1iZXIo Km1vZGlmaWVkX2F0dHJzLAorCQkJCQkJCQkJCSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhl cyk7CiAKIAlpZiAoc2hvdWxkRnJlZSkKIAkJcGZyZWUodHVwbGUpOwpAQCAtNzMxLDkgKzcy MCwzMyBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRI ZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCQkJaWYgKCFpbmRleF9nZXRuZXh0X3Nsb3QoaW5k ZXhTY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCQkJYnJlYWs7CiAKLQkJ CS8qIFNpbmNlIHdlIHVzZWQgbm8gc2NhbiBrZXlzLCBzaG91bGQgbmV2ZXIgbmVlZCB0byBy ZWNoZWNrICovCisJCQkvKgorCQkJICogQ0xVU1RFUiB1c2VzIGEgbm8ta2V5IGZ1bGwtaW5k ZXggc2NhbjsgaXQgY2Fubm90IGRvIGFueQorCQkJICogdHVwbGUtbGV2ZWwgZmlsdGVyaW5n IGl0c2VsZi4gIFRoZSBIT1QtaW5kZXhlZCByZWFkZXIgcGF0aAorCQkJICogcm91dGluZWx5 IHNldHMgeHNfcmVjaGVjayB3aGVuIHdhbGtpbmcgY2hhaW4gZW50cmllcyB3aG9zZQorCQkJ ICogaW5kZXgga2V5IG1heSBiZSBzdGFsZSByZWxhdGl2ZSB0byB0aGUgdmlzaWJsZSBoZWFw IHR1cGxlLgorCQkJICogVGhvc2UgZW50cmllcyBjYXVzZSB0aGUgc2FtZSBsaXZlIHR1cGxl IHRvIGJlIHZpc2l0ZWQgdmlhIHRoZQorCQkJICogZnJlc2ggaG90LWluZGV4ZWQtaW5zZXJ0 ZWQgZW50cnkgdG9vOyBpbmNsdWRpbmcgdGhlbSB3b3VsZAorCQkJICogZHVwbGljYXRlIHJv d3MgaW4gdGhlIHJld3JpdHRlbiBoZWFwLiAgU2tpcCB0aGVtIGhlcmUgLS0gdGhlCisJCQkg KiB0dXBsZSBpcyByZWFjaGFibGUgdGhyb3VnaCBpdHMgY2Fub25pY2FsIGluZGV4IGVudHJ5 LgorCQkJICoKKwkJCSAqIElmIHhzX3JlY2hlY2sgaXMgc2V0IHdpdGggYWN0dWFsIHNjYW4g a2V5cywgdGhhdCdzIGEgcmVhbCBsb3NzeQorCQkJICogaW5kZXggc2NlbmFyaW8gQ0xVU1RF UiBjYW4ndCBoYW5kbGUgKGhpc3RvcmljYWwgcmVzdHJpY3Rpb24pLgorCQkJICovCiAJCQlp ZiAoaW5kZXhTY2FuLT54c19yZWNoZWNrKQotCQkJCWVsb2coRVJST1IsICJDTFVTVEVSIGRv ZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJeworCQkJCWlm IChpbmRleFNjYW4tPm51bWJlck9mS2V5cyA+IDApCisJCQkJCWVsb2coRVJST1IsICJDTFVT VEVSIGRvZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJCWNv bnRpbnVlOworCQkJfQorCisJCQkvKgorCQkJICogU2FtZSByZWFzb25pbmcgYXMgZm9yIHhz X3JlY2hlY2s6IGEgSE9ULWluZGV4ZWQgc3RhbGUgZW50cnkKKwkJCSAqIHdvdWxkIHJlLWVt aXQgYW4gYWxyZWFkeS12aXNpdGVkIHR1cGxlIHZpYSBpdHMgY2Fub25pY2FsIGZyZXNoCisJ CQkgKiBlbnRyeS4gIFNraXAuCisJCQkgKi8KKwkJCWlmIChpbmRleFNjYW4tPnhzX2hvdF9p bmRleGVkX3N0YWxlKQorCQkJCWNvbnRpbnVlOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTY0 NywzMCArMTY2MCw0OCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAKIAkJCW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKCZoZWFwVHVwbGUtPnRfc2VsZik7CiAKLQkJCS8qCi0JCQkgKiBJZiBhIEhPVCB0dXBs ZSBwb2ludHMgdG8gYSByb290IHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCwKLQkJCSAqIG9i dGFpbiByb290IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBp dCBhcwotCQkJICogY29ycnVwdGlvbi4KLQkJCSAqLwotCQkJaWYgKHJvb3Rfb2Zmc2V0c1tv ZmZudW0gLSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJaWYgKChoZWFwVHVwbGUt PnRfZGF0YS0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKIAkJ CXsKLQkJCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShoc2Nhbi0+cnNfY2J1Zik7Ci0K LQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0J CQkJaGVhcF9nZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCQlMb2Nr QnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJCS8qCisJ CQkJICogSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJbmRleCBVcGRhdGUpIGxpdmUgdHVwbGU6 IGluZGV4IGl0CisJCQkJICogdW5kZXIgaXRzIE9XTiBUSUQsIG5vdCB0aGUgY2hhaW4gcm9v dC4gIEl0cyBpbmRleGVkIHZhbHVlcworCQkJCSAqIGRpZmZlciBmcm9tIGVhcmxpZXIgY2hh aW4gbWVtYmVycycsIGFuZCB0aGUgYml0bWFwLW92ZXJsYXAKKwkJCQkgKiByZWFkIHBhdGgg a2VlcHMgYW4gZW50cnkgb25seSB3aGVuIG5vIGhvcCBhZnRlciB0aGUgZW50cnkncworCQkJ CSAqIHRhcmdldCBjaGFuZ2VkIHRoZSBpbmRleCdzIGF0dHJpYnV0ZXMuICBUaGF0IGhvbGRz IGZvciBhbgorCQkJCSAqIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IHRoZSBsaXZlIHR1 cGxlIChubyBsYXRlciBob3ApOworCQkJCSAqIGFuIGVudHJ5IHBvaW50ZWQgYXQgdGhlIHJv b3Qgd291bGQgYmUgZHJvcHBlZCBhcyBzdGFsZSwKKwkJCQkgKiBsb3NpbmcgdGhlIHJvdy4K KwkJCQkgKi8KKwkJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCisJCQkJCQkJICAgb2ZmbnVtKTsKIAkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIGEgSE9UIHR1cGxlIHBvaW50cyB0 byBhIHJvb3QgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0LAorCQkJCSAqIG9idGFpbiByb290 IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBpdAorCQkJCSAq IGFzIGNvcnJ1cHRpb24uCisJCQkJICovCisJCQkJaWYgKHJvb3Rfb2Zmc2V0c1tvZmZudW0g LSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJCXsKKwkJCQkJUGFnZQkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwogCi0JCQlpZiAoIU9mZnNldE51bWJl cklzVmFsaWQocm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKSkKLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJy bXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25s eSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKLQkJCQkJCQkJCQkg b2ZmbnVtLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRp b24pKSkpOworCQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19T SEFSRSk7CisJCQkJCWhlYXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7 CisJCQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7 CisJCQkJfQogCi0JCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCi0JCQkJCQkgICByb290X29mZnNldHNbb2Zm bnVtIC0gMV0pOworCQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZnNldHNb b2ZmbnVtIC0gMV0pKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoImZhaWxl ZCB0byBmaW5kIHBhcmVudCB0dXBsZSBmb3IgaGVhcC1vbmx5IHR1cGxlIGF0ICgldSwldSkg aW4gdGFibGUgXCIlc1wiIiwKKwkJCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKKwkJCQkJCQkJCQkJIG9mZm51bSwKKwkJCQkJCQkJ CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7CisKKwkJCQlJ dGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZoZWFwVHVw bGUtPnRfc2VsZiksCisJCQkJCQkJICAgcm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKTsKKwkJ CX0KIAogCQkJLyogQ2FsbCB0aGUgQU0ncyBjYWxsYmFjayByb3V0aW5lIHRvIHByb2Nlc3Mg dGhlIHR1cGxlICovCiAJCQljYWxsYmFjayhpbmRleFJlbGF0aW9uLCAmdGlkLCB2YWx1ZXMs IGlzbnVsbCwgdHVwbGVJc0FsaXZlLApAQCAtMTgzNSw3ICsxODY2LDggQEAgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlyb290VHVwbGUg PSAqaGVhcGN1cnNvcjsKIAkJcm9vdF9vZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51 bWJlcihoZWFwY3Vyc29yKTsKIAotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVw bGUpKQorCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpICYmCisJCQkoaGVh cFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpID09 IDApCiAJCXsKIAkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0g MV07CiAJCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0pKQpAQCAtMjUz MSw3ICsyNTYzLDYgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBz Y2FuLAogCiAJaHNjYW4tPnJzX2NpbmRleCA9IDA7CiAJaHNjYW4tPnJzX250dXBsZXMgPSAw OwotCiAJLyogUmVsZWFzZSBidWZmZXIgY29udGFpbmluZyBwcmV2aW91cyBibG9jay4gKi8K IAlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+cnNfY2J1ZikpCiAJewpAQCAtMjU5Miw2ICsy NjIzLDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAog CQkgKiBvZmZzZXQuCiAJCSAqLwogCQlpbnQJCQljdXJzbG90OworCQlib29sCQlwYWdlX2hh ZF9ob3RfaW5kZXhlZCA9IGZhbHNlOwogCiAJCS8qIFdlIG11c3QgaGF2ZSBleHRyYWN0ZWQg dGhlIHR1cGxlIG9mZnNldHMgYnkgbm93ICovCiAJCUFzc2VydChub2Zmc2V0cyA+IC0xKTsK QEAgLTI2MDEsMTIgKzI2MzMsNjUgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVT Y2FuRGVzYyBzY2FuLAogCQkJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IG9mZnNldHNbY3Vyc2xv dF07CiAJCQlJdGVtUG9pbnRlckRhdGEgdGlkOwogCQkJSGVhcFR1cGxlRGF0YSBoZWFwVHVw bGU7CisJCQlib29sCQlob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNlOwogCiAJCQlJdGVtUG9p bnRlclNldCgmdGlkLCBibG9jaywgb2ZmbnVtKTsKIAkJCWlmIChoZWFwX2hvdF9zZWFyY2hf YnVmZmVyKCZ0aWQsIHNjYW4tPnJzX3JkLCBidWZmZXIsIHNuYXBzaG90LAotCQkJCQkJCQkJ ICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCi0JCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tu dHVwKytdID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CisJCQkJCQkJCQkg ICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlLAorCQkJCQkJCQkJICAgJmhvdF9pbmRleGVkX3N0 YWxlLCBOVUxMLCBOVUxMKSkKKwkJCXsKKwkJCQlPZmZzZXROdW1iZXIgcmVzb2x2ZWQgPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdGlkKTsKKwkJCQlib29sCQlhbHJlYWR5X2hh dmUgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogQSBiaXRtYXAgaGVhcCBzY2FuIGNhbm5v dCBhdHRyaWJ1dGUgYSBUSUQgdG8gb25lIGluZGV4LCBzbworCQkJCSAqIGFueSBjcm9zc2Vk IGluLWNoYWluIEhPVC9TSVUgaG9wIG1lYW5zIHRoZSBhcnJpdmluZyBlbnRyeQorCQkJCSAq IG1heSBiZSBzdGFsZTsgcmVjaGVjay9kZWR1cCBjb25zZXJ2YXRpdmVseS4KKwkJCQkgKi8K KwkJCQlpZiAoaG90X2luZGV4ZWRfc3RhbGUpCisJCQkJCXBhZ2VfaGFkX2hvdF9pbmRleGVk ID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICogV2l0aCBIT1QtaW5kZXhlZCB1cGRhdGVzLCBt b3JlIHRoYW4gb25lIGJpdG1hcCBlbnRyeSBvbiB0aGUKKwkJCQkgKiBzYW1lIGJsb2NrIGNh biBjaGFpbi1yZXNvbHZlIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUgKGEKKwkJCQkgKiBzdGFs ZSBvbGQta2V5IGVudHJ5IHBsdXMgdGhlIGZyZXNoIG5ldy1rZXkgZW50cnksIG9yCisJCQkJ ICogbXVsdGlwbGUgc3RhbGUgZW50cmllcyBmcm9tIHN1Y2Nlc3NpdmUgaG90LWluZGV4ZWQK KwkJCQkgKiB1cGRhdGVzKS4gIE9uY2Ugd2UndmUgc2VlbiBhbnkgaG90LWluZGV4ZWQgaG9w IG9uIHRoaXMKKwkJCQkgKiBibG9jayBkZWR1cCBpbmxpbmUgc28gdXBwZXIgbm9kZXMgKGUu Zy4sIE1FUkdFKSBkb24ndCBzZWUKKwkJCQkgKiB0aGUgc2FtZSByb3cgdHdpY2UuICBQcmVz ZXJ2ZSBvcmlnaW5hbCBpbnNlcnRpb24gb3JkZXI6CisJCQkJICogTUVSR0UncyBSRVRVUk5J Tkcgb3JkZXJpbmcgYW5kIHRlc3QgaGFybmVzcyBzdGFiaWxpdHkgYm90aAorCQkJCSAqIGRl cGVuZCBvbiBpdC4gIEluIHRoZSBhYnNlbmNlIG9mIGhvdC1pbmRleGVkIG9uIHRoZSBwYWdl IHdlCisJCQkJICogc2tpcCB0aGUgbGluZWFyIHNjYW4gZW50aXJlbHkgLS0gdGhlIFRCTSdz IFRJRHMgYXJlIGFscmVhZHkKKwkJCQkgKiBkaXN0aW5jdCBieSBjb25zdHJ1Y3Rpb24uCisJ CQkJICovCisJCQkJaWYgKHBhZ2VfaGFkX2hvdF9pbmRleGVkKQorCQkJCXsKKwkJCQkJZm9y IChpbnQgaiA9IDA7IGogPCBudHVwOyBqKyspCisJCQkJCXsKKwkJCQkJCWlmIChoc2Nhbi0+ cnNfdmlzdHVwbGVzW2pdID09IHJlc29sdmVkKQorCQkJCQkJeworCQkJCQkJCWFscmVhZHlf aGF2ZSA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisK KwkJCQlpZiAoIWFscmVhZHlfaGF2ZSkKKwkJCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tudHVw KytdID0gcmVzb2x2ZWQ7CisKKwkJCQkvKgorCQkJCSAqIElmIHdlIHJlYWNoZWQgdGhlIHZp c2libGUgdHVwbGUgdGhyb3VnaCBhIEhPVC1pbmRleGVkCisJCQkJICogKGhvdC1pbmRleGVk KSBob3AsIHRoZSBiaXRtYXAgaW5kZXggZW50cnkgdGhhdCBwb2ludGVkIHVzCisJCQkJICog YXQgdGhlIGNoYWluIHJvb3QgbWF5IGRlc2NyaWJlIGtleSB2YWx1ZXMgdGhlIHZpc2libGUg dHVwbGUKKwkJCQkgKiBubyBsb25nZXIgaGFzLiAgRm9yY2UgQml0bWFwSGVhcFNjYW4gdG8g cnVuIGl0cyByZWNoZWNrCisJCQkJICogcXVhbCBhZ2FpbnN0IHRoZXNlIHR1cGxlcyBldmVu IGlmIHRoZSBiaXRtYXAgcGFnZSB3YXMKKwkJCQkgKiBvdGhlcndpc2UgZXhhY3QuCisJCQkJ ICovCisJCQkJaWYgKGhvdF9pbmRleGVkX3N0YWxlKQorCQkJCQkqcmVjaGVjayA9IHRydWU7 CisJCQl9CiAJCX0KKwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2luZGV4c2Nhbi5jCmluZGV4IDMzZDE0ZjFkZTdkLi5lN2UzODFkMDUwMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYwpAQCAt MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nl c3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgog CkBAIC0zNSw2ICszNiwxNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24g cmVsLCB1aW50MzIgZmxhZ3MpCiAJaHNjYW4tPnhzX2JsayA9IEludmFsaWRCbG9ja051bWJl cjsKIAloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCisJLyoKKwkgKiBT Y3JhdGNoIHNwYWNlIGZvciB0aGUgdW5pb24gb2YgbW9kaWZpZWQtYXR0cnMgYml0bWFwcyB0 aGF0IGEgSE9UL1NJVQorCSAqIGNoYWluIHdhbGsgY3Jvc3Nlcywgc2l6ZWQgZm9yIHRoaXMg cmVsYXRpb24ncyBjb2x1bW4gY291bnQuICBUaHJlYWRlZAorCSAqIGJhY2sgb3V0IHRocm91 Z2ggeHNfaG90X2luZGV4ZWRfY3Jvc3NlZCBmb3IgdGhlIGluZGV4LWFjY2VzcyBsYXllci4K KwkgKi8KKwloc2Nhbi0+eHNfYmFzZS54c19ob3RfaW5kZXhlZF9jcm9zc2VkID0KKwkJcGFs bG9jMChIb3RJbmRleGVkQml0bWFwQnl0ZXMoUmVsYXRpb25HZXROdW1iZXJPZkF0dHJpYnV0 ZXMocmVsKSkpOworCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KIApAQCAtNjMsNiAr NzIsOSBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURhdGEgKnNj YW4pCiAJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVmZmVyKSkKIAkJUmVsZWFz ZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOwogCisJaWYgKGhzY2FuLT54c19iYXNlLnhz X2hvdF9pbmRleGVkX2Nyb3NzZWQgIT0gTlVMTCkKKwkJcGZyZWUoaHNjYW4tPnhzX2Jhc2Uu eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCk7CisKIAlwZnJlZShoc2Nhbik7CiB9CiAKQEAgLTgz LDEzICs5NSwyNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURh dGEgKnNjYW4pCiAgKiBnbG9iYWxseSBkZWFkOyAqYWxsX2RlYWQgaXMgc2V0IHRydWUgaWYg YWxsIG1lbWJlcnMgb2YgdGhlIEhPVCBjaGFpbgogICogYXJlIHZhY3V1bWFibGUsIGZhbHNl IGlmIG5vdC4KICAqCisgKiBJZiBob3RfaW5kZXhlZF9yZWNoZWNrIGlzIG5vdCBOVUxMLCAq aG90X2luZGV4ZWRfcmVjaGVjayBpcyBzZXQgdHJ1ZSBpZmYgdGhlCisgKiB3YWxrIGNyb3Nz ZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJVSkgaG9wIGFmdGVyIHRoZSBl bnRyeSB0dXBsZQorICogb24gdGhlIHdheSB0byB0aGUgcmV0dXJuZWQgdHVwbGUgLS0gaS5l LiB0aGUgYXJyaXZpbmcgaW5kZXggZW50cnkncyBzdG9yZWQKKyAqIGtleSBtYXkgbm8gbG9u Z2VyIG1hdGNoIHRoZSBsaXZlIHR1cGxlLCBzbyB0aGUgY2FsbGVyIG11c3QgcmVjaGVjayBp dCAodmlhCisgKiBhIGxlYWYta2V5IGNvbXBhcmlzb24gb3IgYSBxdWFsIHJlY2hlY2spLiAg VGhlIGVudHJ5IHR1cGxlJ3Mgb3duIHByb2R1Y2luZworICogaG9wIGlzIGV4Y2x1ZGVkLCBz byBhIGZyZXNoIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IGl0cyB0dXBsZSBpcyBub3QK KyAqIGZsYWdnZWQuICBXaGVuIG5vIHN1Y2ggaG9wIHdhcyBjcm9zc2VkLCAqaG90X2luZGV4 ZWRfcmVjaGVjayBpcyBsZWZ0IGZhbHNlLgorICoKICAqIFVubGlrZSBoZWFwX2ZldGNoLCB0 aGUgY2FsbGVyIG11c3QgYWxyZWFkeSBoYXZlIHBpbiBhbmQgKGF0IGxlYXN0KSBzaGFyZQog ICogbG9jayBvbiB0aGUgYnVmZmVyOyBpdCBpcyBzdGlsbCBwaW5uZWQvbG9ja2VkIGF0IGV4 aXQuCiAgKi8KIGJvb2wKIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlk LCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJICAgU25hcHNob3Qg c25hcHNob3QsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCi0JCQkJCSAgIGJvb2wgKmFsbF9kZWFk LCBib29sIGZpcnN0X2NhbGwpCisJCQkJCSAgIGJvb2wgKmFsbF9kZWFkLCBib29sIGZpcnN0 X2NhbGwsCisJCQkJCSAgIGJvb2wgKmhvdF9pbmRleGVkX3JlY2hlY2ssCisJCQkJCSAgIHVp bnQ4ICpjcm9zc2VkX2JpdG1hcCwKKwkJCQkJICAgYm9vbCAqcHJlZml4X2FsbF9kZWFkKQog ewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25J ZCBwcmV2X3htYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTk4LDEyICsxMjEsMjcg QEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJvb2wJCWF0X2NoYWluX3N0YXJ0OwogCWJvb2wJ CXZhbGlkOwogCWJvb2wJCXNraXA7CisJYm9vbAkJcHJlZml4X2RlYWQgPSB0cnVlOwogCUds b2JhbFZpc1N0YXRlICp2aXN0ZXN0ID0gTlVMTDsKKwlpbnQJCQlyZWxuYXR0cyA9IFJlbGF0 aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKTsKIAogCS8qIElmIHRoaXMgaXMg bm90IHRoZSBmaXJzdCBjYWxsLCBwcmV2aW91cyBjYWxsIHJldHVybmVkIGEgKGxpdmUhKSB0 dXBsZSAqLwogCWlmIChhbGxfZGVhZCkKIAkJKmFsbF9kZWFkID0gZmlyc3RfY2FsbDsKIAor CS8qCisJICogT24gdGhlIGZpcnN0IGNhbGwsIGNsZWFyIHRoZSByZWNoZWNrIGZsYWcgYW5k IHRoZSBjcm9zc2VkLWF0dHJzIHVuaW9uLgorCSAqIE9uIHN1YnNlcXVlbnQgY2FsbHMgKHNh bWUgY2hhaW4gY29udGludWluZykga2VlcCB3aGF0ZXZlciBhbiBlYXJsaWVyCisJICogaG9w IGFscmVhZHkgYWNjdW11bGF0ZWQuCisJICovCisJaWYgKGZpcnN0X2NhbGwpCisJeworCQlp ZiAoaG90X2luZGV4ZWRfcmVjaGVjaykKKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gZmFs c2U7CisJCWlmIChjcm9zc2VkX2JpdG1hcCkKKwkJCW1lbXNldChjcm9zc2VkX2JpdG1hcCwg MCwgSG90SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJfQorCiAJYmxrbm8gPSBJ dGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCk7CiAJb2ZmbnVtID0gSXRlbVBvaW50ZXJH ZXRPZmZzZXROdW1iZXIodGlkKTsKIAlhdF9jaGFpbl9zdGFydCA9IGZpcnN0X2NhbGw7CkBA IC0xMzAsNyArMTY4LDE3IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIg dGlkLCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCS8qIFdlIHNob3Vs ZCBvbmx5IHNlZSBhIHJlZGlyZWN0IGF0IHN0YXJ0IG9mIGNoYWluICovCiAJCQlpZiAoSXRl bUlkSXNSZWRpcmVjdGVkKGxwKSAmJiBhdF9jaGFpbl9zdGFydCkKIAkJCXsKLQkJCQkvKiBG b2xsb3cgdGhlIHJlZGlyZWN0ICovCisJCQkJLyoKKwkJCQkgKiBGb2xsb3cgdGhlIHJlZGly ZWN0LiAgQSBjb2xsYXBzZWQgZGVhZCBwcmVmaXggaXMgcHJlc2VydmVkCisJCQkJICogYXMg YSBydW4gb2YgZm9yd2FyZGluZyBzdHVicywgZWFjaCBjYXJyeWluZyBpdHMgc2VnbWVudCdz CisJCQkJICogbW9kaWZpZWQtYXR0cnMgYml0bWFwLCBlbmRpbmcgYXQgdGhlIGZpcnN0IGxp dmUgdHVwbGU7CisJCQkJICogY2hhaW4gY29sbGFwc2UgcmVjbGFpbXMgYSBkZWFkIG1lbWJl ciBvbmx5IHdoZW4gaXRzCisJCQkJICogYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhl IHN1cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkJCQkgKiBwcnVuZWhlYXAuYykuICBTbyB0 aGUgc3R1YnMgYW5kIGxpdmUgaG9wcyB0aGlzIHdhbGsgY3Jvc3NlcworCQkJCSAqIGJlbG93 IGNvbnRyaWJ1dGUgdGhlIGNvbXBsZXRlIHVuaW9uIG9mIGV2ZXJ5IGNvbGxhcHNlZAorCQkJ CSAqIGhvcCdzIG1vZGlmaWVkIGF0dHJpYnV0ZXMsIGFuZCB0aGF0IHVuaW9uIGRyaXZlcyB0 aGUKKwkJCQkgKiBvdmVybGFwIHN0YWxlbmVzcyB0ZXN0IGZvciB0aGUgaW5kZXgtYWNjZXNz IGxheWVyLgorCQkJCSAqLwogCQkJCW9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsK IAkJCQlhdF9jaGFpbl9zdGFydCA9IGZhbHNlOwogCQkJCWNvbnRpbnVlOwpAQCAtMTUxLDEw ICsxOTksOTUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlJdGVtUG9pbnRlclNldCgmaGVh cFR1cGxlLT50X3NlbGYsIGJsa25vLCBvZmZudW0pOwogCiAJCS8qCi0JCSAqIFNob3VsZG4n dCBzZWUgYSBIRUFQX09OTFkgdHVwbGUgYXQgY2hhaW4gc3RhcnQuCisJCSAqIEEgY29sbGFw c2Utc3Vydml2b3Igc3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSBidXQgbm90IGEgcmVhbCB0 dXBsZToKKwkJICogaXQgaXMgYSBmcmVlemUtc2FmZSBmb3J3YXJkaW5nIG5vZGUgY2Fycnlp bmcgdGhlIG1vZGlmaWVkLWF0dHJzCisJCSAqIGJpdG1hcCBmb3IgdGhlIGNoYWluIHNlZ21l bnQgaXQgcmVwcmVzZW50cy4gIFRyZWF0IGl0IGxpa2UgYQorCQkgKiBjcm9zc2VkIEhPVC9T SVUgaG9wIC0tIGFybSB0aGUgcmVjaGVjayBhbmQgT1IgaXRzIGJpdG1hcCBpbnRvIHRoZQor CQkgKiBjcm9zc2VkIHVuaW9uICh1bmxlc3Mgd2UgYXJyaXZlZCBkaXJlY3RseSBhdCBpdCwg aW4gd2hpY2ggY2FzZSB0aGUKKwkJICogYXJyaXZpbmcgZW50cnkgYWxyZWFkeSByZWZsZWN0 cyB0aGlzIHNlZ21lbnQncyB2YWx1ZSkgLS0gdGhlbgorCQkgKiBmb2xsb3cgaXRzIGZvcndh cmQgbGluay4gIEEgc3R1YiBpcyBuZXZlciB2aXNpYmxlIGFuZCBuZXZlcgorCQkgKiByZXR1 cm5lZCwgYW5kIGl0cyBmb3J3YXJkIGxpbmsgaXMgYSBsb2dpY2FsLCBub3QgeGlkLWNvbnRp bnVvdXMsCisJCSAqIGVkZ2UsIHNvIHJlc2V0IHByZXZfeG1heCB0byBza2lwIHRoZSBjaGFp bi1pbnRlZ3JpdHkgY2hlY2sgb24gdGhlCisJCSAqIG5leHQgbWVtYmVyLgorCQkgKi8KKwkJ aWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoaGVhcFR1cGxlLT50X2RhdGEpKQorCQl7CisJ CQlpZiAoIWF0X2NoYWluX3N0YXJ0KQorCQkJeworCQkJCWlmIChob3RfaW5kZXhlZF9yZWNo ZWNrKQorCQkJCQkqaG90X2luZGV4ZWRfcmVjaGVjayA9IHRydWU7CisJCQkJaWYgKGNyb3Nz ZWRfYml0bWFwKQorCQkJCXsKKwkJCQkJaW50CQkJYm1uYXR0cyA9CisJCQkJCQlIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyhoZWFwVHVwbGUtPnRfZGF0YSk7CisKKwkJCQkJSG90SW5k ZXhlZEJpdG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJCSAgSG90SW5kZXhl ZEdldE1vZGlmaWVkQml0bWFwKGhlYXBUdXBsZS0+dF9kYXRhLAorCQkJCQkJCQkJCQkJCQkJ CQkgIGhlYXBUdXBsZS0+dF9sZW4sCisJCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJ CQkJCQkJCQkJICBibW5hdHRzKTsKKwkJCQl9CisJCQl9CisJCQlvZmZudW0gPSBIb3RJbmRl eGVkU3R1YkdldEZvcndhcmQoaGVhcFR1cGxlLT50X2RhdGEpOworCQkJYXRfY2hhaW5fc3Rh cnQgPSBmYWxzZTsKKwkJCXByZXZfeG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJ Y29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBTaG91bGRuJ3Qgc2VlIGEgSEVBUF9PTkxZ IHR1cGxlIGF0IGNoYWluIHN0YXJ0LCB1bmxlc3MgdGhhdCB0dXBsZQorCQkgKiBpcyB0aGUg dGFyZ2V0IG9mIGEgZnJlc2hseS1pbnNlcnRlZCBob3QtaW5kZXhlZCBpbmRleCBlbnRyeTog dGhlbgorCQkgKiBhcnJpdmluZyBkaXJlY3RseSBhdCBhIGhlYXAtb25seSBIT1QtaW5kZXhl ZCB0dXBsZSBpcyBsZWdhbCBhbmQgdGhlCisJCSAqIHR1cGxlIGlzIHRoZSBjYW5vbmljYWwg dmlzaWJsZSB2ZXJzaW9uLCBzbyB3ZSBmYWxsIHRocm91Z2ggYW5kCisJCSAqIGFwcGx5IG5v cm1hbCB2aXNpYmlsaXR5IGNoZWNrcyB0byBpdC4gIE90aGVyd2lzZSwgdHJlYXQgaXQgYXMg YQorCQkgKiBicm9rZW4gY2hhaW4uCiAJCSAqLwogCQlpZiAoYXRfY2hhaW5fc3RhcnQgJiYg SGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpKQotCQkJYnJlYWs7CisJCXsKKwkJCWlm ICgoaGVhcFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFU RUQpID09IDApCisJCQkJYnJlYWs7CisKKwkJCS8qCisJCQkgKiBXZSB3ZXJlIHBvaW50ZWQg ZGlyZWN0bHkgYXQgdGhpcyBob3QtaW5kZXhlZCB0dXBsZS4gIFRoZSBpbmRleAorCQkJICog ZW50cnkgd2UgYXJyaXZlZCB0aHJvdWdoIHdhcyBpbnNlcnRlZCAqZm9yKiB0aGlzIHVwZGF0 ZSwgc28gaXQKKwkJCSAqIHJlZmxlY3RzIHRoaXMgdHVwbGUncyBjdXJyZW50IGF0dHJpYnV0 ZSB2YWx1ZXM7IGl0cyBvd24KKwkJCSAqIHByb2R1Y2luZyBob3AgaXMgbm90IGEgY3Jvc3Nl ZCBob3AsIHNvIGl0IGlzIG5vdCBmbGFnZ2VkIGZvcgorCQkJICogcmVjaGVjayAoYSBmcmVz aCBlbnRyeSBpcyBuZXZlciBzdGFsZSBmb3IgaXRzIG93biBpbmRleCkuCisJCQkgKi8KKwkJ fQorCQllbHNlIGlmIChob3RfaW5kZXhlZF9yZWNoZWNrICE9IE5VTEwgJiYKKwkJCQkgKGhl YXBUdXBsZS0+dF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAh PSAwKQorCQl7CisJCQkvKgorCQkJICogQSBIT1QvU0lVIGhvcCByZWFjaGVkIGJ5IGZvbGxv d2luZyB0aGUgY2hhaW4gKG9yIGEgcmVkaXJlY3QpCisJCQkgKiBmcm9tIGFuIGVhcmxpZXIg ZW50cnk6IHRoaXMgaG9wIGlzIGNyb3NzZWQsIHNvIHRoZSBhcnJpdmluZworCQkJICogZW50 cnkncyBzdG9yZWQga2V5IG1heSBubyBsb25nZXIgbWF0Y2ggdGhlIGxpdmUgdHVwbGUuICBT ZXQgdGhlCisJCQkgKiByZWNoZWNrIGZsYWcgdG8gdGVsbCB0aGUgaW5kZXgtYWNjZXNzIGxh eWVyIHRvIGNvbnN1bHQgdGhlCisJCQkgKiBjcm9zc2VkLWF0dHJzIHVuaW9uOyB0aGF0IHVu aW9uIChhY2N1bXVsYXRlZCBiZWxvdykgaXMgd2hhdAorCQkJICogZGVjaWRlcyBzdGFsZW5l c3MuCisJCQkgKi8KKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gdHJ1ZTsKKworCQkJLyoK KwkJCSAqIEFjY3VtdWxhdGUgdGhpcyBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgaW50 byB0aGUgY3Jvc3NlZAorCQkJICogdW5pb24uICBBIHR1cGxlJ3MgaW5saW5lIGJpdG1hcCBy ZWNvcmRzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMKKwkJCSAqIHRoYXQgY2hhbmdlZCBhdCB0 aGUgaG9wIElOVE8gaXQsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGhvcCB3ZQorCQkJICoganVz dCBjcm9zc2VkIGJ5IGFkdmFuY2luZyB0byBpdDsgT1JpbmcgZWFjaCBjcm9zc2VkIGhvcCB5 aWVsZHMKKwkJCSAqIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCBjaGFuZ2VkIGFmdGVy IHRoZSBlbnRyeSdzIG93bgorCQkJICogdHVwbGUuCisJCQkgKi8KKwkJCWlmIChjcm9zc2Vk X2JpdG1hcCkKKwkJCXsKKwkJCQlpbnQJCQlibW5hdHRzID0KKwkJCQkJSG90SW5kZXhlZFR1 cGxlQml0bWFwTmF0dHMoaGVhcFR1cGxlLT50X2RhdGEpOworCisJCQkJSG90SW5kZXhlZEJp dG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9k aWZpZWRCaXRtYXAoaGVhcFR1cGxlLT50X2RhdGEsCisJCQkJCQkJCQkJCQkJCQkJICBoZWFw VHVwbGUtPnRfbGVuLAorCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkg IGJtbmF0dHMpOworCQkJfQorCQl9CiAKIAkJLyoKIAkJICogVGhlIHhtaW4gc2hvdWxkIG1h dGNoIHRoZSBwcmV2aW91cyB4bWF4IHZhbHVlLCBlbHNlIGNoYWluIGlzCkBAIC0xODYsNiAr MzE5LDE1IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJIEhlYXBUdXBsZUhlYWRl ckdldFhtaW4oaGVhcFR1cGxlLT50X2RhdGEpKTsKIAkJCQlpZiAoYWxsX2RlYWQpCiAJCQkJ CSphbGxfZGVhZCA9IGZhbHNlOworCisJCQkJLyoKKwkJCQkgKiBSZXBvcnQgd2hldGhlciBl dmVyeSBjaGFpbiBtZW1iZXIgc2tpcHBlZCBiZWZvcmUgdGhpcworCQkJCSAqIHZpc2libGUg dHVwbGUgaXMgZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zLiAgV2l0aCBhIHN0YWxlCisJCQkJ ICogdmVyZGljdCB0aGlzIGxldHMgdGhlIGNhbGxlciBraWxsIHRoZSBhcnJpdmluZyBsZWFm IHNhZmVseS4KKwkJCQkgKi8KKwkJCQlpZiAocHJlZml4X2FsbF9kZWFkKQorCQkJCQkqcHJl Zml4X2FsbF9kZWFkID0gcHJlZml4X2RlYWQ7CisKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0K IAkJfQpAQCAtMTk0LDE4ICszMzYsMjUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVt UG9pbnRlciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgog CQkgKiBJZiB3ZSBjYW4ndCBzZWUgaXQsIG1heWJlIG5vIG9uZSBlbHNlIGNhbiBlaXRoZXIu ICBBdCBjYWxsZXIKIAkJICogcmVxdWVzdCwgY2hlY2sgd2hldGhlciBhbGwgY2hhaW4gbWVt YmVycyBhcmUgZGVhZCB0byBhbGwKLQkJICogdHJhbnNhY3Rpb25zLgorCQkgKiB0cmFuc2Fj dGlvbnMuICBUaGUgc2FtZSBzdXJlbHktZGVhZCB0ZXN0IGZlZWRzIHByZWZpeF9kZWFkLCB3 aGljaAorCQkgKiAodW5saWtlIGFsbF9kZWFkKSBpcyBub3QgcmVzZXQgd2hlbiBhIHZpc2li bGUgdHVwbGUgaXMgZm91bmQsIHNvIGl0CisJCSAqIHJlY29yZHMgd2hldGhlciB0aGUgbWVt YmVycyBza2lwcGVkIGFoZWFkIG9mIHRoZSByZXR1cm5lZCB0dXBsZSBhcmUKKwkJICogYWxs IGRlYWQgdG8gYWxsIC0tIHRoZSBzYWZlLXRvLWtpbGwtdGhpcy1sZWFmIGNvbmRpdGlvbi4K IAkJICoKIAkJICogTm90ZTogaWYgeW91IGNoYW5nZSB0aGUgY3JpdGVyaW9uIGhlcmUgZm9y IHdoYXQgaXMgImRlYWQiLCBmaXggdGhlCiAJCSAqIHBsYW5uZXIncyBnZXRfYWN0dWFsX3Zh cmlhYmxlX3JhbmdlKCkgZnVuY3Rpb24gdG8gbWF0Y2guCiAJCSAqLwotCQlpZiAoYWxsX2Rl YWQgJiYgKmFsbF9kZWFkKQorCQlpZiAoKGFsbF9kZWFkICYmICphbGxfZGVhZCkgfHwgcHJl Zml4X2RlYWQpCiAJCXsKIAkJCWlmICghdmlzdGVzdCkKIAkJCQl2aXN0ZXN0ID0gR2xvYmFs VmlzVGVzdEZvcihyZWxhdGlvbik7CiAKIAkJCWlmICghSGVhcFR1cGxlSXNTdXJlbHlEZWFk KGhlYXBUdXBsZSwgdmlzdGVzdCkpCi0JCQkJKmFsbF9kZWFkID0gZmFsc2U7CisJCQl7CisJ CQkJaWYgKGFsbF9kZWFkKQorCQkJCQkqYWxsX2RlYWQgPSBmYWxzZTsKKwkJCQlwcmVmaXhf ZGVhZCA9IGZhbHNlOworCQkJfQogCQl9CiAKIAkJLyoKQEAgLTI3Myw3ICs0MjIsMTUgQEAg aGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpz Y2FuLAogCQkJCQkJCQkJCQlzbmFwc2hvdCwKIAkJCQkJCQkJCQkJJmJzbG90LT5iYXNlLnR1 cGRhdGEsCiAJCQkJCQkJCQkJCWFsbF9kZWFkLAotCQkJCQkJCQkJCQkhKmhlYXBfY29udGlu dWUpOworCQkJCQkJCQkJCQkhKmhlYXBfY29udGludWUsCisJCQkJCQkJCQkJCSZzY2FuLT54 c19ob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkJCQkJCQlzY2FuLT54c19ob3RfaW5kZXhl ZF9jcm9zc2VkLAorCQkJCQkJCQkJCQkmc2Nhbi0+eHNfcHJlZml4X2FsbF9kZWFkKTsKKwlp ZiAoIWdvdF9oZWFwX3R1cGxlKQorCXsKKwkJc2Nhbi0+eHNfaG90X2luZGV4ZWRfcmVjaGVj ayA9IGZhbHNlOworCQlzY2FuLT54c19wcmVmaXhfYWxsX2RlYWQgPSBmYWxzZTsKKwl9CiAJ YnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqdGlkOwogCUxvY2tCdWZmZXIoaHNjYW4t PnhzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dl bmFtLmMKaW5kZXggMTQwODk4OWM1NjguLjY2MjhmOWJmODVkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvZ2VuYW0uYwpAQCAtMTAzLDYgKzEwMyw5IEBAIFJlbGF0aW9uR2V0SW5kZXhTY2Fu KFJlbGF0aW9uIGluZGV4UmVsYXRpb24sIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAkJ c2Nhbi0+b3JkZXJCeURhdGEgPSBOVUxMOwogCiAJc2Nhbi0+eHNfd2FudF9pdHVwID0gZmFs c2U7IC8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKwlzY2FuLT54c19pbmRleF9vbmx5ID0gZmFs c2U7CS8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKworCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0 YWxlID0gZmFsc2U7CiAKIAkvKgogCSAqIER1cmluZyByZWNvdmVyeSB3ZSBpZ25vcmUga2ls bGVkIHR1cGxlcyBhbmQgZG9uJ3QgYm90aGVyIHRvIGtpbGwgdGhlbQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9pbmRleGFtLmMKaW5kZXggNzk2N2U5Mzk4NDcuLjNjMDgxMzZmNjMwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2FtYXBpLmgiCisjaW5jbHVk ZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVs c2Nhbi5oIgpAQCAtMjg4LDYgKzI4OSwxMSBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCS8qIHByZXBhcmUgdG8gZmV0Y2ggaW5kZXggbWF0Y2hlcyBmcm9t IHRhYmxlICovCiAJc2Nhbi0+eHNfaGVhcGZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVn aW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKKwkvKgorCSAqIFN0YWxlbmVzcyBvZiBhIEhP VC1pbmRleGVkIGVudHJ5IGlzIGRlY2lkZWQgYnkgdGhlIGNyb3NzZWQtYXR0cmlidXRlCisJ ICogYml0bWFwIChzZWUgaW5kZXhfZmV0Y2hfaGVhcCksIHNvIHNjYW5zIGRvIG5vdCBuZWVk IHRoZSBsZWFmIGtleS4KKwkgKi8KKwogCXJldHVybiBzY2FuOwogfQogCkBAIC02MDYsNiAr NjEyLDE1IEBAIGluZGV4X2dldG5leHRfdGlkKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRp cmVjdGlvbiBkaXJlY3Rpb24pCiAJLyogWFhYOiB3ZSBzaG91bGQgYXNzZXJ0IHRoYXQgYSBz bmFwc2hvdCBpcyBwdXNoZWQgb3IgcmVnaXN0ZXJlZCAqLwogCUFzc2VydChUcmFuc2FjdGlv bklkSXNWYWxpZChSZWNlbnRYbWluKSk7CiAKKwkvKgorCSAqIFJlc2V0IHRoZSBIT1QtaW5k ZXhlZCByZWNoZWNrIGZsYWc6IGl0IGlzIHNldCBieSB0aGUgaGVhcCBBTSBkdXJpbmcKKwkg KiBpbmRleF9mZXRjaF9oZWFwIGFuZCBpcyBwZXItZmV0Y2hlZC10dXBsZSwgbm90IHBlci1p bmRleC1lbnRyeS4gRm9yCisJICogSW5kZXhPbmx5U2Nhbiwgd2hpY2ggbWF5IHNraXAgaW5k ZXhfZmV0Y2hfaGVhcCB3aGVuIHRoZSBWTSBzYXlzIHRoZQorCSAqIGVudHJ5IGlzIHZpc2li bGUtdG8tYWxsLCB0aGlzIGVuc3VyZXMgd2UgZG9uJ3QgY2FycnkgYSBzdGFsZSB2YWx1ZSBm cm9tCisJICogYSBwcmV2aW91cyBlbnRyeS4KKwkgKi8KKwlzY2FuLT54c19ob3RfaW5kZXhl ZF9zdGFsZSA9IGZhbHNlOworCiAJLyoKIAkgKiBUaGUgQU0ncyBhbWdldHR1cGxlIHByb2Mg ZmluZHMgdGhlIG5leHQgaW5kZXggZW50cnkgbWF0Y2hpbmcgdGhlIHNjYW4KIAkgKiBrZXlz LCBhbmQgcHV0cyB0aGUgVElEIGludG8gc2Nhbi0+eHNfaGVhcHRpZC4gIEl0IHNob3VsZCBh bHNvIHNldApAQCAtNjY2LDE1ICs2ODEsOTcgQEAgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNj YW5EZXNjIHNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90KQogCWlmIChmb3VuZCkKIAkJcGdz dGF0X2NvdW50X2hlYXBfZmV0Y2goc2Nhbi0+aW5kZXhSZWxhdGlvbik7CiAKKwkvKgorCSAq IFRoZSB0YWJsZSBBTSByZXBvcnRlZCwgdmlhIHhzX2hvdF9pbmRleGVkX3JlY2hlY2ssIHdo ZXRoZXIgdGhlIHdhbGsgdG8KKwkgKiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULWlu ZGV4ZWQgaG9wIGFmdGVyIHRoZSBhcnJpdmluZyBpbmRleAorCSAqIGVudHJ5J3Mgb3duIHR1 cGxlLiAgV2hlbiBpdCBkaWQsIHRoZSBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5IG5vIGxvbmdl cgorCSAqIGFncmVlIHdpdGggdGhlIGxpdmUgdHVwbGUsIGFuZCB3ZSBtdXN0IGRlY2lkZSB3 aGV0aGVyIHRvIGRyb3AgaXQuCisJICoKKwkgKiBUaGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwICh4c19ob3RfaW5kZXhlZF9jcm9zc2VkKSBpcyB0aGUgc3RhbGVuZXNzCisJICogYXV0 aG9yaXR5LiAgSXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJp YnV0ZSBiaXRtYXBzCisJICogb2YgZXZlcnkgaG9wIHRoZSB3YWxrIGNyb3NzZWQsIGFuZCBp dCBpcyBjb21wbGV0ZTogZWFjaCBjcm9zc2VkIGxpdmUKKwkgKiBob3AsIGNvbGxhcHNlLXN1 cnZpdm9yIHN0dWIsIGFuZCByZWRpcmVjdGVkIChjb2xsYXBzZWQpIHByZWZpeAorCSAqIGNv bnRyaWJ1dGVzIGl0cyBzZWdtZW50J3MgYml0bWFwLCBhbmQgY2hhaW4gY29sbGFwc2Ugb25s eSBldmVyIHJlY2xhaW1zCisJICogYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgYSBz dWJzZXQgb2YgdGhlIHN1cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkgKiBwcnVuZWhlYXAu YykuICBUaGVyZWZvcmU6CisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBpcyBkaXNqb2ludCBm cm9tIHRoZSBoZWFwIGNvbHVtbnMgdGhpcyBpbmRleCByZWZlcmVuY2VzLAorCSAqIG5vbmUg b2YgdGhlIGluZGV4J3MgaW5wdXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhl IGVudHJ5J3Mga2V5CisJICogc3RpbGwgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBsZToga2VlcCBp dDsgYW5kCisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBvdmVybGFwcyB0aGVtLCBvbmUgb2Yg dGhpcyBpbmRleCdzIGtleSBjb2x1bW5zIGNoYW5nZWQKKwkgKiBhZnRlciB0aGUgZW50cnkn cyBvd24gdHVwbGUsIHNvIHRoZSBlbnRyeSBpcyBzdGFsZTogZHJvcCBpdC4KKwkgKgorCSAq IERyb3BwaW5nIG9uIG92ZXJsYXAgaXMgY29ycmVjdCBldmVuIHdoZW4gdGhlIGtleSB3YXMg Y3ljbGVkIGF3YXkgYW5kCisJICogYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUgKGFuIEFC QSB1cGRhdGUpOiB0aGUgdXBkYXRlIHRoYXQgc2V0IHRoZQorCSAqIHZhbHVlIGJhY2sgY3Jl YXRlZCBhIGZyZXNoIGVudHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gKGxpdmUpIHR1cGxlLAor CSAqIHdob3NlIHdhbGsgY3Jvc3NlcyBubyBsYXRlciBrZXktY2hhbmdpbmcgaG9wLCBzbyB0 aGF0IGVudHJ5IHVuaXF1ZWx5CisJICogc3VwcGxpZXMgdGhlIHJvdyB3aGlsZSB0aGlzIHN0 YWxlIGFuY2VzdG9yIGVudHJ5IGlzIGRyb3BwZWQuICBObworCSAqIHZhbHVlLXJlY2hlY2sg aXMgbmVlZGVkLCBzbyB0aGlzIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZDsgdGhlCisJ ICogc3RhbGVuZXNzIGRlY2lzaW9uIGlzIHB1cmVseSBhdHRyaWJ1dGUtYmFzZWQuCisJICov CisJc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKKwlpZiAoZm91bmQgJiYK KwkJc2Nhbi0+eHNfaGVhcGZldGNoLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrICYmCisJCXNj YW4tPnhzX2hlYXBmZXRjaC0+eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCAhPSBOVUxMKQorCXsK KwkJQml0bWFwc2V0ICAqaWR4YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhzY2Fu LT5pbmRleFJlbGF0aW9uKTsKKwkJaW50CQkJeCA9IC0xOworCisJCXdoaWxlICgoeCA9IGJt c19uZXh0X21lbWJlcihpZHhhdHRycywgeCkpID49IDApCisJCXsKKwkJCUF0dHJOdW1iZXIJ YXR0bnVtID0geCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJ CS8qIHRoZSBjcm9zc2VkIGJpdG1hcCByZWNvcmRzIG9ubHkgdXNlciBhdHRyaWJ1dGVzICov CisJCQlpZiAoYXR0bnVtID49IDEgJiYKKwkJCQlIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQo c2Nhbi0+eHNfaGVhcGZldGNoLT54c19ob3RfaW5kZXhlZF9jcm9zc2VkLAorCQkJCQkJCQkJ CSBhdHRudW0pKQorCQkJeworCQkJCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlibXNfZnJlZShpZHhhdHRycyk7CisJfQor CiAJLyoKIAkgKiBJZiB3ZSBzY2FubmVkIGEgd2hvbGUgSE9UIGNoYWluIGFuZCBmb3VuZCBv bmx5IGRlYWQgdHVwbGVzLCB0ZWxsIGluZGV4CiAJICogQU0gdG8ga2lsbCBpdHMgZW50cnkg Zm9yIHRoYXQgVElEICh0aGlzIHdpbGwgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQKIAkgKiBh bWdldHR1cGxlIGNhbGwsIGluIGluZGV4X2dldG5leHRfdGlkKS4gIFdlIGRvIG5vdCBkbyB0 aGlzIHdoZW4gaW4KIAkgKiByZWNvdmVyeSBiZWNhdXNlIGl0IG1heSB2aW9sYXRlIE1WQ0Mg dG8gZG8gc28uICBTZWUgY29tbWVudHMgaW4KIAkgKiBSZWxhdGlvbkdldEluZGV4U2Nhbigp LgorCSAqCisJICogQWRkaXRpb25hbGx5IGtpbGwgYSBzdGFsZSBIT1QtaW5kZXhlZCBsZWFm IChvbmUgd2hvc2Uga2V5IHRoZSBsaXZlCisJICogdHVwbGUgbm8gbG9uZ2VyIGhvbGRzKSB3 aGVuIGV2ZXJ5IGNoYWluIG1lbWJlciBza2lwcGVkIGJlZm9yZSB0aGUKKwkgKiByZXR1cm5l ZCB0dXBsZSBpcyBkZWFkIHRvIGFsbCB0cmFuc2FjdGlvbnMgKHhzX3ByZWZpeF9hbGxfZGVh ZCk6IG5vCisJICogc25hcHNob3QgY2FuIHJlYWNoIGEgbWF0Y2hpbmcgdmVyc2lvbiB0aHJv dWdoIHRoaXMgbGVhZiwgc28gaXQgaXMKKwkgKiByZWR1bmRhbnQgYW5kIHJlY2xhaW1pbmcg aXQgYm91bmRzIHRoZSBpbmRleCBibG9hdCBIT1QtaW5kZXhlZCB1cGRhdGVzCisJICogY3Jl YXRlLgorCSAqCisJICogVHdvIGluZGVwZW5kZW50IGNvbmRpdGlvbnMgbWFrZSB0aGlzIHNh ZmU6CisJICoKKwkgKiAgLSBUaGUgc3VyZWx5LWRlYWQgcHJlZml4IGdhdGUgKHhzX3ByZWZp eF9hbGxfZGVhZCkgbWVhbnMgbm8gc25hcHNob3QsCisJICogICAgaW5jbHVkaW5nIG9sZGVy IG9uZXMgc3RpbGwgcnVubmluZywgY2FuIHJlYWNoIGEgdmVyc2lvbiB0aHJvdWdoIHRoaXMK KwkgKiAgICBsZWFmIHdob3NlIGtleSBtYXRjaGVzOiBldmVyeSBtZW1iZXIgYWhlYWQgb2Yg dGhlIGxpdmUgdHVwbGUgaXMgZGVhZAorCSAqICAgIHRvIGFsbC4gIFRoaXMgaXMgd2hhdCBt YWtlcyBpdCBNVkNDLXNhZmUsIGV4YWN0bHkgYXMgZm9yIHRoZQorCSAqICAgIGFsbF9kZWFk IGNhc2UuCisJICoKKwkgKiAgLSBUaGUgbGVhZiBpcyBnZW51aW5lbHkgcmVkdW5kYW50LCBu b3QgdGhlIHJvdydzIG9ubHkgZW50cnkuICBBIHN0YWxlCisJICogICAgdmVyZGljdCBtZWFu cyB0aGUgY3Jvc3NlZC1ob3AgdW5pb24gb3ZlcmxhcHMgdGhpcyBpbmRleCdzIGNvbHVtbnMs CisJICogICAgaS5lLiBvbmUgb2YgdGhpcyBpbmRleCdzIGF0dHJpYnV0ZXMgY2hhbmdlZCBv biBhIGhvcCBhZnRlciB0aGlzCisJICogICAgbGVhZidzIHRhcmdldC4gIFRoZSB1cGRhdGUg dGhhdCBtYWRlIHRoYXQgY2hhbmdlIG1haW50YWluZWQgdGhpcworCSAqICAgIGluZGV4IChp dHMgYXR0cmlidXRlIGNoYW5nZWQpLCBzbyBpdCBwbGFudGVkIGEgZnJlc2ggZW50cnkgcG9p bnRpbmcKKwkgKiAgICBhdCBpdHMgb3duIGxpdmUgdHVwbGU7IHRoYXQgZnJlc2ggZW50cnkg Y3Jvc3NlcyBubyBsYXRlcgorCSAqICAgIGtleS1jaGFuZ2luZyBob3AgYW5kIHVuaXF1ZWx5 IHN1cHBsaWVzIHRoZSByb3cuICBEcm9wcGluZyB0aGUgc3RhbGUKKwkgKiAgICBhbmNlc3Rv ciB0aGVyZWZvcmUgbmV2ZXIgcmVtb3ZlcyB0aGUgcm93J3MgbGFzdCByZWFjaGFibGUgZW50 cnkuCisJICogICAgVGhpcyBob2xkcyBldmVuIHVuZGVyIEFCQSBrZXkgY3ljbGluZyAoWCAt PiBZIC0+IFgpOiB0aGUgWC1yZXN0b3JpbmcKKwkgKiAgICB1cGRhdGUgY2hhbmdlZCB0aGlz IGluZGV4J3MgY29sdW1uIChZIC0+IFgpIGFuZCBzbyBwbGFudGVkIHRoZSBmcmVzaAorCSAq ICAgIGVudHJ5LgogCSAqLwogCWlmICghc2Nhbi0+eGFjdFN0YXJ0ZWRJblJlY292ZXJ5KQot CQlzY2FuLT5raWxsX3ByaW9yX3R1cGxlID0gYWxsX2RlYWQ7CisJCXNjYW4tPmtpbGxfcHJp b3JfdHVwbGUgPQorCQkJYWxsX2RlYWQgfHwKKwkJCShzY2FuLT54c19ob3RfaW5kZXhlZF9z dGFsZSAmJiBzY2FuLT54c19oZWFwZmV0Y2gtPnhzX3ByZWZpeF9hbGxfZGVhZCk7CiAKIAly ZXR1cm4gZm91bmQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwpp bmRleCBjOGFmOTdkZDIzZC4uZGU4ZjRlN2YwMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRpbnNlcnQuYwpAQCAtMTUsNiArMTUsOCBAQAogCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAi YWNjZXNzL25idHhsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgpAQCAtMjIs MTggKzI0LDI0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRl ICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRl ICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgImxpYi9xdW5pcXVlLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgotCiAvKiBNaW5pbXVtIHRyZWUgaGVp Z2h0IGZvciBhcHBsaWNhdGlvbiBvZiBmYXN0cGF0aCBvcHRpbWl6YXRpb24gKi8KICNkZWZp bmUgQlRSRUVfRkFTVFBBVEhfTUlOX0xFVkVMCTIKIAogCiBzdGF0aWMgQlRTdGFjayBfYnRf c2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQkJ CSBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKKworLyogSW50ZXJuYWwgaGVscGVyOiBI T1QtaW5kZXhlZCBsZWFmLWtleSBzdGFsZW5lc3MgY2hlY2sgZm9yIF9idF9jaGVja191bmlx dWUuICovCitzdGF0aWMgYm9vbCBfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24g cmVsLCBJbmRleFR1cGxlIGxlYWZ0dXAsCisJCQkJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVT bG90ICpoZWFwU2xvdCk7CisKIHN0YXRpYyBUcmFuc2FjdGlvbklkIF9idF9jaGVja191bmlx dWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLAogCQkJCQkJCQkJ ICBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNr VW5pcXVlLCBib29sICppc191bmlxdWUsCkBAIC00MjYsNiArNDM0LDggQEAgX2J0X2NoZWNr X3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0 aW9uIGhlYXBSZWwsCiAJYm9vbAkJaW5wb3N0aW5nID0gZmFsc2U7CiAJYm9vbAkJcHJldmFs bGRlYWQgPSB0cnVlOwogCWludAkJCWN1cnBvc3RpID0gMDsKKwlUdXBsZVRhYmxlU2xvdCAq Y2hhaW5fd2Fsa19zbG90ID0gTlVMTDsKKwlib29sCQloaV9yZWNoZWNrID0gZmFsc2U7CiAK IAkvKiBBc3N1bWUgdW5pcXVlIHVudGlsIHdlIGZpbmQgYSBkdXBsaWNhdGUgKi8KIAkqaXNf dW5pcXVlID0gdHJ1ZTsKQEAgLTUwOSw2ICs1MTksNyBAQCBfYnRfY2hlY2tfdW5pcXVlKFJl bGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJl bCwKIAkJCXsKIAkJCQlJdGVtUG9pbnRlckRhdGEgaHRpZDsKIAkJCQlib29sCQlhbGxfZGVh ZCA9IGZhbHNlOworCQkJCWJvb2wJCWhvdF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CiAKIAkJ CQlpZiAoIWlucG9zdGluZykKIAkJCQl7CkBAIC01NTksMTMgKzU3MCw3OSBAQCBfYnRfY2hl Y2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVs YXRpb24gaGVhcFJlbCwKIAkJCQkgKiBzYXRpc2Z5aW5nIFNuYXBzaG90RGlydHkuIFRoaXMg aXMgbmVjZXNzYXJ5IGJlY2F1c2UgZm9yIEFNcwogCQkJCSAqIHdpdGggb3B0aW1pemF0aW9u cyBsaWtlIGhlYXAncyBIT1QsIHdlIGhhdmUganVzdCBhIHNpbmdsZQogCQkJCSAqIGluZGV4 IGVudHJ5IGZvciB0aGUgZW50aXJlIGNoYWluLgorCQkJCSAqCisJCQkJICogVGhlIGZldGNo IHJlcG9ydHMgKGhpX3JlY2hlY2spIHdoZXRoZXIgdGhlIGNoYWluIHdhbGsgdG8KKwkJCQkg KiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhP VC9TSVUpCisJCQkJICogaG9wLiBJbiBjbGFzc2ljIEhPVCB0aGUgY2hhaW4gcHJlc2VydmVz IHRoZSBpbmRleCBrZXksIHNvIGEKKwkJCQkgKiBsaXZlIHR1cGxlIGFueXdoZXJlIGluIHRo ZSBjaGFpbiBpcyBhIGRlZmluaXRlIGNvbmZsaWN0OworCQkJCSAqIHdpdGggSE9UL1NJVSB0 aGF0IGludmFyaWFudCBubyBsb25nZXIgaG9sZHMgLS0gYW4gb2xkIGluZGV4CisJCQkJICog ZW50cnkgZm9yIGtleSBLIG1heSBjaGFpbi1sZWFkIHRvIGEgaGVhcCB0dXBsZSB3aG9zZSBh Y3R1YWwKKwkJCQkgKiBpbmRleCBrZXkgaXMgSycuICBXaGVuIGEgaG9wIHdhcyBjcm9zc2Vk IHdlIHJlY2hlY2sgdGhlCisJCQkJICogbGVhZiBrZXkgYWdhaW5zdCB0aGUgbGl2ZSB0dXBs ZSBiZWxvdzsgYSBzdGFsZSBlbnRyeSBpcworCQkJCSAqIGZpbHRlcmVkIG91dCwgbm90IHRy ZWF0ZWQgYXMgYSBjb25mbGljdC4gIGNoYWluX3dhbGtfc2xvdAorCQkJCSAqIGhvbGRzIHRo ZSBsaXZlIHR1cGxlIGZvciB0aGF0IHJlY2hlY2sgYW5kIGlzIGZyZWVkIGF0IGV2ZXJ5CisJ CQkJICogZXhpdC4KIAkJCQkgKi8KLQkJCQllbHNlIGlmICh0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKKwkJCQllbHNlIGlmICgoY2hhaW5fd2Fsa19z bG90ICE9IE5VTEwgfHwKKwkJCQkJCSAgKGNoYWluX3dhbGtfc2xvdCA9IHRhYmxlX3Nsb3Rf Y3JlYXRlKGhlYXBSZWwsIE5VTEwpKSkgJiYKKwkJCQkJCSB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKIAkJCQkJCQkJCQkJCQkgICAmU25hcHNob3RE aXJ0eSwKLQkJCQkJCQkJCQkJCQkgICAmYWxsX2RlYWQpKQorCQkJCQkJCQkJCQkJCSAgICZh bGxfZGVhZCwKKwkJCQkJCQkJCQkJCQkgICAmaGlfcmVjaGVjaywKKwkJCQkJCQkJCQkJCQkg ICBjaGFpbl93YWxrX3Nsb3QpKQogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25JZCB4d2FpdDsK IAorCQkJCQkvKgorCQkJCQkgKiBUaGUgY2hhaW4gd2FsayByZXBvcnRlZCAoaGlfcmVjaGVj aykgdGhhdCBpdCBjcm9zc2VkIGF0CisJCQkJCSAqIGxlYXN0IG9uZSBIT1QvU0lVIGhvcCBv biB0aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlLCBzbworCQkJCQkgKiB0aGUgY2xhc3NpYyAi bGl2ZSB0dXBsZSBpbiB0aGUgY2hhaW4gaW1wbGllcyB0aGUgc2FtZQorCQkJCQkgKiBpbmRl eCBrZXkiIGludmFyaWFudCBtYXkgbm90IGhvbGQ6IGFuIG9sZCBpbmRleCBlbnRyeQorCQkJ CQkgKiBmb3Iga2V5IEsgbWF5IGNoYWluLWxlYWQgdG8gYSB0dXBsZSB3aG9zZSBjdXJyZW50 IGtleQorCQkJCQkgKiBpcyBLJy4gIFJlY2hlY2sgdGhlIGxlYWYncyBzdG9yZWQga2V5IGFn YWluc3QgdGhlIGxpdmUKKwkJCQkJICogdHVwbGUncyBjdXJyZW50IGluZGV4IGZvcm0uICBB IG1pc21hdGNoIG1lYW5zIHRoZSBsZWFmCisJCQkJCSAqIGlzIHN0YWxlIChub3QgYSBjb25m bGljdCk6IHNraXAgaXQ7IHRoZSBmcmVzaCBlbnRyeQorCQkJCQkgKiBpbnNlcnRlZCBmb3Ig dGhlIGN1cnJlbnQgdmFsdWUgaXMgdGhlIGNhbm9uaWNhbCBvbmUuCisJCQkJCSAqIEJlY2F1 c2UgdGhlIGxlYWYgc3RpbGwgcmVzb2x2ZXMgdG8gYSBsaXZlIHR1cGxlLCBjbGVhcgorCQkJ CQkgKiBwcmV2YWxsZGVhZCBzbyB0aGUgY2FsbGVyIG5ldmVyIG1hcmtzIGl0IExQX0RFQUQK KwkJCQkJICogKGtpbGxhYmxlKS4KKwkJCQkJICovCisJCQkJCWhvdF9pbmRleGVkX3N0YWxl ID0KKwkJCQkJCShoaV9yZWNoZWNrICYmCisJCQkJCQkgIV9idF9oZWFwX2tleXNfZXF1YWxf bGVhZihyZWwsIGN1cml0dXAsIGNoYWluX3dhbGtfc2xvdCkpOworCisJCQkJCWlmIChob3Rf aW5kZXhlZF9zdGFsZSkKKwkJCQkJeworCQkJCQkJcHJldmFsbGRlYWQgPSBmYWxzZTsKKwkJ CQkJCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCisJCQkJCQkJX2J0X3JlbGJ1ZihyZWws IG5idWYpOworCQkJCQkJbmJ1ZiA9IEludmFsaWRCdWZmZXI7CisJCQkJCQlFeGVjQ2xlYXJU dXBsZShjaGFpbl93YWxrX3Nsb3QpOworCQkJCQkJZ290byBidF9jaGFpbl93YWxrX3NraXA7 CisJCQkJCX0KKworCQkJCQkvKgorCQkJCQkgKiBUaGUgbGVhZidzIGtleSBzdGlsbCBtYXRj aGVzIHRoZSBsaXZlIHR1cGxlLiAgSWYgdGhlCisJCQkJCSAqIGNoYWluIHdhbGsgY3Jvc3Nl ZCBhIEhPVC1pbmRleGVkIGhvcCBhbmQgcmVzb2x2ZWQgdG8KKwkJCQkJICogdGhlIHZlcnkg dHVwbGUgdGhlIGNhbGxlciBpcyBpbnNlcnRpbmcgYW4gZW50cnkgZm9yLAorCQkJCQkgKiB0 aGlzIGlzIG5vdCBhIGR1cGxpY2F0ZSAtLSBpdCBpcyB0aGUgc2FtZSBsb2dpY2FsIHJvdwor CQkJCQkgKiBiZWluZyByZS1pbmRleGVkIChlLmcuIGEgSE9ULWluZGV4ZWQgVVBEQVRFIHRo YXQgbGVmdAorCQkJCQkgKiB0aGlzIGluZGV4J3Mga2V5IHVuY2hhbmdlZCwgb3IgYSBrZXkg Y3ljbGVkIGF3YXkgYW5kCisJCQkJCSAqIGJhY2spLiBTa2lwIGl0IHJhdGhlciB0aGFuIHJh aXNpbmcgYSBzcHVyaW91cyB1bmlxdWUKKwkJCQkJICogdmlvbGF0aW9uLgorCQkJCQkgKi8K KwkJCQkJaWYgKGhpX3JlY2hlY2sgJiYKKwkJCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZSgmaHRp ZCwgJml0dXAtPnRfdGlkKSA9PSAwKQorCQkJCQl7CisJCQkJCQlpZiAobmJ1ZiAhPSBJbnZh bGlkQnVmZmVyKQorCQkJCQkJCV9idF9yZWxidWYocmVsLCBuYnVmKTsKKwkJCQkJCW5idWYg PSBJbnZhbGlkQnVmZmVyOworCQkJCQkJRXhlY0NsZWFyVHVwbGUoY2hhaW5fd2Fsa19zbG90 KTsKKwkJCQkJCWdvdG8gYnRfY2hhaW5fd2Fsa19za2lwOworCQkJCQl9CisJCQkJCWlmIChj aGFpbl93YWxrX3Nsb3QgIT0gTlVMTCkKKwkJCQkJCUV4ZWNDbGVhclR1cGxlKGNoYWluX3dh bGtfc2xvdCk7CisKIAkJCQkJLyoKIAkJCQkJICogSXQgaXMgYSBkdXBsaWNhdGUuIElmIHdl IGFyZSBvbmx5IGRvaW5nIGEgcGFydGlhbAogCQkJCQkgKiBjaGVjaywgdGhlbiBkb24ndCBi b3RoZXIgY2hlY2tpbmcgaWYgdGhlIHR1cGxlIGlzIGJlaW5nCkBAIC01NzgsNiArNjU1LDgg QEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCXsKIAkJCQkJCWlmIChuYnVmICE9IElu dmFsaWRCdWZmZXIpCiAJCQkJCQkJX2J0X3JlbGJ1ZihyZWwsIG5idWYpOworCQkJCQkJaWYg KGNoYWluX3dhbGtfc2xvdCkKKwkJCQkJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90 KGNoYWluX3dhbGtfc2xvdCk7CiAJCQkJCQkqaXNfdW5pcXVlID0gZmFsc2U7CiAJCQkJCQly ZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJCQkJCX0KQEAgLTU5Myw2ICs2NzIsOCBA QCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJewogCQkJCQkJaWYgKG5idWYgIT0gSW52 YWxpZEJ1ZmZlcikKIAkJCQkJCQlfYnRfcmVsYnVmKHJlbCwgbmJ1Zik7CisJCQkJCQlpZiAo Y2hhaW5fd2Fsa19zbG90KQorCQkJCQkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo Y2hhaW5fd2Fsa19zbG90KTsKIAkJCQkJCS8qIFRlbGwgX2J0X2RvaW5zZXJ0IHRvIHdhaXQu Li4gKi8KIAkJCQkJCSpzcGVjdWxhdGl2ZVRva2VuID0gU25hcHNob3REaXJ0eS5zcGVjdWxh dGl2ZVRva2VuOwogCQkJCQkJLyogQ2FsbGVyIHJlbGVhc2VzIGxvY2sgb24gYnVmIGltbWVk aWF0ZWx5ICovCkBAIC02MTksNyArNzAwLDggQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJ CQkJCSAqLwogCQkJCQlodGlkID0gaXR1cC0+dF90aWQ7CiAJCQkJCWlmICh0YWJsZV9pbmRl eF9mZXRjaF90dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKLQkJCQkJCQkJCQkJCQkgIFNu YXBzaG90U2VsZiwgTlVMTCkpCisJCQkJCQkJCQkJCQkJICBTbmFwc2hvdFNlbGYsIE5VTEws CisJCQkJCQkJCQkJCQkJICBOVUxMLCBOVUxMKSkKIAkJCQkJewogCQkJCQkJLyogTm9ybWFs IGNhc2UgLS0tIGl0J3Mgc3RpbGwgbGl2ZSAqLwogCQkJCQl9CkBAIC03MTUsNiArNzk3LDkg QEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJICovCiAJCQkJaWYgKCFhbGxfZGVhZCAm JiBpbnBvc3RpbmcpCiAJCQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisKKwkJYnRfY2hhaW5f d2Fsa19za2lwOgorCQkJCTsKIAkJCX0KIAkJfQogCkBAIC03ODIsOSArODY3LDg0IEBAIF9i dF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRl LCBSZWxhdGlvbiBoZWFwUmVsLAogCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCiAJCV9i dF9yZWxidWYocmVsLCBuYnVmKTsKIAorCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QoY2hhaW5fd2Fsa19zbG90KTsKKwogCXJldHVybiBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KIAorLyoKKyAqCV9idF9oZWFwX2tleXNfZXF1YWxf bGVhZigpIC0tIENvbXBhcmUgYSBoZWFwIHR1cGxlJ3MgY3VycmVudCBidHJlZSBrZXkKKyAq CWFnYWluc3QgdGhlIGtleSBzdG9yZWQgaW4gYSBsZWFmIEluZGV4VHVwbGUuCisgKgorICoJ VGhlIEhPVC1pbmRleGVkIHVuaXF1ZS1jaGVjayBwYXRoIHVzZXMgdGhpcyB0byBkaXN0aW5n dWlzaCBhIGxpdmUgdHVwbGUKKyAqCXdob3NlIGN1cnJlbnQga2V5IHN0aWxsIG1hdGNoZXMg dGhlIGFycml2aW5nIGxlYWYgKGEgZ2VudWluZSBjb25mbGljdCkKKyAqCWZyb20gYSBzdGFs ZSBjaGFpbiBoaXQ6IHdpdGggYSBIT1QtaW5kZXhlZCAoU2VsZWN0aXZlIEluZGV4IFVwZGF0 ZSkgY2hhaW4KKyAqCXRoZSBsZWFmIGVudHJ5IGZvciBhbiBvbGQga2V5IHN0aWxsIHJlc29s dmVzIHRvIHRoZSBsaXZlIHR1cGxlLCB3aG9zZQorICoJY3VycmVudCBpbmRleCBmb3JtIG1h eSBkaWZmZXIuCisgKgorICoJRXF1YWxpdHkgbXVzdCBhZ3JlZSB3aXRoIHRoZSBpbmRleCdz IG93biBub3Rpb24gb2YgZXF1YWxpdHksIGJlY2F1c2UgdGhlCisgKgljYWxsZXIgdXNlcyB0 aGUgdmVyZGljdCB0byBkZWNpZGUgd2hldGhlciB0byByYWlzZSBhIHVuaXF1ZSB2aW9sYXRp b24uCisgKglXZSBjb21wYXJlIGVhY2gga2V5IGNvbHVtbiB3aXRoIGl0cyBidHJlZSBvcmRl cmluZyBwcm9jZWR1cmUgKEJUT1JERVJfUFJPQywKKyAqCXRoZSBzYW1lIHN1cHBvcnQgZnVu Y3Rpb24gX2J0X21rc2NhbmtleSB1c2VzKSB1bmRlciB0aGUgY29sdW1uJ3MgY29sbGF0aW9u CisgKgktLSBub3QgYSBiaXR3aXNlIGltYWdlIGNvbXBhcmlzb24uICBCaXR3aXNlIGVxdWFs aXR5IHdvdWxkIHdyb25nbHkgdHJlYXQKKyAqCW9wY2xhc3MtZXF1YWwgYnV0IGltYWdlLWRp c3RpbmN0IHZhbHVlcyAobnVtZXJpYyAxLjAgdnMgMS4wMCwgZmxvYXQgLTAuMAorICoJdnMg MC4wLCB0ZXh0IHVuZGVyIGEgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb24pIGFzICJub3Qg ZXF1YWwiIGFuZCBza2lwIGEKKyAqCWdlbnVpbmUgZHVwbGljYXRlLgorICoKKyAqCVRoaXMg aXMgY2FsbGVkIGZyb20gX2J0X2NoZWNrX3VuaXF1ZSB3aGlsZSB0aGUgbGVhZiBidWZmZXIg aXMgbG9ja2VkLCBzbyBpdAorICoJZGVsaWJlcmF0ZWx5IGF2b2lkcyBleGVjdXRvciBtYWNo aW5lcnk6IGl0IGZldGNoZXMgZWFjaCBrZXkgYXR0cmlidXRlCisgKglzdHJhaWdodCBmcm9t IHRoZSBzbG90LiAgSXQgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2Vp dmluZyBhCisgKglmcmVzaCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGUsIGFu ZCBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCisgKglkaXNxdWFsaWZpZXMgYW55IFVQREFURSB0 aGF0IHRvdWNoZXMgYW4gZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUsIHNvIHRoZQorICoJ aW5kZXggaGVyZSBoYXMgbm8gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBpbmRrZXkg aXMgYSByZWFsIGF0dHJpYnV0ZQorICoJbnVtYmVyKS4gIFdlIGFzc2VydCB0aGF0IHJhdGhl ciB0aGFuIGhhbmRsZSBhIGtleWNvbCA9PSAwIGNhc2UgdGhhdCBjYW5ub3QKKyAqCW9jY3Vy OyBpZiBleHByZXNzaW9uLWluZGV4IHNlbGVjdGl2ZSBtYWludGVuYW5jZSBpcyBpbXBsZW1l bnRlZCBpbiB0aGUKKyAqCWZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbiBleHByZXNzaW9uLWV2 YWx1YXRpbmcgY29tcGFyaXNvbiB3b3VsZCBiZSBhZGRlZC4KKyAqCisgKgloZWFwU2xvdCBt dXN0IGFscmVhZHkgYmUgcG9wdWxhdGVkIGJ5IHRoZSBjYWxsZXIgKHZpYQorICoJdGFibGVf aW5kZXhfZmV0Y2hfdHVwbGUgLyB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjaykuCisg Ki8KK3N0YXRpYyBib29sCitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxlYWZ0dXAsCisJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVTbG90ICpo ZWFwU2xvdCkKK3sKKwlUdXBsZURlc2MJaW5kZXhEZXNjID0gUmVsYXRpb25HZXREZXNjcihy ZWwpOworCWludAkJCW5rZXkgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1 dGVzKHJlbCk7CisJRm9ybV9wZ19pbmRleCBpbmRleFN0cnVjdCA9IHJlbC0+cmRfaW5kZXg7 CisKKwlBc3NlcnQobGVhZnR1cCAhPSBOVUxMKTsKKwlBc3NlcnQoaGVhcFNsb3QgIT0gTlVM TCAmJiAhVFRTX0VNUFRZKGhlYXBTbG90KSk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5r ZXk7IGkrKykKKwl7CisJCUF0dHJOdW1iZXIJa2V5Y29sID0gaW5kZXhTdHJ1Y3QtPmluZGtl eS52YWx1ZXNbaV07CisJCURhdHVtCQloZWFwX2RhdHVtOworCQlib29sCQloZWFwX2lzbnVs bDsKKwkJRGF0dW0JCWxlYWZfZGF0dW07CisJCWJvb2wJCWxlYWZfaXNudWxsOworCQlGbWdy SW5mbyAgICpjbXBwcm9jOworCisJCS8qIEV4cHJlc3Npb24ga2V5IGNvbHVtbnMgY2Fubm90 IHJlYWNoIGhlcmUgKHNlZSBoZWFkZXIpLiAqLworCQlBc3NlcnQoa2V5Y29sICE9IDApOwor CisJCWhlYXBfZGF0dW0gPSBzbG90X2dldGF0dHIoaGVhcFNsb3QsIGtleWNvbCwgJmhlYXBf aXNudWxsKTsKKwkJbGVhZl9kYXR1bSA9IGluZGV4X2dldGF0dHIobGVhZnR1cCwgaSArIDEs IGluZGV4RGVzYywgJmxlYWZfaXNudWxsKTsKKworCQlpZiAoaGVhcF9pc251bGwgIT0gbGVh Zl9pc251bGwpCisJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChoZWFwX2lzbnVsbCkKKwkJCWNv bnRpbnVlOworCisJCS8qIG9wY2xhc3MgMy13YXkgY29tcGFyZSB1bmRlciB0aGUgY29sdW1u J3MgY29sbGF0aW9uOyAwID09IGVxdWFsICovCisJCWNtcHByb2MgPSBpbmRleF9nZXRwcm9j aW5mbyhyZWwsIGkgKyAxLCBCVE9SREVSX1BST0MpOworCQlpZiAoRGF0dW1HZXRJbnQzMihG dW5jdGlvbkNhbGwyQ29sbChjbXBwcm9jLCByZWwtPnJkX2luZGNvbGxhdGlvbltpXSwKKwkJ CQkJCQkJCQkJaGVhcF9kYXR1bSwgbGVhZl9kYXR1bSkpICE9IDApCisJCQlyZXR1cm4gZmFs c2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CiAKIC8qCiAgKglfYnRfZmluZGluc2VydGxv YygpIC0tIEZpbmRzIGFuIGluc2VydCBsb2NhdGlvbiBmb3IgYSB0dXBsZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cmVlLmMKaW5kZXggM2RmMmM3NTJlYWQuLmY1NThkZDAxNTZlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIAorCiAvKgogICogQlRQQVJBTExFTF9O T1RfSU5JVElBTElaRUQgaW5kaWNhdGVzIHRoYXQgdGhlIHNjYW4gaGFzIG5vdCBzdGFydGVk LgogICoKQEAgLTQwOCw2ICs0MDksMTYgQEAgYnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCiAJICogcmFjZSBjb25kaXRpb24g aW52b2x2aW5nIFZBQ1VVTSBzZXR0aW5nIHBhZ2VzIGFsbC12aXNpYmxlIGluIHRoZSBWTS4K IAkgKiBJdCdzIGFsc28gdW5zYWZlIGZvciBwbGFpbiBpbmRleCBzY2FucyB0aGF0IHVzZSBh IG5vbi1NVkNDIHNuYXBzaG90LgogCSAqCisJICogTm90ZSB0aGF0IHdhbnRpbmcgdGhlIGlu ZGV4IHR1cGxlICh4c193YW50X2l0dXApIGlzIG5vdCBieSBpdHNlbGYgYQorCSAqIHJlYXNv biB0byByZXRhaW4gdGhlIHBpbjogYnRyZWUgY29waWVzIGVhY2ggcmV0dXJuZWQgSW5kZXhU dXBsZSBpbnRvCisJICogc28tPmN1cnJUdXBsZXMgKHNjYW4tbG9jYWwgbWVtb3J5KSBhbmQg cG9pbnRzIHhzX2l0dXAgdGhlcmUsIHNvIHRoZQorCSAqIHR1cGxlIHN0YXlzIHZhbGlkIGFm dGVyIHRoZSBwaW4gaXMgZHJvcHBlZC4gIE9ubHkgZ2VudWluZSBpbmRleC1vbmx5CisJICog c2NhbnMgKHhzX2luZGV4X29ubHkpLCB3aGljaCBtYXkgcmV0dXJuIGEgdHVwbGUgd2l0aG91 dCBmZXRjaGluZyB0aGUKKwkgKiBoZWFwIGFuZCB0aGVyZWZvcmUgcmVseSBvbiB0aGUgVk0s IG11c3Qga2VlcCB0aGUgcGluLiAgQSBwbGFpbiBpbmRleAorCSAqIHNjYW4gdGhhdCBzZXRz IHhzX3dhbnRfaXR1cCBtZXJlbHkgdG8gaW5zcGVjdCBvciByZWNoZWNrIHRoZSBpbmRleAor CSAqIHR1cGxlIHN0aWxsIGZldGNoZXMgYW5kIHZpc2liaWxpdHktY2hlY2tzIHRoZSBoZWFw LCBzbyBpdCBoYXMgbm8gVk0KKwkgKiByYWNlIGFuZCBtYXkgZHJvcCBwaW5zIGxpa2UgYW55 IG90aGVyIHBsYWluIHNjYW4uCisJICoKIAkgKiBBbHNvIG9wdCBvdXQgb2YgZHJvcHBpbmcg bGVhZiBwYWdlIHBpbnMgZWFnZXJseSBkdXJpbmcgYml0bWFwIHNjYW5zLgogCSAqIFBpbnMg Y2Fubm90IGJlIGhlbGQgZm9yIG1vcmUgdGhhbiBhbiBpbnN0YW50IGR1cmluZyBiaXRtYXAg c2NhbnMgZWl0aGVyCiAJICogd2F5LCBzbyB3ZSBtaWdodCBhcyB3ZWxsIGF2b2lkIHdhc3Rp bmcgY3ljbGVzIG9uIGFjcXVpcmluZyBwYWdlIExTTnMuCkBAIC00MTYsNyArNDI3LDcgQEAg YnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2Nh bmtleXMsCiAJICoKIAkgKiBOb3RlOiBzby0+ZHJvcFBpbiBzaG91bGQgbmV2ZXIgY2hhbmdl IGFjcm9zcyByZXNjYW5zLgogCSAqLwotCXNvLT5kcm9wUGluID0gKCFzY2FuLT54c193YW50 X2l0dXAgJiYKKwlzby0+ZHJvcFBpbiA9ICghc2Nhbi0+eHNfaW5kZXhfb25seSAmJgogCQkJ CSAgIElzTVZDQ0xpa2VTbmFwc2hvdChzY2FuLT54c19zbmFwc2hvdCkgJiYKIAkJCQkgICBz Y2FuLT5oZWFwUmVsYXRpb24gIT0gTlVMTCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jCmluZGV4IDEyYzI2NzRjYmQ3Li5mMDVjYWJjOGM2NSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCkBAIC0yNDIsMTkgKzI0MiwzMSBAQCBib29sCiB0YWJsZV9p bmRleF9mZXRjaF90dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJCQkJCQkJICBJdGVtUG9p bnRlciB0aWQsCiAJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkgIGJvb2wg KmFsbF9kZWFkKQorCQkJCQkJCSAgYm9vbCAqYWxsX2RlYWQsCisJCQkJCQkJICBib29sICpo b3RfaW5kZXhlZF9yZWNoZWNrX291dCwKKwkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICprZWVw X3Nsb3QpCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbjsKIAlUdXBsZVRhYmxlU2xv dCAqc2xvdDsKIAlib29sCQljYWxsX2FnYWluID0gZmFsc2U7CiAJYm9vbAkJZm91bmQ7CiAK LQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKKwlzbG90ID0ga2VlcF9z bG90ID8ga2VlcF9zbG90IDogdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKIAlzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBTT19OT05FKTsKIAlmb3VuZCA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOworCisJLyoKKwkgKiBTdXJmYWNlIHRoZSB0 YWJsZSBBTSdzIEhPVC9TSVUgcmVjaGVjayBzaWduYWwgdG8gdGhlIGNhbGxlciAodGhlIGlu ZGV4CisJICogQU0sIHdoaWNoIHJlY2hlY2tzIHRoZSBhcnJpdmluZyBsZWFmIGtleSBhZ2Fp bnN0IHRoZSBsaXZlIHR1cGxlKTsgdGhlCisJICogc2NhbiBpcyBmcmVlZCBiZWxvdywgc28g Y29weSBpdCBvdXQuCisJICovCisJaWYgKGhvdF9pbmRleGVkX3JlY2hlY2tfb3V0ICE9IE5V TEwpCisJCSpob3RfaW5kZXhlZF9yZWNoZWNrX291dCA9IGZvdW5kICYmIHNjYW4tPnhzX2hv dF9pbmRleGVkX3JlY2hlY2s7CisKIAl0YWJsZV9pbmRleF9mZXRjaF9lbmQoc2Nhbik7Ci0J RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwlpZiAoa2VlcF9zbG90ID09 IE5VTEwpCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKIAlyZXR1 cm4gZm91bmQ7CiB9CkBAIC0zNjEsOCArMzczLDcgQEAgdm9pZAogc2ltcGxlX3RhYmxlX3R1 cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkgIFR1 cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJ CSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCQkgIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQkJICBCaXRtYXBzZXQgKiptb2Rp ZmllZF9hdHRycykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRt ZmQ7CkBAIC0zNzMsOCArMzg0LDcgQEAgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxh dGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCTAsIHNuYXBzaG90LCBJbnZh bGlkU25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJ CQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAot CQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCW1vZGlmaWVkX2F0dHJzKTsKIAog CXN3aXRjaCAocmVzdWx0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYwppbmRleCBmZDdk MmVjMGUzYS4uN2VhZTJkNjZhMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKQEAgLTE4 LDExICsxOCwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJub2Rlcy9iaXRt YXBzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWxj YWNoZS5oIgogCiAKIC8qCkBAIC02OSwxMSArNzIsMTYgQEAgQ2F0YWxvZ0Nsb3NlSW5kZXhl cyhDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkKICAqCiAgKiBUaGlzIHNob3VsZCBiZSBj YWxsZWQgZm9yIGVhY2ggaW5zZXJ0ZWQgb3IgdXBkYXRlZCBjYXRhbG9nIHR1cGxlLgogICoK LSAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBjdXQtZG93biB2ZXJzaW9uIG9mIEV4ZWNJbnNl cnRJbmRleFR1cGxlcy4KKyAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBjdXQtZG93biB2ZXJz aW9uIG9mIEV4ZWNJbnNlcnRJbmRleFR1cGxlcy4gIEZvcgorICogVVBEQVRFIHBhdGhzIHRo ZSBjYWxsZXIgc3VwcGxpZXMgdXBkYXRlX2FsbF9pbmRleGVzIChmcm9tCisgKiB0YWJsZV90 dXBsZV91cGRhdGUgLyBzaW1wbGVfaGVhcF91cGRhdGUpIHNvIHdlIGNhbiB0ZWxsIHdoaWNo IGluZGV4ZXMgYWN0dWFsbHkgbmVlZCBhIG5ldyBlbnRyeToKKyAqIHVwZGF0ZV9hbGxfaW5k ZXhlcyBpcyB0cnVlIGZvciBhIGZyZXNoIGluc2VydCBvciBhIG5vbi1IT1QgdXBkYXRlIChl dmVyeQorICogaW5kZXggZ2V0cyBhbiBlbnRyeSksIGZhbHNlIGZvciBhIGNsYXNzaWMtSE9U IGNhdGFsb2cgdXBkYXRlIChub24tc3VtbWFyaXppbmcKKyAqIGluZGV4ZXMgYXJlIHNraXBw ZWQsIHNpbmNlIHRoZWlyIGV4aXN0aW5nIGVudHJpZXMgc3RpbGwgcmVzb2x2ZSB0aGUgY2hh aW4pLgogICovCiBzdGF0aWMgdm9pZAogQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRl eFN0YXRlIGluZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAotCQkJCSAgIFRVX1VwZGF0 ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcykKKwkJCQkgICBib29sIHVwZGF0ZV9hbGxfaW5kZXhl cykKIHsKIAlpbnQJCQlpOwogCWludAkJCW51bUluZGV4ZXM7CkBAIC04MywyMCArOTEsNiBA QCBDYXRhbG9nSW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBU dXBsZSBoZWFwVHVwbGUsCiAJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJyYXk7CiAJRGF0dW0J CXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlT XTsKLQlib29sCQlvbmx5U3VtbWFyaXplZCA9ICh1cGRhdGVJbmRleGVzID09IFRVX1N1bW1h cml6aW5nKTsKLQotCS8qCi0JICogSE9UIHVwZGF0ZSBkb2VzIG5vdCByZXF1aXJlIGluZGV4 IGluc2VydHMuIEJ1dCB3aXRoIGFzc2VydHMgZW5hYmxlZCB3ZQotCSAqIHdhbnQgdG8gY2hl Y2sgdGhhdCBpdCdkIGJlIGxlZ2FsIHRvIGN1cnJlbnRseSBpbnNlcnQgaW50byB0aGUKLQkg KiB0YWJsZS9pbmRleC4KLQkgKi8KLSNpZm5kZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlm IChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkgJiYgIW9ubHlTdW1tYXJpemVkKQot CQlyZXR1cm47Ci0jZW5kaWYKLQotCS8qIFdoZW4gb25seSB1cGRhdGluZyBzdW1tYXJpemVk IGluZGV4ZXMsIHRoZSB0dXBsZSBoYXMgdG8gYmUgSE9ULiAqLwotCUFzc2VydCgoIW9ubHlT dW1tYXJpemVkKSB8fCBIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkpOwogCiAJLyoK IAkgKiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgc3RhdGUgc3RydWN0dXJlLiAgRmFsbCBv dXQgaWYgbm90aGluZyB0byBkby4KQEAgLTEyMCw2ICsxMTQsNyBAQCBDYXRhbG9nSW5kZXhJ bnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUs CiAJewogCQlJbmRleEluZm8gICppbmRleEluZm87CiAJCVJlbGF0aW9uCWluZGV4OworCQli b29sCQlpbmRleF91bmNoYW5nZWQ7CiAKIAkJaW5kZXhJbmZvID0gaW5kZXhJbmZvQXJyYXlb aV07CiAJCWluZGV4ID0gcmVsYXRpb25EZXNjc1tpXTsKQEAgLTEzOCwyMiArMTMzLDIwIEBA IENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1 cGxlIGhlYXBUdXBsZSwKIAkJQXNzZXJ0KGluZGV4LT5yZF9pbmRleC0+aW5kaW1tZWRpYXRl KTsKIAkJQXNzZXJ0KGluZGV4SW5mby0+aWlfTnVtSW5kZXhLZXlBdHRycyAhPSAwKTsKIAot CQkvKiBzZWUgZWFybGllciBjaGVjayBhYm92ZSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJiAhb25seVN1 bW1hcml6ZWQpCi0JCXsKLQkJCUFzc2VydCghUmVpbmRleElzUHJvY2Vzc2luZ0luZGV4KFJl bGF0aW9uR2V0UmVsaWQoaW5kZXgpKSk7Ci0JCQljb250aW51ZTsKLQkJfQotI2VuZGlmCQkJ CQkJCS8qIFVTRV9BU1NFUlRfQ0hFQ0tJTkcgKi8KLQogCQkvKgotCQkgKiBTa2lwIGluc2Vy dGlvbnMgaW50byBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBpZiB3ZSBvbmx5IG5lZWQgdG8K LQkJICogdXBkYXRlIHN1bW1hcml6aW5nIGluZGV4ZXMuCisJCSAqIERlY2lkZSB3aGV0aGVy IHRoaXMgaW5kZXggbmVlZHMgYSBuZXcgZW50cnkuICBPbiBJTlNFUlQgb3IgYQorCQkgKiBu b24tSE9UIHVwZGF0ZSAodXBkYXRlX2FsbF9pbmRleGVzKSBldmVyeSBpbmRleCBnZXRzIG9u ZS4gIE9uIGEKKwkJICogY2xhc3NpYy1IT1QgY2F0YWxvZyB1cGRhdGUgbm8gaW5kZXhlZCBh dHRyaWJ1dGUgY2hhbmdlZCwgc28gdGhlCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRleGVz IGFyZSBza2lwcGVkIChzdW1tYXJpemluZyBpbmRleGVzIGFsd2F5cyBnZXQKKwkJICogYSBj aGFuY2UgdG8gdXBkYXRlIHRoZWlyIGJsb2NrLWxldmVsIHN1bW1hcmllcyBiZWxvdykuCiAJ CSAqLwotCQlpZiAob25seVN1bW1hcml6ZWQgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXpp bmcpCisJCWluZGV4X3VuY2hhbmdlZCA9ICF1cGRhdGVfYWxsX2luZGV4ZXM7CisJCWluZGV4 SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBpbmRleF91bmNoYW5nZWQ7CisKKwkJaWYgKGlu ZGV4X3VuY2hhbmdlZCAmJiAhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKIAkJCWNvbnRp bnVlOwogCisKIAkJLyoKIAkJICogRm9ybUluZGV4RGF0dW0gZmlsbHMgaW4gaXRzIHZhbHVl cyBhbmQgaXNudWxsIHBhcmFtZXRlcnMgd2l0aCB0aGUKIAkJICogYXBwcm9wcmlhdGUgdmFs dWVzIGZvciB0aGUgY29sdW1uKHMpIG9mIHRoZSBpbmRleC4KQEAgLTI0MCw3ICsyMzMsNyBA QCBDYXRhbG9nVHVwbGVJbnNlcnQoUmVsYXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCkK IAogCXNpbXBsZV9oZWFwX2luc2VydChoZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4 SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGlu ZHN0YXRlLCB0dXAsIHRydWUpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOwog fQogCkBAIC0yNjAsNyArMjUzLDcgQEAgQ2F0YWxvZ1R1cGxlSW5zZXJ0V2l0aEluZm8oUmVs YXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCwKIAogCXNpbXBsZV9oZWFwX2luc2VydCho ZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRV X0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHRydWUpOwogfQog CiAvKgpAQCAtMjkxLDcgKzI4NCw3IEBAIENhdGFsb2dUdXBsZXNNdWx0aUluc2VydFdpdGhJ bmZvKFJlbGF0aW9uIGhlYXBSZWwsIFR1cGxlVGFibGVTbG90ICoqc2xvdCwKIAogCQl0dXBs ZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdFtpXSwgdHJ1ZSwgJnNob3VsZF9mcmVl KTsKIAkJdHVwbGUtPnRfdGFibGVPaWQgPSBzbG90W2ldLT50dHNfdGFibGVPaWQ7Ci0JCUNh dGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIFRVX0FsbCk7CisJCUNhdGFsb2dJ bmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIHRydWUpOwogCiAJCWlmIChzaG91bGRfZnJl ZSkKIAkJCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKQEAgLTMxMywxNSArMzA2LDE1IEBAIHZv aWQKIENhdGFsb2dUdXBsZVVwZGF0ZShSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXApCiB7CiAJQ2F0YWxvZ0luZGV4U3RhdGUg aW5kc3RhdGU7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOwor CWJvb2wJCXVwZGF0ZV9hbGxfaW5kZXhlczsKIAogCUNhdGFsb2dUdXBsZUNoZWNrQ29uc3Ry YWludHMoaGVhcFJlbCwgdHVwKTsKIAogCWluZHN0YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVz KGhlYXBSZWwpOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1cCwg JnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0 dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0 YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0 ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5k c3RhdGUpOwogfQogCkBAIC0zMzcsMTMgKzMzMCwxMyBAQCB2b2lkCiBDYXRhbG9nVHVwbGVV cGRhdGVXaXRoSW5mbyhSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg Km90aWQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkgICBDYXRhbG9nSW5kZXhTdGF0ZSBpbmRz dGF0ZSkKIHsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJ Ym9vbAkJdXBkYXRlX2FsbF9pbmRleGVzOwogCiAJQ2F0YWxvZ1R1cGxlQ2hlY2tDb25zdHJh aW50cyhoZWFwUmVsLCB0dXApOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90 aWQsIHR1cCwgJnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVs LCBvdGlkLCB0dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5z ZXJ0KGluZHN0YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2Vy dChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jCmluZGV4IDRhYTUyYTRiZDI1Li5lMGJjMDFmNjNkMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMzA3LDggKzMwNyw2IEBAIGNyZWF0ZV90b2FzdF90 YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJ aW5kZXhJbmZvLT5paV9VbmlxdWUgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfTnVsbHNOb3RE aXN0aW5jdCA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzID0gdHJ1 ZTsKLQlpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSBmYWxzZTsKLQlpbmRleElu Zm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50ID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwog CWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNr LmMKaW5kZXggYmY0NWM1Y2Y4MjYuLjEzZTg3NjJlN2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBh Y2suYwpAQCAtMjY3OCwxNCArMjY3OCwxNCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShS ZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogewogCUxvY2tU dXBsZU1vZGUgbG9ja21vZGU7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKLQlUVV9VcGRhdGVJ bmRleGVzIHVwZGF0ZV9pbmRleGVzOwogCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRy czsKIAlUTV9SZXN1bHQJcmVzOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9k aWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCi0JICogKG9u ZGlzaykgYW5kIG5ldyAoc3BpbGxlZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBm b3IgYSBjb3JyZWN0Ci0JICogSE9UIGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sg bGlrZSAibm8gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZCIpLgorCSAqIChvbmRpc2spIGFuZCBu ZXcgKHNwaWxsZWQpIHR1cGxlcy4gIGhlYXBfdXBkYXRlIG5lZWRzIHRoaXMgdG8gbWFrZSBh CisJICogY29ycmVjdCBIT1QgZGVjaXNpb247IHdpdGhvdXQgaXQgbW9kaWZpZWRfaWR4X2F0 dHJzIHdvdWxkIGJlIE5VTEwgYW5kCisJICogaGVhcF91cGRhdGUgd291bGQgYWx3YXlzIHRy ZWF0IHRoZSB1cGRhdGUgYXMgSE9ULWVsaWdpYmxlLgogCSAqLwogCW1vZGlmaWVkX2lkeF9h dHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAogCQkJ CQkJCQkJCQkJCW9uZGlza190dXBsZSwKQEAgLTI3MDAsMjkgKzI3MDAsMzMgQEAgYXBwbHlf Y29uY3VycmVudF91cGRhdGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxl ZF90dXBsZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBtb2Rp ZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJICZ0bWZkLCAmbG9j a21vZGUsCisJCQkJCQkJICZtb2RpZmllZF9pZHhfYXR0cnMpOwogCWlmIChyZXMgIT0gVE1f T2spCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJQUxJ WkFUSU9OX0ZBSUxVUkUpLAogCQkJCWVycm1zZygiY291bGQgbm90IGFwcGx5IGNvbmN1cnJl bnQgJXMgb24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJICAgIlVQREFURSIsIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKIAotCWlmICh1cGRhdGVfaW5kZXhlcyAhPSBUVV9O b25lKQorCWlmIChjaGdjeHQtPmNjX3JyaS0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJIWJt c19pc19lbXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9 IEVJSVRfSVNfVVBEQVRFOworCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVt YmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9pZHhfYXR0cnMpOwog Ci0JCWlmICh1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9 IEVJSVRfT05MWV9TVU1NQVJJWklORzsKKwkJRXhlY1NldEluZGV4VW5jaGFuZ2VkKGNoZ2N4 dC0+Y2NfcnJpLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCQlFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMoY2hnY3h0LT5jY19ycmksCiAJCQkJCQkJICBjaGdjeHQtPmNjX2VzdGF0ZSwKLQkJCQkJ CQkgIGZsYWdzLAorCQkJCQkJCSAgRUlJVF9JU19VUERBVEUgfAorCQkJCQkJCSAgKGFsbF9p bmRleGVzID8KKwkJCQkJCQkgICAwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCiAJCQkJCQkJ ICBzcGlsbGVkX3R1cGxlLAogCQkJCQkJCSAgTklMLCBOVUxMKTsKIAl9CiAKLQlwZ3N0YXRf cHJvZ3Jlc3NfaW5jcl9wYXJhbShQUk9HUkVTU19SRVBBQ0tfSEVBUF9UVVBMRVNfVVBEQVRF RCwgMSk7Ci0KIAlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCisJcGdzdGF0X3By b2dyZXNzX2luY3JfcGFyYW0oUFJPR1JFU1NfUkVQQUNLX0hFQVBfVFVQTEVTX1VQREFURUQs IDEpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YwppbmRleCBlYjM4MzgxMjkwMS4uNTMyOGRiODc3Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNJbmRleGluZy5jCkBAIC0xMTMsMTEgKzExMywxMyBAQAogI2luY2x1ZGUgImNhdGFs b2cvaW5kZXguaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUg Im5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0 eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1dGls cy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIHdhaXRNb2RlIGFy Z3VtZW50IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCgpICovCkBA IC0xNDAsMTEgKzE0Miw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlx dWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyBi b29sIGluZGV4X3JlY2hlY2tfY29uc3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lk ICpjb25zdHJfcHJvY3MsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKmV4aXN0aW5nX3ZhbHVl cywgY29uc3QgYm9vbCAqZXhpc3RpbmdfaXNudWxsLAogCQkJCQkJCQkJIGNvbnN0IERhdHVt ICpuZXdfdmFsdWVzKTsKLXN0YXRpYyBib29sIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCSAgRVN0YXRlICplc3Rh dGUsIEluZGV4SW5mbyAqaW5kZXhJbmZvLAotCQkJCQkJCQkJICBSZWxhdGlvbiBpbmRleFJl bGF0aW9uKTsKLXN0YXRpYyBib29sIGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIo Tm9kZSAqbm9kZSwKLQkJCQkJCQkJCQkJQml0bWFwc2V0ICphbGxVcGRhdGVkQ29scyk7CiBz dGF0aWMgdm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90RW1wdHkoUmVsYXRpb24gcmVsLCBO YW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJCQkJCQkJY2hhciB0eXB0eXBl LCBPaWQgYXR0dHlwaWQpOwogCkBAIC0yNzcsMjQgKzI3NCwxMiBAQCBFeGVjQ2xvc2VJbmRp Y2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAgKgkJaW50byBhbGwgdGhlIHJl bGF0aW9ucyBpbmRleGluZyB0aGUgcmVzdWx0IHJlbGF0aW9uCiAgKgkJd2hlbiBhIGhlYXAg dHVwbGUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgcmVzdWx0IHJlbGF0aW9uLgogICoKLSAqCQlX aGVuIEVJSVRfSVNfVVBEQVRFIGlzIHNldCBhbmQgRUlJVF9PTkxZX1NVTU1BUklaSU5HIGlz bid0LAotICoJCWV4ZWN1dG9yIGlzIHBlcmZvcm1pbmcgYW4gVVBEQVRFIHRoYXQgY291bGQg bm90IHVzZSBhbgotICoJCW9wdGltaXphdGlvbiBsaWtlIGhlYXBhbSdzIEhPVCAoaW4gbW9y ZSBnZW5lcmFsIHRlcm1zIGEKLSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRv b2sgcGxhY2UgYW5kIHNldAotICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfQWxsKS4gIFJl Y2VpdmluZyB0aGlzIGhpbnQgbWFrZXMKLSAqCQl1cyBjb25zaWRlciBpZiB3ZSBzaG91bGQg cGFzcyBkb3duIHRoZSAnaW5kZXhVbmNoYW5nZWQnCi0gKgkJaGludCBpbiB0dXJuLiAgVGhh dCdzIHNvbWV0aGluZyB0aGF0IHdlIGZpZ3VyZSBvdXQgZm9yCi0gKgkJZWFjaCBpbmRleF9p bnNlcnQoKSBjYWxsIGlmZiBFSUlUX0lTX1VQREFURSBpcyBzZXQuCi0gKgkJKFdoZW4gdGhh dCBmbGFnIGlzIG5vdCBzZXQgd2UgYWxyZWFkeSBrbm93IG5vdCB0byBwYXNzIHRoZQotICoJ CWhpbnQgdG8gYW55IGluZGV4LikKLSAqCi0gKgkJSWYgRUlJVF9PTkxZX1NVTU1BUklaSU5H IGlzIHNldCwgYW4gZXF1aXZhbGVudCBvcHRpbWl6YXRpb24gdG8KLSAqCQlIT1QgaGFzIGJl ZW4gYXBwbGllZCBhbmQgYW55IHVwZGF0ZWQgY29sdW1ucyBhcmUgaW5kZXhlZAotICoJCW9u bHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAob3IgaW4gbW9yZSBnZW5lcmFsIHRlcm1zIGEK LSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRvb2sgcGxhY2UgYW5kIHNldAot ICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfU3VtbWFyaXppbmcpLiBXZSBjYW4gKGFuZCBt dXN0KQotICoJCXRoZXJlZm9yZSBvbmx5IHVwZGF0ZSB0aGUgaW5kZXhlcyB0aGF0IGhhdmUK LSAqCQknYW1zdW1tYXJpemluZycgPSB0cnVlLgorICoJCVdoZW4gRUlJVF9JU19VUERBVEUg aXMgc2V0LCB0aGUgZXhlY3V0b3IgaXMgcGVyZm9ybWluZyBhbgorICoJCVVQREFURS4gIFRo ZSBwZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgZmxhZyAocG9wdWxhdGVkIGJ5CisgKgkJ RXhlY1NldEluZGV4VW5jaGFuZ2VkKCkpIGluZGljYXRlcyB3aGV0aGVyIGVhY2ggaW5kZXgn cyBrZXkKKyAqCQl2YWx1ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGlzIHVwZGF0ZS4gIFdoZW4g aWlfSW5kZXhVbmNoYW5nZWQKKyAqCQlpcyB0cnVlLCB3ZSBwYXNzIGluZGV4VW5jaGFuZ2Vk PXRydWUgdG8gaW5kZXhfaW5zZXJ0KCkgYXMgYQorICoJCWhpbnQgZm9yIGJvdHRvbS11cCBk ZWxldGlvbiBvcHRpbWl6YXRpb24uCiAgKgogICoJCVVuaXF1ZSBhbmQgZXhjbHVzaW9uIGNv bnN0cmFpbnRzIGFyZSBlbmZvcmNlZCBhdCB0aGUgc2FtZQogICoJCXRpbWUuICBUaGlzIHJl dHVybnMgYSBsaXN0IG9mIGluZGV4IE9JRHMgZm9yIGFueSB1bmlxdWUgb3IKQEAgLTM3MCwx MSArMzU1LDQxIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICogU2tpcCBwcm9jZXNzaW5n IG9mIG5vbi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdlIG9ubHkgdXBkYXRlCi0JCSAqIHN1 bW1hcml6aW5nIGluZGV4ZXMKKwkJICogVVBEQVRFIHNraXAgcnVsZS4gIEV4ZWNTZXRJbmRl eFVuY2hhbmdlZCBwb3B1bGF0ZWQKKwkJICogaWlfSW5kZXhOZWVkc1VwZGF0ZSBmb3IgZXZl cnkgaW5kZXg6IHRydWUgd2hlbiB0aGUgdGFibGUgQU0gc3RvcmVkCisJCSAqIGFuIGluZGVw ZW5kZW50IG5ldyB2ZXJzaW9uLCBvciB3aGVuIGFueSBhdHRyaWJ1dGUgdGhlIGluZGV4CisJ CSAqIHJlZmVyZW5jZXMgKGtleSwgSU5DTFVERSwgZXhwcmVzc2lvbiwgb3IgcGFydGlhbC1w cmVkaWNhdGUgY29sdW1uKQorCQkgKiBvdmVybGFwcyB0aGUgbW9kaWZpZWQtYXR0cnMgYml0 bWFwLiAgV2hlbiBpdCBpcyBmYWxzZSBvbiBhCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRl eCB3ZSBza2lwIHRoZSBpbnNlcnQgZW50aXJlbHk7IHRoZSBIT1QgY2hhaW4KKwkJICoga2Vl cHMgZXhpc3RpbmcgZW50cmllcyBwb2ludGluZyBhdCB0aGUgY2hhaW4gcm9vdC4gIFN1bW1h cml6aW5nCisJCSAqIGluZGV4ZXMgYWx3YXlzIGdldCBhIGNoYW5jZSB0byB1cGRhdGUgdGhl aXIgYmxvY2stbGV2ZWwgc3VtbWFyaWVzLgogCQkgKi8KLQkJaWYgKChmbGFncyAmIEVJSVRf T05MWV9TVU1NQVJJWklORykgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCWlm ICgoZmxhZ3MgJiBFSUlUX0lTX1VQREFURSkgJiYKKwkJCSFpbmRleEluZm8tPmlpX0luZGV4 TmVlZHNVcGRhdGUgJiYKKwkJCSFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQl7CisJ CQkvKgorCQkJICogVGhpcyBpbmRleCB3YXMgc2tpcHBlZCBiZWNhdXNlIGl0cyBrZXkgYXR0 cmlidXRlcyBkaWQgbm90CisJCQkgKiBjaGFuZ2UuICBXaGVuIHRoZSBvdmVyYWxsIHVwZGF0 ZSBpcyBhIEhPVC1pbmRleGVkIHVwZGF0ZSAoc29tZQorCQkJICogb3RoZXIgbm9uLXN1bW1h cml6aW5nIGluZGV4IGRpZCBjaGFuZ2UpLCByZWNvcmQgdGhlIHNraXAgb24KKwkJCSAqIHRo aXMgaW5kZXgncyBwZ3N0YXQgZW50cnkuICBBIGNsYXNzaWMtSE9UIHVwZGF0ZSAobm8gaW5k ZXhlZAorCQkJICogYXR0cmlidXRlIGNoYW5nZWQpIGRvZXMgbm90IHJlYWNoIHRoaXMgcGF0 aCAtLQorCQkJICogRXhlY0luc2VydEluZGV4VHVwbGVzIGlzIG9ubHkgaW52b2tlZCB3aGVu IGF0IGxlYXN0IG9uZSBpbmRleAorCQkJICogbmVlZHMgYSBmcmVzaCBlbnRyeS4KKwkJCSAq LworCQkJaWYgKGZsYWdzICYgRUlJVF9JU19IT1RfSU5ERVhFRCkKKwkJCQlwZ3N0YXRfY291 bnRfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQoaW5kZXhSZWxhdGlvbik7CiAJCQljb250aW51 ZTsKKwkJfQorCisJCS8qCisJCSAqIE5vbi1za2lwcGVkIGluZGV4IHVuZGVyIGEgSE9ULWlu ZGV4ZWQgdXBkYXRlOiB0aGlzIGluZGV4IGlzCisJCSAqIHJlY2VpdmluZyBhIGZyZXNoIGVu dHJ5IGJlY2F1c2Ugb25lIG9mIGl0cyBrZXkgYXR0cmlidXRlcyBjaGFuZ2VkLgorCQkgKiBT dW1tYXJpemluZyBpbmRleGVzIGFsd2F5cyBpbnNlcnQgcmVnYXJkbGVzcyBvZiB0aGUgSE9U LWluZGV4ZWQKKwkJICogZGVjaXNpb24gKHNhbWUgYXMgY2xhc3NpYyBIT1QpLCBzbyB0aGV5 IGFyZSBub3QgY291bnRlZCBoZXJlLgorCQkgKi8KKwkJaWYgKChmbGFncyAmIEVJSVRfSVNf SE9UX0lOREVYRUQpICYmICFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQkJcGdzdGF0 X2NvdW50X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKGluZGV4UmVsYXRpb24pOwogCiAJCS8q IENoZWNrIGZvciBwYXJ0aWFsIGluZGV4ICovCiAJCWlmIChpbmRleEluZm8tPmlpX1ByZWRp Y2F0ZSAhPSBOSUwpCkBAIC00MzYsMTUgKzQ1MSwxMyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCWNoZWNrVW5pcXVlID0gVU5J UVVFX0NIRUNLX1BBUlRJQUw7CiAKIAkJLyoKLQkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdv aW5nIHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKLQkJICogaW5kZXgu ICBJZiB3ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50 LAotCQkgKiBjb25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBz aG91bGQgYmUgcGFzc2VkLgorCQkgKiBGb3IgVVBEQVRFIG9wZXJhdGlvbnMsIHVzZSB0aGUg cGVyLWluZGV4IGlpX0luZGV4VW5jaGFuZ2VkIGZsYWcKKwkJICogKHBvcHVsYXRlZCBieSBF eGVjU2V0SW5kZXhVbmNoYW5nZWQpIHRvIGhpbnQgd2hldGhlciB0aGUgaW5kZXgKKwkJICog dmFsdWVzIGFyZSB1bmNoYW5nZWQuICBUaGlzIGhlbHBzIHRoZSBpbmRleCBBTSBvcHRpbWl6 ZSBmb3IKKwkJICogYm90dG9tLXVwIGRlbGV0aW9uIG9mIGR1cGxpY2F0ZSBpbmRleCBlbnRy aWVzLgogCQkgKi8KLQkJaW5kZXhVbmNoYW5nZWQgPSAoKGZsYWdzICYgRUlJVF9JU19VUERB VEUpICYmCi0JCQkJCQkgIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5m bywKLQkJCQkJCQkJCQkJCQllc3RhdGUsCi0JCQkJCQkJCQkJCQkJaW5kZXhJbmZvLAotCQkJ CQkJCQkJCQkJCWluZGV4UmVsYXRpb24pKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSAoZmxhZ3Mg JiBFSUlUX0lTX1VQREFURSkgPworCQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA6 IGZhbHNlOwogCiAJCXNhdGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGlu ZGV4UmVsYXRpb24sIC8qIGluZGV4IHJlbGF0aW9uICovCkBAIC03MjEsNiArNzM0LDcgQEAg Y2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCWludAkJCWk7CiAJYm9vbAkJY29uZmxpY3Q7CiAJYm9vbAkJZm91 bmRfc2VsZjsKKwlib29sCQlmb3VuZF9zZWxmX3NpdV9oaXQ7CiAJRXhwckNvbnRleHQgKmVj b250ZXh0OwogCVR1cGxlVGFibGVTbG90ICpleGlzdGluZ19zbG90OwogCVR1cGxlVGFibGVT bG90ICpzYXZlX3NjYW50dXBsZTsKQEAgLTgyMyw2ICs4MzcsNyBAQCBjaGVja19leGNsdXNp b25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiByZXRyeToKIAljb25mbGljdCA9IGZhbHNlOwogCWZvdW5kX3NlbGYgPSBmYWxzZTsKKwlm b3VuZF9zZWxmX3NpdV9oaXQgPSBmYWxzZTsKIAlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXAsIGluZGV4LAogCQkJCQkJCQkgJkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5r ZXlhdHRzLCAwLAogCQkJCQkJCQkgU09fTk9ORSk7CkBAIC04MzgsMTQgKzg1MywyOCBAQCBy ZXRyeToKIAkJY2hhcgkgICAqZXJyb3JfZXhpc3Rpbmc7CiAKIAkJLyoKLQkJICogSWdub3Jl IHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4KKwkJICog SWdub3JlIHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4g IFdpdGggSE9ULQorCQkgKiBpbmRleGVkIChob3QtaW5kZXhlZCkgdXBkYXRlcywgc2V2ZXJh bCBpbmRleCBlbnRyaWVzIG1heSBjaGFpbi1sZWFkCisJCSAqIHRvIHRoZSBzYW1lIGhlYXAg dHVwbGUgKGEgc3RhbGUgZW50cnkgZm9yIHRoZSBvbGQga2V5IGFuZCBhIGZyZXNoCisJCSAq IGVudHJ5IGZvciB0aGUgbmV3IGtleSkuICBUaGV5IGFsbCByZXNvbHZlIHRvIHRoZSBzYW1l IFRJRCBoZXJlIGFuZAorCQkgKiBtdXN0IGFsbCBiZSB0cmVhdGVkIGFzICJzZWxmIiwgbm90 IGFzIGEgZHVwbGljYXRlIGVycm9yLiAgV2UKKwkJICogdG9sZXJhdGUgdGhlIGR1cGxpY2F0 ZSBzZWxmIGFycml2YWwgd2hlbmV2ZXIgKmVpdGhlciogdGhpcworCQkgKiBpdGVyYXRpb24g b3IgYW4gZWFybGllciBvbmUgc2F3IHhzX2hvdF9pbmRleGVkX3N0YWxlIC0tIHRoZQorCQkg KiBjYW5vbmljYWwgZGlyZWN0IGVudHJ5IGFuZCB0aGUgc3RhbGUgY2hhaW4td2FsayBlbnRy aWVzIGNhbiBhcnJpdmUKKwkJICogaW4gZWl0aGVyIG9yZGVyLgogCQkgKi8KIAkJaWYgKEl0 ZW1Qb2ludGVySXNWYWxpZCh0dXBsZWlkKSAmJgogCQkJSXRlbVBvaW50ZXJFcXVhbHModHVw bGVpZCwgJmV4aXN0aW5nX3Nsb3QtPnR0c190aWQpKQogCQl7Ci0JCQlpZiAoZm91bmRfc2Vs ZikJCS8qIHNob3VsZCBub3QgaGFwcGVuICovCisJCQlpZiAoaW5kZXhfc2Nhbi0+eHNfaG90 X2luZGV4ZWRfc3RhbGUpCisJCQkJZm91bmRfc2VsZl9zaXVfaGl0ID0gdHJ1ZTsKKwkJCWlm IChmb3VuZF9zZWxmKQorCQkJeworCQkJCWlmIChmb3VuZF9zZWxmX3NpdV9oaXQpCisJCQkJ CWNvbnRpbnVlOwogCQkJCWVsb2coRVJST1IsICJmb3VuZCBzZWxmIHR1cGxlIG11bHRpcGxl IHRpbWVzIGluIGluZGV4IFwiJXNcIiIsCiAJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShpbmRleCkpOworCQkJfQogCQkJZm91bmRfc2VsZiA9IHRydWU7CiAJCQljb250aW51ZTsK IAkJfQpAQCAtODY5LDYgKzg5OCwzMSBAQCByZXRyeToKIAkJCQkJCQkJICogY29uZmxpY3Qg Ki8KIAkJfQogCisJCS8qCisJCSAqIEhPVC1pbmRleGVkIGNoYWlucyBjYW4gcmVhY2ggdGhp cyBsb29wIHZpYSBhIHN0YWxlIGJ0cmVlIGxlYWYgZW50cnkKKwkJICogd2hvc2Uga2V5IGlz IGRpZmZlcmVudCBmcm9tIHRoZSBoZWFwIHR1cGxlJ3MgY3VycmVudCBpbmRleC1mb3JtLgor CQkgKiBleGlzdGluZ192YWx1ZXMgaG9sZHMgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSdzIGlu ZGV4LWZvcm0KKwkJICogKEZvcm1JbmRleERhdHVtIGFib3ZlKS4gIENvbXBhcmUgaXQgYWdh aW5zdCBvdXIgbmV3IHR1cGxlJ3MgdmFsdWVzCisJCSAqIHVzaW5nIHRoZSBzYW1lIGNvbnN0 cmFpbnQgb3BlcmF0b3JzOyBpZiB0aGV5IGRvbid0IGFncmVlLCB0aGUKKwkJICogY2hhaW4t d2Fsa2VkIHR1cGxlIGlzIG5vdCBhY3R1YWxseSBpbiBjb25mbGljdCB3aXRoIG91ciBpbnNl cnRpb24KKwkJICogLS0gaXQganVzdCBzaGFyZWQgYSBUSUQgd2l0aCBhIHN0YWxlIGxlYWYg ZW50cnkgd2UgaGFwcGVuZWQgdG8gc2NhbgorCQkgKiB0aHJvdWdoLiAgU2tpcCBpdC4KKwkJ ICoKKwkJICogVGhpcyBtaXJyb3JzIF9idF9jaGVja191bmlxdWUncyBIT1QtaW5kZXhlZCBy ZWNoZWNrIHBhdGg7IGZvcgorCQkgKiBleGNsdXNpb24gY29uc3RyYWludHMgdGhlIHVzZXIt c3VwcGxpZWQgb3BlcmF0b3IgaW4gY29uc3RyX3Byb2NzCisJCSAqIHJlcGxhY2VzIHRoZSBi dHJlZSBlcXVhbGl0eSBjb21wYXJhdG9yLCBhbmQKKwkJICogaW5kZXhfcmVjaGVja19jb25z dHJhaW50IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBlaXRoZXIuCisJCSAqLworCQlpZiAo aW5kZXhfc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCWlmICghaW5kZXhf cmVjaGVja19jb25zdHJhaW50KGluZGV4LAorCQkJCQkJCQkJCSAgY29uc3RyX3Byb2NzLAor CQkJCQkJCQkJCSAgZXhpc3RpbmdfdmFsdWVzLAorCQkJCQkJCQkJCSAgZXhpc3RpbmdfaXNu dWxsLAorCQkJCQkJCQkJCSAgdmFsdWVzKSkKKwkJCQljb250aW51ZTsJCS8qIHN0YWxlIGNo YWluIGhpdCwgbm90IGEgcmVhbCBjb25mbGljdCAqLworCQl9CisKIAkJLyoKIAkJICogQXQg dGhpcyBwb2ludCB3ZSBoYXZlIGVpdGhlciBhIGNvbmZsaWN0IG9yIGEgcG90ZW50aWFsIGNv bmZsaWN0LgogCQkgKgpAQCAtMTAwOSwxNDkgKzEwNjMsOTQgQEAgaW5kZXhfcmVjaGVja19j b25zdHJhaW50KFJlbGF0aW9uIGluZGV4LCBjb25zdCBPaWQgKmNvbnN0cl9wcm9jcywKIH0K IAogLyoKLSAqIENoZWNrIGlmIEV4ZWNJbnNlcnRJbmRleFR1cGxlcygpIHNob3VsZCBwYXNz IGluZGV4VW5jaGFuZ2VkIGhpbnQuCisgKiBFeGVjU2V0SW5kZXhVbmNoYW5nZWQKKyAqCisg KiBQb3B1bGF0ZSB0d28gcGVyLWluZGV4IGZsYWdzIGFoZWFkIG9mIEV4ZWNJbnNlcnRJbmRl eFR1cGxlczoKKyAqCisgKiAgIC0gaWlfSW5kZXhOZWVkc1VwZGF0ZSAod2lkZSkgZHJpdmVz IHRoZSBza2lwIGRlY2lzaW9uLiAgSXQgaXMgdHJ1ZSB3aGVuCisgKiAgICAgdGhlIHRhYmxl IEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJp YnV0ZQorICogICAgIHByZXNlbnQgaW4gbW9kaWZpZWRfaWR4X2F0dHJzKSBvciB3aGVuIGFu eSBhdHRyaWJ1dGUgdGhlIGluZGV4CisgKiAgICAgcmVmZXJlbmNlcyAtLSBrZXksIElOQ0xV REUsIGV4cHJlc3Npb24sIG9yIHBhcnRpYWwtcHJlZGljYXRlIGNvbHVtbiwKKyAqICAgICBw ZXIgUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSAtLSBjaGFuZ2VkLiAgQSBub24tc3VtbWFy aXppbmcgaW5kZXggZm9yCisgKiAgICAgd2hpY2ggdGhpcyBpcyBmYWxzZSBpcyBza2lwcGVk OiBpdHMgZXhpc3RpbmcgZW50cnkga2VlcHMgcmVzb2x2aW5nIHRoZQorICogICAgIEhPVCBj aGFpbi4KICAqCi0gKiBXaGVuIHRoZSBleGVjdXRvciBwZXJmb3JtcyBhbiBVUERBVEUgdGhh dCByZXF1aXJlcyBhIG5ldyByb3VuZCBvZiBpbmRleAotICogdHVwbGVzLCBkZXRlcm1pbmUg aWYgd2Ugc2hvdWxkIHBhc3MgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBmb3Igb25l Ci0gKiBzaW5nbGUgaW5kZXguCisgKiAgIC0gaWlfSW5kZXhVbmNoYW5nZWQgKG5hcnJvdykg aXMgdGhlIGluZGV4VW5jaGFuZ2VkIGhpbnQgdG8gYW1pbnNlcnQsCisgKiAgICAgY29uc3Vt ZWQgYnkgbmJ0cmVlIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24uICBQZXIg dGhlCisgKiAgICAgaGlzdG9yaWNhbCBydWxlIGl0IGNvdW50cyBvbmx5IGtleSBjb2x1bW5z OyBJTkNMVURFIGFuZCBwcmVkaWNhdGUKKyAqICAgICBjb2x1bW5zIGFyZSBkZWxpYmVyYXRl bHkgaWdub3JlZCwgYW5kIGFuIGV4cHJlc3Npb24ga2V5IGlzIHRyZWF0ZWQKKyAqICAgICBj b25zZXJ2YXRpdmVseSBhcyBwb3NzaWJseSBjaGFuZ2VkLgogICovCi1zdGF0aWMgYm9vbAot aW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LCBFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCSAgSW5kZXhJbmZvICppbmRleEluZm8sIFJlbGF0 aW9uIGluZGV4UmVsYXRpb24pCit2b2lkCitFeGVjU2V0SW5kZXhVbmNoYW5nZWQoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlm aWVkX2lkeF9hdHRycykKIHsKLQlCaXRtYXBzZXQgICp1cGRhdGVkQ29sczsKLQlCaXRtYXBz ZXQgICpleHRyYVVwZGF0ZWRDb2xzOwotCUJpdG1hcHNldCAgKmFsbFVwZGF0ZWRDb2xzOwot CWJvb2wJCWhhc2V4cHJlc3Npb24gPSBmYWxzZTsKLQlMaXN0CSAgICppZHhFeHByczsKLQot CS8qCi0JICogQ2hlY2sgY2FjaGUgZmlyc3QKLQkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9D aGVja2VkVW5jaGFuZ2VkKQotCQlyZXR1cm4gaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZDsKLQlpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSB0cnVlOwotCi0JLyoKLQkg KiBDaGVjayBmb3IgaW5kZXhlZCBhdHRyaWJ1dGUgb3ZlcmxhcCB3aXRoIHVwZGF0ZWQgY29s dW1ucy4KLQkgKgotCSAqIE9ubHkgZG8gdGhpcyBmb3Iga2V5IGNvbHVtbnMuICBBIGNoYW5n ZSB0byBhIG5vbi1rZXkgY29sdW1uIHdpdGhpbiBhbgotCSAqIElOQ0xVREUgaW5kZXggc2hv dWxkIG5vdCBiZSBjb3VudGVkIGhlcmUuICBOb24ta2V5IGNvbHVtbiB2YWx1ZXMgYXJlCi0J ICogb3BhcXVlIHBheWxvYWQgc3RhdGUgdG8gdGhlIGluZGV4IEFNLCBhIGxpdHRsZSBsaWtl IGFuIGV4dHJhIHRhYmxlIFRJRC4KLQkgKgotCSAqIE5vdGUgdGhhdCByb3ctbGV2ZWwgQkVG T1JFIHRyaWdnZXJzIHdvbid0IGFmZmVjdCBvdXIgYmVoYXZpb3IsIHNpbmNlCi0JICogdGhl eSBkb24ndCBhZmZlY3QgdGhlIHVwZGF0ZWRDb2xzIGJpdG1hcHMgZ2VuZXJhbGx5LiAgSXQg ZG9lc24ndCBzZWVtCi0JICogd29ydGggdGhlIHRyb3VibGUgb2YgY2hlY2tpbmcgd2hpY2gg YXR0cmlidXRlcyB3ZXJlIGNoYW5nZWQgZGlyZWN0bHkuCi0JICovCi0JdXBkYXRlZENvbHMg PSBFeGVjR2V0VXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0YXRlKTsKLQlleHRyYVVw ZGF0ZWRDb2xzID0gRXhlY0dldEV4dHJhVXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0 YXRlKTsKLQlmb3IgKGludCBhdHRyID0gMDsgYXR0ciA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhLZXlBdHRyczsgYXR0cisrKQotCXsKLQkJaW50CQkJa2V5Y29sID0gaW5kZXhJbmZvLT5p aV9JbmRleEF0dHJOdW1iZXJzW2F0dHJdOwotCi0JCWlmIChrZXljb2wgPD0gMCkKLQkJewot CQkJLyoKLQkJCSAqIFNraXAgZXhwcmVzc2lvbnMgZm9yIG5vdywgYnV0IHJlbWVtYmVyIHRv IGRlYWwgd2l0aCB0aGVtIGxhdGVyCi0JCQkgKiBvbgotCQkJICovCi0JCQloYXNleHByZXNz aW9uID0gdHJ1ZTsKLQkJCWNvbnRpbnVlOwotCQl9CisJaW50CQkJbnVtSW5kaWNlcyA9IHJl c3VsdFJlbEluZm8tPnJpX051bUluZGljZXM7CisJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJy YXkgPSByZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mbzsKKwlSZWxhdGlvblB0 ciBpbmRleERlc2NzID0gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzOwor CWJvb2wJCWFsbF9pbmRleGVzOwogCi0JCWlmIChibXNfaXNfbWVtYmVyKGtleWNvbCAtIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIHVwZGF0ZWRDb2xz KSB8fAotCQkJYm1zX2lzX21lbWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyLAotCQkJCQkJICBleHRyYVVwZGF0ZWRDb2xzKSkKLQkJewotCQkJLyog Q2hhbmdlZCBrZXkgY29sdW1uIC0tIGRvbid0IGhpbnQgZm9yIHRoaXMgaW5kZXggKi8KLQkJ CWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxzZTsKLQkJCXJldHVybiBmYWxz ZTsKLQkJfQotCX0KLQotCS8qCi0JICogV2hlbiB3ZSBnZXQgdGhpcyBmYXIgYW5kIGluZGV4 IGhhcyBubyBleHByZXNzaW9ucywgcmV0dXJuIHRydWUgc28gdGhhdAotCSAqIGluZGV4X2lu c2VydCgpIGNhbGwgd2lsbCBnbyBvbiB0byBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVl IGhpbnQuCi0JICoKLQkgKiBUaGUgX2Fic2VuY2VfIG9mIGFuIGluZGV4ZWQga2V5IGF0dHJp YnV0ZSB0aGF0IG92ZXJsYXBzIHdpdGggdXBkYXRlZAotCSAqIGF0dHJpYnV0ZXMgKGluIGFk ZGl0aW9uIHRvIHRoZSB0b3RhbCBhYnNlbmNlIG9mIGluZGV4ZWQgZXhwcmVzc2lvbnMpCi0J ICogc2hvd3MgdGhhdCB0aGUgaW5kZXggYXMgYSB3aG9sZSBpcyBsb2dpY2FsbHkgdW5jaGFu Z2VkIGJ5IFVQREFURS4KLQkgKi8KLQlpZiAoIWhhc2V4cHJlc3Npb24pCi0JewotCQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQkJcmV0dXJuIHRydWU7Ci0JfQor CWlmIChudW1JbmRpY2VzID09IDApCisJCXJldHVybjsKIAogCS8qCi0JICogTmVlZCB0byBw YXNzIG9ubHkgb25lIGJtcyB0byBleHByZXNzaW9uX3RyZWVfd2Fsa2VyIGhlbHBlciBmdW5j dGlvbi4KLQkgKiBBdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSBpbiBjb21tb24gY2FzZSB3aGVy ZSB0aGVyZSBhcmUgbm8gZXh0cmEgY29scy4KKwkgKiBBIHdob2xlLXJvdyBlbnRyeSBpbiBt b2RpZmllZF9pZHhfYXR0cnMgbWVhbnMgdGhlIHRhYmxlIEFNIHN0b3JlZCBhbgorCSAqIGlu ZGVwZW5kZW50IG5ldyB2ZXJzaW9uIChlLmcuIGF0IGEgbmV3IFRJRCksIHNvIGV2ZXJ5IGlu ZGV4IG5lZWRzIGEKKwkgKiBmcmVzaCBlbnRyeSByZWdhcmRsZXNzIG9mIHdoaWNoIGF0dHJp YnV0ZXMgY2hhbmdlZC4KIAkgKi8KLQlpZiAoIWV4dHJhVXBkYXRlZENvbHMpCi0JCWFsbFVw ZGF0ZWRDb2xzID0gdXBkYXRlZENvbHM7Ci0JZWxzZQotCQlhbGxVcGRhdGVkQ29scyA9IGJt c191bmlvbih1cGRhdGVkQ29scywgZXh0cmFVcGRhdGVkQ29scyk7CisJYWxsX2luZGV4ZXMg PSBibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9p ZHhfYXR0cnMpOwogCi0JLyoKLQkgKiBXZSBoYXZlIHRvIHdvcmsgc2xpZ2h0bHkgaGFyZGVy IGluIHRoZSBldmVudCBvZiBpbmRleGVkIGV4cHJlc3Npb25zLAotCSAqIGJ1dCB0aGUgcHJp bmNpcGxlIGlzIHRoZSBzYW1lIGFzIGJlZm9yZTogdHJ5IHRvIGZpbmQgY29sdW1ucyAoVmFy cywKLQkgKiBhY3R1YWxseSkgdGhhdCBvdmVybGFwIHdpdGgga25vd24tdXBkYXRlZCBjb2x1 bW5zLgotCSAqCi0JICogSWYgd2UgZmluZCBhbnkgbWF0Y2hpbmcgVmFycywgZG9uJ3QgcGFz cyBoaW50IGZvciBpbmRleC4gIE90aGVyd2lzZQotCSAqIHBhc3MgaGludC4KLQkgKi8KLQlp ZHhFeHBycyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbGF0aW9uKTsK LQloYXNleHByZXNzaW9uID0gaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcigoTm9k ZSAqKSBpZHhFeHBycywKLQkJCQkJCQkJCQkJCQlhbGxVcGRhdGVkQ29scyk7Ci0JbGlzdF9m cmVlKGlkeEV4cHJzKTsKLQlpZiAoZXh0cmFVcGRhdGVkQ29scykKLQkJYm1zX2ZyZWUoYWxs VXBkYXRlZENvbHMpOwotCi0JaWYgKGhhc2V4cHJlc3Npb24pCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1JbmRpY2VzOyBpKyspCiAJewotCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gZmFsc2U7Ci0JCXJldHVybiBmYWxzZTsKLQl9CisJCUluZGV4SW5mbyAgKmluZGV4 SW5mbyA9IGluZGV4SW5mb0FycmF5W2ldOworCQlSZWxhdGlvbglpbmRleERlc2MgPSBpbmRl eERlc2NzW2ldOworCQlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CisJCWJvb2wJCWtleWNo YW5nZWQ7CiAKLQkvKgotCSAqIERlbGliZXJhdGVseSBkb24ndCBjb25zaWRlciBpbmRleCBw cmVkaWNhdGVzLiAgV2Ugc2hvdWxkIGV2ZW4gZ2l2ZSB0aGUKLQkgKiBoaW50IHdoZW4gcmVz dWx0IHJlbCdzICJ1cGRhdGVkIHR1cGxlIiBoYXMgbm8gY29ycmVzcG9uZGluZyBpbmRleAot CSAqIHR1cGxlLCB3aGljaCBpcyBwb3NzaWJsZSB3aXRoIGEgcGFydGlhbCBpbmRleCAocHJv dmlkZWQgdGhlIHVzdWFsCi0JICogY29uZGl0aW9ucyBhcmUgbWV0KS4KLQkgKi8KLQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQot LyoKLSAqIEluZGV4ZWQgZXhwcmVzc2lvbiBoZWxwZXIgZm9yIGluZGV4X3VuY2hhbmdlZF9i eV91cGRhdGUoKS4KLSAqCi0gKiBSZXR1cm5zIHRydWUgd2hlbiBWYXIgdGhhdCBhcHBlYXJz IHdpdGhpbiBhbGxVcGRhdGVkQ29scyBsb2NhdGVkLgotICovCi1zdGF0aWMgYm9vbAotaW5k ZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcihOb2RlICpub2RlLCBCaXRtYXBzZXQgKmFs bFVwZGF0ZWRDb2xzKQotewotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVybiBmYWxzZTsK KwkJaWYgKGluZGV4RGVzYyA9PSBOVUxMKQorCQkJY29udGludWU7CiAKLQlpZiAoSXNBKG5v ZGUsIFZhcikpCi0JewotCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7CisJCS8qCisJ CSAqIFNraXAgZGVjaXNpb24gKHdpZGUpLiAgVGhlIGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5 IGlmIHRoZSBBTSBzdG9yZWQKKwkJICogYW4gaW5kZXBlbmRlbnQgdmVyc2lvbiwgb3IgaWYg YW55IGF0dHJpYnV0ZSBpdCByZWZlcmVuY2VzIC0tIGtleSwKKwkJICogSU5DTFVERSwgZXhw cmVzc2lvbiwgb3IgcGFydGlhbC1wcmVkaWNhdGUgY29sdW1uIC0tIGNoYW5nZWQuCisJCSAq IFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzKCkgY292ZXJzIGFsbCBvZiB0aG9zZS4gIChBbiBV UERBVEUgdGhhdAorCQkgKiB0b3VjaGVzIGFuIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRl IG5ldmVyIHJlYWNoZXMgdGhlIEhPVC1pbmRleGVkCisJCSAqIHBhdGg6IEhlYXBVcGRhdGVI b3RBbGxvd2FibGUgZGlzcXVhbGlmaWVzIGl0LCBwZW5kaW5nCisJCSAqIGV4cHJlc3Npb24t YXdhcmUgbWFpbnRlbmFuY2UuKQorCQkgKi8KKwkJaW5kZXhlZGF0dHJzID0gUmVsYXRpb25H ZXRJbmRleGVkQXR0cnMoaW5kZXhEZXNjKTsKKwkJaW5kZXhJbmZvLT5paV9JbmRleE5lZWRz VXBkYXRlID0KKwkJCWFsbF9pbmRleGVzIHx8IGJtc19vdmVybGFwKGluZGV4ZWRhdHRycywg bW9kaWZpZWRfaWR4X2F0dHJzKTsKKwkJYm1zX2ZyZWUoaW5kZXhlZGF0dHJzKTsKIAotCQlp ZiAoYm1zX2lzX21lbWJlcih2YXItPnZhcmF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlciwKLQkJCQkJCSAgYWxsVXBkYXRlZENvbHMpKQorCQkvKgorCQkgKiBh bWluc2VydCBoaW50IChuYXJyb3cpLiAgaWlfSW5kZXhVbmNoYW5nZWQgZmVlZHMgbmJ0cmVl CisJCSAqIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24gaGV1cmlzdGljcyBh bmQsIHBlciB0aGUKKwkJICogaGlzdG9yaWNhbCBydWxlLCBjb3VudHMgb25seSBrZXkgY29s dW1uczogYSBjaGFuZ2UgdG8gYW4gSU5DTFVERQorCQkgKiBjb2x1bW4gb3IgdG8gYSBwYXJ0 aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW4gZG9lcyBub3QgZGlzcXVhbGlmeQorCQkgKiB0 aGUgaGludC4gIEFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiBpcyB0cmVhdGVkIGNvbnNlcnZh dGl2ZWx5IGFzCisJCSAqIHBvc3NpYmx5IGNoYW5nZWQuCisJCSAqLworCQlrZXljaGFuZ2Vk ID0gZmFsc2U7CisJCWZvciAoaW50IGsgPSAwOyBrIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRl eEtleUF0dHJzOyBrKyspCiAJCXsKLQkJCS8qIFZhciB3YXMgdXBkYXRlZCAtLSBpbmRpY2F0 ZXMgdGhhdCB3ZSBzaG91bGQgbm90IGhpbnQgKi8KLQkJCXJldHVybiB0cnVlOwotCQl9CisJ CQlBdHRyTnVtYmVyCWtleWNvbCA9IGluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tr XTsKIAotCQkvKiBTdGlsbCBoYXZlbid0IGZvdW5kIGEgcmVhc29uIHRvIG5vdCBwYXNzIHRo ZSBoaW50ICovCi0JCXJldHVybiBmYWxzZTsKKwkJCWlmIChrZXljb2wgPT0gMCkJLyogZXhw cmVzc2lvbiBrZXk6IGFzc3VtZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkICovCisJCQl7CisJCQkJ a2V5Y2hhbmdlZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoYm1zX2lzX21l bWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJ CQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzKSkKKwkJCXsKKwkJCQlrZXljaGFuZ2VkID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gIWtleWNoYW5nZWQ7CiAJfQotCi0JcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxr ZXIobm9kZSwgaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlciwKLQkJCQkJCQkJICBh bGxVcGRhdGVkQ29scyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCmluZGV4IDYyNjJmNzFiZDkzLi43YjViYmRiZmQ3YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTIxNyw2ICsyMTcsMTggQEAgcmV0 cnk6CiAJLyogVHJ5IHRvIGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5l eHRfc2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgb3V0c2xvdCkpCiAJeworCQkv KgorCQkgKiBBIEhPVC1pbmRleGVkIHVwZGF0ZSBjYW4gbGVhdmUgYSBzdGFsZSBpbmRleCBs ZWFmOiBhbiBlbnRyeSB3aG9zZQorCQkgKiBrZXkgaXMgYSBwcmUtdXBkYXRlIHZhbHVlIGJ1 dCB3aG9zZSBUSUQgY2hhaW4tcmVzb2x2ZXMgdG8gYSBsaXZlCisJCSAqIHR1cGxlIG5vdyBj YXJyeWluZyBhIGRpZmZlcmVudCBrZXkuICBTdWNoIGEgdHVwbGUgaXMgbm90IHRoZQorCQkg KiByZXBsaWNhLWlkZW50aXR5IG1hdGNoIHdlIGFyZSBsb29raW5nIGZvciAoYW5kIHRoZSBQ Sy9SSSBmYXN0IHBhdGgKKwkJICogYmVsb3cgc2tpcHMgdGhlIGVxdWFsaXR5IHJlY2hlY2sg dGhhdCB3b3VsZCBvdGhlcndpc2UgY2F0Y2ggaXQpLCBzbworCQkgKiBkcm9wIGl0IC0tIGV4 YWN0bHkgYXMgSW5kZXhTY2FuL0luZGV4T25seVNjYW4gZG8uICBUaGUgZnJlc2ggbGVhZgor CQkgKiBmb3IgdGhlIGN1cnJlbnQga2V5LCBpZiBhbnksIGlzIHJldHVybmVkIGJ5IGEgbGF0 ZXIgaXRlcmF0aW9uLgorCQkgKi8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxl KQorCQkJY29udGludWU7CisKIAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5 IGNoZWNrIGlmIHRoZSBpbmRleCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlk ZW50aXR5IGluZGV4LgpAQCAtNjc4LDYgKzY5MCwxMCBAQCBSZWxhdGlvbkZpbmREZWxldGVk VHVwbGVJbmZvQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQsCiAJLyogVHJ5IHRv IGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChzY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgc2NhbnNsb3QpKQogCXsKKwkJLyogU2tpcCBzdGFsZSBI T1QtaW5kZXhlZCBsZWF2ZXMgKHNlZSBSZWxhdGlvbkZpbmRSZXBsVHVwbGVCeUluZGV4KS4g Ki8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlKQorCQkJY29udGludWU7CisK IAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5IGNoZWNrIGlmIHRoZSBpbmRl eCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlkZW50aXR5IGluZGV4LgpAQCAt OTExLDcgKzkyNyw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCWJvb2wJCXNraXBfdHVwbGUgPSBmYWxzZTsKIAlSZWxhdGlv bglyZWwgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJSXRlbVBvaW50ZXIg dGlkID0gJihzZWFyY2hzbG90LT50dHNfdGlkKTsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9p ZHhfYXR0cnM7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKIAog CS8qCiAJICogV2Ugc3VwcG9ydCBvbmx5IG5vbi1zeXN0ZW0gdGFibGVzLCB3aXRoCkBAIC05 MzQsNyArOTUwLDYgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJaWYgKCFza2lwX3R1cGxlKQogCXsKIAkJTGlzdAkgICAqcmVj aGVja0luZGV4ZXMgPSBOSUw7Ci0JCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlX2luZGV4ZXM7 CiAJCUxpc3QJICAgKmNvbmZsaWN0aW5kZXhlczsKIAkJYm9vbAkJY29uZmxpY3QgPSBmYWxz ZTsKIApAQCAtOTUzLDI3ICs5NjgsMzQgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJCQkJ CXNlYXJjaHNsb3QsIHNsb3QpOwogCisJCUFzc2VydCghYm1zX2lzX21lbWJlcihUYWJsZVR1 cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0dHJzKSk7CiAJCXNpbXBsZV90 YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3QsIGVzdGF0ZS0+ZXNfc25hcHNob3Qs Ci0JCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOwotCQli bXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOwotCisJCQkJCQkJCSAgJm1vZGlmaWVkX2lk eF9hdHRycyk7CiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25D b25mbGljdEFyYml0ZXJJbmRleGVzOwogCi0JCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1J bmRpY2VzID4gMCAmJiAodXBkYXRlX2luZGV4ZXMgIT0gVFVfTm9uZSkpCisJCWlmIChyZXN1 bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkJIWJtc19pc19lbXB0eShtb2Rp ZmllZF9pZHhfYXR0cnMpKQogCQl7CisJCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQkJYm1z X2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0 dHJzKTsKIAkJCXVpbnQzMgkJZmxhZ3MgPSBFSUlUX0lTX1VQREFURTsKIAogCQkJaWYgKGNv bmZsaWN0aW5kZXhlcyAhPSBOSUwpCiAJCQkJZmxhZ3MgfD0gRUlJVF9OT19EVVBFX0VSUk9S OwotCQkJaWYgKHVwZGF0ZV9pbmRleGVzID09IFRVX1N1bW1hcml6aW5nKQotCQkJCWZsYWdz IHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsKKwkJCWlmICghYWxsX2luZGV4ZXMpCisJCQkJ ZmxhZ3MgfD0gRUlJVF9JU19IT1RfSU5ERVhFRDsKKworCQkJRXhlY1NldEluZGV4VW5jaGFu Z2VkKHJlc3VsdFJlbEluZm8sIG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJCXJlY2hlY2tJ bmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJ CQkJCQkgICBlc3RhdGUsIGZsYWdzLAogCQkJCQkJCQkJCQkJICAgc2xvdCwgY29uZmxpY3Rp bmRleGVzLAogCQkJCQkJCQkJCQkJICAgJmNvbmZsaWN0KTsKIAkJfQogCisJCWJtc19mcmVl KG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJLyoKIAkJICogUmVmZXIgdG8gdGhlIGNvbW1l bnRzIGFib3ZlIHRoZSBjYWxsIHRvIENoZWNrQW5kUmVwb3J0Q29uZmxpY3QoKSBpbgogCQkg KiBFeGVjU2ltcGxlUmVsYXRpb25JbnNlcnQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGVj ayBpcyBkb25lIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCBkNTIwMTJlOGE2OS4uZmQwMjQ3ZWJhMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJh Y2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCkBAIC0x MDQsNiArMTA1LDcgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAKIAkJLyogU2V0IGl0IHVwIGZvciBpbmRleC1vbmx5IHNjYW4gKi8KIAkJbm9kZS0+aW9z c19TY2FuRGVzYy0+eHNfd2FudF9pdHVwID0gdHJ1ZTsKKwkJbm9kZS0+aW9zc19TY2FuRGVz Yy0+eHNfaW5kZXhfb25seSA9IHRydWU7CiAJCW5vZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZh bGlkQnVmZmVyOwogCiAJCS8qCkBAIC0xNzIsNiArMTc0LDI1IEBAIEluZGV4T25seU5leHQo SW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJaWYgKCFpbmRleF9mZXRjaF9oZWFwKHNj YW5kZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCkpCiAJCQkJY29udGludWU7CQkvKiBubyB2 aXNpYmxlIHR1cGxlLCB0cnkgbmV4dCBpbmRleCBlbnRyeSAqLwogCisJCQkvKgorCQkJICog SE9ULWluZGV4ZWQgc3RhbGUgZW50cnk6IGlmIHRoZSBjaGFpbiB3YWxrIHRvIHJlYWNoIHRo aXMgdHVwbGUKKwkJCSAqIGNyb3NzZWQgYSBob3QtaW5kZXhlZCBob3AgdGhhdCBjaGFuZ2Vk IGFuIGF0dHJpYnV0ZSB0aGlzIGluZGV4CisJCQkgKiBjb3ZlcnMsIHRoZSBsZWFmIHdlIGFy cml2ZWQgdGhyb3VnaCBpcyBzdGFsZS4gIEZvciBJT1Mgd2Ugc2VydmUKKwkJCSAqIHZhbHVl cyBvdXQgb2YgeHNfaXR1cCwgc28gYSBzdGFsZSBsZWFmIHdvdWxkIHN1cmZhY2UgdGhlIHdy b25nCisJCQkgKiB2YWx1ZXM7IGRyb3AgaXQuICBUaGUgZnJlc2ggZW50cnkgZm9yIHRoZSBu ZXcgdmFsdWUgcmV0dXJucyB0aGUKKwkJCSAqIHJvdyB3aXRoIGNvcnJlY3QgdmFsdWVzIHZp YSBpdHMgb3duIHBhdGguICBQcnVuZSBrZWVwcyBhbnkgcGFnZQorCQkJICogdGhhdCBjYW4g Y2Fycnkgc3VjaCBhIHN0YWxlIGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBhCisJ CQkgKiBsaXZlIEhFQVBfSU5ERVhFRF9VUERBVEVEIHR1cGxlIC0tIG91dCBvZiB0aGUgdmlz aWJpbGl0eSBtYXAKKwkJCSAqIChzZWUgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QpLCBz byBhbiBpbmRleC1vbmx5IHNjYW4gYWx3YXlzCisJCQkgKiByZWFjaGVzIHRoaXMgaGVhcCBm ZXRjaCB3aGVuIHN0YWxlbmVzcyBjb3VsZCBhcHBseS4KKwkJCSAqLworCQkJaWYgKHNjYW5k ZXNjLT54c19ob3RfaW5kZXhlZF9zdGFsZSkKKwkJCXsKKwkJCQlJbnN0ckNvdW50RmlsdGVy ZWQyKG5vZGUsIDEpOworCQkJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVTbG90 KTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+aW9z c19UYWJsZVNsb3QpOwogCiAJCQkvKgpAQCAtMjI5LDYgKzI1MCwxNiBAQCBJbmRleE9ubHlO ZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCX0KIAkJfQogCisJCS8qCisJCSAq IE5vIEhPVC1pbmRleGVkIHN0YWxlbmVzcyBjaGVjayBpcyBuZWVkZWQgb24gdGhlIFZNLWFs bC12aXNpYmxlIHBhdGgKKwkJICogKHdoZXJlIHdlIHNraXBwZWQgdGhlIGhlYXAgZmV0Y2gp LiAgUHJ1bmUga2VlcHMgYW55IHBhZ2UgdGhhdCBjb3VsZAorCQkgKiBjYXJyeSBhIHN0YWxl IGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBhIGxpdmUKKwkJICogSEVBUF9JTkRF WEVEX1VQREFURUQgdHVwbGUgLS0gb3V0IG9mIHRoZSB2aXNpYmlsaXR5IG1hcCwgc28gYW4K KwkJICogYWxsLXZpc2libGUgZW50cnkgbmV2ZXIgY3Jvc3NlZCBhIEhPVC9TSVUgaG9wLiAg KGluZGV4X2dldG5leHRfdGlkCisJCSAqIGFsc28gcmVzZXRzIHhzX2hvdF9pbmRleGVkX3N0 YWxlIHBlciBlbnRyeSwgYW5kIG9ubHkgdGhlIGhlYXAgZmV0Y2gKKwkJICogaW4gaW5kZXhf ZmV0Y2hfaGVhcCBldmVyIHNldHMgaXQsIHNvIGl0IGNhbm5vdCBiZSBzZXQgaGVyZSBhbnl3 YXkuKQorCQkgKi8KKwogCQkvKgogCQkgKiBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBy ZWNoZWNraW5nIE9SREVSIEJZIGRpc3RhbmNlcy4gIChJbgogCQkgKiBwcmluY2lwbGUsIGlm IHRoZSBpbmRleCBjYW4gc3VwcG9ydCByZXRyaWV2YWwgb2YgdGhlIG9yaWdpbmFsbHkKQEAg LTc3NSw2ICs4MDYsNyBAQCBFeGVjSW5kZXhPbmx5U2NhbkluaXRpYWxpemVEU00oSW5kZXhP bmx5U2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5vZGUt PnNzKSA/CiAJCQkJCQkJCSBTT19ISU5UX1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsKIAlu b2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlvc3Nf U2NhbkRlc2MtPnhzX2luZGV4X29ubHkgPSB0cnVlOwogCW5vZGUtPmlvc3NfVk1CdWZmZXIg PSBJbnZhbGlkQnVmZmVyOwogCiAJLyoKQEAgLTgyNSw2ICs4NTcsNyBAQCBFeGVjSW5kZXhP bmx5U2NhbkluaXRpYWxpemVXb3JrZXIoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlLAogCQkJ CQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5vZGUtPnNzKSA/CiAJCQkJCQkJCSBTT19ISU5U X1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsKIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193 YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX2luZGV4X29ubHkg PSB0cnVlOwogCiAJLyoKIAkgKiBJZiBubyBydW4tdGltZSBrZXlzIHRvIGNhbGN1bGF0ZSBv ciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5kIHBhc3MKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYwppbmRleCAzOWY2NjkxZWUzNS4uMjMyOWE3MTcxMTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNp bmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIK ICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXgu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCkBAIC0xNTEsNiAr MTUyLDIwIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCX0KIAkJfQog CisJCS8qCisJCSAqIEhPVC1pbmRleGVkIHN0YWxlIGVudHJ5OiB0aGUgY2hhaW4gd2Ugd2Fs a2VkIHRvIHJlYWNoIHRoaXMgdHVwbGUKKwkJICogY3Jvc3NlZCBhIGhvdC1pbmRleGVkIGhv cCB0aGF0IGNoYW5nZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXgKKwkJICogY292ZXJzLCBz byB0aGUgbGVhZiBlbnRyeSB3ZSBhcnJpdmVkIHRocm91Z2ggaXMgc3RhbGUuICBEcm9wIGl0 OworCQkgKiB0aGUgZnJlc2ggZW50cnkgaW5zZXJ0ZWQgZm9yIHRoZSBuZXcgdmFsdWUgcmV0 dXJucyB0aGUgcm93IHRocm91Z2gKKwkJICogaXRzIG93biBwYXRoLiAgU3RhbGVuZXNzIHdh cyBkZWNpZGVkIGJ5IHRoZSBoZWFwIEFNIHZpYSBwZXItaG9wCisJCSAqIG1vZGlmaWVkLWF0 dHJzIGJpdG1hcHMgKHNlZSBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKS4KKwkJICovCisJCWlm IChzY2FuZGVzYy0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCUluc3RyQ291bnRG aWx0ZXJlZDIobm9kZSwgMSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXJldHVybiBzbG90 OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAx ZTc5MzA3ZDMzYy4uMzI0M2JlMzNhOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCkBAIC0xMzAsNyArMTMwLDE0IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlm eVRhYmxlQ29udGV4dAogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlQ29udGV4dAogewogCWJvb2wJ CWNyb3NzUGFydFVwZGF0ZTsJLyogd2FzIGl0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZT8g Ki8KLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXM7IC8qIFdoaWNoIGluZGV4IHVw ZGF0ZXMgYXJlIHJlcXVpcmVkPyAqLworCisJLyoKKwkgKiBTZXQgb2YgaW5kZXhlZCBhdHRy aWJ1dGVzIHRoZSBVUERBVEUgY2hhbmdlZCAoaW4vb3V0IGZvciB0aGUgdGFibGUgQU0ncwor CSAqIHVwZGF0ZSBjYWxsYmFjaykuICBQb3B1bGF0ZWQgYnkgRXhlY1VwZGF0ZUFjdCBhbmQg Y29uc3VtZWQgYnkKKwkgKiBFeGVjVXBkYXRlRXBpbG9ndWU7IHRoZSBBTSBhZGRzIHRoZSB3 aG9sZS1yb3cgYXR0cmlidXRlCisJICogKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzKSB3 aGVuIGV2ZXJ5IGluZGV4IG5lZWRzIGEgZnJlc2ggZW50cnkuCisJICovCisJQml0bWFwc2V0 ICAqbW9kaWZpZWRfYXR0cnM7CiAKIAkvKgogCSAqIExvY2sgbW9kZSB0byBhY3F1aXJlIG9u IHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUgcGVyZm9ybWluZwpAQCAtMjM4LDI1 ICsyNDUsMjMgQEAgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKgotCSAqIEdldCB0aGUgc2V0 IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBmb3IgdGhpcyByZWxhdGlv biBmcm9tCi0JICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVzIGEgY29weSBvZiB0aGUg Yml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICogRGV0ZXJtaW5lIHdoaWNoIGluZGV4 ZWQgYXR0cmlidXRlcyBhY3R1YWxseSBjaGFuZ2VkIHZhbHVlIGJ5IGNvbXBhcmluZworCSAq IHRoZSBvbGQgYW5kIG5ldyB0dXBsZXMgYXR0cmlidXRlLWJ5LWF0dHJpYnV0ZSBvdmVyIHRo ZSByZWxhdGlvbidzIGZ1bGwKKwkgKiBpbmRleGVkLWF0dHJpYnV0ZSBzZXQuICBXZSBkZWxp YmVyYXRlbHkgZG8gTk9UIHRyeSB0byBuYXJyb3cgdGhlIHdvcmsKKwkgKiB1c2luZyB0aGUg U1FMIFVQREFURSdzIHRhcmdldCBsaXN0IChFeGVjR2V0QWxsVXBkYXRlZENvbHMpOiB0aGF0 IGxpc3QKKwkgKiBkb2VzIG5vdCBjYXB0dXJlIGluZGV4ZWQgY29sdW1ucyBtdXRhdGVkIG91 dHNpZGUgdGhlIFNFVCBjbGF1c2UsIHN1Y2gKKwkgKiBhcyBhIGNvbHVtbiByZXdyaXR0ZW4g YnkgYSBCRUZPUkUvSU5TVEVBRC1PRiB0cmlnZ2VyIHZpYQorCSAqIGhlYXBfbW9kaWZ5X3R1 cGxlIChzZWUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSBpbiB0c2VhcmNoLnNxbCksIHRo ZQorCSAqIGltcGxpY2l0IHRlbXBvcmFsIHJhbmdlIGNvbHVtbiBvZiBhIEZPUiBQT1JUSU9O IE9GIHVwZGF0ZSwgb3IgdGhlCisJICogcHJlLWJ1aWx0IHR1cGxlcyBhcHBsaWVkIGJ5IFJF UEFDSyAoQ09OQ1VSUkVOVExZKSBhbmQgbG9naWNhbAorCSAqIHJlcGxpY2F0aW9uIHRocm91 Z2ggYSBzeW50aGV0aWMgUmVzdWx0UmVsSW5mby4gIENvbXBhcmluZyB0aGUgYWN0dWFsCisJ ICogdHVwbGUgdmFsdWVzIGlzIGFsd2F5cyBjb3JyZWN0LgogCSAqCi0JICogTm90ZTogV2Ug aW50ZW50aW9uYWxseSBzY2FuIGFsbCBpbmRleGVkIGNvbHVtbnMgd2hlbiBsb29raW5nIGZv cgotCSAqIGNoYW5nZXMgcmF0aGVyIHRoYW4gcmVkdWNlIHRoYXQgc2V0IGJ5IGludGVyc2Vj dGluZyBpdCB3aXRoCi0JICogRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCkuICBEZXNpcHRlIHRo ZSBuYW1lIGl0IHByb3ZpZGVzIHRoZSBzZXQgb2YKLQkgKiB0YXJnZXRlZCBhdHRyaWJ1dGVz IGluIHRoZSBTUUwgdXNlZCBmb3IgdGhlIFVQREFURSBhbmQgYW55IHRyaWdnZXJzLAotCSAq IGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgYXR0cmlidXRlcyB1cGRhdGVkIHVzaW5n Ci0JICogaGVhcF9tb2RpZml5X3R1cGxlKCkuIFRoZXJlIGlzIG9uZSB0ZXN0IGluIHRzZWFy Y2guc3FsIHRoYXQgZG9lcyBqdXN0Ci0JICogdGhhdCwgbW9kaWZpZXMgYW4gaW5kZXhlZCBh dHRyaWJ1dGUgdGhhdCBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIFNRTCBhbmQKLQkgKiBzbyBp c24ndCBwcmVzZW50IGluIHRoYXQgYml0bWFwc2V0LgorCSAqIFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwIHJldHVybnMgYSBjb3B5IHdlIGFyZSBmcmVlIHRvIG11dGF0ZTsKKwkgKiBF eGVjQ29tcGFyZVNsb3RBdHRycyBkZWxldGVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgZGlkIG5v dCBjaGFuZ2UgYW5kCisJICogcmV0dXJucyB0aGUgc3Vydml2aW5nICJtb2RpZmllZCBpbmRl eGVkIGF0dHJpYnV0ZXMiIHNldC4KIAkgKi8KIAlhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKLQotCS8q Ci0JICogV2hlbiB0aGVyZSBhcmUgaW5kZXhlZCBhdHRyaWJ1dGVzIG1lbnRpb25lZCBpbiB0 aGUgVVBEQVRFIHRoZW4gd2UgbmVlZAotCSAqIHRvIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNo YW5nZWQgdmFsdWUuICBUaGF0J3MgdGhlCi0JICogIm1vZGlmaWVkX2lkeF9hdHRycyIuCi0J ICovCiAJYXR0cnMgPSBFeGVjQ29tcGFyZVNsb3RBdHRycyhhdHRycywgdHVwZGVzYywgb2xk X3R0cywgbmV3X3R0cyk7CiAKIAlyZXR1cm4gYXR0cnM7CkBAIC0yNTEzLDggKzI1MTgsOCBA QCBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWls ZWQ7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAotCS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5k ZXhlZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcgaW5kZXggZW50cmllcyAqLwotCUJp dG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CisJLyogUmVzZXQgYW55IHN0 YXRlIGxlZnQgb3ZlciBmcm9tIGEgcHJldmlvdXMgY2FsbCAqLworCXVwZGF0ZUN4dC0+bW9k aWZpZWRfYXR0cnMgPSBOVUxMOwogCiAJdXBkYXRlQ3h0LT5jcm9zc1BhcnRVcGRhdGUgPSBm YWxzZTsKIApAQCAtMjYzOCw3ICsyNjQzLDggQEAgbHJlcGxhY2U6CiAJICogd2Ugd2lsbCBv dmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IGhlYXBfbW9kaWZ5X3R1 cGxlKCkKIAkgKiB3aGljaCBhcmUgbm90IGtub3duIHRvIEV4ZWNHZXRVcGRhdGVkQ29scygp LgogCSAqLwotCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0 dHJzKHJlc3VsdFJlbEluZm8sIG9sZFNsb3QsIHNsb3QpOworCXVwZGF0ZUN4dC0+bW9kaWZp ZWRfYXR0cnMgPQorCQlFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZv LCBvbGRTbG90LCBzbG90KTsKIAogCS8qCiAJICogQ2FsbCBpbnRvIHRoZSB0YWJsZSBBTSB0 byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCkBAIC0yNjQ5LDYgKzI2NTUsOCBAQCBscmVwbGFj ZToKIAkgKiBmb3IgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IHVwZGF0ZXMgaW4gdHJhbnNhY3Rp b24tc25hcHNob3QgbW9kZQogCSAqIHRyYW5zYWN0aW9ucy4KIAkgKi8KKwlBc3NlcnQoIWJt c19pc19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsCisJCQkJCQkgIHVwZGF0 ZUN4dC0+bW9kaWZpZWRfYXR0cnMpKTsKIAlyZXN1bHQgPSB0YWJsZV90dXBsZV91cGRhdGUo cmVzdWx0UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBzbG90LAogCQkJCQkJCQllc3RhdGUtPmVz X291dHB1dF9jaWQsCiAJCQkJCQkJCTAsCkBAIC0yNjU2LDggKzI2NjQsNyBAQCBscmVwbGFj ZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQl0 cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZkLCAm dXBkYXRlQ3h0LT5sb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJ CQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKKwkJCQkJCQkJJnVwZGF0ZUN4dC0+ bW9kaWZpZWRfYXR0cnMpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI2NzgsMTQgKzI2 ODUsMjYgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCUxpc3QJICAgKnJlY2hlY2tJbmRleGVz ID0gTklMOwogCiAJLyogaW5zZXJ0IGluZGV4IGVudHJpZXMgZm9yIHR1cGxlIGlmIG5lY2Vz c2FyeSAqLwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBk YXRlQ3h0LT51cGRhdGVJbmRleGVzICE9IFRVX05vbmUpKQorCWlmIChyZXN1bHRSZWxJbmZv LT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkhYm1zX2lzX2VtcHR5KHVwZGF0ZUN4dC0+bW9k aWZpZWRfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9IEVJSVRfSVNfVVBEQVRFOwor CQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRh dGVBbGxJbmRleGVzLAorCQkJCQkJICB1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKTsKKwor CQkvKgorCQkgKiBQb3B1bGF0ZSBwZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgYmVmb3Jl IGluc2VydGluZy4gIFdoZW4gdGhlIEFNCisJCSAqIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBu ZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJpYnV0ZSBwcmVzZW50KQorCQkgKiBldmVyeSBp bmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5OyBmb3IgYSBIT1QgdXBkYXRlIG9ubHkgdGhvc2Ug d2hvc2UKKwkJICogYXR0cmlidXRlcyBvdmVybGFwIHRoZSBtb2RpZmllZCBzZXQgZG8uCisJ CSAqLworCQlFeGVjU2V0SW5kZXhVbmNoYW5nZWQocmVzdWx0UmVsSW5mbywgdXBkYXRlQ3h0 LT5tb2RpZmllZF9hdHRycyk7CiAKLQkJaWYgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9 PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsK IAkJcmVjaGVja0luZGV4ZXMgPSBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMocmVzdWx0UmVsSW5m bywgY29udGV4dC0+ZXN0YXRlLAotCQkJCQkJCQkJCQkgICBmbGFncywgc2xvdCwgTklMLAor CQkJCQkJCQkJCQkgICBFSUlUX0lTX1VQREFURSB8CisJCQkJCQkJCQkJCSAgIChhbGxfaW5k ZXhlcyA/CisJCQkJCQkJCQkJCQkwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCisJCQkJCQkJ CQkJCSAgIHNsb3QsIE5JTCwKIAkJCQkJCQkJCQkJICAgTlVMTCk7CiAJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L21ha2VmdW5jcy5jCmluZGV4IDQwYjA5OTU4YWMyLi5mMDUwYzA4OGQyOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMKQEAgLTg0NSw4ICs4NDUsNiBAQCBtYWtlSW5kZXhJbmZvKGludCBu dW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25z LAogCW4tPmlpX1VuaXF1ZSA9IHVuaXF1ZTsKIAluLT5paV9OdWxsc05vdERpc3RpbmN0ID0g bnVsbHNfbm90X2Rpc3RpbmN0OwogCW4tPmlpX1JlYWR5Rm9ySW5zZXJ0cyA9IGlzcmVhZHk7 Ci0Jbi0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNlOwotCW4tPmlpX0luZGV4VW5jaGFu Z2VkID0gZmFsc2U7CiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+aWlf U3VtbWFyaXppbmcgPSBzdW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3 aXRob3V0b3ZlcmxhcHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCmluZGV4IDA0ZjJlYjIxZDBiLi44MDVlMzQ4OTk1NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTM4NCwx MSArMzg0LDE3IEBAIHBnc3RhdF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBn U3RhdF9Db3VudGVyIG4pCiAKIC8qCiAgKiBjb3VudCBhIHR1cGxlIHVwZGF0ZQorICoKKyAq IGhvdCAgICAgIC0tIHRoZSB1cGRhdGUgd2FzIGEgaGVhcC1vbmx5IHR1cGxlIChjbGFzc2lj IEhPVCBvciBIT1QtaW5kZXhlZCkKKyAqIGhvdF9pbmRleGVkIC0tIHRoZSB1cGRhdGUgd2Fz IGEgSE9ULWluZGV4ZWQgdXBkYXRlLCBhIHN1YmNhc2Ugb2YKKyAqICAgICAgICAgICAgICAg IGhvdD10cnVlOyBob3RfaW5kZXhlZCBpbXBsaWVzIGhvdAorICogbmV3cGFnZSAgLS0gdGhl IG5ldyB0dXBsZSB3ZW50IHRvIGEgZGlmZmVyZW50IGJ1ZmZlciB0aGFuIHRoZSBvbGQgb25l CiAgKi8KIHZvaWQKLXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWwsIGJv b2wgaG90LCBib29sIG5ld3BhZ2UpCitwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhlZCwgYm9vbCBuZXdwYWdlKQogewog CUFzc2VydCghKGhvdCAmJiBuZXdwYWdlKSk7CisJQXNzZXJ0KCEoaG90X2luZGV4ZWQgJiYg IWhvdCkpOwogCiAJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkKIAl7 CkBAIC0zOTgsMTEgKzQwNCwxNyBAQCBwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKQogCQlwZ3N0YXRfaW5mby0+dHJhbnMt PnR1cGxlc191cGRhdGVkKys7CiAKIAkJLyoKLQkJICogdHVwbGVzX2hvdF91cGRhdGVkIGFu ZCB0dXBsZXNfbmV3cGFnZV91cGRhdGVkIGNvdW50ZXJzIGFyZQotCQkgKiBub250cmFuc2Fj dGlvbmFsLCBzbyBqdXN0IGFkdmFuY2UgdGhlbQorCQkgKiB0dXBsZXNfaG90X3VwZGF0ZWQs IHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkLCBhbmQKKwkJICogdHVwbGVzX25ld3BhZ2Vf dXBkYXRlZCBjb3VudGVycyBhcmUgbm9udHJhbnNhY3Rpb25hbCwgc28ganVzdAorCQkgKiBh ZHZhbmNlIHRoZW0uICB0dXBsZXNfc2l1IGlzIGNvdW50ZWQgaW4gKmFkZGl0aW9uKiB0byB0 dXBsZXNfaG90OgorCQkgKiBldmVyeSBob3QtaW5kZXhlZCB1cGRhdGUgaXMgYWxzbyBhIEhP VCB1cGRhdGUuCiAJCSAqLwogCQlpZiAoaG90KQorCQl7CiAJCQlwZ3N0YXRfaW5mby0+Y291 bnRzLnR1cGxlc19ob3RfdXBkYXRlZCsrOworCQkJaWYgKGhvdF9pbmRleGVkKQorCQkJCXBn c3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQrKzsKKwkJfQog CQllbHNlIGlmIChuZXdwYWdlKQogCQkJcGdzdGF0X2luZm8tPmNvdW50cy50dXBsZXNfbmV3 cGFnZV91cGRhdGVkKys7CiAJfQpAQCAtODU0LDcgKzg2NiwxMCBAQCBwZ3N0YXRfcmVsYXRp b25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQog CXRhYmVudHJ5LT50dXBsZXNfdXBkYXRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfdXBk YXRlZDsKIAl0YWJlbnRyeS0+dHVwbGVzX2RlbGV0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVw bGVzX2RlbGV0ZWQ7CiAJdGFiZW50cnktPnR1cGxlc19ob3RfdXBkYXRlZCArPSBsc3RhdHMt PmNvdW50cy50dXBsZXNfaG90X3VwZGF0ZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5k ZXhlZF91cGRhdGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhlZF91cGRh dGVkOwogCXRhYmVudHJ5LT50dXBsZXNfbmV3cGFnZV91cGRhdGVkICs9IGxzdGF0cy0+Y291 bnRzLnR1cGxlc19uZXdwYWdlX3VwZGF0ZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5k ZXhlZF91cGRfc2tpcHBlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRf dXBkX3NraXBwZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hl ZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ7CiAK IAkvKgogCSAqIElmIHRhYmxlIHdhcyB0cnVuY2F0ZWQvZHJvcHBlZCwgZmlyc3QgcmVzZXQg dGhlIGxpdmUvZGVhZCBjb3VudGVycy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CmluZGV4IDA1NWY3NTcxMDdmLi43ZDRkYjMyZmQzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCkBAIC0xNTg2LDYgKzE1ODYsNyBAQCBSZWxhdGlvbkluaXRJbmRleEFj Y2Vzc0luZm8oUmVsYXRpb24gcmVsYXRpb24pCiAJICovCiAJcmVsYXRpb24tPnJkX2luZGV4 cHJzID0gTklMOwogCXJlbGF0aW9uLT5yZF9pbmRwcmVkID0gTklMOworCXJlbGF0aW9uLT5y ZF9pbmRhdHRyID0gTlVMTDsKIAlyZWxhdGlvbi0+cmRfZXhjbG9wcyA9IE5VTEw7CiAJcmVs YXRpb24tPnJkX2V4Y2xwcm9jcyA9IE5VTEw7CiAJcmVsYXRpb24tPnJkX2V4Y2xzdHJhdHMg PSBOVUxMOwpAQCAtMjQ4NCw2ICsyNDg1LDcgQEAgUmVsYXRpb25EZXN0cm95UmVsYXRpb24o UmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CisJYm1zX2Zy ZWUocmVsYXRpb24tPnJkX2V4cHJpbmRleGF0dHIpOwogCWlmIChyZWxhdGlvbi0+cmRfcHVi ZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRlc2MpOwogCWlmIChyZWxhdGlvbi0+ cmRfb3B0aW9ucykKQEAgLTUyNzUsNiArNTI3NywxMDggQEAgUmVsYXRpb25HZXRJbmRleFBy ZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgor ICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMgLS0gcGFsbG9jJ2QgQml0bWFwc2V0IG9mIGhl YXAgYXR0cnMgdGhpcyBpbmRleAorICogcmVmZXJlbmNlcy4KKyAqCisgKiBJbmNsdWRlcyBh dHRyaWJ1dGVzIHVzZWQgYXMgc2ltcGxlIGtleSBjb2x1bW5zLCBJTkNMVURFIGNvbHVtbnMs IGluc2lkZQorICogZXhwcmVzc2lvbiBjb2x1bW5zLCBhbmQgaW5zaWRlIHRoZSBwYXJ0aWFs LWluZGV4IHByZWRpY2F0ZS4gIEF0dHJpYnV0ZQorICogbnVtYmVycyB1c2UgdGhlIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgb2Zmc2V0IGNvbnZlbnRpb24gc28KKyAq IHRoYXQgc3lzdGVtIGF0dHJpYnV0ZXMgYXJlIHJlcHJlc2VudGFibGUgYWxvbmdzaWRlIHVz ZXIgYXR0cmlidXRlcy4KKyAqCisgKiBUaGUgZnVuY3Rpb24gYnVpbGRzIHVwIHRoZSBiaXRt YXAgZnJvbToKKyAqICAgLSByZF9pbmRleC0+aW5ka2V5ICAgICAgICAgICAoa2V5cyArIElO Q0xVREUpCisgKiAgIC0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zIChwYXJzZWQgZXhw cmVzc2lvbiB0cmVlcywgYWxyZWFkeSBjYWNoZWQpCisgKiAgIC0gUmVsYXRpb25HZXRJbmRl eFByZWRpY2F0ZSAgIChwYXJzZWQgcHJlZGljYXRlIHRyZWUsIGFscmVhZHkgY2FjaGVkKQor ICogYW5kIGNhY2hlcyBhIGNvcHkgaW4gcmRfaW5kZXhlZGF0dHIsIHdoaWNoIGxpdmVzIGlu IHJkX2luZGV4Y3h0LgorICoKKyAqIFRoZSByZXR1cm5lZCBCaXRtYXBzZXQgaXMgYWxsb2Nh dGVkIGluIHRoZSBjYWxsZXIncyBjdXJyZW50IG1lbW9yeQorICogY29udGV4dDsgdGhlIGNh bGxlciBvd25zIGl0IGFuZCBtdXN0IGJtc19mcmVlIHdoZW4gZG9uZS4gIFdlIG5ldmVyIGhh bmQKKyAqIG91dCBhIGJvcnJvd2VkIHBvaW50ZXIgdG8gdGhlIGNhY2hlZCBjb3B5IGJlY2F1 c2UgcmVsY2FjaGUgaW52YWxpZGF0aW9uCisgKiBjYW4gcmVidWlsZCByZF9pbmRleGN4dCBp biBwbGFjZSBldmVuIHdoaWxlIGEgcmVmY291bnQgaXMgaGVsZC4KKyAqCisgKiBDYWxsZXIg bXVzdCBob2xkIGFuIG9wZW4gbG9jayBvbiB0aGUgaW5kZXggcmVsYXRpb24uCisgKi8KK0Jp dG1hcHNldCAqCitSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhSZWxhdGlvbiBpbmRleFJlbCkK K3sKKwlCaXRtYXBzZXQgICphdHRycyA9IE5VTEw7CisJRm9ybV9wZ19pbmRleCBpbmRleFN0 cnVjdDsKKwlMaXN0CSAgICppbmRleHByczsKKwlMaXN0CSAgICppbmRwcmVkOworCU1lbW9y eUNvbnRleHQgb2xkY3h0OworCisJQXNzZXJ0KGluZGV4UmVsLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9JTkRFWCB8fAorCQkgICBpbmRleFJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpOworCisJLyogRmFzdCBwYXRoOiByZXR1cm4g YSBjb3B5IG9mIHRoZSBjYWNoZWQgYml0bWFwLiAqLworCWlmIChpbmRleFJlbC0+cmRfaW5k YXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gYm1zX2NvcHkoaW5kZXhSZWwtPnJkX2luZGF0dHIp OworCisJaW5kZXhTdHJ1Y3QgPSBpbmRleFJlbC0+cmRfaW5kZXg7CisKKwkvKgorCSAqIER1 cmluZyB2ZXJ5IGVhcmx5IGJvb3RzdHJhcCByZF9pbmRleHR1cGxlIG1heSBub3QgYmUgcG9w dWxhdGVkIHlldC4gSW4KKwkgKiB0aGF0IGNhc2Ugd2UgZmFsbCBiYWNrIHRvIGp1c3QgdGhl IGtleSBjb2x1bW5zIHdpdGhvdXQgY2FjaGluZy4KKwkgKi8KKwlpZiAoaW5kZXhSZWwtPnJk X2luZGV4dHVwbGUgPT0gTlVMTCkKKwl7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhT dHJ1Y3QtPmluZG5hdHRzOyBpKyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGlu ZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQlpZiAoYXR0cm51bSAhPSAwKQor CQkJCWF0dHJzID0gYm1zX2FkZF9tZW1iZXIoYXR0cnMsCisJCQkJCQkJCQkgICBhdHRybnVt IC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCX0KKwkJcmV0dXJu IGF0dHJzOworCX0KKworCS8qCisJICogS2V5IGNvbHVtbnMgYW5kIElOQ0xVREUgKGNvdmVy aW5nKSBjb2x1bW5zLiAgSU5DTFVERSBjb2x1bW5zIG11c3QgYmUKKwkgKiBjb3VudGVkOiB0 aGVpciB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgaW5kZXggbGVhZiBhbmQgc2VydmVkIGJ5 CisJICogaW5kZXgtb25seSBzY2Fucywgc28gYW4gdXBkYXRlIHRoYXQgY2hhbmdlcyBhbiBJ TkNMVURFIGNvbHVtbiBtdXN0CisJICogaW5zZXJ0IGEgZnJlc2ggaW5kZXggZW50cnkgKG9y IGJlIGRpc3F1YWxpZmllZCBmcm9tIHN0YXlpbmcKKwkgKiBIT1QtaW5kZXhlZCkgZXhhY3Rs eSBhcyBmb3IgYSBrZXkgY29sdW1uLiAgVGhpcyBtYXRjaGVzIHRoZSBoZWFwLWxldmVsCisJ ICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoLi4uLCBJTkRFWF9BVFRSX0JJVE1BUF9J TkRFWEVEKSwgd2hpY2ggYWxzbworCSAqIHVuaW9ucyBhbGwgaW5kbmF0dHMuICBFeHByZXNz aW9uIGFuZCBwYXJ0aWFsLXByZWRpY2F0ZSBjb2x1bW5zIGFyZQorCSAqIGFkZGVkIGJlbG93 LgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhTdHJ1Y3QtPmluZG5hdHRzOyBp KyspCisJeworCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZh bHVlc1tpXTsKKworCQkvKiBhdHRudW0gMCBtZWFucyAiZXhwcmVzc2lvbiI7IHRob3NlIGF0 dHJzIGFyZSBwaWNrZWQgdXAgYmVsb3cuICovCisJCWlmIChhdHRybnVtICE9IDApCisJCQlh dHRycyA9IGJtc19hZGRfbWVtYmVyKGF0dHJzLAorCQkJCQkJCQkgICBhdHRybnVtIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCisJLyogRXhwcmVzc2lv biBjb2x1bW5zICh2aWEgYWxyZWFkeS1wYXJzZWQgdHJlZSwgcmV1c2luZyByZWxjYWNoZSku ICovCisJaW5kZXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWwp OworCWlmIChpbmRleHBycyAhPSBOSUwpCisJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlu ZGV4cHJzLCAxLCAmYXR0cnMpOworCisJLyogUGFydGlhbC1pbmRleCBwcmVkaWNhdGUgY29s dW1ucy4gKi8KKwlpbmRwcmVkID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpbmRleFJl bCk7CisJaWYgKGluZHByZWQgIT0gTklMKQorCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBp bmRwcmVkLCAxLCAmYXR0cnMpOworCisJLyoKKwkgKiBDYWNoZSBhIGNvcHkgaW5zaWRlIHJk X2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgYXJlIGNoZWFwLiAgVGhlCisJICogY2Fj aGVkIGJpdG1hcCBpcyBmcmVlZCBhbG9uZyB3aXRoIHJkX2luZGV4Y3h0IG9uIHJlbGNhY2hl IHJlYnVpbGQsIHNvCisJICogaXQncyBzYWZlIHRvIHN0YXNoIGhlcmUuCisJICovCisJaWYg KGluZGV4UmVsLT5yZF9pbmRleGN4dCAhPSBOVUxMKQorCXsKKwkJb2xkY3h0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGluZGV4UmVsLT5yZF9pbmRleGN4dCk7CisJCWluZGV4UmVsLT5y ZF9pbmRhdHRyID0gYm1zX2NvcHkoYXR0cnMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKKwl9CisKKwlyZXR1cm4gYXR0cnM7Cit9CisKIC8qCiAgKiBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgaW5kZXggYXR0cmlidXRlIG51 bWJlcnMKICAqCkBAIC01MzEzLDYgKzU0MTcsNyBAQCBCaXRtYXBzZXQgKgogUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtp bmQgYXR0cktpbmQpCiB7CiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVtbnMg aW4gdW5pcXVlIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpleHByaW5kZXhhdHRyczsgLyog Y29sdW1ucyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Npb24gaW5kZXhlcyAqLwogCUJpdG1hcHNl dCAgKnBraW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcHJpbWFyeSBpbmRleCAqLwog CUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcmVwbGljYSBp ZGVudGl0eSAqLwogCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyByZWZl cmVuY2VkIGJ5IGluZGV4ZXMgKi8KQEAgLTUzMzksNiArNTQ0NCw4IEBAIFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5k IGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJCXJldHVy biBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCQkJY2FzZSBJTkRF WF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNfY29weShyZWxhdGlv bi0+cmRfZXhwcmluZGV4YXR0cik7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1 bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQl9CkBAIC01MzgzLDYgKzU0OTAs NyBAQCByZXN0YXJ0OgogCWlkaW5kZXhhdHRycyA9IE5VTEw7CiAJaW5kZXhlZGF0dHJzID0g TlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOworCWV4cHJpbmRleGF0dHJzID0gTlVM TDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0g bGZpcnN0X29pZChsKTsKQEAgLTU0ODcsNiArNTU5NSwyOCBAQCByZXN0YXJ0OgogCQkvKiBD b2xsZWN0IGFsbCBhdHRyaWJ1dGVzIGluIHRoZSBpbmRleCBwcmVkaWNhdGUsIHRvbyAqLwog CQlwdWxsX3ZhcmF0dG5vcyhpbmRleFByZWRpY2F0ZSwgMSwgYXR0cnMpOwogCisJCS8qCisJ CSAqIElmIHRoaXMgaW5kZXggZXZhbHVhdGVzIGFuIGV4cHJlc3Npb24sIHJlY29yZCBldmVy eSBoZWFwIGF0dHJpYnV0ZQorCQkgKiBpdCByZWZlcmVuY2VzIChrZXkgY29sdW1ucywgZXhw cmVzc2lvbiB2YXJzLCBwcmVkaWNhdGUgdmFycykgaW4KKwkJICogZXhwcmluZGV4YXR0cnMu ICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgZGlzcXVhbGlmaWVzIHRoZQorCQkgKiBIT1Qt aW5kZXhlZCBwYXRoIGZvciBhbiBVUERBVEUgdGhhdCB0b3VjaGVzIG9uZSBvZiB0aGVzZSwg YmVjYXVzZQorCQkgKiBleHByZXNzaW9uLWF3YXJlIHNlbGVjdGl2ZSBpbmRleCBtYWludGVu YW5jZSBpcyBub3QgaW1wbGVtZW50ZWQKKwkJICogeWV0LgorCQkgKi8KKwkJaWYgKGluZGV4 RXhwcmVzc2lvbnMgIT0gTlVMTCkKKwkJeworCQkJZm9yIChpID0gMDsgaSA8IGluZGV4RGVz Yy0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQl7CisJCQkJaW50CQkJYXR0cm51bSA9 IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCQlpZiAoYXR0 cm51bSAhPSAwKQorCQkJCQlleHByaW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKGV4cHJp bmRleGF0dHJzLAorCQkJCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFw QXR0cmlidXRlTnVtYmVyKTsKKwkJCX0KKwkJCXB1bGxfdmFyYXR0bm9zKGluZGV4RXhwcmVz c2lvbnMsIDEsICZleHByaW5kZXhhdHRycyk7CisJCQlwdWxsX3ZhcmF0dG5vcyhpbmRleFBy ZWRpY2F0ZSwgMSwgJmV4cHJpbmRleGF0dHJzKTsKKwkJfQorCiAJCWluZGV4X2Nsb3NlKGlu ZGV4RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9CiAKQEAgLTU1MTUsMTQgKzU2NDUsMjcg QEAgcmVzdGFydDoKIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsKIAkJYm1zX2ZyZWUoaW5k ZXhlZGF0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtbWFyaXplZGF0dHJzKTsKKwkJYm1zX2ZyZWUo ZXhwcmluZGV4YXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKIAkvKgotCSAqIFJl Y29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJpemlu ZyBpbmRleGVzLiBUaGVuCi0JICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhlZCBh dHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCi0JICogYXR0cmlidXRlcy4KKwkg KiBSZWNvcmQgd2hpY2ggYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBvbmx5IGJ5IHN1bW1h cml6aW5nIGluZGV4ZXMsIHNvCisJICogSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCBy ZXBvcnRzIGNvbHVtbnMgd2hvc2Ugc29sZSBpbmRleGVzIGFyZQorCSAqIHN1bW1hcml6aW5n IG9uZXMsIHRoZW4gZm9sZCB0aG9zZSBjb2x1bW5zIGludG8gaW5kZXhlZGF0dHJzIGFzIHdl bGwuCisJICoKKwkgKiBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEIG11c3QgaW5jbHVkZSBz dW1tYXJpemluZy1pbmRleCBjb2x1bW5zIGZvcgorCSAqIHRoZSBIT1QtaW5kZXhlZCB3cml0 ZSBwYXRoOiBpdCBjb21wYXJlcyB0aGUgb2xkIGFuZCBuZXcgdHVwbGVzIG92ZXIKKwkgKiB0 aGlzIGJpdG1hcCB0byBidWlsZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmli dXRlcywgYW5kIG9ubHkKKwkgKiBtYWludGFpbnMgaW5kZXhlcyB3aGVuIHRoYXQgc2V0IGlz IG5vbi1lbXB0eSAob3IgdGhlIHVwZGF0ZSBpcworCSAqIG5vbi1IT1QpLiAgQSBjaGFuZ2Ug dG8gYSBjb2x1bW4gaW5kZXhlZCBvbmx5IGJ5IGEgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBt dXN0IHRoZXJlZm9yZSBhcHBlYXIgaW4gdGhlIGJpdG1hcCBzbyB0aGUgc3VtbWFyaXppbmcg aW5kZXggZ2V0cyBpdHMKKwkgKiBibG9jayBzdW1tYXJ5IHJlZnJlc2hlZC4gIEhlYXBVcGRh dGVIb3RBbGxvd2FibGUncyBhbGxfc3VtbWFyaXppbmcKKwkgKiBjaGVjayBzdGlsbCBrZWVw cyBzdWNoIGFuIHVwZGF0ZSBvbiB0aGUgY2xhc3NpYy1IT1QgcGF0aCAoaXQgc3RheXMKKwkg KiBjbGFzc2ljIEhPVCwgc2luY2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCAtLSBz dW1tYXJpemluZy1vbmx5IC0tCisJICogaXMgYSBzdXBlcnNldCBvZiB0aGUgbW9kaWZpZWQg YXR0cmlidXRlcyksIGFuZCB0aGUgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBpbnNlcnRzIHVu Y29uZGl0aW9uYWxseSB2aWEgaXRzIGlpX1N1bW1hcml6aW5nIGZsYWcuCiAJICovCiAJc3Vt bWFyaXplZGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKHN1bW1hcml6ZWRhdHRycywgaW5kZXhl ZGF0dHJzKTsKIAlpbmRleGVkYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW5kZXhlZGF0dHJz LCBzdW1tYXJpemVkYXR0cnMpOwpAQCAtNTUzOSw2ICs1NjgyLDggQEAgcmVzdGFydDoKIAly ZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9uLT5y ZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gTlVM TDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0cik7CisJcmVsYXRpb24t PnJkX2V4cHJpbmRleGF0dHIgPSBOVUxMOwogCiAJLyoKIAkgKiBOb3cgc2F2ZSBjb3BpZXMg b2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9uYWxs eQpAQCAtNTU1Myw2ICs1Njk4LDcgQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaWRhdHRy ID0gYm1zX2NvcHkoaWRpbmRleGF0dHJzKTsKIAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIg PSBibXNfY29weShpbmRleGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0 ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CisJcmVsYXRpb24tPnJkX2V4cHJpbmRl eGF0dHIgPSBibXNfY29weShleHByaW5kZXhhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJz dmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBAIC01 NTY5LDYgKzU3MTUsNzIgQEAgcmVzdGFydDoKIAkJCXJldHVybiBpbmRleGVkYXR0cnM7CiAJ CWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1tYXJp emVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJCXJl dHVybiBleHByaW5kZXhhdHRyczsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmtu b3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOworCQkJcmV0dXJuIE5VTEw7CisJfQorfQor CisvKgorICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkgLS0gYm9ycm93aW5n IHZhcmlhbnQgb2YKKyAqCQlSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcAorICoKKyAqIFJl dHVybnMgYSBwb2ludGVyIHRvIHRoZSByZWxjYWNoZS1vd25lZCBiaXRtYXAgZm9yIHRoZSBn aXZlbiBhdHRyS2luZAorICogd2l0aG91dCBtYWtpbmcgYSBkZWZlbnNpdmUgY29weS4gIFRo aXMgaXMgYSBob3QtcGF0aCBvcHRpbWl6YXRpb24gZm9yCisgKiByZWFkLW9ubHkgY2FsbGVy cyB0aGF0IHBlcmZvcm0gc2V0IG9wZXJhdGlvbnMgbGlrZSBibXNfb3ZlcmxhcCwKKyAqIGJt c19pc19zdWJzZXQsIGJtc19lcXVhbCwgb3IgYm1zX251bV9tZW1iZXJzIGFuZCBuZXZlciBt dXRhdGUgdGhlCisgKiByZXR1cm5lZCBiaXRtYXAuICBUaGUgcmVzdWx0IGlzIGNvbmNlcHR1 YWxseSBgY29uc3QgQml0bWFwc2V0ICpgOyBjYWxsZXJzCisgKiBtdXN0IG5vdCBwYXNzIGl0 IHRvIGFueXRoaW5nIHRoYXQgY291bGQgZnJlZSBvciBtb2RpZnkgdGhlIHVuZGVybHlpbmcK KyAqIG1lbW9yeSAoZS5nLiwgYm1zX2FkZF9tZW1iZXIsIGJtc19pbnRfbWVtYmVycywgYm1z X2ZyZWUpLgorICoKKyAqIExpZmV0aW1lOiB0aGUgcG9pbnRlciBpcyB2YWxpZCBvbmx5IHVu dGlsIHRoZSBuZXh0IGV2ZW50IHRoYXQgY291bGQKKyAqIHRyaWdnZXIgYSByZWxjYWNoZSBp bnZhbGlkYXRpb24gb24gYHJlbGF0aW9uYC4gIENhbGxlcnMgbXVzdCBub3QgaW52b2tlCisg KiBhbnkgY29kZSB0aGF0IG9wZW5zIGEgcmVsYXRpb24sIHJ1bnMgY2F0YWxvZyBsb29rdXBz LCBvciBvdGhlcndpc2UKKyAqIGFjY2VwdHMgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGJldHdl ZW4gdGhlIGZldGNoIGFuZCB0aGUgbGFzdCB1c2UuCisgKgorICogRm9yIHRoZSBjb21tb24g Y2FzZSB0aGUgcmVsY2FjaGUgZW50cnkncyBhdHRyaWJ1dGUgYml0bWFwcyBhcmUgYWxyZWFk eQorICogY29tcHV0ZWQgKHJkX2F0dHJzdmFsaWQgaXMgdHJ1ZSkuICBXaGVuIHRoZXkgYXJl bid0LCB3ZSBnbyB0aHJvdWdoCisgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCB0byBw b3B1bGF0ZSB0aGUgY2FjaGUgKHdoaWNoIGNvc3RzIG9uZQorICogdGhyb3dhd2F5IGJtc19j b3B5IG9uIGZpcnN0IHVzZSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBjYWNoZWQgcG9pbnRlciBv bgorICogdGhlIHNlY29uZCBwYXNzLiAgVGhlIGZpcnN0LXVzZSBwYXRoIGlzIHJhcmUgYW5k IG5ldmVyIG9uIHRoZSBiZW5jaCBob3QKKyAqIHBhdGgsIHNvIHRoZSBzaW1wbGljaXR5IGlz IHByZWZlcnJlZCBvdmVyIG9wZW4tY29kaW5nIHRoZSBwb3B1bGF0ZS1vbmx5CisgKiB2YXJp YW50LgorICovCitjb25zdCBCaXRtYXBzZXQgKgorUmVsYXRpb25HZXRJbmRleEF0dHJCaXRt YXBOb0NvcHkoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktp bmQpCit7CisJaWYgKCFyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwl7CisJCUJpdG1hcHNl dCAgKnBvcHVsYXRlZDsKKworCQkvKiBQb3B1bGF0ZSByZF8qYXR0ciBmaWVsZHM7IGRpc2Nh cmQgdGhlIHJldHVybmVkIGNvcHkuICovCisJCXBvcHVsYXRlZCA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBhdHRyS2luZCk7CisJCWJtc19mcmVlKHBvcHVsYXRl ZCk7CisKKwkJLyoKKwkJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcCByZXR1cm5zCisJCSAqIE5VTEwgd2l0aG91dCBzZXR0 aW5nIHJkX2F0dHJzdmFsaWQuICBNaXJyb3IgdGhhdCBoZXJlLgorCQkgKi8KKwkJaWYgKCFy ZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwkJCXJldHVybiBOVUxMOworCX0KKworCXN3aXRj aCAoYXR0cktpbmQpCisJeworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0tFWToKKwkJCXJl dHVybiByZWxhdGlvbi0+cmRfa2V5YXR0cjsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9Q UklNQVJZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfcGthdHRyOworCQljYXNlIElO REVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRf aWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1cm4g cmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NV TU1BUklaRUQ6CisJCQlyZXR1cm4gcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyOworCQlj YXNlIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQlyZXR1cm4gcmVsYXRpb24t PnJkX2V4cHJpbmRleGF0dHI7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5rbm93 biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpAQCAtNjUwOCw2 ICs2NzIwLDcgQEAgbG9hZF9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQpCiAJCXJl bC0+cmRfcGFydGNoZWNrY3h0ID0gTlVMTDsKIAkJcmVsLT5yZF9pbmRleHBycyA9IE5JTDsK IAkJcmVsLT5yZF9pbmRwcmVkID0gTklMOworCQlyZWwtPnJkX2luZGF0dHIgPSBOVUxMOwog CQlyZWwtPnJkX2V4Y2xvcHMgPSBOVUxMOwogCQlyZWwtPnJkX2V4Y2xwcm9jcyA9IE5VTEw7 CiAJCXJlbC0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvYW1hcGkuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCmluZGV4IDc5 MjQwMzMzNTMwLi43YWVjMDgzYjhlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKQEAgLTE0LDYgKzE0 LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9jbXB0eXBlLmgiCiAjaW5jbHVkZSAiYWNjZXNz L2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2l0dXAuaCIKICNpbmNsdWRlICJhY2Nlc3Mv c3RyYXRudW0uaCIKICNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVz L3BnX2xpc3QuaCIKQEAgLTI5LDcgKzMwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhQYXRo IEluZGV4UGF0aDsKIC8qIExpa2V3aXNlLCB0aGlzIGZpbGUgc2hvdWxkbid0IGRlcGVuZCBv biBleGVjbm9kZXMuaC4gKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbyBJbmRleEluZm87 CiAKLQogLyoKICAqIFByb3BlcnRpZXMgZm9yIGFtcHJvcGVydHkgQVBJLiAgVGhpcyBsaXN0 IGNvdmVycyBwcm9wZXJ0aWVzIGtub3duIHRvIHRoZQogICogY29yZSBjb2RlLCBidXQgYW4g aW5kZXggQU0gY2FuIGRlZmluZSBpdHMgb3duIHByb3BlcnRpZXMsIGJ5IG1hdGNoaW5nIHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDJkYmZhZDkyMTEzLi4xY2RmODkxMDU1YyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaApAQCAtMzg0LDExICszODQsNDUgQEAgZXh0ZXJuIFRNX1Jlc3Vs dCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICp0aWQsCiAJCQkJCQkJIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQpOwogZXh0 ZXJuIHZvaWQgaGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3Bl Y3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlk KTsKKworLyoKKyAqIEhlYXBVcGRhdGVJbmRleE1vZGUgLS0KKyAqCVRocmVlLXZhbHVlZCBj bGFzc2lmaWNhdGlvbiByZXR1cm5lZCBieSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgdGhh dAorICoJdGVsbHMgaGVhcF91cGRhdGUoKSB3aGV0aGVyIGEgSE9UIHVwZGF0ZSBpcyBwZXJt aXR0ZWQgZm9yIHRoaXMgdHVwbGUgYW5kLAorICoJaWYgc28sIHdoZXRoZXIgdGhlIGluZGV4 ZXMgbWF5IGJlIG1haW50YWluZWQgc2VsZWN0aXZlbHkuCisgKgorICoJSEVBUF9VUERBVEVf QUxMX0lOREVYRVMKKyAqCQlIT1QgaXMgbm90IGFsbG93ZWQ7IHRoZSBuZXcgdHVwbGUgbXVz dCBnbyBvbiBpdHMgb3duIFRJRCBhbmQgZXZlcnkKKyAqCQlpbmRleCByZWNlaXZlcyBhIGZy ZXNoIGVudHJ5LiAgVGhpcyBpcyB0aGUgY2xhc3NpYyBwcmUtSE9ULWluZGV4ZWQKKyAqCQli ZWhhdmlvciBmb3IgdXBkYXRlcyB0aGF0IG1vZGlmeSBhIG5vbi1zdW1tYXJpemluZyBpbmRl eGVkIGF0dHJpYnV0ZS4KKyAqCisgKglIRUFQX0hFQVBfT05MWV9VUERBVEUKKyAqCQlDbGFz c2ljIEhPVCB1cGRhdGU6IG5vIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBj aGFuZ2VkIChvbmx5CisgKgkJc3VtbWFyaXppbmcgb25lcywgaWYgYW55KSwgc28gbm8gaW5k ZXggbmVlZHMgYSBuZXcgZW50cnkuCisgKgorICoJSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBE QVRFCisgKgkJSE9UIHdpdGggc2VsZWN0aXZlIGluZGV4IHVwZGF0ZTogYXQgbGVhc3Qgb25l IG5vbi1zdW1tYXJpemluZyBpbmRleCdzCisgKgkJYXR0cmlidXRlIGNoYW5nZWQsIGJ1dCB0 aGUgbmV3IHR1cGxlIGNhbiBzdGlsbCBqb2luIHRoZSBIT1QgY2hhaW4gb24KKyAqCQl0aGUg c2FtZSBwYWdlOyBvbmx5IHRoZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdlZCBy ZWNlaXZlIGEgbmV3CisgKgkJZW50cnkuICBBcyBmb3IgY2xhc3NpYyBIT1QsIGhlYXBfdXBk YXRlKCkgc3RpbGwgZmFsbHMgYmFjayB0byBhCisgKgkJbm9uLUhPVCB1cGRhdGUgaWYgdGhl IG5ldyB0dXBsZSBkb2VzIG5vdCBmaXQgb24gdGhlIHBhZ2UuCisgKgorICoJQ2FsbGVycyBz aG91bGQgc3BlbGwgdGhlIGV4YWN0IG1vZGUgdGhleSBjYXJlIGFib3V0OyB0aGUgbnVtZXJp YyB2YWx1ZXMKKyAqCWFyZSBub3QgbWVhbmluZ2Z1bCBhcyBhbiBvcmRlcmluZy4KKyAqLwor dHlwZWRlZiBlbnVtIEhlYXBVcGRhdGVJbmRleE1vZGUKK3sKKwlIRUFQX1VQREFURV9BTExf SU5ERVhFUyA9IDAsCisJSEVBUF9IRUFQX09OTFlfVVBEQVRFID0gMSwKKwlIRUFQX1NFTEVD VElWRV9JTkRFWF9VUERBVEUgPSAyLAorfSBIZWFwVXBkYXRlSW5kZXhNb2RlOworCiBleHRl cm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKm90aWQsCiAJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsIENvbW1hbmRJ ZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCQkJCSBTbmFwc2hvdCBjcm9zc2NoZWNrLCBi b29sIHdhaXQsCiAJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVw bGVNb2RlIGxvY2ttb2RlLAotCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lk eF9hdHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCk7CisJCQkJCQkJIGNvbnN0IEJpdG1h cHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCSBIZWFwVXBkYXRlSW5kZXhNb2Rl IGhvdF9tb2RlKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9u IHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBM b2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAogCQkJCQkJ CQkgYm9vbCBmb2xsb3dfdXBkYXRlcywKQEAgLTQyMyw3ICs0NTcsNyBAQCBleHRlcm4gYm9v bCBoZWFwX3R1cGxlX25lZWRzX2V2ZW50dWFsX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVw bGUpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0ZXJuIHZv aWQgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsCi0JCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIGJvb2wg KnVwZGF0ZV9hbGxfaW5kZXhlcyk7CiAKIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5k ZXhfZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhE ZWxldGVPcCAqZGVsc3RhdGUpOwpAQCAtNDM0LDcgKzQ2OCwxMCBAQCBleHRlcm4gdm9pZCBo ZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2Nhbik7CiBl eHRlcm4gdm9pZCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURhdGEg KnNjYW4pOwogZXh0ZXJuIGJvb2wgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRl ciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkgICBCdWZmZXIgYnVmZmVyLCBT bmFwc2hvdCBzbmFwc2hvdCwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKLQkJCQkJCQkJICAgYm9v bCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCk7CisJCQkJCQkJCSAgIGJvb2wgKmFsbF9k ZWFkLCBib29sIGZpcnN0X2NhbGwsCisJCQkJCQkJCSAgIGJvb2wgKmhvdF9pbmRleGVkX3Jl Y2hlY2ssCisJCQkJCQkJCSAgIHVpbnQ4ICpjcm9zc2VkX2JpdG1hcCwKKwkJCQkJCQkJICAg Ym9vbCAqcHJlZml4X2FsbF9kZWFkKTsKIGV4dGVybiBib29sIGhlYXBhbV9pbmRleF9mZXRj aF90dXBsZShzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJCQkJCQkJCSBJ dGVtUG9pbnRlciB0aWQsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIFR1cGxlVGFi bGVTbG90ICpzbG90LCBib29sICpoZWFwX2NvbnRpbnVlLApAQCAtNDY0LDggKzUwMSw5IEBA IGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBp bnQgbnVudXNlZCk7CiAKIC8qIGluIGhlYXAvaGVhcGFtLmMgKi8KLWV4dGVybiBib29sIEhl YXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNl dCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkJCQkgICBib29sICpzdW1tYXJpemVkX29u bHkpOworCitleHRlcm4gSGVhcFVwZGF0ZUluZGV4TW9kZSBIZWFwVXBkYXRlSG90QWxsb3dh YmxlKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMpOwogZXh0ZXJuIExvY2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURl dGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkJIGNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK aW5kZXggMmVhMDZhNjdhNjMuLmZlNDQ2OTE3OGFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK QEAgLTEzNCw2ICsxMzQsNDUgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0 YQogCSAqIHBlcm1pdHRlZC4KIAkgKi8KIAl1aW50MzIJCWZsYWdzOworCisJLyoKKwkgKiBT aWRlIGNoYW5uZWwgZm9yIHRhYmxlIEFNcyB3aG9zZSB1cGRhdGUgY2hhaW5zIGNhbiByZWFj aCBhIGRpZmZlcmVudAorCSAqIHNldCBvZiBpbmRleC1rZXkgdmFsdWVzIHRoYW4gdGhlIGFy cml2aW5nIGluZGV4IGVudHJ5IHJlY29yZGVkIChoZWFwJ3MKKwkgKiBIT1Qtc2VsZWN0aXZl bHktdXBkYXRlZCBjaGFpbnMpLiAgU2V0IHRydWUgYnkgdGhlIHRhYmxlIEFNIHdoZW4gdGhl CisJICogd2FsayB0byB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9UL1NJVSBob3AgYWZ0 ZXIgdGhlIGVudHJ5J3Mgb3duCisJICogdHVwbGUsIG1lYW5pbmcgdGhlIGFycml2aW5nIGVu dHJ5J3Mgc3RvcmVkIGtleSBtYXkgbm8gbG9uZ2VyIG1hdGNoIHRoZQorCSAqIGxpdmUgdHVw bGUgYW5kIHRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgbXVzdCByZWNoZWNrIGl0LiAgTGVmdCBm YWxzZSB3aGVuCisJICogbm8gc3VjaCBob3Agd2FzIGNyb3NzZWQgKHRoZSBlbnRyeSBpcyBk ZWZpbml0ZWx5IGN1cnJlbnQpLCBhbmQgYWx3YXlzCisJICogZmFsc2UgZm9yIEFNcyB3aXRo b3V0IHN1Y2ggY2hhaW5zLgorCSAqLworCWJvb2wJCXhzX2hvdF9pbmRleGVkX3JlY2hlY2s7 CisKKwkvKgorCSAqIENvbXBhbmlvbiB0byB4c19ob3RfaW5kZXhlZF9yZWNoZWNrLiAgeHNf aG90X2luZGV4ZWRfY3Jvc3NlZCBpcyB0aGUKKwkgKiB1bmlvbiBvZiB0aGUgcGVyLWhvcCBt b2RpZmllZC1hdHRycyBiaXRtYXBzIHRoZSB3YWxrIGNyb3NzZWQgYWZ0ZXIgdGhlCisJICog ZW50cnkncyBvd24gdHVwbGUsIG92ZXIgaGVhcCBhdHRyaWJ1dGUgbnVtYmVycyAoYml0IGF0 dG51bS0xIGZvciBhCisJICogMS1iYXNlZCBhdHRudW0pLiAgVGhlIGluZGV4LWFjY2VzcyBs YXllciB0ZXN0cyBpdCBhZ2FpbnN0IHRoZSBhcnJpdmluZworCSAqIGluZGV4J3Mga2V5IGNv bHVtbnMgdG8ganVkZ2Ugc3RhbGVuZXNzIHdpdGhvdXQgYSBrZXkgY29tcGFyaXNvbjogYW55 CisJICogb3ZlcmxhcCBtZWFucyBhIGNyb3NzZWQgaG9wIGNoYW5nZWQgb25lIG9mIHRoZSBp bmRleCdzIGlucHV0cywgc28gdGhlCisJICogZW50cnkgaXMgc3RhbGUuICBUaGUgdW5pb24g aXMgY29tcGxldGUgKGV2ZXJ5IGNyb3NzZWQgbGl2ZSBob3AgYW5kCisJICogY29sbGFwc2Ut c3Vydml2b3Igc3R1YiBjb250cmlidXRlcyBpdHMgYml0bWFwLCBhbmQgY29sbGFwc2Ugb25s eQorCSAqIHJlY2xhaW1zIG1lbWJlcnMgc3Vic3VtZWQgYnkgc3Vydml2aW5nIGhvcHMpLCBz byBkaXNqb2ludG5lc3MgcmVsaWFibHkKKwkgKiBtZWFucyBmcmVzaC4gIEl0IGlzIE5VTEwg Zm9yIEFNcyB3aXRob3V0IHN1Y2ggY2hhaW5zIGFuZCBpcyBzaXplZCBieQorCSAqIHRoZSB0 YWJsZSBBTSBmb3IgdGhlIGhlYXAgcmVsYXRpb24ncyBjb2x1bW4gY291bnQuCisJICovCisJ dWludDgJICAgKnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQ7CisKKwkvKgorCSAqIFNldCBieSB0 aGUgdGFibGUgQU0gd2hlbiBpdCByZXR1cm5zIGEgdHVwbGU6IHRydWUgaWZmIGV2ZXJ5IGNo YWluCisJICogbWVtYmVyIHRoZSB3YWxrIHNraXBwZWQgYmVmb3JlIHJlYWNoaW5nIHRoZSBy ZXR1cm5lZCAodmlzaWJsZSkgdHVwbGUgaXMKKwkgKiBkZWFkIHRvIGFsbCB0cmFuc2FjdGlv bnMgKGJlbG93IHRoZSBnbG9iYWwgeG1pbiBob3Jpem9uKS4gIENvbWJpbmVkCisJICogd2l0 aCBhIHN0YWxlIHZlcmRpY3QgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgb3Zlcmxh cHBlZCB0aGUKKwkgKiBpbmRleCdzIGtleSBjb2x1bW5zKSwgdGhpcyBsZXRzIHRoZSBpbmRl eC1hY2Nlc3MgbGF5ZXIKKwkgKiBraWxsIHRoZSBhcnJpdmluZyBsZWFmOiBubyBzbmFwc2hv dCBjYW4gcmVhY2ggYSBtYXRjaGluZyB2ZXJzaW9uCisJICogdGhyb3VnaCBpdCwgc28gaXQg aXMgcmVkdW5kYW50LiAgQU1zIHdpdGhvdXQgc3VjaCBjaGFpbnMgbGVhdmUgaXQKKwkgKiBm YWxzZS4KKwkgKi8KKwlib29sCQl4c19wcmVmaXhfYWxsX2RlYWQ7CiB9IEluZGV4RmV0Y2hU YWJsZURhdGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CkBAIC0xNTQs NiArMTkzLDEzIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhbkRlc2NEYXRhCiAJc3RydWN0 IFNjYW5LZXlEYXRhICprZXlEYXRhOwkvKiBhcnJheSBvZiBpbmRleCBxdWFsaWZpZXIgZGVz Y3JpcHRvcnMgKi8KIAlzdHJ1Y3QgU2NhbktleURhdGEgKm9yZGVyQnlEYXRhOwkvKiBhcnJh eSBvZiBvcmRlcmluZyBvcCBkZXNjcmlwdG9ycyAqLwogCWJvb2wJCXhzX3dhbnRfaXR1cDsJ LyogY2FsbGVyIHJlcXVlc3RzIGluZGV4IHR1cGxlcyAqLworCWJvb2wJCXhzX2luZGV4X29u bHk7CS8qIGNhbGxlciBpcyBhbiBpbmRleC1vbmx5IHNjYW4gdGhhdCBtYXkKKwkJCQkJCQkJ ICogcmV0dXJuIHR1cGxlcyB3aXRob3V0IGZldGNoaW5nIHRoZSBoZWFwOworCQkJCQkJCQkg KiBBTXMgbXVzdCByZXRhaW4gbGVhZi1wYWdlIHBpbnMgZm9yIHN1Y2gKKwkJCQkJCQkJICog c2NhbnMgKFZNIGFsbC12aXNpYmxlIC8gVElELXJlY3ljbGUgcmFjZSksCisJCQkJCQkJCSAq IHdoZXJlYXMgYSBwbGFpbiBzY2FuIHRoYXQgc2V0cyB4c193YW50X2l0dXAKKwkJCQkJCQkJ ICogb25seSB0byBpbnNwZWN0IHRoZSBpbmRleCB0dXBsZSBzdGlsbAorCQkJCQkJCQkgKiBm ZXRjaGVzIHRoZSBoZWFwIGFuZCBtYXkgZHJvcCBwaW5zICovCiAJYm9vbAkJeHNfdGVtcF9z bmFwOwkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCiAJLyogc2ln bmFsaW5nIHRvIGluZGV4IEFNIGFib3V0IGtpbGxpbmcgaW5kZXggdHVwbGVzICovCkBAIC0x ODksNiArMjM1LDIwIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhbkRlc2NEYXRhCiAKIAli b29sCQl4c19yZWNoZWNrOwkJLyogVCBtZWFucyBzY2FuIGtleXMgbXVzdCBiZSByZWNoZWNr ZWQgKi8KIAorCS8qCisJICogVCBtZWFucyB0aGUgaW5kZXggZW50cnkgdGhhdCByZWFjaGVk IHhzX2hlYXB0aWQgaXMgc3RhbGU6IHRoZSBIT1QgY2hhaW4KKwkgKiB3YWxrZWQgdG8gcmVh Y2ggdGhlIHR1cGxlIGNyb3NzZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJ VSkKKwkgKiBob3AgdGhhdCBjaGFuZ2VkIGFuIGF0dHJpYnV0ZSB0aGlzIGluZGV4IGNvdmVy cywgc28gdGhlIGFycml2aW5nCisJICogZW50cnkncyBzdG9yZWQga2V5IG5vIGxvbmdlciBt YXRjaGVzIHRoZSBsaXZlIHR1cGxlLiAgVGhlIGV4ZWN1dG9yCisJICogZHJvcHMgc3VjaCBh IHR1cGxlOyB0aGUgcm93IGlzIHJlLXN1cHBsaWVkIGJ5IHRoZSBmcmVzaCBlbnRyeSBpbnNl cnRlZAorCSAqIGZvciB0aGUgbmV3IHZhbHVlLiAgVW5saWtlIHhzX3JlY2hlY2sgKHNldCBi eSBsb3NzeSBBTXMgc3VjaCBhcyBHaVNUCisJICogYW5kIEdJTiksIHRoaXMgaXMgY29tcHV0 ZWQgYnkgdGhlIGluZGV4LWFjY2VzcyBsYXllciBieSB0ZXN0aW5nIHRoZQorCSAqIGhlYXAg QU0ncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgKHhzX2hvdF9pbmRleGVkX2Nyb3NzZWQp IGFnYWluc3QKKwkgKiB0aGlzIGluZGV4J3Mga2V5IGNvbHVtbnM6IGFueSBvdmVybGFwIG1l YW5zIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBvbmUKKwkgKiBvZiB0aGUgaW5kZXgncyBpbnB1 dHMsIHNvIHRoZSBlbnRyeSBpcyBzdGFsZS4KKwkgKi8KKwlib29sCQl4c19ob3RfaW5kZXhl ZF9zdGFsZTsKKwogCS8qCiAJICogV2hlbiBmZXRjaGluZyB3aXRoIGFuIG9yZGVyaW5nIG9w ZXJhdG9yLCB0aGUgdmFsdWVzIG9mIHRoZSBPUkRFUiBCWQogCSAqIGV4cHJlc3Npb25zIG9m IHRoZSBsYXN0IHJldHVybmVkIHR1cGxlLCBhY2NvcmRpbmcgdG8gdGhlIGluZGV4LiAgSWYK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGE5Nzc4YjM1MjhkLi5lN2JkOWYzZTZmYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nl c3MvcmVsc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy9zZGlyLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgpA QCAtMjgsNiArMjksMTggQEAKIAogI2RlZmluZSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRI T0QJImhlYXAiCiAKKy8qCisgKiBXaG9sZS1yb3cgc2VudGluZWwgZm9yIHRoZSBpbi9vdXQg bW9kaWZpZWQtYXR0cmlidXRlcyBzZXQgb2YKKyAqIHRhYmxlX3R1cGxlX3VwZGF0ZSgpLiAg T24gaW5wdXQgdGhlIGNhbGxlciBzdXBwbGllcyB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzCisg KiB3aG9zZSB2YWx1ZXMgY2hhbmdlZC4gIEEgdGFibGUgQU0gdGhhdCBzdG9yZWQgdGhlIG5l dyB0dXBsZSBhcyBhbgorICogaW5kZXBlbmRlbnQgdmVyc2lvbiBub3QgcmVhY2hhYmxlIHRo cm91Z2ggdGhlIGV4aXN0aW5nIGluZGV4IGVudHJpZXMgKGZvcgorICogaGVhcCwgYSBub24t SE9UIHVwZGF0ZSkgYWRkcyB0aGlzIHdob2xlLXJvdyBhdHRyaWJ1dGUgKGF0dHJpYnV0ZSBu dW1iZXIgMCwKKyAqIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgY29udmVu dGlvbikgb24gb3V0cHV0LCBzaWduYWxsaW5nIHRoYXQKKyAqIGV2ZXJ5IGluZGV4IG5lZWRz IGEgbmV3IGVudHJ5LiAgRGlmZmluZyByZWFsIGNvbHVtbnMgbmV2ZXIgeWllbGRzIGF0dHJp YnV0ZQorICogMCwgc28gaXQgaXMgdW5hbWJpZ3VvdXMgYXMgdGhpcyBzZW50aW5lbC4KKyAq LworI2RlZmluZSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcwkoMCAtIEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpCisKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElN UE9SVCBjaGFyICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2Q7CiBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBzeW5jaHJvbml6ZV9zZXFzY2FuczsKQEAgLTEyNSwyMiArMTM4LDYgQEAg dHlwZWRlZiBlbnVtIFRNX1Jlc3VsdAogCVRNX1dvdWxkQmxvY2ssCiB9IFRNX1Jlc3VsdDsK IAotLyoKLSAqIFJlc3VsdCBjb2RlcyBmb3IgdGFibGVfdXBkYXRlKC4uLiwgdXBkYXRlX2lu ZGV4ZXMqLi4pLgotICogVXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggaW5kZXhlcyB0byB1cGRh dGUuCi0gKi8KLXR5cGVkZWYgZW51bSBUVV9VcGRhdGVJbmRleGVzCi17Ci0JLyogTm8gaW5k ZXhlZCBjb2x1bW5zIHdlcmUgdXBkYXRlZCAoaW5jbC4gVElEIGFkZHJlc3Npbmcgb2YgdHVw bGUpICovCi0JVFVfTm9uZSwKLQotCS8qIEEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgY29s dW1uIHdhcyB1cGRhdGVkLCBvciB0aGUgVElEIGhhcyBjaGFuZ2VkICovCi0JVFVfQWxsLAot Ci0JLyogT25seSBzdW1tYXJpemVkIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBUSUQgaXMgdW5j aGFuZ2VkICovCi0JVFVfU3VtbWFyaXppbmcsCi19IFRVX1VwZGF0ZUluZGV4ZXM7Ci0KIC8q CiAgKiBXaGVuIHRhYmxlX3R1cGxlX3VwZGF0ZSwgdGFibGVfdHVwbGVfZGVsZXRlLCBvciB0 YWJsZV90dXBsZV9sb2NrIGZhaWwKICAqIGJlY2F1c2UgdGhlIHRhcmdldCB0dXBsZSBpcyBh bHJlYWR5IG91dGRhdGVkLCB0aGV5IGZpbGwgaW4gdGhpcyBzdHJ1Y3QgdG8KQEAgLTQ4OCw2 ICs0ODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkgKiBpbmRleF9m ZXRjaF90dXBsZSBpZmYgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIGJhY2tlbmQgbmVlZHMg dG8gc2VlCiAJICogdGhhdCB0dXBsZS4gSW5kZXggQU1zIGNhbiB1c2UgdGhhdCB0byBhdm9p ZCByZXR1cm5pbmcgdGhhdCB0aWQgaW4KIAkgKiBmdXR1cmUgc2VhcmNoZXMuCisJICoKKwkg KiBJZiBhIHR1cGxlIGlzIHJldHVybmVkIGFuZCB0aGUgdGFibGUgQU0gcmVhY2hlZCBpdCBi eSB3YWxraW5nIGEgSE9UCisJICogY2hhaW4gdGhhdCBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2 ZWx5LXVwZGF0ZWQgKEhPVC9TSVUpIGhvcCBhZnRlciB0aGUKKwkgKiBhcnJpdmluZyBlbnRy eSdzIG93biB0dXBsZSwgaXQgc2V0cyBzY2FuLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrIChz ZWUKKwkgKiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSkgdG8gdGVsbCB0aGUgaW5kZXgt YWNjZXNzIGxheWVyIHRvIHJlY2hlY2sKKwkgKiB0aGUgYXJyaXZpbmcgbGVhZiBrZXkgYWdh aW5zdCB0aGUgbGl2ZSB0dXBsZS4gIEFNcyB3aXRob3V0IHN1Y2ggdXBkYXRlCisJICogY2hh aW5zIGxlYXZlIGl0IGZhbHNlLgogCSAqLwogCWJvb2wJCSgqaW5kZXhfZmV0Y2hfdHVwbGUp IChzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJCQkJCQkJCSAgSXRlbVBv aW50ZXIgdGlkLApAQCAtNTg2LDggKzU5MCw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1S b3V0aW5lCiAJCQkJCQkJCSBib29sIHdhaXQsCiAJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAq dG1mZCwKIAkJCQkJCQkJIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCQkgY29u c3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCQkJCSBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSBCaXRtYXBzZXQgKiptb2RpZmll ZF9hdHRycyk7CiAKIAkvKiBzZWUgdGFibGVfdHVwbGVfbG9jaygpIGZvciByZWZlcmVuY2Ug YWJvdXQgcGFyYW1ldGVycyAqLwogCVRNX1Jlc3VsdAkoKnR1cGxlX2xvY2spIChSZWxhdGlv biByZWwsCkBAIC0xMzE5LDExICsxMzIyLDIwIEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxl KHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogICogcmV0dXJucyB3aGV0aGVy IHRoZXJlIGFyZSB0YWJsZSB0dXBsZSBpdGVtcyBjb3JyZXNwb25kaW5nIHRvIGFuIGluZGV4 CiAgKiBlbnRyeS4gIFRoaXMgbGlrZWx5IGlzIG9ubHkgdXNlZnVsIHRvIHZlcmlmeSBpZiB0 aGVyZSdzIGEgY29uZmxpY3QgaW4gYQogICogdW5pcXVlIGluZGV4LgorICoKKyAqIElmIGtl ZXBfc2xvdCBpcyBub24tTlVMTCwgb24gYSBwb3NpdGl2ZSByZXN1bHQgdGhlIGZ1bmN0aW9u IHN0b3JlcyB0aGUKKyAqIGZldGNoZWQgdHVwbGUgaW50byAqa2VlcF9zbG90ICh3aGljaCBt dXN0IGJlIGEgdmFsaWQgc2xvdCBvZiB0aGUKKyAqIHJlbGF0aW9uJ3MgdHlwZSkgYW5kIHJl dHVybnMgd2l0aCB0aGUgc2xvdCBwb3B1bGF0ZWQ7IHRoZSBjYWxsZXIgaXMKKyAqIHJlc3Bv bnNpYmxlIGZvciBjbGVhcmluZyB0aGUgc2xvdC4gIFdoZW4ga2VlcF9zbG90IGlzIE5VTEwg YSB0ZW1wb3JhcnkKKyAqIHNsb3QgaXMgY3JlYXRlZCBpbnRlcm5hbGx5IGFuZCBkcm9wcGVk IGJlZm9yZSByZXR1cm4sIG1hdGNoaW5nIHRoZQorICogcHJlLWV4aXN0aW5nIGJlaGF2aW91 ci4KICAqLwogZXh0ZXJuIGJvb2wgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCQkJCSAg U25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJICBib29sICphbGxfZGVhZCk7CisJCQkJ CQkJCQkJICBib29sICphbGxfZGVhZCwKKwkJCQkJCQkJCQkgIGJvb2wgKmhvdF9pbmRleGVk X3JlY2hlY2tfb3V0LAorCQkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKmtlZXBfc2xvdCk7 CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTc0LDEyICsxNTg2LDIwIEBAIHRh YmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRpZCwgQ29tbWFu ZElkIGNpZCwKICAqCQlUQUJMRV9VUERBVEVfTk9fTE9HSUNBTCAtLSBmb3JjZS1kaXNhYmxl cyB0aGUgZW1pdHRpbmcgb2YgbG9naWNhbAogICoJCWRlY29kaW5nIGluZm9ybWF0aW9uIGZv ciB0aGUgdHVwbGUuCiAgKgorICogSW4gcGFyYW1ldGVyczoKKyAqCW1vZGlmaWVkX2F0dHJz IC0gaW4vb3V0OyBvbiBpbnB1dCwgdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMgd2hv c2UKKyAqCQl2YWx1ZXMgY2hhbmdlZCAoRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciBjb252ZW50aW9uKS4gIEEKKyAqCQl0YWJsZSBBTSBtYXkgdXNlIHRoaXMgdG8gY2hv b3NlIGJldHdlZW4gSE9UIGFuZCBub24tSE9UIHN0b3JhZ2Ugb2YgdGhlCisgKgkJbmV3IHR1 cGxlLiAgT24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1yb3cgYXR0cmlidXRlCisg KgkJKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzKSBpZmYgaXQgc3RvcmVkIHRoZSBuZXcg dHVwbGUgYXMgYW4KKyAqCQlpbmRlcGVuZGVudCB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNo IGVudHJ5IGluIGV2ZXJ5IGluZGV4OyBvdGhlcndpc2UKKyAqCQl0aGUgY2FsbGVyIGNvbnN1 bHRzIGVhY2ggaW5kZXgncyBvd24gYXR0cmlidXRlcyBhZ2FpbnN0IHRoaXMgc2V0IHRvCisg KgkJZGVjaWRlIHBlciBpbmRleCAodGhlIHN0YW5kYXJkIEhPVCAvIHNlbGVjdGl2ZS1pbmRl eC11cGRhdGUgY2FzZXMpLgorICoKICAqIE91dHB1dCBwYXJhbWV0ZXJzOgogICoJc2xvdCAt IG5ld2x5IGNvbnN0cnVjdGVkIHR1cGxlIGRhdGEgdG8gc3RvcmUKICAqCXRtZmQgLSBmaWxs ZWQgaW4gZmFpbHVyZSBjYXNlcyAoc2VlIGJlbG93KQogICoJbG9ja21vZGUgLSBmaWxsZWQg d2l0aCBsb2NrIG1vZGUgYWNxdWlyZWQgb24gdHVwbGUKLSAqCXVwZGF0ZV9pbmRleGVzIC0g aW4gc3VjY2VzcyBjYXNlcyB0aGlzIGlzIHNldCBpZiBuZXcgaW5kZXggZW50cmllcwotICoJ CWFyZSByZXF1aXJlZCBmb3IgdGhpcyB0dXBsZTsgc2VlIFRVX1VwZGF0ZUluZGV4ZXMKICAq CiAgKiBOb3JtYWwsIHN1Y2Nlc3NmdWwgcmV0dXJuIHZhbHVlIGlzIFRNX09rLCB3aGljaCBt ZWFucyB3ZSBkaWQgYWN0dWFsbHkKICAqIHVwZGF0ZSBpdC4gIEZhaWx1cmUgcmV0dXJuIGNv ZGVzIGFyZSBUTV9TZWxmTW9kaWZpZWQsIFRNX1VwZGF0ZWQsIGFuZApAQCAtMTYwMCwxMiAr MTYyMCwxNCBAQCB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRl ciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCB1 aW50MzIgb3B0aW9ucywKIAkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jv c3NjaGVjaywKIAkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkgICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAg Qml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpCiB7CisJQXNzZXJ0KG1vZGlmaWVkX2F0dHJz ID09IE5VTEwgfHwKKwkJICAgIWJtc19pc19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbElu ZGV4ZXMsICptb2RpZmllZF9hdHRycykpOwogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1 cGxlX3VwZGF0ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwgb3B0aW9ucywg c25hcHNob3QsIGNyb3NzY2hlY2ssCiAJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIGxvY2ttb2Rl LAotCQkJCQkJCQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsIHVwZGF0ZV9pbmRleGVzKTsKKwkJ CQkJCQkJCQkgbW9kaWZpZWRfYXR0cnMpOwogfQogCiAvKgpAQCAtMjA5MCw4ICsyMTEyLDcg QEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWws IEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0 ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Q b2ludGVyIG90aWQsCiAJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hv dCBzbmFwc2hvdCwKLQkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhf YXR0cnMsCi0JCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsK KwkJCQkJCQkJCSAgQml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpOwogCiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDE2NjYx YmM2NmQ5Li5lN2ZjY2RhZTMyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0x NSw2ICsxNSw3IEBACiAjZGVmaW5lIEVYRUNVVE9SX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94 bG9nZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy9pdHVwLmgiCiAjaW5jbHVkZSAiZGF0YXR5 cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNs dWRlICJmbWdyLmgiCkBAIC03NTUsMTEgKzc1NiwxMyBAQCBleHRlcm4gQml0bWFwc2V0ICpF eGVjR2V0QWxsVXBkYXRlZENvbHMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgRVN0YXRlICpl c3RhdGUpOwogICovCiBleHRlcm4gdm9pZCBFeGVjT3BlbkluZGljZXMoUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywgYm9vbCBzcGVjdWxhdGl2ZSk7CiBleHRlcm4gdm9pZCBFeGVj Q2xvc2VJbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOworZXh0ZXJuIHZv aWQgRXhlY1NldEluZGV4VW5jaGFuZ2VkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CisJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOwogCiAv KiBmbGFncyBmb3IgRXhlY0luc2VydEluZGV4VHVwbGVzICovCiAjZGVmaW5lCQlFSUlUX0lT X1VQREFURQkJCSgxPDwwKQogI2RlZmluZQkJRUlJVF9OT19EVVBFX0VSUk9SCQkoMTw8MSkK LSNkZWZpbmUJCUVJSVRfT05MWV9TVU1NQVJJWklORwkoMTw8MikKKyNkZWZpbmUJCUVJSVRf SVNfSE9UX0lOREVYRUQJCSgxPDwyKQogZXh0ZXJuIExpc3QgKkV4ZWNJbnNlcnRJbmRleFR1 cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVzdGF0ZSwKIAkJ CQkJCQkJICAgdWludDMyIGZsYWdzLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJ ICAgTGlzdCAqYXJiaXRlckluZGV4ZXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGU2 NGZkOGM3ZWEzLi4wYmJlNzFhMmE4OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTIx NiwxMCArMjE2LDE0IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX051 bGxzTm90RGlzdGluY3Q7CiAJLyogaXMgaXQgdmFsaWQgZm9yIGluc2VydHM/ICovCiAJYm9v bAkJaWlfUmVhZHlGb3JJbnNlcnRzOwotCS8qIEluZGV4VW5jaGFuZ2VkIHN0YXR1cyBkZXRl cm1pbmVkIHlldD8gKi8KLQlib29sCQlpaV9DaGVja2VkVW5jaGFuZ2VkOwotCS8qIGFtaW5z ZXJ0IGhpbnQsIGNhY2hlZCBmb3IgcmV0YWlsIGluc2VydHMgKi8KKwkvKiBhbWluc2VydCBo aW50OiBpbmRleCBsb2dpY2FsbHkgdW5jaGFuZ2VkIGJ5IFVQREFURT8gIE5hcnJvdyBydWxl OiBrZXkKKwkgKiBjb2x1bW5zIG9ubHk7IElOQ0xVREUgY29sdW1ucyBhbmQgdGhlIHBhcnRp YWwtaW5kZXggcHJlZGljYXRlIGFyZSBub3QKKwkgKiBjb25zaWRlcmVkIChleHByZXNzaW9u IGluZGV4ZXMgYXJlIHRyZWF0ZWQgY29uc2VydmF0aXZlbHkpLiAqLwogCWJvb2wJCWlpX0lu ZGV4VW5jaGFuZ2VkOworCS8qIHNlbGVjdGl2ZSBVUERBVEU6IGRvZXMgdGhpcyBpbmRleCBu ZWVkIGEgbmV3IGVudHJ5PyAgV2lkZSBydWxlOiB0cnVlIGlmCisJICogYW55IGtleSwgSU5D TFVERSwgZXhwcmVzc2lvbiwgb3IgcHJlZGljYXRlIGNvbHVtbiBpdCByZWZlcmVuY2VzIGNo YW5nZWQKKwkgKiAob3IgdGhlIEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lv bikuICovCisJYm9vbAkJaWlfSW5kZXhOZWVkc1VwZGF0ZTsKIAkvKiBhcmUgd2UgZG9pbmcg YSBjb25jdXJyZW50IGluZGV4IGJ1aWxkPyAqLwogCWJvb2wJCWlpX0NvbmN1cnJlbnQ7CiAJ LyogZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/ICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDU4 YTQ0ODU3ZjEzLi4yOGI3OTM3MGYwZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTE1MSw3ICsxNTEsMTkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlQ291bnRzCiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVz X3VwZGF0ZWQ7CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2RlbGV0ZWQ7CiAJUGdTdGF0X0Nv dW50ZXIgdHVwbGVzX2hvdF91cGRhdGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3Rf aW5kZXhlZF91cGRhdGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19uZXdwYWdlX3VwZGF0 ZWQ7CisKKwkvKgorCSAqIFBlci1pbmRleCBIT1QtaW5kZXhlZCB1cGRhdGUgY291bnRlcnMu ICBNYWludGFpbmVkIG9uIHBnc3RhdCBlbnRyaWVzCisJICoga2V5ZWQgb24gYW4gaW5kZXgg b2lkLCBub3Qgb24gdGhlIG93bmluZyB0YWJsZSdzIGVudHJ5LiAgVGhleSBjb3VudCBob3cK KwkgKiBtYW55IEhPVC1pbmRleGVkIHVwZGF0ZXMgc2tpcHBlZCB0aGlzIGluZGV4IChrZXkg dW5jaGFuZ2VkKSB2cy4KKwkgKiBpbnNlcnRlZCBhIGZyZXNoIGVudHJ5IChrZXkgY2hhbmdl ZCkuICBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5vdAorCSAqIGNvbnRyaWJ1dGUgdG8gZWl0 aGVyIGNvdW50ZXIuCisJICovCisJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVk X3VwZF9za2lwcGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRf bWF0Y2hlZDsKKwogCWJvb2wJCXRydW5jZHJvcHBlZDsKIAogCVBnU3RhdF9Db3VudGVyIGRl bHRhX2xpdmVfdHVwbGVzOwpAQCAtMjE4LDcgKzIzMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBn U3RhdF9UYWJsZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFU X0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkMKKyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFU X0lECTB4MDFBNUJDQkQKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMK IHsKQEAgLTQ2MCw4ICs0NzIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRUYWJF bnRyeQogCVBnU3RhdF9Db3VudGVyIHR1cGxlc191cGRhdGVkOwogCVBnU3RhdF9Db3VudGVy IHR1cGxlc19kZWxldGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfdXBkYXRlZDsK KwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZDsKIAlQZ1N0YXRf Q291bnRlciB0dXBsZXNfbmV3cGFnZV91cGRhdGVkOwogCisJLyogUGVyLWluZGV4IEhPVC1p bmRleGVkIHVwZGF0ZSBjb3VudGVycyAoc2VlIFBnU3RhdF9UYWJsZUNvdW50cykuICovCisJ UGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkOworCVBnU3Rh dF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDsKKwogCVBnU3RhdF9D b3VudGVyIGxpdmVfdHVwbGVzOwogCVBnU3RhdF9Db3VudGVyIGRlYWRfdHVwbGVzOwogCVBn U3RhdF9Db3VudGVyIG1vZF9zaW5jZV9hbmFseXplOwpAQCAtNzUyLDYgKzc2OSwxNiBAQCBl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogCQlpZiAo cGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwKIAkJCShyZWwpLT5w Z3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19yZXR1cm5lZCArPSAobik7CQlcCiAJfSB3aGls ZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9za2lwcGVkKHJl bCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRf Y291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNv dW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQrKztcCisJfSB3aGlsZSAoMCkK KyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKHJlbCkJCQkJ CQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRf cmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy50 dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQrKztcCisJfSB3aGlsZSAoMCkKICNkZWZp bmUgcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkKHJlbCkJCQkJCQkJCVwKIAlkbyB7CQkJCQkJ CQkJCQkJCQkJXAogCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJ CQkJCVwKQEAgLTc2NCw3ICs3OTEsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2Fu YWx5emUoUmVsYXRpb24gcmVsLAogCX0gd2hpbGUgKDApCiAKIGV4dGVybiB2b2lkIHBnc3Rh dF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIG4pOwot ZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9v bCBob3QsIGJvb2wgbmV3cGFnZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRfaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhlZCwgYm9vbCBu ZXdwYWdlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF9oZWFwX2RlbGV0ZShSZWxhdGlv biByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3RydW5jYXRlKFJlbGF0aW9uIHJl bCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfdXBkYXRlX2hlYXBfZGVhZF90dXBsZXMoUmVsYXRp b24gcmVsLCBpbnQgZGVsdGEpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAxZWY1YzE0NjVjNi4uYjYwYTUx MjU4YzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjQsNiArMTY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVsYXRpb25EYXRhCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVkZWQgaW4g cmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwogCUJpdG1hcHNldCAgKnJkX2luZGV4ZWRhdHRy OyAvKiBhbGwgY29scyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpy ZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4 ZXMgKi8KKwlCaXRtYXBzZXQgICpyZF9leHByaW5kZXhhdHRyOwkvKiBjb2xzIHJlZmVyZW5j ZWQgYnkgZXhwcmVzc2lvbiBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1 YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwgKi8KIApAQCAtMjE3 LDYgKzIxOCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlPaWQJCSAgICpy ZF9pbmRjb2xsYXRpb247CS8qIE9JRHMgb2YgaW5kZXggY29sbGF0aW9ucyAqLwogCWJ5dGVh CSAgKipyZF9vcGNvcHRpb25zOwkvKiBwYXJzZWQgb3BjbGFzcy1zcGVjaWZpYyBvcHRpb25z ICovCiAKKwkvKgorCSAqIEJpdG1hcCBvZiBoZWFwIGF0dHJpYnV0ZSBudW1iZXJzIHJlZmVy ZW5jZWQgYnkgdGhpcyBpbmRleCAoc2ltcGxlIGtleXMsCisJICogSU5DTFVERSBjb2x1bW5z LCBleHByZXNzaW9uIGNvbHVtbnMsIGFuZCBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZQorCSAq IGNvbHVtbnMpLCBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl ci4gTGF6aWx5IGJ1aWx0IGJ5CisJICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSBhbmQg Y2FjaGVkIGluIHJkX2luZGV4Y3h0LiBDb25zdW1lcnMgbXVzdAorCSAqIGJtc19jb3B5IGJl Zm9yZSByZWx5aW5nIG9uIHRoZSBwb2ludGVyIGJleW9uZCBhbnkgcG90ZW50aWFsCisJICog QWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBjYWxsLgorCSAqLworCUJpdG1hcHNldCAg KnJkX2luZGF0dHI7CisKIAkvKgogCSAqIHJkX2FtY2FjaGUgaXMgYXZhaWxhYmxlIGZvciBp bmRleCBhbmQgdGFibGUgQU1zIHRvIGNhY2hlIHByaXZhdGUgZGF0YQogCSAqIGFib3V0IHRo ZSByZWxhdGlvbi4gIFRoaXMgbXVzdCBiZSBqdXN0IGEgY2FjaGUgc2luY2UgaXQgbWF5IGdl dCByZXNldApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODk3ODgwOTE1NzYuLmEzODFhYTNl MDk1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTYyLDYgKzYyLDE5IEBAIGV4dGVybiBM aXN0ICpSZWxhdGlvbkdldER1bW15SW5kZXhFeHByZXNzaW9ucyhSZWxhdGlvbiByZWxhdGlv bik7CiBleHRlcm4gTGlzdCAqUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiBy ZWxhdGlvbik7CiBleHRlcm4gYnl0ZWEgKipSZWxhdGlvbkdldEluZGV4QXR0T3B0aW9ucyhS ZWxhdGlvbiByZWxhdGlvbiwgYm9vbCBjb3B5KTsKIAorLyoKKyAqIFJlbGF0aW9uR2V0SW5k ZXhlZEF0dHJzIC0tIHJldHVybiBhIGZyZXNobHktcGFsbG9jJ2QgQml0bWFwc2V0IG9mIGV2 ZXJ5CisgKiBoZWFwIGF0dHJpYnV0ZSB0aGlzIGluZGV4IHJlZmVyZW5jZXMsIHZpYSBrZXlz LCBJTkNMVURFIGNvbHVtbnMsCisgKiBleHByZXNzaW9ucywgb3IgcGFydGlhbC1pbmRleCBw cmVkaWNhdGVzLgorICoKKyAqIFRoZSBhcmd1bWVudCBtdXN0IGJlIGFuIGluZGV4IFJlbGF0 aW9uIChub3QgaXRzIG93bmluZyBoZWFwKS4gIEF0dHJpYnV0ZQorICogbnVtYmVycyBhcmUg b2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIuICBUaGUgcmVz dWx0IGlzCisgKiBwYWxsb2MnZCBpbiB0aGUgY2FsbGVyJ3MgY29udGV4dDsgYm1zX2ZyZWUg d2hlbiBkb25lLiAgVGhlIHJlbGNhY2hlCisgKiBjYWNoZXMgaXRzIG93biBjb3B5IGluIHJk X2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgb25seSBwYXkgZm9yIHRoZQorICogZmlu YWwgYm1zX2NvcHkuCisgKi8KK2V4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhl ZEF0dHJzKFJlbGF0aW9uIGluZGV4UmVsKTsKKwogLyoKICAqIFdoaWNoIHNldCBvZiBjb2x1 bW5zIHRvIHJldHVybiBieSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KICAqLwpAQCAt NzIsMTEgKzg1LDE1IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRtYXBLaW5kCiAJSU5E RVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQX0lOREVY RUQsCiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKKwlJTkRFWF9BVFRSX0JJVE1B UF9FWFBSRVNTSU9OLAogfSBJbmRleEF0dHJCaXRtYXBLaW5kOwogCiBleHRlcm4gQml0bWFw c2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwKIAkJ CQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpOwogCitleHRlcm4gY29u c3QgQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShSZWxhdGlv biByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktp bmQpOworCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFw KFJlbGF0aW9uIHJlbGF0aW9uKTsKIAogZXh0ZXJuIHZvaWQgUmVsYXRpb25HZXRFeGNsdXNp b25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X3VwZGF0ZXMub3V0CmluZGV4IDI3M2ZlMzMxMGRhLi4wNjk3OWVkMzFkMCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQKQEAgLTEs MTQ3ICsxLDEzMiBAQAogLS0KIC0tIEhPVF9VUERBVEVTCi0tLSBUZXN0IEhlYXAtT25seSBU dXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLSBUZXN0IGNsYXNzaWMgSGVhcC1Pbmx5 IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKIC0tCi0tLSBUaGlzIHRlc3Qgc3lzdGVt YXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJv cHJpYXRlCi0tLSBhbmQgYXZvaWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRl eGVkIGNvbHVtbnMgYXJlIG1vZGlmaWVkKS4KKy0tIFRoaXMgZmlsZSBjb3ZlcnMgSE9UIGRl Y2lzaW9ucyB0aGF0IGFwcGx5IGlkZW50aWNhbGx5IG9uIGEgcHJlLWhvdC1pbmRleGVkCist LSBzZXJ2ZXI6IGV2ZXJ5IFVQREFURSBoZXJlIGVpdGhlciBsZWF2ZXMgYWxsIGluZGV4ZWQg YXR0cmlidXRlcworLS0gdW5jaGFuZ2VkIG9yIHRvdWNoZXMgb25seSBzdW1tYXJpemluZy1p bmRleCAoQlJJTikgYXR0cmlidXRlcywgc28gdGhlCistLSBIT1QgdnMgbm9uLUhPVCBjaG9p Y2UgZG9lcyBub3QgZGVwZW5kIG9uIHdoZXRoZXIgU2VsZWN0aXZlIEluZGV4CistLSBVcGRh dGUgKGhvdC1pbmRleGVkKSBpcyBlbmFibGVkLiAgaG90LWluZGV4ZWQtc3BlY2lmaWMgYmVo YXZpb3VyIChVUERBVEVzIHRoYXQgbW9kaWZ5CistLSBhIG5vbi1zdW1tYXJpemluZyBpbmRl eGVkIGF0dHJpYnV0ZSkgaXMgY292ZXJlZCBpbgorLS0gaG90X2luZGV4ZWRfdXBkYXRlcy5z cWwuCiAtLQotLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKLS0tIDEu IFN0YXRpc3RpY3MgZnVuY3Rpb25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQp Ci0tLSAyLiBwYWdlaW5zcGVjdCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlv bgotLS0gMy4gRVhQTEFJTiB0byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcwor LS0gVmFsaWRhdGlvbiBtZXRob2RzOgorLS0gICAxLiBTdGF0aXN0aWNzIChwZ19zdGF0X2dl dF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAgIDIuIHBhZ2VpbnNwZWN0IGZvciBIT1QgY2hh aW4gc3RydWN0dXJlCistLSAgIDMuIEVYUExBSU4gdG8gY29uZmlybSB0aGUgcGxhbm5lciBz dGlsbCBwaWNrcyB0aGUgaW5kZXgKIC0tCiAtLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMK IENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKLS0tIEZ1bmN0 aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CistLSBTdW0gb2YgY29tbWl0dGVkIGFuZCBp bi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291bnRlcnMuCiBDUkVBVEUgT1Ig UkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1lIHRleHQpCiBSRVRVUk5T IFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwKICAgICBob3QgQklHSU5UCiApIEFTICQk CiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAgIHJlbF9vaWQgb2lkOwogQkVHSU4KLSAg cmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKLQotICAtLSBSZWFkIGJvdGgg Y29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0cwotICAtLSBJbiBhdXRvY29t bWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVzdHMpLCB0aGlzIHdvcmtzIGNv cnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFuc2FjdGlvbnMgKEJFR0lOL0NP TU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5Ci0gIC0tIGluY2x1ZGUgZmx1c2hlZCB1 cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4gRm9yIGV4cGxpY2l0Ci0gIC0t IHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCkg YmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9n ZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAgICAgICAgICAgICBDT0FMRVND RShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKLSAgaG90 IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVSTiBORVhUOworICAgIHJlbF9vaWQgOj0g cmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19z dGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAg Q09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CiBFTkQ7 CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQ2hlY2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9m IGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3NvciBvbiBzYW1lIHBhZ2UpCistLSBUcnVl IGlmZiB0YXJnZXRfY3RpZCBpcyB0aGUgVEFJTCBvZiBhIEhPVCBjaGFpbiBvbiB0aGUgc2Ft ZSBwYWdlLgogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbihyZWxf bmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpCiBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKIERF Q0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKKyAgICBibG9j a19udW0gaW50OworICAgIHBhZ2VfaXRlbSByZWNvcmQ7CiBCRUdJTgotICBibG9ja19udW0g Oj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBMb29rIGZv ciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91 ciB0YXJnZXQgdHVwbGUKLSAgRk9SIHBhZ2VfaXRlbSBJTgotICAgIFNFTEVDVCBscCwgbHBf ZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShy ZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVSRSBscF9mbGFncyA9IDEKLSAgICAgIEFO RCB0X2N0aWQgSVMgTk9UIE5VTEwKLSAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAot ICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8 fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKLSAgTE9PUAotICAgIFJFVFVSTiB0cnVlOwot ICBFTkQgTE9PUDsKLQotICBSRVRVUk4gZmFsc2U7CisgICAgYmxvY2tfbnVtIDo9ICh0YXJn ZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisgICAgRk9SIHBhZ2VfaXRlbSBJTgor ICAgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAg ICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxM CisgICAgICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAgICAgICAgQU5EICgn KCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScpOjp0aWQg IT0gdGFyZ2V0X2N0aWQKKyAgICBMT09QCisgICAgICAgIFJFVFVSTiB0cnVlOworICAgIEVO RCBMT09QOworICAgIFJFVFVSTiBmYWxzZTsKIEVORDsKICQkIExBTkdVQUdFIHBscGdzcWw7 Ci0tLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor LS0gRW1pdCB0aGUgSE9UIGNoYWluIHJvb3RlZCBhdCBzdGFydF9jdGlkLgogQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHN0YXJ0 X2N0aWQgdGlkKQogUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQsIGN0aWQgdGlk LCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVhbikgQVMKICQk CiAjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgogREVDTEFSRQotICBibG9ja19udW0g aW50OwotICBsaW5lX3B0ciBpbnQ7Ci0gIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3RhcnRfY3Rp ZDsKLSAgbmV4dF9jdGlkIHRpZDsKLSAgcG9zaXRpb24gaW50IDo9IDA7Ci0gIG1heF9pdGVy YXRpb25zIGludCA6PSAxMDA7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7Ci0gIGZvdW5kX3ByZWRl Y2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7Ci0gIGZsYWdzX25hbWUgdGV4dDsKKyAgICBibG9j a19udW0gaW50OworICAgIGxpbmVfcHRyIGludDsKKyAgICBjdXJyZW50X2N0aWQgdGlkIDo9 IHN0YXJ0X2N0aWQ7CisgICAgbmV4dF9jdGlkIHRpZDsKKyAgICBwb3NpdGlvbiBpbnQgOj0g MDsKKyAgICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICAgIHBhZ2VfaXRlbSByZWNv cmQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAgICBmbGFn c19uYW1lIHRleHQ7CiBCRUdJTgotICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRleHQ6 OnBvaW50KVswXTo6aW50OwotCi0gIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChvbGQgdHVw bGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCi0gIEZPUiBwYWdlX2l0ZW0gSU4KLSAg ICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFnZV9pdGVt cyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUgbHBfZmxh Z3MgPSAxCi0gICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAotICBMT09QCi0gICAgY3Vy cmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdlX2l0 ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOwotICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRy dWU7Ci0gICAgRVhJVDsKLSAgRU5EIExPT1A7Ci0KLSAgLS0gSWYgbm8gcHJlZGVjZXNzb3Ig Zm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKLSAgSUYgTk9UIGZvdW5kX3ByZWRl Y2Vzc29yIFRIRU4KLSAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKLSAgRU5EIElG OwotCi0gIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAotICBXSElMRSBwb3NpdGlvbiA8 IG1heF9pdGVyYXRpb25zIExPT1AKLSAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9jdGlkOjp0 ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRl eHQ6OnBvaW50KVswXTo6aW50OwogCiAgICAgRk9SIHBhZ2VfaXRlbSBJTgotICAgICAgU0VM RUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhn ZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgICBXSEVSRSBscCA9IGxp bmVfcHRyCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgICBG Uk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkp CisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFORCB0X2N0aWQgPSBz dGFydF9jdGlkCiAgICAgTE9PUAotICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCi0g ICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCi0gICAgICAgIFdI RU4gMCBUSEVOICd1bnVzZWQgKDApJwotICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgx KScKLSAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKLSAgICAgICAgV0hFTiAz IFRIRU4gJ2RlYWQgKDMpJwotICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRl bS5scF9mbGFnczo6dGV4dCB8fCAnKScKLSAgICAgIEVORDsKLQotICAgICAgUkVUVVJOIFFV RVJZIFNFTEVDVAotICAgICAgICBwb3NpdGlvbiwKLSAgICAgICAgY3VycmVudF9jdGlkLAot ICAgICAgICBmbGFnc19uYW1lLAotICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAotICAgICAg ICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJy ZW50X2N0aWQpOjpib29sZWFuCi0gICAgICA7Ci0KLSAgICAgIElGIHBhZ2VfaXRlbS50X2N0 aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KLSAg ICAgICAgUkVUVVJOOwotICAgICAgRU5EIElGOwotCi0gICAgICBuZXh0X2N0aWQgOj0gcGFn ZV9pdGVtLnRfY3RpZDsKLQotICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBd OjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KLSAgICAgICAgUkVUVVJOOwotICAgICAgRU5EIElG OwotCi0gICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOwotICAgICAgcG9zaXRpb24g Oj0gcG9zaXRpb24gKyAxOworICAgICAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8fCBibG9j a19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScpOjp0aWQ7 CisgICAgICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRydWU7CisgICAgICAgIEVYSVQ7CiAg ICAgRU5EIExPT1A7Ci0KLSAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgotICAgICAgUkVUVVJO OworICAgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgICAgIGN1cnJlbnRf Y3RpZCA6PSBzdGFydF9jdGlkOwogICAgIEVORCBJRjsKLSAgRU5EIExPT1A7CisKKyAgICBX SElMRSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICAgICAgbGluZV9wdHIg Oj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgICAgIEZPUiBw YWdlX2l0ZW0gSU4KKyAgICAgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAor ICAgICAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1l LCBibG9ja19udW0pKQorICAgICAgICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAg ICBMT09QCisgICAgICAgICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2Zs YWdzCisgICAgICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAg ICAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCisgICAgICAgICAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAn ZGVhZCAoMyknCisgICAgICAgICAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBwYWdlX2l0 ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICAgICAgICBFTkQ7CisgICAgICAgICAg ICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgICAgICAgICAgcG9zaXRpb24sCisgICAg ICAgICAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICAgICAgICAgIGZsYWdzX25hbWUs CisgICAgICAgICAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAgICAgICAgICAgICAo cGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50 X2N0aWQpOjpib29sZWFuOworCisgICAgICAgICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElT IE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisgICAgICAg ICAgICAgICAgUkVUVVJOOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAgICAgbmV4 dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisgICAgICAgICAgICBJRiAobmV4dF9jdGlk Ojp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICAgICAg ICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIGN1cnJlbnRf Y3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICAgICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiAr IDE7CisgICAgICAgIEVORCBMT09QOworICAgICAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgor ICAgICAgICAgICAgUkVUVVJOOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CiBF TkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRl IG5vbi1pbmRleGVkIGNvbHVtbikKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4g QmFzaWMgSE9UOiB1cGRhdGUgb2YgYSBub24taW5kZXhlZCBjb2x1bW4KKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LApAQCAtMTUxLDIzOSArMTM2LDIxOCBA QCBDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhl ZF9jb2wpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFs Jyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsK IElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOwotLS0g R2V0IGJhc2VsaW5lCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwog IHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAwIHwgICAwCiAoMSBy b3cpCiAKLS0tIFNob3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1 bW4gbW9kaWZpZWQpCistLSBUaHJlZSBjbGFzc2ljIEhPVCB1cGRhdGVzIChub24taW5kZXhl ZCBjb2wpLgogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRl ZDEnIFdIRVJFIGlkID0gMTsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29s ID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9p bmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hFUkUgaWQgPSAzOwotLS0gVmVyaWZ5IEhPVCB1 cGRhdGVzIG9jY3VycmVkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAzIHwgICAzCiAo MSByb3cpCiAKLS0tIER1bXAgdGhlIEhPVCBjaGFpbiBiZWZvcmUgVkFDVVVNaW5nCi1XSVRI IGN1cnJlbnRfdHVwbGUgQVMgKAotICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJF IGlkID0gMQotKQotU0VMRUNUCi0gIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCi0gIGNoYWluX3Bvc2l0aW9uLAotICBwcmlu dF9ob3RfY2hhaW4uY3RpZCwKLSAgbHBfZmxhZ3MsCi0gIHRfY3RpZAotRlJPTSBjdXJyZW50 X3R1cGxlLAotTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90 dXBsZS5jdGlkKTsKKy0tIENoYWluLW9mLTEgb24gaWQ9MSBzdGlsbCBoYXMgYSBwcmVkZWNl c3NvciBsaW5lIHBvaW50ZXIuCitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hv dF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hh aW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitG Uk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcs IGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBj dGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQgCiAtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tCiAgdCAgICAgICAgIHwgICAgICAg ICAgICAgIDAgfCAoMCwxKSB8IG5vcm1hbCAoMSkgfCAoMCw0KQogIHQgICAgICAgICB8ICAg ICAgICAgICAgICAxIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgyIHJvd3MpCiAK LS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxh cHNlCistLSBWQUNVVU0gY29sbGFwc2VzIHRoZSBjaGFpbi4KIFZBQ1VVTSBob3RfdGVzdDsK LS0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1dW0KLVdJVEggY3Vy cmVudF90dXBsZSBBUyAoCi0gIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQg PSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKLSAgY2hhaW5fcG9zaXRpb24sCi0gIHByaW50X2hv dF9jaGFpbi5jdGlkLAotICBscF9mbGFncywKLSAgdF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVw bGUsCi1MQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxl LmN0aWQpOworV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9NIGhvdF90 ZXN0IFdIRVJFIGlkID0gMSkKK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bvc2l0aW9u LCBwcmludF9ob3RfY2hhaW4uY3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBjdXJyZW50 X3R1cGxlLCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpOwogIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAgfCAgbHBf ZmxhZ3MgIHwgdF9jdGlkIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLQogIGYgICAgICAgICB8ICAgICAgICAgICAgICAwIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgxIHJvdykKIAotLS0gTm9uLUhPVCB1cGRh dGUgKHVwZGF0ZSBpbmRleGVkIGNvbHVtbikKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhl ZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworRFJPUCBUQUJMRSBob3RfdGVzdDsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4gU3VtbWFyaXppbmcgaW5kZXhlcyAoQlJJTikg ZG8gbm90IGJsb2NrIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3Rh bXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3Qg VVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBP TiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gQlJJTiBjb2x1bW5z IGFyZSBzdW1tYXJpemluZzsgdXBkYXRpbmcgdGhlbSBzdGF5cyBjbGFzc2ljIEhPVCBldmVu CistLSB0aG91Z2ggdGhlaXIgdmFsdWVzIGNoYW5nZS4KK1VQREFURSBob3RfdGVzdCBTRVQg dHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAt LS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAzCisgICAgICAgMSB8ICAgMQogKDEgcm93 KQogCi0tLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkK LVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU IGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUw OwotICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4IG9uIGhvdF90ZXN0Ci0g ICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTApCi0oMiByb3dzKQotCi1TRUxFQ1Qg aWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 Ci0gaWQgfCBpbmRleGVkX2NvbCAKLS0tLS0rLS0tLS0tLS0tLS0tLQotICAxIHwgICAgICAg ICAxNTAKKy0tIE5vbi1pbmRleGVkIGNvbHVtbjogYWxzbyBIT1QuCitVUERBVEUgaG90X3Rl c3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBWZXJpZnkgb2xkIHZhbHVlIG5v IGxvbmdlciBpbiBpbmRleAotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBo b3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKLSAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5kZXggU2NhbiB1c2luZyBob3Rf dGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAotICAgSW5kZXggQ29uZDogKGluZGV4ZWRf Y29sID0gMTAwKQotKDIgcm93cykKLQotU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxMDA7Ci0gaWQgCi0tLS0tCi0oMCByb3dzKQorU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCiAKLVJFU0VUIGVuYWJsZV9zZXFz Y2FuOwotLS0gQWxsLW9yLW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNv bHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBkYXRlcwogRFJPUCBUQUJMRSBob3RfdGVzdDsK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gVE9BU1QgcGFydGljaXBhdGVzIGlu IEhPVCAobm9uLWluZGV4ZWQgY29sdW1uIHBhdGhzIG9ubHkpCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkg S0VZLAotICAgIGNvbF9hIGludCwKLSAgICBjb2xfYiBpbnQsCi0gICAgY29sX2MgaW50LAot ICAgIG5vbl9pbmRleGVkIHRleHQKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbGFyZ2Vf dGV4dCB0ZXh0LAorICAgIHNtYWxsX3RleHQgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0g NTApOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsK LUNSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7Ci1DUkVB VEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwotSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOwotLS0gVXBk YXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQg Y29sdW1uIGNoYW5nZWQKLS0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRh dGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2Eg PSAxNSBXSEVSRSBpZCA9IDE7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90 ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CistLSBOb24taW5kZXhlZCwgbm9uLVRP QVNUIGNvbHVtbjogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3Vw ZGF0ZWQnOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRh dGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAorICAgICAgIDEg fCAgIDEKKygxIHJvdykKKworLS0gVE9BU1QgY29sdW1uLCBpbmRleGVkX2NvbCB1bmNoYW5n ZWQ6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiAoMSBy b3cpCiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0gJ3VwZGF0ZWQnOwog U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBo b3QgCiAtLS0tLS0tLS0rLS0tLS0KLSAgICAgICAyIHwgICAxCisgICAgICAgMiB8ICAgMgog KDEgcm93KQogCi0tLSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUg cHJlZGljYXRlIChjb25zZXJ2YXRpdmUgPSBub24tSE9UKQogRFJPUCBUQUJMRSBob3RfdGVz dDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNC4gUGFydGlhbCBpbmRleCB3aGVy ZSB1cGRhdGUgbGVhdmVzIGluZGV4ZWQgYXR0cnMgdW5jaGFuZ2VkCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1B UlkgS0VZLAogICAgIHN0YXR1cyB0ZXh0LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotLS0gUGFydGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAn YWN0aXZlJwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qo c3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOwogSU5TRVJUIElOVE8gaG90X3Rlc3Qg VkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKLS0tIFVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5n ZWQpCi0tLSBTaG91bGQgYmUgSE9UCistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyB3aG9zZSBz dGF0dXMgbWF0Y2hlcyB0aGUgcGFydGlhbCBwcmVkaWNhdGU6IEhPVC4KIFVQREFURSBob3Rf dGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIFNFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0t Ky0tLS0tCiAgICAgICAgMSB8ICAgMQogKDEgcm93KQogCi0tLSBVcGRhdGUgbm9uLWluZGV4 ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHByZWRpY2F0ZSkKLS0tIFNo b3VsZCBiZSBIT1QKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNpZGUgdGhlIHByZWRp Y2F0ZTogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVS RSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0g dXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBVcGRh dGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBw cmVkaWNhdGUpCi0tLSBQb3N0Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQg aGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5PTi1IT1Qg ZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1VUERBVEUg aG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CiBTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0t LS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKKyAgICAgICAyIHwgICAyCiAoMSByb3cp CiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3IgJ2FjdGl2ZScgcm93cwogU0VM RUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsK ICBpZCB8IHN0YXR1cyAKIC0tLS0rLS0tLS0tLS0KICAgMSB8IGFjdGl2ZQogKDEgcm93KQog Ci0tLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBjb2x1bW5z CiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA1 LiBNdWx0aS1jb2x1bW4gYnRyZWU6IHVwZGF0ZSBvZiBub24taW5kZXhlZCBjb2x1bW4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHMgdGltZXN0YW1wLAotICAgIHZhbHVlIGludCwK LSAgICBicmluX2NvbCBpbnQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNSRUFURSBJ TkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4odHMpOwotQ1JF QVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bihicmluX2NvbCk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcyMDI0LTAx LTAxJywgMTAwLCAxMDAwKTsKLS0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAtIHNob3Vs ZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKLVVQREFURSBob3Rf dGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9 IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDEKLSgxIHJvdykKLQot LS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0t LS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIKLSgxIHJvdykKLQotLS0gVE9BU1QgYW5kIEhP VDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QKLURST1AgVEFCTEUg aG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGludCBQUklNQVJZ IEtFWSwKLSAgICBpbmRleGVkX2NvbCBpbnQsCi0gICAgbGFyZ2VfdGV4dCB0ZXh0LAotICAg IHNtYWxsX3RleHQgdGV4dAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAg Y29sX2MgaW50LAorICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwot Q1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7Ci0t LSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQotSU5TRVJUIElOVE8g aG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAnc21hbGwnKTsK LS0tIFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJl IEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3VwZGF0ZWQnOwotU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3Qg Ci0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAxCitDUkVBVEUgSU5ERVggaG90X3Rl c3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7CistLSBjb2xfYyBub3QgaW4g YW55IGluZGV4OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CistLSBk YXRhIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAog KDEgcm93KQogCi0tLSBVcGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UIGlm IGluZGV4ZWQgY29sdW1uIHVuY2hhbmdlZAotVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJnZV90 ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAg IDIgfCAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7Ci1T RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhv dCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKLSgxIHJvdykKLQotLS0gVW5p cXVlIGNvbnN0cmFpbnQgKHVuaXF1ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3VsYXIgaW5k ZXgKIERST1AgVEFCTEUgaG90X3Rlc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbiArIHVuaXF1 ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRB QkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgdW5pcXVlX2Nv bCBpbnQgVU5JUVVFLApAQCAtMzkxLDE1ICszNTUsMTkgQEAgQ1JFQVRFIFRBQkxFIGhvdF90 ZXN0ICgKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnZGF0YTInKTsKLS0tIFVwZGF0ZSBkYXRhIChub24taW5kZXhlZCkgLSBz aG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3Qg CiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAyIHwgICAyCiAoMSByb3cpCiAKLS0tIFZlcmlm eSB1bmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAogU0VMRUNUIGlkLCB1bmlxdWVf Y29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7CiAgaWQgfCB1bmlxdWVfY29s IHwgIGRhdGEgICAKIC0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQpAQCAtNDA3LDYwICsz NzUsMTQgQEAgU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JE RVIgQlkgaWQ7CiAgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAogKDIgcm93cykKIAotLS0g VGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKKy0tIFVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkIG9uIGFueSBwYXRoLgogVVBEQVRFIGhvdF90ZXN0IFNFVCB1 bmlxdWVfY29sID0gMTAwIFdIRVJFIGlkID0gMjsKIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2 YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaG90X3Rlc3RfdW5pcXVlX2NvbF9r ZXkiCiBERVRBSUw6ICBLZXkgKHVuaXF1ZV9jb2wpPSgxMDApIGFscmVhZHkgZXhpc3RzLgot LS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKIERS T1AgVEFCTEUgaG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKLSAgICBjb2xfYSBpbnQsCi0gICAgY29sX2IgaW50LAotICAgIGNv bF9jIGludCwKLSAgICBkYXRhIHRleHQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNS RUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsK LUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2RhdGEnKTsK LS0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0t LS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93KQotCi0tLSBSZXNldAotVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOwotLS0gVXBkYXRlIGNvbF9iIChwYXJ0IG9m IG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYiA9IDI1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAzIHwg ICAwCi0oMSByb3cpCi0KLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjA7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDQgfCAgIDAKLSgxIHJvdykKLQot LS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCi1VUERBVEUg aG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7Ci0tLSBVcGRhdGUgZGF0YSAobm90IGluZGV4ZWQp IC0gc2hvdWxkIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQn OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMg fCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA2IHwgICAyCi0oMSByb3cpCi0KLS0t IFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0aXRpb25zCi1EUk9Q IFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOwotTk9USUNF OiAgdGFibGUgImhvdF90ZXN0X3BhcnRpdGlvbmVkIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBp bmcKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4gUGFydGl0aW9uZWQgdGFibGVz OiBIT1Qgd2l0aGluIGEgcGFydGl0aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCiAgICAgaWQgaW50LAogICAgIHBh cnRpdGlvbl9rZXkgaW50LApAQCAtNDc1LDIzICszOTcsMzIgQEAgQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAogQ1JFQVRF IElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3BhcnRpdGlvbmVkKGluZGV4 ZWRfY29sKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMSwg NTAsIDEwMCwgJ2luaXRpYWwxJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25l ZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKLS0tIFVwZGF0ZSBpbiBwYXJ0 aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBo b3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAx OwotLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hv dWxkIGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3Vw ZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdF9wYXJ0MScpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAg ICAxIHwgICAxCiAoMSByb3cpCiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0X3BhcnQyJyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAg IDEgfCAgIDEKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBvbiBwYXJ0aXRp b25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVk X2NvbCA9IDEwMDsKICBpZCAKIC0tLS0KQEAgLTUwNCwyNDIgKzQzNSwxMDAgQEAgU0VMRUNU IGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7 CiAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIGluIHBhcnRpdGlv biAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VU IGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0t Ky0tLS0tCi0gICAgICAgMiB8ICAgMQotKDEgcm93KQotCi0tLSBWZXJpZnkgaW5kZXggd2Fz IHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGlu ZGV4ZWRfY29sID0gMTUwOwotIGlkIAotLS0tLQotICAxCi0oMSByb3cpCi0KLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2Rp ZnlfdHVwbGUoKSBhbmQgSE9UCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0 IHRoYXQgd2UgY29ycmVjdGx5IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVk IGNvbHVtbnMgdmlhCi0tLSBoZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2Ug Y29sdW1ucyBhcmVuJ3QgaW4gdGhlIFVQREFURSdzIFNFVCBjbGF1c2UKLUNSRUFURSBUQUJM RSBob3RfdHJpZ2dlcl90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHJp Z2dlcmVkX2NvbCBpbnQsCi0gICAgZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7Ci1DUkVBVEUgSU5ERVggaG90X3RyaWdnZXJfaWR4IE9OIGhvdF90cmlnZ2VyX3Rlc3Qo dHJpZ2dlcmVkX2NvbCk7Ci0tLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4g aW5kZXhlZCBjb2x1bW4KLUNSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmln Z2VyZWRfY29sKCkKLVJFVFVSTlMgVFJJR0dFUiBBUyAkJAotQkVHSU4KLSAgICBORVcudHJp Z2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKLSAgICBSRVRVUk4gTkVXOwot RU5EOwotJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLUNSRUFURSBUUklHR0VSIGJlZm9yZV91cGRh dGVfbW9kaWZ5Ci0gICAgQkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0Ci0gICAg Rk9SIEVBQ0ggUk9XCi0gICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2Nv bCgpOwotSU5TRVJUIElOVE8gaG90X3RyaWdnZXJfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2lu aXRpYWwnKTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVz dCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAwIHwgICAw Ci0oMSByb3cpCi0KLS0tIFVwZGF0ZSBvbmx5IGRhdGEgY29sdW1uLCBidXQgdHJpZ2dlciBt b2RpZmllcyBpbmRleGVkIGNvbHVtbgotLS0gU2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVzZSB0 cmlnZ2VyIG1vZGlmaWVkIGFuIGluZGV4ZWQgY29sdW1uCi1VUERBVEUgaG90X3RyaWdnZXJf dGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7Ci0tLSBWZXJpZnkgaXQg d2FzIE5PVCBhIEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0 cmlnZ2VyKQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0 Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDAK LSgxIHJvdykKLQotLS0gVmVyaWZ5IHRoZSB0cmlnZ2VyZWQgY29sdW1uIHdhcyBhY3R1YWxs eSBtb2RpZmllZAotU0VMRUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBob3RfdHJpZ2dlcl90ZXN0 IFdIRVJFIGlkID0gMTsKLSB0cmlnZ2VyZWRfY29sIAotLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgIDEwMQotKDEgcm93KQotCi1EUk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FT Q0FERTsKLURST1AgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIEpTT05CIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3Vi LWF0dHJpYnV0ZSB0cmFja2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVz dCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgSlNPTkIgcGF0aHMgY2FuIGJlIEhPVCB1 cGRhdGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4cHJlc3Npb24gaW5kZXg6IG5v bi1pbmRleGVkIHBhdGggY2hhbmdlIGlzIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBDUkVBVEUgVEFCTEUgaG90X2pzb25iX3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtF WSwKICAgICBkYXRhIGpzb25iCiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0tLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JFQVRFIElO REVYIGhvdF9qc29uYl9uYW1lX2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFt ZScpKTsKIElOU0VSVCBJTlRPIGhvdF9qc29uYl90ZXN0IFZBTFVFUwogICAgICgxLCAneyJu YW1lIjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5IjoiTllDIn0nKSwKICAgICAoMiwgJ3sibmFt ZSI6IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9Jyk7Ci1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0t LSstLS0tLQotICAgICAgIDAgfCAgIDAKKy0tIFRoZSBqc29uYiBjb2x1bW4gaXMgdGhlIGV4 cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWluZGV4ZWQgaXMKKy0tIGRpc3F1YWxp ZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCkgYW5kIHRo ZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2ljIEhPVDogbm9uLUhPVCB1cGRhdGUu CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3th Z2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09OIHBh dGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgotVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScsICcz MScpIFdIRVJFIGlkID0gMTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAg MSB8ICAgMAogKDEgcm93KQogCi0tLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor LS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZpZXMgSE9U LWluZGV4ZWQuCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRhIC0gJ2Np dHknIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK KyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29u Yl90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDIg fCAgIDAKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJP TSBob3RfanNvbmJfdGVzdCBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7Ci0gaWQg Ci0tLS0tCi0gIDEKKy0tIExpa2V3aXNlIG5vbi1IT1Q6IGV4cHJlc3Npb24gaW5kZXggZGlz cXVhbGlmaWVzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRh ID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9 IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgxIHJvdykK IAotLS0gVGVzdCBqc29uYl9kZWxldGUgb24gbm9uLWluZGV4ZWQgcGF0aCAtIHNob3VsZCBi ZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCi1VUERBVEUgaG90X2pzb25iX3Rlc3QgU0VU IGRhdGEgPSBkYXRhIC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKIFNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0t LS0tKy0tLS0tCiAgICAgICAgMyB8ICAgMAogKDEgcm93KQogCi0tLSBUZXN0IGpzb25iX2lu c2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVt ZW50YXRpb24KLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX2luc2Vy dChkYXRhLCAne2NvdW50cnl9JywgJyJVU0EiJykgV0hFUkUgaWQgPSAyOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3Qg Ci0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAwCi0oMSByb3cpCi0KIERST1AgVEFC TEUgaG90X2pzb25iX3Rlc3Q7Ci0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBYTUwg ZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0tLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhl ZCBYTUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCi1DUkVBVEUgVEFCTEUgaG90X3htbF90 ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgZG9jIHhtbAotKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOwotLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVj aWZpYyBYUGF0aAotQ1JFQVRFIElOREVYIGhvdF94bWxfbmFtZV9pZHggT04gaG90X3htbF90 ZXN0ICgoeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpKSk7Ci1JTlNFUlQgSU5U TyBob3RfeG1sX3Rlc3QgVkFMVUVTCi0gICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNlPC9u YW1lPjxhZ2U+MzA8L2FnZT48L3BlcnNvbj4nKSwKLSAgICAoMiwgJzxwZXJzb24+PG5hbWU+ Qm9iPC9uYW1lPjxhZ2U+MjU8L2FnZT48L3BlcnNvbj4nKTsKLUVSUk9SOiAgY291bGQgbm90 IGlkZW50aWZ5IGEgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgdHlwZSB4bWwKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAK LS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRl IG5vbi1pbmRleGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZpb3IgZGVwZW5kcyBvbiBYTUwgY29t cGFyaXNvbiBmYWxsYmFjawotLS0gRnVsbCBYTUwgdmFsdWUgcmVwbGFjZW1lbnQgbWVhbnMg bm9uLWluZGV4ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJlcXVpcmUgaW5kZXggY29tcGFyaXNv bgotVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2U8 L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAot LS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0tLSBVcGRhdGUg aW5kZXhlZCBYUGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF94 bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2UyPC9uYW1lPjxhZ2U+MzE8 L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1T RUxFQ1QgaWQgRlJPTSBob3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9wZXJzb24vbmFtZS90 ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0FsaWNlMic6OnRleHRdOwotRVJST1I6ICBvcGVyYXRv ciBkb2VzIG5vdCBleGlzdDogeG1sW10gPSB0ZXh0W10KLUxJTkUgMTogLi4uX3htbF90ZXN0 IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBLi4u Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgotREVUQUlMOiAgTm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGFjY2VwdHMg dGhlIGdpdmVuIGFyZ3VtZW50IHR5cGVzLgotSElOVDogIFlvdSBtaWdodCBuZWVkIHRvIGFk ZCBleHBsaWNpdCB0eXBlIGNhc3RzLgotRFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7Ci0tLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHSU4gaW5kZXhlcyBhbmQgYW1jb21wYXJlZGF0 dW1zIGZvciBKU09OQgotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0 IEdJTiBpbmRleGVzIGNhbiB1c2UgYW1jb21wYXJlZGF0dW1zIHRvIGVuYWJsZSBIT1Qgd2hl biBleHRyYWN0ZWQga2V5cyBtYXRjaAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA5 LiBBIGNoYW5nZSB0byBhIEdJTi1pbmRleGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZAorLS0K Ky0tIFRoZSByZWFkIHNpZGUgZmlsdGVycyBhIHN0YWxlIGxlYWYgdmlhIHRoZSBjcm9zc2Vk LWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoCistLSBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGlj LCBzbyBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCBsaWtlIGFueQorLS0g b3RoZXI6IG9ubHkgdGhlIEdJTiBpbmRleCBpcyBtYWludGFpbmVkLCBhbmQgYSBHSU4gc2Nh biAod2hpY2ggcmVjaGVja3Mgb24KKy0tIHRoZSBoZWFwKSByZXR1cm5zIGNvcnJlY3QgcmVz dWx0cyBhY3Jvc3MgdGhlIGNoYWluLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVB VEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAg dGFncyB0ZXh0W10sCiAgICAgcHJvcGVydGllcyBqc29uYgogKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKIENSRUFURSBJTkRFWCBob3Rf Z2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRhZ3MpOwotLS0gR0lO IGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1ZXMpCiBDUkVBVEUg SU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdpbiAocHJv cGVydGllcyk7CiBJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVTCiAgICAgKDEsIEFS UkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXkyIjoidmFsMiJ9Jyks CiAgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6InZhbDMiLCJrZXk0 IjoidmFsNCJ9Jyk7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAwIHwgICAw Ci0oMSByb3cpCi0KLS0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9yZGVyIGJ1dCBub3Qg Y29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUgSE9UCi0tLSAoR0lO IGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIpCistLSBSZW9yZGVy IHRhZ3M6IGEgR0lOLWNvdmVyZWQgY29sdW1uIGNoYW5nZXMsIHNvIHRoaXMgaXMgSE9ULWlu ZGV4ZWQuCiBVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAn dGFnMSddIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAg IDEgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAt IGFmdGVyIGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKLS0tIGRlcGVu ZGluZyBvbiBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5 cyBhbmQgdmFsdWVzKQotVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7 ImtleTEiOiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhv dCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDAKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCi1VUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3Qn KTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMyB8ICAgMAot KDEgcm93KQotCi0tLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yawotU0VMRUNUIGlkIEZST00g aG90X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKLSBpZCAKLS0tLS0K LSAgMQotKDEgcm93KQotCi1TRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgcHJv cGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7Ci0gaWQgCi0tLS0tCi0gIDEKKyAg ICAgICAxIHwgICAxCiAoMSByb3cpCiAKIERST1AgVEFCTEUgaG90X2dpbl90ZXN0OwotLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBD bGVhbnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElGIEVYSVNU UyBob3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVk IENBU0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWluKHRleHQs IHRpZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4odGV4dCwg dGlkKTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4dCk7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbih0 ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsK K0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5TSU9OIHBh Z2VpbnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0 ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCmluZGV4IGE4 ODk0MDA2MTc3Li4zNWNlN2UxY2RjZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvaG90X3VwZGF0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRh dGVzLnNxbApAQCAtMSwzNTQgKzEsMjU4IEBACiAtLQogLS0gSE9UX1VQREFURVMKLS0tIFRl c3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKKy0tIFRlc3QgY2xh c3NpYyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBkYXRlIGRlY2lzaW9ucwogLS0KLS0tIFRo aXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmllcyB0aGF0IEhPVCB1cGRhdGVzIGFyZSB1 c2VkIHdoZW4gYXBwcm9wcmlhdGUKLS0tIGFuZCBhdm9pZGVkIHdoZW4gbmVjZXNzYXJ5IChl LmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUgbW9kaWZpZWQpLgorLS0gVGhpcyBmaWxl IGNvdmVycyBIT1QgZGVjaXNpb25zIHRoYXQgYXBwbHkgaWRlbnRpY2FsbHkgb24gYSBwcmUt aG90LWluZGV4ZWQKKy0tIHNlcnZlcjogZXZlcnkgVVBEQVRFIGhlcmUgZWl0aGVyIGxlYXZl cyBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzCistLSB1bmNoYW5nZWQgb3IgdG91Y2hlcyBvbmx5 IHN1bW1hcml6aW5nLWluZGV4IChCUklOKSBhdHRyaWJ1dGVzLCBzbyB0aGUKKy0tIEhPVCB2 cyBub24tSE9UIGNob2ljZSBkb2VzIG5vdCBkZXBlbmQgb24gd2hldGhlciBTZWxlY3RpdmUg SW5kZXgKKy0tIFVwZGF0ZSAoaG90LWluZGV4ZWQpIGlzIGVuYWJsZWQuICBob3QtaW5kZXhl ZC1zcGVjaWZpYyBiZWhhdmlvdXIgKFVQREFURXMgdGhhdCBtb2RpZnkKKy0tIGEgbm9uLXN1 bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlKSBpcyBjb3ZlcmVkIGluCistLSBob3RfaW5k ZXhlZF91cGRhdGVzLnNxbC4KIC0tCi0tLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBt ZXRob2RzOgotLS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfdXBkYXRlZCkKLS0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNo YWluIGV4YW1pbmF0aW9uCi0tLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBh ZnRlciB1cGRhdGVzCistLSBWYWxpZGF0aW9uIG1ldGhvZHM6CistLSAgIDEuIFN0YXRpc3Rp Y3MgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKKy0tICAgMi4gcGFnZWluc3Bl Y3QgZm9yIEhPVCBjaGFpbiBzdHJ1Y3R1cmUKKy0tICAgMy4gRVhQTEFJTiB0byBjb25maXJt IHRoZSBwbGFubmVyIHN0aWxsIHBpY2tzIHRoZSBpbmRleAogLS0KIAogLS0gTG9hZCByZXF1 aXJlZCBleHRlbnNpb25zCiBDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWlu c3BlY3Q7CiAKLS0tIEZ1bmN0aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CistLSBTdW0g b2YgY29tbWl0dGVkIGFuZCBpbi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291 bnRlcnMuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9u YW1lIHRleHQpCiBSRVRVUk5TIFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwKICAgICBo b3QgQklHSU5UCiApIEFTICQkCiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAgIHJlbF9v aWQgb2lkOwogQkVHSU4KLSAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsK LQotICAtLSBSZWFkIGJvdGggY29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0 cwotICAtLSBJbiBhdXRvY29tbWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVz dHMpLCB0aGlzIHdvcmtzIGNvcnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFu c2FjdGlvbnMgKEJFR0lOL0NPTU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5Ci0gIC0t IGluY2x1ZGUgZmx1c2hlZCB1cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4g Rm9yIGV4cGxpY2l0Ci0gIC0tIHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCkgYmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0ZXMgOj0g Q09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAg ICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJl bF9vaWQpLCAwKTsKLSAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3Rf dXBkYXRlZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVSTiBORVhU OworICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRl cyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkg KworICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBk YXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAg UkVUVVJOIE5FWFQ7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwogCi0tLSBDaGVjayBp ZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9u IHNhbWUgcGFnZSkKKy0tIFRydWUgaWZmIHRhcmdldF9jdGlkIGlzIHRoZSBUQUlMIG9mIGEg SE9UIGNoYWluIG9uIHRoZSBzYW1lIHBhZ2UuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKIFJFVFVS TlMgYm9vbGVhbiBBUyAkJAogREVDTEFSRQotICBibG9ja19udW0gaW50OwotICBwYWdlX2l0 ZW0gcmVjb3JkOworICAgIGJsb2NrX251bSBpbnQ7CisgICAgcGFnZV9pdGVtIHJlY29yZDsK IEJFR0lOCi0gIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6 aW50OwotCi0gIC0tIExvb2sgZm9yIGEgZGlmZmVyZW50IHR1cGxlIG9uIHRoZSBzYW1lIHBh Z2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0dXBsZQotICBGT1IgcGFnZV9pdGVtIElO Ci0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgRlJPTSBoZWFwX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQotICAgIFdIRVJFIGxw X2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCBJUyBOT1QgTlVMTAotICAgICAgQU5EIHRf Y3RpZCA9IHRhcmdldF9jdGlkCi0gICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQg fHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAotICBMT09Q Ci0gICAgUkVUVVJOIHRydWU7Ci0gIEVORCBMT09QOwotCi0gIFJFVFVSTiBmYWxzZTsKKyAg ICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKyAg ICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3Rp ZAorICAgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUs IGJsb2NrX251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFO RCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0 aWQKKyAgICAgICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxw Ojp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAorICAgIExPT1AKKyAgICAgICAg UkVUVVJOIHRydWU7CisgICAgRU5EIExPT1A7CisgICAgUkVUVVJOIGZhbHNlOwogRU5EOwog JCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFydGlu ZyBmcm9tIGEgZ2l2ZW4gdHVwbGUKKy0tIEVtaXQgdGhlIEhPVCBjaGFpbiByb290ZWQgYXQg c3RhcnRfY3RpZC4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHByaW50X2hvdF9jaGFp bihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKIFJFVFVSTlMgVEFCTEUoY2hhaW5f cG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9jdGlkIHRpZCwgY2hh aW5fZW5kIGJvb2xlYW4pIEFTCiAkJAogI3ZhcmlhYmxlX2NvbmZsaWN0IHVzZV9jb2x1bW4K IERFQ0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgbGluZV9wdHIgaW50OwotICBjdXJyZW50 X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7Ci0gIG5leHRfY3RpZCB0aWQ7Ci0gIHBvc2l0aW9u IGludCA6PSAwOwotICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOwotICBwYWdlX2l0ZW0g cmVjb3JkOwotICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOwotICBmbGFn c19uYW1lIHRleHQ7CisgICAgYmxvY2tfbnVtIGludDsKKyAgICBsaW5lX3B0ciBpbnQ7Cisg ICAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICAgIG5leHRfY3RpZCB0aWQ7 CisgICAgcG9zaXRpb24gaW50IDo9IDA7CisgICAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEw MDsKKyAgICBwYWdlX2l0ZW0gcmVjb3JkOworICAgIGZvdW5kX3ByZWRlY2Vzc29yIGJvb2xl YW4gOj0gZmFsc2U7CisgICAgZmxhZ3NfbmFtZSB0ZXh0OwogQkVHSU4KLSAgYmxvY2tfbnVt IDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBGaW5kIHRo ZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQot ICBGT1IgcGFnZV9pdGVtIElOCi0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0g ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19u dW0pKQotICAgIFdIRVJFIGxwX2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0 X2N0aWQKLSAgTE9PUAotICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6 dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKLSAgICBm b3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOwotICAgIEVYSVQ7Ci0gIEVORCBMT09QOwotCi0g IC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlk Ci0gIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCi0gICAgY3VycmVudF9jdGlkIDo9 IHN0YXJ0X2N0aWQ7Ci0gIEVORCBJRjsKLQotICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndh cmQKLSAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCi0gICAgbGluZV9w dHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgYmxvY2tf bnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKIAogICAgIEZPUiBw YWdlX2l0ZW0gSU4KLSAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAotICAgICAg RlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0p KQotICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAgICBTRUxFQ1QgbHAsIGxwX2Zs YWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdl KHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAg ICAgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAogICAgIExPT1AKLSAgICAgIC0tIE1h cCBscF9mbGFncyB0byBuYW1lcwotICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRl bS5scF9mbGFncwotICAgICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKLSAgICAgICAg V0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCi0gICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVj dCAoMiknCi0gICAgICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKLSAgICAgICAgRUxTRSAn dW5rbm93biAoJyB8fCBwYWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCi0gICAgICBF TkQ7Ci0KLSAgICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKLSAgICAgICAgcG9zaXRpb24sCi0g ICAgICAgIGN1cnJlbnRfY3RpZCwKLSAgICAgICAgZmxhZ3NfbmFtZSwKLSAgICAgICAgcGFn ZV9pdGVtLnRfY3RpZCwKLSAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbgotICAgICAgOwotCi0g ICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9 IGN1cnJlbnRfY3RpZCBUSEVOCi0gICAgICAgIFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQot ICAgICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7Ci0KLSAgICAgIElGIChuZXh0 X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCi0gICAgICAg IFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQotICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRf Y3RpZDsKLSAgICAgIHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICAgICAgY3VycmVu dF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdlX2l0ZW0u bHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgICAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0 cnVlOworICAgICAgICBFWElUOwogICAgIEVORCBMT09QOwotCi0gICAgSUYgcG9zaXRpb24g PSAwIFRIRU4KLSAgICAgIFJFVFVSTjsKKyAgICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3Ig VEhFTgorICAgICAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKICAgICBFTkQgSUY7 Ci0gIEVORCBMT09QOworCisgICAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBM T09QCisgICAgICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworICAgICAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgICAgICBTRUxFQ1Qg bHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgICAgICAgIFdIRVJF IGxwID0gbGluZV9wdHIKKyAgICAgICAgTE9PUAorICAgICAgICAgICAgZmxhZ3NfbmFtZSA6 PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAgICAgICAgICAgIFdIRU4gMCBUSEVO ICd1bnVzZWQgKDApJworICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEp JworICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAgICAg ICAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMpJworICAgICAgICAgICAgICAgIEVMU0Ug J3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAg ICAgICAgRU5EOworICAgICAgICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAgICAgICAg ICAgICAgIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfY3RpZCwKKyAgICAg ICAgICAgICAgICBmbGFnc19uYW1lLAorICAgICAgICAgICAgICAgIHBhZ2VfaXRlbS50X2N0 aWQsCisgICAgICAgICAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdl X2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbjsKKworICAgICAgICAgICAg SUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJy ZW50X2N0aWQgVEhFTgorICAgICAgICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVO RCBJRjsKKyAgICAgICAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworICAg ICAgICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgICAgICAgICBSRVRVUk47CisgICAgICAgICAgICBFTkQgSUY7 CisgICAgICAgICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgICAgICAg cG9zaXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBFTkQgTE9PUDsKKyAgICAgICAg SUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgRU5E IElGOworICAgIEVORCBMT09QOwogRU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0g QmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbikKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBIT1Q6IHVwZGF0ZSBvZiBhIG5vbi1p bmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUg aG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBpbmRleGVkX2NvbCBp bnQsCiAgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGlu ZGV4ZWRfY29sKTsKIAogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdp bml0aWFsJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRp YWwnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcp OwogCi0tLSBHZXQgYmFzZWxpbmUKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gU2hv dWxkIGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkK Ky0tIFRocmVlIGNsYXNzaWMgSE9UIHVwZGF0ZXMgKG5vbi1pbmRleGVkIGNvbCkuCiBVUERB VEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQg PSAxOwogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDIn IFdIRVJFIGlkID0gMjsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0g J3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7Ci0KLS0tIFZlcmlmeSBIT1QgdXBkYXRlcyBvY2N1 cnJlZAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBE dW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZwotV0lUSCBjdXJyZW50X3R1cGxl IEFTICgKLSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKLSkKLVNF TEVDVAotICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkg QVMgaGFzX2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAgcHJpbnRfaG90X2NoYWluLmN0 aWQsCi0gIGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3VycmVudF90dXBsZSwKLUxBVEVS QUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7Ci0K LS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxh cHNlCi1WQUNVVU0gaG90X3Rlc3Q7Ci0KLS0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFp biBhZnRlciB2YWN1dW0KLVdJVEggY3VycmVudF90dXBsZSBBUyAoCi0gIFNFTEVDVCBjdGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hvdF9jaGFp bignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKLSAgY2hh aW5fcG9zaXRpb24sCi0gIHByaW50X2hvdF9jaGFpbi5jdGlkLAotICBscF9mbGFncywKLSAg dF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVwbGUsCi1MQVRFUkFMIHByaW50X2hvdF9jaGFpbign aG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOwotCi0tLSBOb24tSE9UIHVwZGF0ZSAo dXBkYXRlIGluZGV4ZWQgY29sdW1uKQotVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2Nv bCA9IDE1MCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZCAobmV3IHZhbHVlIGZp bmRhYmxlKQotU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwotRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9j b2wgPSAxNTA7Ci1TRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxNTA7Ci0KLS0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGlu IGluZGV4Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTAwOwotU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxMDA7Ci1SRVNFVCBlbmFibGVfc2Vxc2NhbjsKLQotLS0gQWxsLW9y LW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNvbHVtbiByZXF1aXJlcyBB TEwgaW5kZXggdXBkYXRlcwotRFJPUCBUQUJMRSBob3RfdGVzdDsKLQotQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgY29sX2EgaW50LAot ICAgIGNvbF9iIGludCwKLSAgICBjb2xfYyBpbnQsCi0gICAgbm9uX2luZGV4ZWQgdGV4dAot KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYV9p ZHggT04gaG90X3Rlc3QoY29sX2EpOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JfaWR4IE9O IGhvdF90ZXN0KGNvbF9iKTsKLUNSRUFURSBJTkRFWCBob3RfdGVzdF9jX2lkeCBPTiBob3Rf dGVzdChjb2xfYyk7Ci0KLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIw LCAzMCwgJ2luaXRpYWwnKTsKLQotLS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1uIGNoYW5nZWQKLS0tIFRoaXMgbWVh bnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkK LVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1 bW4gLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0g J3VwZGF0ZWQnOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor LS0gQ2hhaW4tb2YtMSBvbiBpZD0xIHN0aWxsIGhhcyBhIHByZWRlY2Vzc29yIGxpbmUgcG9p bnRlci4KK1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVz dCBXSEVSRSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwg cHJpbnRfaG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90 dXBsZSwgTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBs ZS5jdGlkKTsKIAotLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRl IHByZWRpY2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKLURST1AgVEFCTEUgaG90X3Rl c3Q7Ci0KLUNSRUFURSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZ LAotICAgIHN0YXR1cyB0ZXh0LAotICAgIGRhdGEgdGV4dAotKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotCi0tLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3Rp dmUnCi1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0 dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwotCi1JTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7Ci0KLS0tIFVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5n ZWQpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBk YXRlZDEnIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X3Rlc3QnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUn IHJvdyAob3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERBVEUgaG90 X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKy0tIFZBQ1VVTSBjb2xsYXBzZXMgdGhl IGNoYWluLgorVkFDVVVNIGhvdF90ZXN0OwogCi0tLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2lu YWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBQb3N0 Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJl ZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2 YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1VUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1 cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZS T00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hvdF90 ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hhaW5f cG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitGUk9N IGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCk7CiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3Ig J2FjdGl2ZScgcm93cwotU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBz dGF0dXMgPSAnYWN0aXZlJzsKLQotLS0gT25seSBCUklOIChzdW1tYXJpemluZykgaW5kZXhl cyBvbiBub24tUEsgY29sdW1ucwogRFJPUCBUQUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyLiBTdW1tYXJpemluZyBpbmRleGVzIChCUklOKSBkbyBu b3QgYmxvY2sgSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBo b3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIHRzIHRpbWVzdGFtcCwK ICAgICB2YWx1ZSBpbnQsCiAgICAgYnJpbl9jb2wgaW50CiApIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7Ci0KIENSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CiAKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOwogCi0tLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCistLSBCUklOIGNvbHVtbnMgYXJlIHN1bW1hcml6aW5nOyB1cGRhdGluZyB0 aGVtIHN0YXlzIGNsYXNzaWMgSE9UIGV2ZW4KKy0tIHRob3VnaCB0aGVpciB2YWx1ZXMgY2hh bmdlLgogVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wg PSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhPVAorLS0gTm9uLWlu ZGV4ZWQgY29sdW1uOiBhbHNvIEhPVC4KIFVQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwog U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBUT0FTVCBh bmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAogRFJPUCBU QUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzLiBUT0FT VCBwYXJ0aWNpcGF0ZXMgaW4gSE9UIChub24taW5kZXhlZCBjb2x1bW4gcGF0aHMgb25seSkK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LAogICAgIGxhcmdl X3RleHQgdGV4dCwKICAgICBzbWFsbF90ZXh0IHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVk X2NvbCk7CiAKLS0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCiBJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCks ICdzbWFsbCcpOwogCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVt biAtIHNob3VsZCBiZSBIT1QKKy0tIE5vbi1pbmRleGVkLCBub24tVE9BU1QgY29sdW1uOiBI T1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1bW4gdW5jaGFuZ2VkCistLSBUT0FTVCBjb2x1bW4s IGluZGV4ZWRfY29sIHVuY2hhbmdlZDogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJn ZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAK LS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUg aG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOwotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBVbmlxdWUgY29uc3RyYWludCAodW5pcXVlIGlu ZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAogRFJPUCBUQUJMRSBob3RfdGVzdDsK IAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBQYXJ0aWFsIGluZGV4IHdoZXJl IHVwZGF0ZSBsZWF2ZXMgaW5kZXhlZCBhdHRycyB1bmNoYW5nZWQKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFS WSBLRVksCi0gICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIHN0YXR1cyB0ZXh0LAog ICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKIAotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdk YXRhMScpOwotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdkYXRhMicp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7 CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFjdGl2ZScsICdkYXRhMicp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdkYXRhMycp OwogCi0tLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworLS0gVXBkYXRlIGRhdGEgb24g YSByb3cgd2hvc2Ugc3RhdHVzIG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRlOiBIT1Qu CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJhaW50 IHN0aWxsIGVuZm9yY2VkCi1TRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBob3Rf dGVzdCBPUkRFUiBCWSBpZDsKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNpZGUgdGhl IHByZWRpY2F0ZTogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQy JyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFRoaXMgc2hv dWxkIGZhaWwgKHVuaXF1ZSB2aW9sYXRpb24pCi1VUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1 ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3Rf dGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIAotLS0gTXVsdGktY29sdW1uIGluZGV4 OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKIERST1AgVEFCTEUgaG90X3Rlc3Q7CiAK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gTXVsdGktY29sdW1uIGJ0cmVlOiB1 cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAg IGNvbF9hIGludCwKQEAgLTM1NiwzNiArMjYwLDQ1IEBAIENSRUFURSBUQUJMRSBob3RfdGVz dCAoCiAgICAgY29sX2MgaW50LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotCiBDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNv bF9hLCBjb2xfYik7CiAKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIw LCAzMCwgJ2RhdGEnKTsKIAotLS0gVXBkYXRlIGNvbF9hIChwYXJ0IG9mIG11bHRpLWNvbHVt biBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xf YSA9IDE1OworLS0gY29sX2Mgbm90IGluIGFueSBpbmRleDogSE9ULgorVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gZGF0YSBub3QgaW4gYW55IGluZGV4OiBIT1QuCitV UERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTA7Ci0K LS0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyNTsKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKK0RST1AgVEFCTEUgaG90X3Rlc3Q7 CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjA7Ci1TRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVt biArIHVuaXF1ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg dW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOwogCi0tLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBi ZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMiwgMjAwLCAnZGF0YTInKTsKIAotLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRl eGVkKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRh dGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gUGFydGl0aW9uZWQgdGFibGVz OiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhv dF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRh dGEgRlJPTSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKIAorLS0gVW5pcXVlIGNvbnN0cmFpbnQg c3RpbGwgZW5mb3JjZWQgb24gYW55IHBhdGguCitVUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1 ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFBhcnRpdGlvbmVkIHRhYmxlczogSE9U IHdpdGhpbiBhIHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUg VEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAogICAgIGlkIGludCwKICAgICBwYXJ0aXRp b25fa2V5IGludCwKQEAgLTQwNCwyMDIgKzMxNyw4MiBAQCBDUkVBVEUgSU5ERVggaG90X3Rl c3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9uZWQoaW5kZXhlZF9jb2wpOwogSU5T RVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAwLCAnaW5p dGlhbDEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwg MTUwLCAyMDAsICdpbml0aWFsMicpOwogCi0tLSBVcGRhdGUgaW4gcGFydGl0aW9uIDEgKG5v bi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3RfcGFy dGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKLQotLS0gVXBk YXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhP VAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBX SEVSRSBpZCA9IDI7CiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3RfcGFydDInKTsKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBvbiBwYXJ0 aXRpb25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRl eGVkX2NvbCA9IDEwMDsKIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdI RVJFIGluZGV4ZWRfY29sID0gMjAwOwogCi0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gaW4g cGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdF9wYXJ0aXRp b25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOwotCi0tLSBWZXJpZnkgaW5kZXgg d2FzIHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTUwOwotCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU cmlnZ2VyIG1vZGlmaWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5kIEhPVAotLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHdlIGNvcnJlY3RseSBkZXRl Y3Qgd2hlbiB0cmlnZ2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZpYQotLS0gaGVhcF9t b2RpZnlfdHVwbGUoKSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJlbid0IGluIHRoZSBV UERBVEUncyBTRVQgY2xhdXNlCi0KLUNSRUFURSBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0ICgK LSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHJpZ2dlcmVkX2NvbCBpbnQsCi0gICAg ZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KLUNSRUFURSBJTkRFWCBo b3RfdHJpZ2dlcl9pZHggT04gaG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKLQot LS0gQ3JlYXRlIGEgdHJpZ2dlciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4ZWQgY29sdW1uCi1D UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpCi1SRVRV Uk5TIFRSSUdHRVIgQVMgJCQKLUJFR0lOCi0gICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcu dHJpZ2dlcmVkX2NvbCArIDE7Ci0gICAgUkVUVVJOIE5FVzsKLUVORDsKLSQkIExBTkdVQUdF IHBscGdzcWw7Ci0KLUNSRUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVfbW9kaWZ5Ci0gICAg QkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0Ci0gICAgRk9SIEVBQ0ggUk9XCi0g ICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOwotCi1JTlNFUlQg SU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOwotCi1T RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKLQotLS0g VXBkYXRlIG9ubHkgZGF0YSBjb2x1bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQg Y29sdW1uCi0tLSBTaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQg YW4gaW5kZXhlZCBjb2x1bW4KLVVQREFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKLQotLS0gVmVyaWZ5IGl0IHdhcyBOT1QgYSBIT1Qg dXBkYXRlIChpbmRleGVkIGNvbHVtbiB3YXMgbW9kaWZpZWQgYnkgdHJpZ2dlcikKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwotCi0tLSBWZXJp ZnkgdGhlIHRyaWdnZXJlZCBjb2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCi1TRUxFQ1Qg dHJpZ2dlcmVkX2NvbCBGUk9NIGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOwotCi1E Uk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FTQ0FERTsKLURST1AgRlVOQ1RJT04gbW9k aWZ5X3RyaWdnZXJlZF9jb2woKTsKLQotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g SlNPTkIgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0t LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24t aW5kZXhlZCBKU09OQiBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0RST1AgVEFCTEUgaG90 X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA4LiBKU09OQiBleHByZXNzaW9uIGluZGV4OiBub24taW5kZXhlZCBwYXRoIGNoYW5n ZSBpcyBIT1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9q c29uYl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgZGF0YSBqc29uYgog KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRl eCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JFQVRFIElOREVYIGhvdF9qc29uYl9uYW1l X2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFtZScpKTsKIAogSU5TRVJUIElO VE8gaG90X2pzb25iX3Rlc3QgVkFMVUVTCiAgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFn ZSI6MzAsImNpdHkiOiJOWUMifScpLAogICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoy NSwiY2l0eSI6IkxBIn0nKTsKIAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOwotCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2Up IC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIFRoZSBqc29uYiBj b2x1bW4gaXMgdGhlIGV4cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWluZGV4ZWQg aXMKKy0tIGRpc3F1YWxpZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QgeWV0IHN1 cHBvcnRlZCkgYW5kIHRoZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2ljIEhPVDog bm9uLUhPVCB1cGRhdGUuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29u Yl9zZXQoZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBpbmRl eGVkIEpTT04gcGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF9q c29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0nLCAnIkFsaWNl MiInKSBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKIAot LS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJPTSBob3RfanNvbmJfdGVzdCBX SEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7Ci0KLS0tIFRlc3QganNvbmJfZGVsZXRl IG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRh dGlvbgorLS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZp ZXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRh IC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcp OwogCi0tLSBUZXN0IGpzb25iX2luc2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxk IGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIExpa2V3aXNlIG5vbi1IT1Q6IGV4 cHJlc3Npb24gaW5kZXggZGlzcXVhbGlmaWVzIEhPVC1pbmRleGVkLgogVVBEQVRFIGhvdF9q c29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAn IlVTQSInKSBXSEVSRSBpZCA9IDI7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsK IAogRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKIAotLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFj a2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHVwZGF0ZXMg dG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcwotCi1DUkVBVEUg VEFCTEUgaG90X3htbF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgZG9j IHhtbAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhwcmVzc2lv biBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCi1DUkVBVEUgSU5ERVggaG90X3htbF9uYW1l X2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRv YykpKTsKLQotSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwotICAgICgxLCAnPHBl cnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJzb24+JyksCi0gICAg KDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+PC9wZXJzb24+Jyk7 Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0t IFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9yIGRlcGVuZHMgb24g WE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKLS0tIEZ1bGwgWE1MIHZhbHVlIHJlcGxhY2VtZW50 IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1aXJlIGluZGV4IGNv bXBhcmlzb24KLVVQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1l PkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLQot U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLQotLS0gVXBk YXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBo b3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlMjwvbmFtZT48YWdl PjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3b3Jrcwot U0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUv dGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKLQotRFJPUCBUQUJMRSBo b3RfeG1sX3Rlc3Q7Ci0KLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdJTiBpbmRl eGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCi0tLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBhbWNvbXBhcmVkYXR1 bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNoCi0KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gQSBjaGFuZ2UgdG8gYSBHSU4taW5kZXhlZCBjb2x1 bW4gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBUaGUgcmVhZCBzaWRlIGZpbHRlcnMgYSBzdGFs ZSBsZWFmIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCB3aGljaAorLS0gaXMg YWNjZXNzLW1ldGhvZCBhZ25vc3RpYywgc28gYSBHSU4tY292ZXJlZCBjb2x1bW4gaXMgSE9U LWluZGV4ZWQgbGlrZSBhbnkKKy0tIG90aGVyOiBvbmx5IHRoZSBHSU4gaW5kZXggaXMgbWFp bnRhaW5lZCwgYW5kIGEgR0lOIHNjYW4gKHdoaWNoIHJlY2hlY2tzIG9uCistLSB0aGUgaGVh cCkgcmV0dXJucyBjb3JyZWN0IHJlc3VsdHMgYWNyb3NzIHRoZSBjaGFpbi4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9naW5fdGVzdCAoCiAgICAgaWQg aW50IFBSSU1BUlkgS0VZLAogICAgIHRhZ3MgdGV4dFtdLAogICAgIHByb3BlcnRpZXMganNv bmIKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQotLS0gR0lOIGluZGV4IG9uIHRleHQg YXJyYXkKIENSRUFURSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBV U0lORyBnaW4gKHRhZ3MpOwotCi0tLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25iX29wcyAt IGtleXMgYW5kIHZhbHVlcykKIENSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lkeCBPTiBo b3RfZ2luX3Rlc3QgVVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKIAogSU5TRVJUIElOVE8gaG90 X2dpbl90ZXN0IFZBTFVFUwogICAgICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10sICd7Imtl eTEiOiJ2YWwxIiwia2V5MiI6InZhbDIifScpLAogICAgICgyLCBBUlJBWVsndGFnMycsICd0 YWc0J10sICd7ImtleTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOwogCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwotCi0tLSBVcGRhdGUgdGhhdCBj aGFuZ2VzIHRhZyBvcmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRlciBhbWNvbXBhcmVkYXR1 bXMgc2hvdWxkIGJlIEhPVAotLS0gKEdJTiBleHRyYWN0cyBzYW1lIGtleXMsIGp1c3QgZGlm ZmVyZW50IG9yZGVyKQorLS0gUmVvcmRlciB0YWdzOiBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBj aGFuZ2VzLCBzbyB0aGlzIGlzIEhPVC1pbmRleGVkLgogVVBEQVRFIGhvdF9naW5fdGVzdCBT RVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnXSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBK U09OQiB2YWx1ZSAobm90IGtleSkgLSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgbWF5IGJlIEhP VCBvciBub24tSE9UCi0tLSBkZXBlbmRpbmcgb24gR0lOIG9wZXJhdG9yIGNsYXNzIChqc29u Yl9vcHMgaW5kZXhlcyBib3RoIGtleXMgYW5kIHZhbHVlcykKLVVQREFURSBob3RfZ2luX3Rl c3QgU0VUIHByb3BlcnRpZXMgPSAneyJrZXkxIjoidmFsMV9uZXciLCJrZXkyIjoidmFsMiJ9 JyBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK IFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CiAKLS0tIEFk ZCBuZXcgdGFnIC0gc2hvdWxkIE5PVCBiZSBIT1QgKGRpZmZlcmVudCBleHRyYWN0ZWQga2V5 cykKLVVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcx JywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBHSU4gaW5kZXhlcyB3b3JrCi1TRUxF Q1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSddOwot U0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5 MSI6InZhbDFfbmV3In0nOwotCiBEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKIAotLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBDbGVh bnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENB U0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWluKHRleHQsIHRp ZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlk KTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4dCk7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbih0ZXh0 LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RS T1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5TSU9OIHBhZ2Vp bnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAxMTdlNzM3OWYxMC4u YTBlMGMxYTAwYjEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjc3LDYg KzEyNzcsNyBAQCBIZWFwVHVwbGVGcmVlemUKIEhlYXBUdXBsZUhlYWRlcgogSGVhcFR1cGxl SGVhZGVyRGF0YQogSGVhcFR1cGxlVGFibGVTbG90CitIZWFwVXBkYXRlSW5kZXhNb2RlCiBI aXN0Q29udHJvbAogSG9zdENhY2hlRW50cnkKIEhvc3RzRmlsZUxvYWRSZXN1bHQKQEAgLTMx MzgsNyArMzEzOSw2IEBAIFRTVmVjdG9yU3RhdAogVFN0YXRlCiBUU3RhdHVzCiBUU3RvcmVT dGF0ZQotVFVfVXBkYXRlSW5kZXhlcwogVFhORW50cnlGaWxlCiBUWVBDQVRFR09SWQogVF9B Y3Rpb24KLS0gCjIuNTAuMQoK --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA4MjQwZDc2OWM3ZGFjM2FjZWY5YjhkZjk5YTMyOWY4ZjhiMWY0YjA4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMToyODozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDUv OV0gQ29sbGFwc2UgZGVhZCBIT1QtaW5kZXhlZCBjaGFpbnMgdG8geGlkLWZyZWUgc3R1YnMg b24KIHBydW5lL3ZhY3V1bQoKQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGluZGV4IGVu dHJpZXMgdGhhdCBwb2ludCBhdCBtaWQtY2hhaW4gaGVhcC1vbmx5CnR1cGxlcywgc28gYSBk ZWFkIGNoYWluIG1lbWJlciBjYW5ub3Qgc2ltcGx5IGJlIHJlbW92ZWQ6IGEgbm90LXlldC1z d2VwdCBpbmRleAplbnRyeSBtYXkgc3RpbGwgYXJyaXZlIGF0IGl0LCBhbmQgdGhlIHBlci1o b3AgbW9kaWZpZWQtYXR0cnMgYml0bWFwIG9uIGl0IGlzCndoYXQgYSByZWFkZXIgdW5pb25z IHRvIGp1ZGdlIHN0YWxlbmVzcy4KClRlYWNoIHBydW5lIHRvIGNvbGxhcHNlIGEgZGVhZCBj aGFpbiBwcmVmaXggaW50byB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWJzOgplYWNoIHByZXNl cnZlZCBkZWFkIGtleSB0dXBsZSBpcyByZXdyaXR0ZW4gaW4gcGxhY2UgdG8gYSBzdHViIChm cm96ZW4sCm5hdHRzID09IDAsIEhFQVBfSU5ERVhFRF9VUERBVEVELCBmb3J3YXJkaW5nIHZp YSB0X2N0aWQub2ZmbnVtKSB0aGF0IGtlZXBzIGl0cwpzZWdtZW50J3MgbW9kaWZpZWQtYXR0 cnMgYml0bWFwLCBhbmQgYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgd2hvbGx5CnN1 YnN1bWVkIGJ5IGxhdGVyIGhvcHMgaXMgcmVjbGFpbWVkIGluc3RlYWQuICBSZWFkZXJzIHN0 ZXAgdGhyb3VnaCBzdHVicwp0cmFuc3BhcmVudGx5IGFuZCBzdGlsbCBjcm9zcyBldmVyeSBz dXJ2aXZpbmcgaG9wJ3MgYml0bWFwLiAgVGhlIGNvbGxhcHNlIGJhY2sKdG8gY2xhc3NpYyBI T1QgaXMgZHJpdmVuIGJ5IHBydW5lOiBvbmNlIGEgY2hhaW4gaXMgZnVsbHkgZGVhZCwgYSBs YXRlciBwcnVuZQooaGVhcF9wcnVuZV9jaGFpbiAvIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9s aXZlKSByZWNsYWltcyBpdHMgbWVtYmVycyBhbmQKcmUtcG9pbnRzIHRoZSByb290IHJlZGly ZWN0IHN0cmFpZ2h0IGF0IHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgVkFDVVVNJ3MgaW5kZXgK Y2xlYW51cCBzd2VlcHMgdGhlIHN0YWxlIGxlYXZlczsgaXRzIHNlY29uZCBwYXNzIChsYXp5 X3ZhY3V1bV9oZWFwX3BhZ2UpIGRvZXMKdGhlIHVzdWFsIExQX0RFQUQgLT4gTFBfVU5VU0VE IGNvbnZlcnNpb24gYW5kIGxlYXZlcyB0aGUgSE9ULWluZGV4ZWQgY29sbGFwc2UKdG8gcHJ1 bmUuCgpUaGUgY29sbGFwc2UgcmV1c2VzIHRoZSBleGlzdGluZyBwcnVuZS9mcmVlemUgV0FM IHZpYSBhbiB4bGhwX3BydW5lX2l0ZW1zCnN1Yi1yZWNvcmQgY2FycnlpbmcgdGhlIChvZmZz ZXQsIGZvcndhcmQpIHN0dWIgcGFpcnM7IG5vIG5ldyByZWNvcmQgdHlwZSBpcwppbnRyb2R1 Y2VkLiAgQSBwYWdlIHRoYXQgc3RpbGwgY2FycmllcyBhIHByZXNlcnZlZCBzdHViIChvciBh IHJlZGlyZWN0IHRoYXQKZm9yd2FyZHMgaW50byBhIGxpdmUgSE9ULWluZGV4ZWQgbWVtYmVy KSBpcyBrZXB0IG5vbi1hbGwtdmlzaWJsZSBzbyBpbmRleC1vbmx5CnNjYW5zIGhlYXAtZmV0 Y2ggdGhyb3VnaCB0aGUgY2hhaW47IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSBy ZWNvZ25pemVzCmJvdGggdGhlIHJlZGlyZWN0LXRvLVNJVSBhbmQgdGhlIHN0dWIgY2FzZSBl eHBsaWNpdGx5LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpD by1hdXRob3JlZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAg MzggKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgIHwgNjQ1 ICsrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jICAgICAgIHwgIDk0ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgICAgIHwgIDM2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICAgICB8ICAxOSArLQogNyBmaWxlcyBjaGFuZ2VkLCA3NzcgaW5zZXJ0aW9ucygr KSwgNzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVC1JTkRFWEVECmluZGV4IDVkNGEyYzdkNjZjLi5hYjRmOGJjMTg4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMjA2LDYgKzIw Niw0NCBAQCB1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNh bCwgZS5nLiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcwogc3RpbGwgZGV0ZWN0ZWQuICAoQXBw ZW5kaXggQSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCiAKIAorUHJ1bmUg YW5kIGNoYWluIGNvbGxhcHNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1 c2UgYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGFuIGluZGV4IGVudHJ5IHBvaW50aW5n IGF0IGEgbWlkLWNoYWluCitoZWFwLW9ubHkgdHVwbGUncyBvd24gVElELCBjbGFzc2ljIEhP VCdzIGFzc3VtcHRpb24gdGhhdCBtaWQtY2hhaW4gbGluZQorcG9pbnRlcnMgaGF2ZSBubyBl eHRlcm5hbCByZWZlcmVuY2VzIG5vIGxvbmdlciBob2xkcy4gIFBydW5pbmcgdGhlcmVmb3Jl IG11c3QKK25vdCByZWNsYWltIHN1Y2ggYSBsaW5lIHBvaW50ZXIgd2hpbGUgYSBub3QteWV0 LXN3ZXB0IGluZGV4IGVudHJ5IGNhbiBzdGlsbAorYXJyaXZlIGF0IGl0LgorCitoZWFwX3By dW5lX2NoYWluIGNvbGxhcHNlcyBhIHJ1biBvZiBkZWFkIGNoYWluIG1lbWJlcnMgdG8gYSBz aW5nbGUKK0xQX1JFRElSRUNUIHRoYXQgZm9yd2FyZHMgdG8gdGhlIGZpcnN0IGxpdmUgdHVw bGUsIGFuZCBwcmVzZXJ2ZXMgdGhlIGxpbmUKK3BvaW50ZXIgb2YgYSBsaXZlIEhPVC1pbmRl eGVkIG1lbWJlciAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkKK3Nv IGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlIGVudHJ5IHN0aWxsIGZpbmRzIGEgd2Fs a2FibGUgaG9wLiAgTW9yZSB0aGFuCitvbmUgTFBfUkVESVJFQ1QgbWF5IGZvcndhcmQgdG8g dGhlIHNhbWUgbGl2ZSB0dXBsZS4gIFRoZSByZWRpcmVjdCBsaWZlY3ljbGUKK3JldXNlcyB0 aGUgZXhpc3RpbmcgcHJ1bmUgV0FMIHJlY29yZHM7IHRoZXJlIGlzIG5vIG5ldyBvbi1kaXNr IGZvcm1hdC4KKworCitWYWN1dW0gcmVjbGFtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQor CitWQUNVVU0ncyBpbmRleCBjbGVhbnVwIHN3ZWVwcyB0aGUgc3RhbGUgaW5kZXggZW50cmll cy4gIFRoZSBjb2xsYXBzZSBiYWNrIHRvCitjbGFzc2ljIEhPVCBpcyBkcml2ZW4gYnkgcHJ1 bmUsIG5vdCBieSBWQUNVVU0ncyBzZWNvbmQgcGFzczogb25jZSBhIGNoYWluIGlzCitmdWxs eSBkZWFkLCBhIGxhdGVyIHBydW5lIChoZWFwX3BydW5lX2NoYWluIC8gaGVhcF9wcnVuZV9j aGFpbl9maW5kX2xpdmUpCityZWNsYWltcyBpdHMgbWVtYmVycyBhbmQgcmUtcG9pbnRzIHRo ZSByb290IHJlZGlyZWN0IHN0cmFpZ2h0IGF0IGZpcnN0X2xpdmUuCitSZS1wb2ludGluZyBh IHJlZGlyZWN0IHByZXNlcnZlcyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlciBzdGlsbCBy ZWFjaGVzCitmaXJzdF9saXZlKSwgc28gaXQgaXMgc2FmZSB1bmRlciB0aGUgZXhjbHVzaXZl IGxvY2sgcHJ1bmUgYWxyZWFkeSBob2xkcy4KKworVkFDVVVNJ3Mgc2Vjb25kIHBhc3MgKGxh enlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcyBub3QgaXRzZWxmIHJlLXBvaW50CityZWRpcmVj dHMgb3IgcmVjbGFpbSBzdHViczsgaXQgcGVyZm9ybXMgdGhlIHVzdWFsIExQX0RFQUQgLT4g TFBfVU5VU0VECitjb252ZXJzaW9uIGFuZCBsZWF2ZXMgdGhlIEhPVC1pbmRleGVkIGNvbGxh cHNlIHRvIHBydW5lLgorCitBIHBhZ2UgdGhhdCBzdGlsbCBjYXJyaWVzIGEgcHJlc2VydmVk IEhPVC1pbmRleGVkIG1lbWJlciBvciBhIGNvbGxhcHNlLXN1cnZpdm9yCitzdHViIGlzIGRl bGliZXJhdGVseSBsZWZ0IG5vbi1hbGwtdmlzaWJsZSwgc28gdGhhdCBhbiBpbmRleC1vbmx5 IHNjYW4KK2hlYXAtZmV0Y2hlcyB0aHJvdWdoIHRoZSBjaGFpbiBhbmQgdGhlIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyCitzdGFsZSBlbnRyaWVzIChlbmZvcmNlZCBp biBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgdGhlIHN0dWIgcmVjb3JkZXJzLCBhbmQK K2hlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSkuCisKKwogQXBwZW5kaWNlcwogLS0t LS0tLS0tLQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5 ZWQ3MDI0ZTgxNC4uNTcxZWE1YTRkYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMTAzLDYgKzEwMyw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJl ZXplX3BsYW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlPZmZz ZXROdW1iZXIgKnN0dWJzOworCQlpbnQJCQluc3R1YnM7CiAJCWNoYXIJICAgKmRhdGFwdHIg PSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlk b19wcnVuZTsKIApAQCAtMTEwLDkgKzExMiwxMCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxh bnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJl Y3RlZCwKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJICAg Jm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3Vu dXNlZCwKKwkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCWRvX3By dW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBu c3R1YnMgPiAwOwogCiAJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICov CiAJCUFzc2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwpAQCAtMTI2LDcgKzEyOSw4IEBAIGhlYXBfeGxvZ19wcnVu ZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkoeGxyZWMuZmxh Z3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5y ZWRpcmVjdGVkLAogCQkJCQkJCQkJbm93ZGVhZCwgbmRlYWQsCi0JCQkJCQkJCQlub3d1bnVz ZWQsIG51bnVzZWQpOworCQkJCQkJCQkJbm93dW51c2VkLCBudW51c2VkLAorCQkJCQkJCQkJ c3R1YnMsIG5zdHVicyk7CiAKIAkJLyogRnJlZXplIHR1cGxlcyAqLwogCQlmb3IgKGludCBw ID0gMDsgcCA8IG5wbGFuczsgcCsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBmZGRkZDIzMDM1Yi4uYzFkYzIzYzIyNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCisjaW5jbHVkZSAi YWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJh bnNhbS5oIgpAQCAtNjcsMTEgKzY4LDIwIEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnJl ZGlyZWN0ZWQ7CS8qIG51bWJlcnMgb2YgZW50cmllcyBpbiBhcnJheXMgYmVsb3cgKi8KIAlp bnQJCQluZGVhZDsKIAlpbnQJCQludW51c2VkOworCWludAkJCW5zdHViczsKIAlpbnQJCQlu ZnJvemVuOwogCS8qIGFycmF5cyB0aGF0IGFjY3VtdWxhdGUgaW5kZXhlcyBvZiBpdGVtcyB0 byBiZSBjaGFuZ2VkICovCiAJT2Zmc2V0TnVtYmVyIHJlZGlyZWN0ZWRbTWF4SGVhcFR1cGxl c1BlclBhZ2UgKiAyXTsKIAlPZmZzZXROdW1iZXIgbm93ZGVhZFtNYXhIZWFwVHVwbGVzUGVy UGFnZV07CiAJT2Zmc2V0TnVtYmVyIG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 CisKKwkvKgorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNvbGxhcHNlLXN1cnZpdm9y IHN0dWJzOiAob2Zmc2V0LCBmb3J3YXJkKQorCSAqIHBhaXJzIG9mIGxpbmUgcG9pbnRlcnMg cmV3cml0dGVuIGluIHBsYWNlIGludG8geGlkLWZyZWUgZm9yd2FyZGluZworCSAqIHN0dWJz IHRoYXQgcHJlc2VydmUgdGhlaXIgc2VnbWVudCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4K KwkgKi8KKwlPZmZzZXROdW1iZXIgc3R1YnNbTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiAyXTsK KwogCUhlYXBUdXBsZUZyZWV6ZSBmcm96ZW5bTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCiAJ LyoKQEAgLTIyMCw2ICsyMzAsMTAgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRf cHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCiBzdGF0 aWMgdm9pZCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRl LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIHJkb2Zm bnVtLAogCQkJCQkJCQkJICAgYm9vbCB3YXNfbm9ybWFsKTsKK3N0YXRpYyB2b2lkIGhlYXBf cHJ1bmVfcmVjb3JkX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgT2Zm c2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIGZvcndhcmQpOworc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKKwkJCQkJCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIg b2ZmbnVtLAogCQkJCQkJCQkgICBib29sIHdhc19ub3JtYWwpOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTIzMCw2ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBoZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bQogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0 YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3Rh dGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciBvZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wcnVuZV9pdGVtX3By ZXNlcnZlc19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwog CiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIApAQCAt NDM5LDYgKzQ1NCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0ZS0+ bnVudXNlZCA9IDA7CisJcHJzdGF0ZS0+bnN0dWJzID0gMDsKIAlwcnN0YXRlLT5uZnJvemVu ID0gMDsKIAlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CiAJcHJzdGF0ZS0+bmhlYXBvbmx5 X2l0ZW1zID0gMDsKQEAgLTYwNyw2ICs2MjMsMjMgQEAgcHJ1bmVfZnJlZXplX3BsYW4oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKQogCQkgKiBHZXQgdGhl IHR1cGxlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgYW5kIHF1ZXVlIGl0IHVwIGZvciBwcm9jZXNz aW5nLgogCQkgKi8KIAkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGl0ZW1pZCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlz IGFuIExQX05PUk1BTCBpdGVtIHRoYXQgaXMgbm90IGEgcmVhbAorCQkgKiB0dXBsZTogSEVB UF9JTkRFWEVEX1VQREFURUQgd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2li bGUKKwkJICogKEhFQVBfWE1JTl9JTlZBTElEKSwgY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsg YW5kIHRoZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdt ZW50IGl0IHN0YW5kcyBpbiBmb3IuCisJCSAqIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIHdvdWxkIGNsYXNzaWZ5IGl0IEhFQVBUVVBMRV9ERUFEIGFuZAorCQkgKiBwcnVuaW5n IHdvdWxkIHJlY2xhaW0gaXQsIGRlc3Ryb3lpbmcgdGhlIGJpdG1hcCBhIHJlYWQgbmVlZHMu CisJCSAqIFJlY29yZCBpdCBhcyBhbiB1bmNoYW5nZWQgaXRlbSBzbyBpdCBpcyBwcmVzZXJ2 ZWQ7IHRoZSBIT1QgY2hhaW4KKwkJICogd2FsayBzdGVwcyB0aHJvdWdoIGl0IHRyYW5zcGFy ZW50bHkgdG8gcmVhY2ggdGhlIGxpdmUgdHVwbGUuCisJCSAqLworCQlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1YihodHVwKSkKKwkJeworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX3N0dWIocHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJ dHVwLnRfZGF0YSA9IGh0dXA7CiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVt aWQpOwogCQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsK QEAgLTY3NywyNSArNzEwLDIzIEBAIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciAqb2ZmX2xvYykKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCQlpZiAo bGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQotCQkJewotCQkJ CUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJ CQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQpOwotCQkJCWhlYXBfcHJ1bmVf cmVjb3JkX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRydWUpOwotCQkJfQorCQkJLyoKKwkJ CSAqIFRoaXMgZGVhZCBoZWFwLW9ubHkgdHVwbGUgd2FzIG5vdCByZWFjaGVkIGJ5IGFueSBI T1QgY2hhaW4gd2FsaworCQkJICogKGFuIGFib3J0ZWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0 ZWQgc3ViLWNoYWluLCBvciBhIG1lbWJlcgorCQkJICogd2hvc2UgbGl2ZSByb290IHN0b3Bw ZWQgdGhlIHdhbGspLiAgSWYgaXQgY2FycmllcyBhIHN0YWxlIGJ0cmVlCisJCQkgKiBsZWFm IChIRUFQX0lOREVYRURfVVBEQVRFRCksIG1hcmsgaXQgTFBfREVBRDogdGhhdCBwaW5zIHRo ZQorCQkJICogc2xvdCBhZ2FpbnN0IHJldXNlIGFuZCBhZGRzIGl0IHRvIHRoZSBkZWFkLWl0 ZW1zIGFycmF5IHNvCisJCQkgKiBhbWJ1bGtkZWxldGUgc3dlZXBzIHRoZSBzdGFsZSBsZWFm IGFuZCBhIGxhdGVyIHZhY3V1bSByZWNsYWltcworCQkJICogdGhlIExQLiBPdGhlcndpc2Ug KGNsYXNzaWMgSE9ULCBubyBsZWFmIG9mIGl0cyBvd24pIHJlY2xhaW0gaXQKKwkJCSAqIHRv IExQX1VOVVNFRC4KKwkJCSAqLworCQkJSGVhcFR1cGxlSGVhZGVyQWR2YW5jZUNvbmZsaWN0 SG9yaXpvbihodHVwLAorCQkJCQkJCQkJCQkJICAmcHJzdGF0ZS0+bGF0ZXN0X3hpZF9yZW1v dmVkKTsKKwkJCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRF RCkgIT0gMCAmJgorCQkJCUhlYXBUdXBsZUhlYWRlckdldE5hdHRzKGh0dXApID4gMCkKKwkJ CQloZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRy dWUpOwogCQkJZWxzZQotCQkJewotCQkJCS8qCi0JCQkJICogVGhpcyB0dXBsZSBzaG91bGQn dmUgYmVlbiBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgYXMgcGFydCBvZgotCQkJCSAqIGEgSE9U IGNoYWluLCBzbyBzb21ldGhpbmcncyB3cm9uZy4gIFRvIHByZXNlcnZlIGV2aWRlbmNlLAot CQkJCSAqIHdlIGRvbid0IGRhcmUgdG8gcmVtb3ZlIGl0LiAgV2UgY2Fubm90IGxlYXZlIGJl aGluZCBhIERFQUQKLQkJCQkgKiB0dXBsZSBlaXRoZXIsIGJlY2F1c2UgdGhhdCB3aWxsIGNh dXNlIFZBQ1VVTSB0byBlcnJvciBvdXQuCi0JCQkJICogVGhyb3dpbmcgYW4gZXJyb3Igd2l0 aCBhIGRpc3RpbmN0IGVycm9yIG1lc3NhZ2Ugc2VlbXMgbGlrZQotCQkJCSAqIHRoZSBsZWFz dCBiYWQgb3B0aW9uLgotCQkJCSAqLwotCQkJCWVsb2coRVJST1IsICJkZWFkIGhlYXAtb25s eSB0dXBsZSAoJXUsICVkKSBpcyBub3QgbGlua2VkIHRvIGZyb20gYW55IEhPVCBjaGFpbiIs Ci0JCQkJCSBibG9ja25vLCBvZmZudW0pOwotCQkJfQorCQkJCWhlYXBfcHJ1bmVfcmVjb3Jk X3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRydWUpOwogCQl9CiAJCWVsc2UKIAkJCWhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwocHJzdGF0ZSwgb2ZmbnVtKTsKQEAg LTExNjMsNyArMTE5NCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJl ZXplUGFyYW1zICpwYXJhbXMsCiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJlZGlyZWN0ZWQg PiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3RhdGUubnVudXNlZCA+IDA7 CisJCXByc3RhdGUubnVudXNlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uc3R1YnMgPiAwOwogCiAJ LyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBh IG5ldyB2YWx1ZSBmb3IgdGhlCkBAIC0xMjY0LDcgKzEyOTYsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJaGVhcF9wYWdl X3BydW5lX2V4ZWN1dGUocHJzdGF0ZS5idWZmZXIsIGZhbHNlLAogCQkJCQkJCQkJcHJzdGF0 ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJcHJzdGF0ZS5u b3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJcHJzdGF0ZS5ub3d1bnVzZWQsIHBy c3RhdGUubnVudXNlZCk7CisJCQkJCQkJCQlwcnN0YXRlLm5vd3VudXNlZCwgcHJzdGF0ZS5u dW51c2VkLAorCQkJCQkJCQkJcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1YnMpOwogCQl9 CiAKIAkJaWYgKGRvX2ZyZWV6ZSkKQEAgLTEzMDcsNyArMTM0MCw4IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkg IHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkgIHByc3RhdGUu cmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5u b3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJICBwcnN0YXRlLm5vd3VudXNlZCwg cHJzdGF0ZS5udW51c2VkKTsKKwkJCQkJCQkJCSAgcHJzdGF0ZS5ub3d1bnVzZWQsIHByc3Rh dGUubnVudXNlZCwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1YnMp OwogCQl9CiAJfQogCkBAIC0xNDQ4LDYgKzE0ODIsMTAxIEBAIGh0c3ZfZ2V0X3ZhbGlkX3N0 YXR1cyhpbnQgc3RhdHVzKQogCXJldHVybiAoSFRTVl9SZXN1bHQpIHN0YXR1czsKIH0KIAor LyoKKyAqIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlCisgKgkJRm9sbG93IGEgSE9UIGNo YWluIGZyb20gJ3N0YXJ0JyB0byBpdHMgZmlyc3Qgc3Vydml2aW5nIG1lbWJlci4KKyAqCisg KiBVc2VkIHdoZW4gcmUtcHJ1bmluZyBhIEhPVC9TSVUgY2hhaW4gdGhhdCB3YXMgY29sbGFw c2VkIGJ5IGFuIGVhcmxpZXIgcHJ1bmU6CisgKiB0aGUgcm9vdCBhbmQgYW55IGVudHJ5LWJl YXJpbmcgZGVhZCBtZW1iZXJzIHdlcmUgdHVybmVkIGludG8gTFBfUkVESVJFQ1RzIHRvCisg KiB3aGF0IHdhcyB0aGVuIHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgSWYgdGhhdCB0dXBsZSBo YXMgc2luY2UgYmVlbiBIT1QtdXBkYXRlZAorICogYWdhaW4gYW5kIGRpZWQsIHRoZSByZWRp cmVjdHMgbXVzdCBiZSByZS1wb2ludGVkIHRvIHRoZSBjdXJyZW50IGZpcnN0IGxpdmUKKyAq IHR1cGxlLCBvciBzZXZlcmFsIHJlZGlyZWN0cyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZlIHR1 cGxlIG11c3QgYWdyZWUgb24gaXQuCisgKiBCb3RoIGNhc2VzIG5lZWQgdGhlIGNoYWluJ3Mg Y3VycmVudCBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyLgorICoKKyAqIFdhbGtzIHRfY3RpZCBv biB0aGlzIHBhZ2Ugc3RhcnRpbmcgYXQgJ3N0YXJ0Jywgc2tpcHBpbmcgREVBRCBtZW1iZXJz LCBhbmQKKyAqIHJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgbm9uLURFQUQgKHN1 cnZpdmluZykgbWVtYmVyLiAgUmV0dXJucworICogSW52YWxpZE9mZnNldE51bWJlciBpZiB0 aGUgY2hhaW4gZGVhZC1lbmRzIHdpdGggbm8gc3Vydml2b3Igb3IgcnVucyBvZmYgdGhlCisg KiBwYWdlLiAgUmVhZHMgb25seSB0aGUgcGFnZSdzIHByZS1leGVjdXRlIHN0YXRlLCBzbyBp dCBpcyBjb3JyZWN0IHJlZ2FyZGxlc3MKKyAqIG9mIHRoZSBvcmRlciBpbiB3aGljaCBzaWJs aW5nIHJlZGlyZWN0cyBhcmUgcHJvY2Vzc2VkLgorICovCitzdGF0aWMgT2Zmc2V0TnVtYmVy CitoZWFwX3BydW5lX2NoYWluX2ZpbmRfbGl2ZShQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZz ZXROdW1iZXIgc3RhcnQpCit7CisJUGFnZQkJcGFnZSA9IHByc3RhdGUtPnBhZ2U7CisJT2Zm c2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CisJT2Zm c2V0TnVtYmVyIG9mZm51bSA9IHN0YXJ0OworCU9mZnNldE51bWJlciBzdXJ2aXZvciA9IHN0 YXJ0OwkvKiBzdWNjZXNzb3Igb2YgdGhlIGxhc3QgREVBRCBtZW1iZXIgKi8KKwlpbnQJCQls b29wcyA9IDA7CisKKwl3aGlsZSAob2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmIG9m Zm51bSA8PSBtYXhvZmYpCisJeworCQlJdGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdl LCBvZmZudW0pOworCQlIVFNWX1Jlc3VsdCBzdGF0dXM7CisJCUhlYXBUdXBsZUhlYWRlciBo dHVwOworCisJCS8qIEEgcmVkaXJlY3QvZGVhZC91bnVzZWQgaXRlbSBjYW5ub3QgYmUgYSBz dXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLworCQlpZiAoIUl0ZW1JZElzTm9ybWFsKGxwKSkK KwkJCXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCisJCWh0dXAgPSAoSGVhcFR1cGxl SGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGlzIGFuIHhpZC1mcmVlIGZvcndhcmRpbmcgbm9kZSwgbm90IGEK KwkJICogY2hhaW4gbWVtYmVyOyB0aGUgcGFnZSBzY2FuIHJlY29yZHMgaXQgdW5jaGFuZ2Vk IHdpdGhvdXQgY29tcHV0aW5nCisJCSAqIHZpc2liaWxpdHksIHNvIGl0cyBodHN2IHNsb3Qg aXMgdW5zZXQuICBTdGVwIHRocm91Z2ggaXQgdG8gaXRzCisJCSAqIGZvcndhcmQgbGluayBy YXRoZXIgdGhhbiByZWFkaW5nIGh0c3YsIHdoaWNoIHdvdWxkIHRyaXAgdGhlCisJCSAqIHZh bGlkaXR5IGFzc2VydC4KKwkJICovCisJCWlmIChIb3RJbmRleGVkSGVhZGVySXNTdHViKGh0 dXApKQorCQl7CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQoaHR1cCk7 CisJCQlpZiAoKytsb29wcyA+IG1heG9mZikKKwkJCQlyZXR1cm4gSW52YWxpZE9mZnNldE51 bWJlcjsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3RhdHVzID0gaHRzdl9nZXRfdmFsaWRf c3RhdHVzKHByc3RhdGUtPmh0c3Zbb2ZmbnVtXSk7CisJCWh0dXAgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJaWYgKHN0YXR1cyA9PSBIRUFQVFVQ TEVfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIEEgREVBRCBtZW1iZXIgaXMgcmVjbGFpbWVk L3JlZGlyZWN0ZWQsIHNvIHRoZSBzdXJ2aXZpbmcgdGFpbAorCQkJICogc3RhcnRzIGF0IGl0 cyBzdWNjZXNzb3IuICBBIERFQUQgbWVtYmVyIHdpdGggbm8gbGl2ZSBzdWNjZXNzb3IKKwkJ CSAqIG1lYW5zIHRoZSB3aG9sZSBjaGFpbiBpcyBkZWFkLgorCQkJICovCisJCQlpZiAoIUhl YXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSB8fAorCQkJCUl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJmh0dXAtPnRfY3RpZCkgIT0gcHJzdGF0ZS0+YmxvY2spCisJCQkJcmV0 dXJuIEludmFsaWRPZmZzZXROdW1iZXI7CisJCQlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9m ZnNldE51bWJlcigmaHR1cC0+dF9jdGlkKTsKKwkJCXN1cnZpdm9yID0gb2ZmbnVtOworCQl9 CisJCWVsc2UgaWYgKHN0YXR1cyA9PSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCkKKwkJewor CQkJLyoKKwkJCSAqIFJFQ0VOVExZX0RFQUQgbWVtYmVycyBiZWxvbmcgdG8gdGhlIHN1cnZp dmluZyB0YWlsIHVubGVzcyBhCisJCQkgKiBERUFEIG1lbWJlciBmb2xsb3dzIHRoZW0gKHdo aWNoIHdvdWxkIG1ha2UgdGhlbSBwYXJ0IG9mIHRoZQorCQkJICogZGVhZCBwcmVmaXgpLiAg S2VlcCB3YWxraW5nIHRvIGZpbmQgb3V0LCBidXQgZG8gbm90IGFkdmFuY2UgdGhlCisJCQkg KiBzdXJ2aXZvcjsgaXQgc3RheXMgYXQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUgbGFzdCBERUFE IG1lbWJlci4KKwkJCSAqLworCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQo aHR1cCkgfHwKKwkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZodHVwLT50X2N0aWQp ICE9IHByc3RhdGUtPmJsb2NrKQorCQkJCXJldHVybiBzdXJ2aXZvcjsKKwkJCW9mZm51bSA9 IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0aWQpOworCQl9CisJCWVs c2UKKwkJeworCQkJLyogTElWRSAob3IgaW4tcHJvZ3Jlc3MpOiB0aGUgc3Vydml2aW5nIHRh aWwgaXMgc2V0dGxlZC4gKi8KKwkJCXJldHVybiBzdXJ2aXZvcjsKKwkJfQorCisJCWlmICgr K2xvb3BzID4gbWF4b2ZmKQorCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1iZXI7IC8qIGRl ZmVuZCBhZ2FpbnN0IGEgY29ycnVwdCBjeWNsZSAqLworCX0KKworCXJldHVybiBJbnZhbGlk T2Zmc2V0TnVtYmVyOworfQorCiAvKgogICogUHJ1bmUgc3BlY2lmaWVkIGxpbmUgcG9pbnRl ciBvciBhIEhPVCBjaGFpbiBvcmlnaW5hdGluZyBhdCBsaW5lIHBvaW50ZXIuCiAgKgpAQCAt MTUxOCw2ICsxNjQ3LDM2IEBAIGhlYXBfcHJ1bmVfY2hhaW4oT2Zmc2V0TnVtYmVyIG1heG9m ZiwgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sCiAJCWlmIChvZmZudW0gPiBtYXhvZmYpCiAJ CQlicmVhazsKIAorCQkvKgorCQkgKiBTdGVwIHRyYW5zcGFyZW50bHkgdGhyb3VnaCBhIGNv bGxhcHNlLXN1cnZpdm9yIHN0dWIuICBBIHJlZGlyZWN0IG9yCisJCSAqIGFuIGVhcmxpZXIg c3R1YiBtYXkgZm9yd2FyZCBpbnRvIGEgc3R1YiB0aGF0IHJlcGxhY2VkIGEgZGVhZAorCQkg KiBtaWQtY2hhaW4gbWVtYmVyOyB0aGUgc3R1YiB3YXMgYWxyZWFkeSByZWNvcmRlZCAoYXMg dW5jaGFuZ2VkKSBieQorCQkgKiB0aGUgcGFnZSBzY2FuIGFuZCBpcyBub3QgaXRzZWxmIGEg Y2hhaW4gbWVtYmVyLCBzbyBmb2xsb3cgaXRzCisJCSAqIGZvcndhcmQgbGluayByYXRoZXIg dGhhbiBzdG9wcGluZyBhdCB0aGUgcHJvY2Vzc2VkIGNoZWNrIGJlbG93LgorCQkgKi8KKwkJ eworCQkJSXRlbUlkCQlzbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CisKKwkJ CWlmIChJdGVtSWRJc05vcm1hbChzbHApKQorCQkJeworCQkJCUhlYXBUdXBsZUhlYWRlciBz aHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIHNscCk7CisKKwkJ CQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1YihzaHR1cCkpCisJCQkJeworCQkJCQkvKgor CQkJCQkgKiBBIHN0dWIgaXMgeGlkLWZyZWUsIHNvIHRoZSB4bWluL3htYXggbGlua2FnZSBj YW5ub3QgYmUKKwkJCQkJICogdmVyaWZpZWQgYWNyb3NzIGl0LiAgVHJ1c3QgdGhlIHN0dWIn cyBmb3J3YXJkIGxpbmsgYW5kCisJCQkJCSAqIHNraXAgdGhlIHByaW9yLXhtYXggY2hlY2sg Zm9yIHRoZSBmaXJzdCBtZW1iZXIgcGFzdCBpdAorCQkJCQkgKiAob3RoZXJ3aXNlIHRoZSBj aGFpbiB3b3VsZCBiZSBzZXZlcmVkIHRoZXJlLCBkcm9wcGluZworCQkJCQkgKiBpdHMgdGFp bCkuCisJCQkJCSAqLworCQkJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQo c2h0dXApOworCQkJCQlwcmlvclhtYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCQkJ Y29udGludWU7CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyogSWYgaXRlbSBpcyBhbHJlYWR5 IHByb2Nlc3NlZCwgc3RvcCAtLS0gaXQgbXVzdCBub3QgYmUgc2FtZSBjaGFpbiAqLwogCQlp ZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQlicmVhazsKQEAgLTE2MjQsMTMg KzE3ODMsMjcgQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1iZXIgbWF4b2ZmLCBPZmZz ZXROdW1iZXIgcm9vdG9mZm51bSwKIAlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKHJvb3RscCkg JiYgbmNoYWluIDwgMikKIAl7CiAJCS8qCi0JCSAqIFdlIGZvdW5kIGEgcmVkaXJlY3QgaXRl bSB0aGF0IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBmb2xsb3ctb24KLQkJICogaXRlbS4g IFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgbG9vcCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZSgpCi0JCSAqIGNhdXNlZCB1cyB0byB2aXNpdCB0aGUgZGVhZCBzdWNjZXNzb3Igb2Yg YSByZWRpcmVjdCBpdGVtIGJlZm9yZQotCQkgKiB2aXNpdGluZyB0aGUgcmVkaXJlY3QgaXRl bS4gIFdlIGNhbiBjbGVhbiB1cCBieSBzZXR0aW5nIHRoZQotCQkgKiByZWRpcmVjdCBpdGVt IHRvIExQX0RFQUQgc3RhdGUgb3IgTFBfVU5VU0VEIGlmIHRoZSBjYWxsZXIKLQkJICogaW5k aWNhdGVkLgorCQkgKiBUaGUgd2FsayBjb3VsZCBub3QgZ2V0IHBhc3QgdGhlIHJlZGlyZWN0 OiBpdHMgdGFyZ2V0IHdhcyBlaXRoZXIKKwkJICogYWxyZWFkeSBwcm9jZXNzZWQgYnkgYSBz aWJsaW5nIHJlZGlyZWN0J3Mgd2FsayAoc2V2ZXJhbCByZWRpcmVjdHMKKwkJICogb2YgYSBj b2xsYXBzZWQgSE9UL1NJVSBjaGFpbiBmb3J3YXJkIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUp IG9yIGhhcworCQkgKiBzaW5jZSBkaWVkIGFuZCBiZWVuIGNvbGxhcHNlZCBmdXJ0aGVyLiAg UmUtcG9pbnQgdGhpcyByZWRpcmVjdCBhdAorCQkgKiB0aGUgY2hhaW4ncyBjdXJyZW50IGZp cnN0IHN1cnZpdmluZyBtZW1iZXIgc28gZXZlcnkgZW50cnkgdGhhdAorCQkgKiByZXNvbHZl cyB0aHJvdWdoIGl0IHN0aWxsIHJlYWNoZXMgdGhlIGxpdmUgdHVwbGUuICBJZiBubyBzdXJ2 aXZvcgorCQkgKiByZW1haW5zLCB0aGUgcmVkaXJlY3QgaXMgZGFuZ2xpbmcgYW5kIGlzIHJl Y2xhaW1lZCAoTFBfREVBRCwgb3IKKwkJICogTFBfVU5VU0VEIGlmIHRoZSBjYWxsZXIgYWxs b3dzIGl0KS4KIAkJICovCisJCU9mZnNldE51bWJlciB0YXJnZXQgPSBJdGVtSWRHZXRSZWRp cmVjdChyb290bHApOworCQlPZmZzZXROdW1iZXIgbGl2ZSA9IGhlYXBfcHJ1bmVfY2hhaW5f ZmluZF9saXZlKHByc3RhdGUsIHRhcmdldCk7CisKKwkJaWYgKE9mZnNldE51bWJlcklzVmFs aWQobGl2ZSkpCisJCXsKKwkJCWlmIChsaXZlID09IHRhcmdldCkKKwkJCQloZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSk7CisJ CQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9m Zm51bSwgbGl2ZSwgZmFsc2UpOworCQkJcmV0dXJuOworCQl9CisKIAkJaGVhcF9wcnVuZV9y ZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51bSwgZmFsc2UpOwogCQly ZXR1cm47CiAJfQpAQCAtMTY1NiwyNCArMTgyOSwxMjYgQEAgcHJvY2Vzc19jaGFpbjoKIAll bHNlIGlmIChuZGVhZGNoYWluID09IG5jaGFpbikKIAl7CiAJCS8qCi0JCSAqIFRoZSBlbnRp cmUgY2hhaW4gaXMgZGVhZC4gIE1hcmsgdGhlIHJvb3QgbGluZSBwb2ludGVyIExQX0RFQUQs IGFuZAotCQkgKiBmdWxseSByZW1vdmUgdGhlIG90aGVyIHR1cGxlcyBpbiB0aGUgY2hhaW4u CisJCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE5vIGxpdmUgdHVwbGUgcmVtYWlu cyB0byBmb3J3YXJkIHRvLCBzbworCQkgKiBtYXJrIHRoZSByb290IExQX0RFQUQgKG9yIExQ X1VOVVNFRCBpZiB0aGUgY2FsbGVyIGFsbG93cyBpdCkgYW5kCisJCSAqIHJlY2xhaW0gZWFj aCBtZW1iZXIuICBBIGRlYWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbWVtYmVyIG1heQor CQkgKiBzdGlsbCBoYXZlIGEgc3RhbGUgYnRyZWUgbGVhZiBwb2ludGluZyBhdCBpdDogbWFy ayBpdCBMUF9ERUFEIHNvCisJCSAqIHRoZSBzbG90IGlzIHBpbm5lZCBhZ2FpbnN0IHJldXNl IGFuZCBhZGRlZCB0byB0aGUgZGVhZC1pdGVtcyBhcnJheSwKKwkJICogbGV0dGluZyBhbWJ1 bGtkZWxldGUgc3dlZXAgdGhlIGxlYWYgYW5kIGEgbGF0ZXIgdmFjdXVtIHJlY2xhaW0gdGhl CisJCSAqIGxpbmUgcG9pbnRlci4gIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gbGVh ZiBvZiB0aGVpciBvd24gYW5kCisJCSAqIGdvIHN0cmFpZ2h0IHRvIExQX1VOVVNFRC4KIAkJ ICovCiAJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3RhdGUsIHJvb3Rv ZmZudW0sIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwogCQlmb3IgKGludCBpID0gMTsgaSA8 IG5jaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNo YWluaXRlbXNbaV0sIHRydWUpOworCQl7CisJCQlpZiAoaGVhcF9wcnVuZV9pdGVtX3ByZXNl cnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkKKwkJCQloZWFwX3BydW5l X3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCB0cnVlKTsK KwkJCWVsc2UKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgY2hhaW5p dGVtc1tpXSwgdHJ1ZSk7CisJCX0KIAl9CiAJZWxzZQogCXsKIAkJLyoKLQkJICogV2UgZm91 bmQgYSBERUFEIHR1cGxlIGluIHRoZSBjaGFpbi4gIFJlZGlyZWN0IHRoZSByb290IGxpbmUg cG9pbnRlcgotCQkgKiB0byB0aGUgZmlyc3Qgbm9uLURFQUQgdHVwbGUsIGFuZCBtYXJrIGFz IHVudXNlZCBlYWNoIGludGVybWVkaWF0ZQotCQkgKiBpdGVtIHRoYXQgd2UgYXJlIGFibGUg dG8gcmVtb3ZlIGZyb20gdGhlIGNoYWluLgorCQkgKiBUaGUgY2hhaW4gaGFzIGEgZGVhZCBw cmVmaXggZm9sbG93ZWQgYnkgYSBsaXZlIHJlbWFpbmRlci4gIENvbGxhcHNlCisJCSAqIGl0 IHdpdGggUEhPVC1zdHlsZSBrZXkgdHVwbGVzIHNvIHRoYXQgdGhlIHBlci1ob3AgbW9kaWZp ZWQtYXR0cnMKKwkJICogYml0bWFwcyBzdXJ2aXZlIGZvciB0aGUgYml0bWFwLW92ZXJsYXAg cmVhZCBwYXRoLgorCQkgKgorCQkgKiBXYWxrIHRoZSBkZWFkIG1lbWJlcnMgZnJvbSB0aGUg bGl2ZSBlbmQgYmFja3dhcmRzLCBhY2N1bXVsYXRpbmcgaW4KKwkJICogbGF0ZXJhdHRycyB0 aGUgdW5pb24gb2YgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMgb2YgdGhlIG1lbWJlcnMK KwkJICogdGhhdCBmb2xsb3cgKHRoZSAibGF0ZXIgaG9wcyIpLiAgQSBkZWFkIGtleSB0dXBs ZSAtLSBvbmUgdGhhdAorCQkgKiBjYXJyaWVkIGl0cyBvd24gaW5kZXggZW50cmllcyBiZWNh dXNlIGl0IGNoYW5nZWQgYW4gaW5kZXhlZAorCQkgKiBhdHRyaWJ1dGUgYXQgaXRzIGhvcCAo aGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkgLS0gaXMKKwkJICogZGlz cG9zZWQgb2YgYXMgZm9sbG93czoKKwkJICoKKwkJICogLSBJZiBldmVyeSBhdHRyaWJ1dGUg aXQgY2hhbmdlZCB3YXMgY2hhbmdlZCBhZ2FpbiBieSBhIGxhdGVyIGhvcAorCQkgKiAoaXRz IGJpdG1hcCBpcyBhIHN1YnNldCBvZiBsYXRlcmF0dHJzKSwgZXZlcnkgaW5kZXggZW50cnkg cG9pbnRpbmcKKwkJICogYXQgaXQgaXMgc3VwZXJzZWRlZCwgc28gbm8gbGl2ZSBlbnRyeSBy ZWZlcmVuY2VzIGl0OiByZWNsYWltIGl0CisJCSAqIChMUF9ERUFEKSwgd2hpY2ggbGV0cyB0 aGlzIHZhY3V1bSdzIGluZGV4IHBhc3Mgc3dlZXAgaXRzIG5vdy1zdGFsZQorCQkgKiBsZWF2 ZXMgYW5kIGEgbGF0ZXIgcGFzcyBmcmVlIHRoZSBsaW5lIHBvaW50ZXIuICBUaGlzIGxvc2Vz IG5vCisJCSAqIHBlci1ob3AgaW5mb3JtYXRpb24gZm9yIHJlYWRlcnMgLS0gaXRzIGF0dHJp YnV0ZXMgYXJlIGFscmVhZHkKKwkJICogY2FycmllZCBieSB0aGUgc3Vydml2aW5nIGxhdGVy IG1lbWJlcnMgdGhlIHJlYWRlciBzdGlsbCBjcm9zc2VzLgorCQkgKgorCQkgKiAtIE90aGVy d2lzZSBpdCBpbnRyb2R1Y2VkIGFuIGF0dHJpYnV0ZSBub3QgY2hhbmdlZCBhZ2Fpbiwgc28g YSBsaXZlCisJCSAqIGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdDoga2VlcCBpdCBhcyBhbiB4 aWQtZnJlZSBzdHViIGZvcndhcmRpbmcgdG8KKwkJICogdGhlIG5leHQgc3Vydml2b3IsIHBy ZXNlcnZpbmcgaXRzIGlubGluZSBiaXRtYXAgZm9yIHRoZSByZWFkIHBhdGguCisJCSAqCisJ CSAqIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gZW50cnkgb2YgdGhlaXIgb3duIGFu ZCBhcmUgcmVjbGFpbWVkCisJCSAqIHRvIExQX1VOVVNFRDsgc3Vydml2b3JzIGZvcndhcmQg cGFzdCB0aGVtLiAgVGhlIHJvb3QgaXMgcmVkaXJlY3RlZAorCQkgKiB0byB0aGUgZmlyc3Qg c3Vydml2b3IuICBTdHVicyBjYXJyeSBubyBYSURzLCBzbyB0aGUgcGFnZSBzdGF5cworCQkg KiBmcmVlemUtc2FmZTsgYmVjYXVzZSBlYWNoIGZvcndhcmRzIHRvIHRoZSBuZXh0IHN1cnZp dm9yIChub3QgdGhlCisJCSAqIGxpdmUgdHVwbGUpLCBhIHJlYWRlciBjcm9zc2luZyB0aGUg Y29sbGFwc2VkIHByZWZpeCBzZWVzIGV2ZXJ5CisJCSAqIHN1cnZpdmluZyBob3AncyBiaXRt YXAsIGFuZCBzdHViLT5zdHViIGZvcndhcmRpbmcgbGV0cyBhIGxhdGVyCisJCSAqIGNvbGxh cHNlIGV4dGVuZCB0aGUgY2hhaW4gd2l0aG91dCByZS1wb2ludGluZyBleGlzdGluZyBzdHVi cy4KKwkJICovCisJCU9mZnNldE51bWJlciBmaXJzdF9saXZlID0gY2hhaW5pdGVtc1tuZGVh ZGNoYWluXTsKKwkJT2Zmc2V0TnVtYmVyIG5leHRfc3Vydml2b3IgPSBmaXJzdF9saXZlOwor CQlPZmZzZXROdW1iZXIgcm9vdF90YXJnZXQ7CisJCWludAkJCXJlbG5hdHRzID0gUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocHJzdGF0ZS0+cmVsYXRpb24pOworCQl1aW50OAkJ bGF0ZXJhdHRyc1soTWF4SGVhcEF0dHJpYnV0ZU51bWJlciArIDcpIC8gOF07CisKKwkJLyoK KwkJICogbGF0ZXJhdHRycyBhY2N1bXVsYXRlcyBldmVyeSBzdXJ2aXZpbmcgaG9wJ3MgbW9k aWZpZWQgYXR0cmlidXRlcy4KKwkJICogU2l6ZSBpdCBmb3IgdGhlIHJlbGF0aW9uJ3MgY3Vy cmVudCBuYXR0cyAodGhlIG1heGltdW0pOyBlYWNoCisJCSAqIGNvbnRyaWJ1dGluZyB0dXBs ZSdzIGJpdG1hcCBpcyBsb2NhdGVkIGFuZCBPUi1lZCB1c2luZyB0aGF0IHR1cGxlJ3MKKwkJ ICogd3JpdGUtdGltZSBuYXR0cyAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBzaW5j ZSBBREQgQ09MVU1OIG1heQorCQkgKiBoYXZlIGdyb3duIHRoZSByZWxhdGlvbiBzaW5jZSBz b21lIGhvcHMgd2VyZSB3cml0dGVuLgogCQkgKi8KLQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVk aXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSwgY2hhaW5pdGVtc1tuZGVhZGNoYWluXSwKLQkJ CQkJCQkJICAgSXRlbUlkSXNOb3JtYWwocm9vdGxwKSk7Ci0JCWZvciAoaW50IGkgPSAxOyBp IDwgbmRlYWRjaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3Rh dGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQltZW1zZXQobGF0ZXJhdHRycywgMCwgSG90 SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJCWZvciAoaW50IGkgPSBuZGVhZGNo YWluOyBpIDwgbmNoYWluOyBpKyspCisJCXsKKwkJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJCWlmICgoaHR1 cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCXsKKwkJ CQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMoaHR1cCk7CisK KwkJCQlIb3RJbmRleGVkQml0bWFwVW5pb24obGF0ZXJhdHRycywKKwkJCQkJCQkJCSAgSG90 SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwKGh0dXAsCisJCQkJCQkJCQkJCQkJCQkgIEl0ZW1J ZEdldExlbmd0aChscCksCisJCQkJCQkJCQkJCQkJCQkgIGJtbmF0dHMpLAorCQkJCQkJCQkJ ICBibW5hdHRzKTsKKwkJCX0KKwkJfQorCisJCS8qIGRlYWQgcHJlZml4OiByZWNsYWltIHN1 cGVyc2VkZWQgbWVtYmVycywgc3R1YiB0aGUgcmVzdCAqLworCQlmb3IgKGludCBpID0gbmRl YWRjaGFpbiAtIDE7IGkgPj0gMTsgaS0tKQorCQl7CisJCQlpZiAoaGVhcF9wcnVuZV9pdGVt X3ByZXNlcnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkKKwkJCXsKKwkJ CQlJdGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBjaGFpbml0ZW1zW2ldKTsKKwkJ CQlIZWFwVHVwbGVIZWFkZXIgaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVt KHBhZ2UsIGxwKTsKKwkJCQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFw TmF0dHMoaHR1cCk7CisJCQkJY29uc3QgdWludDggKmF0dHJzID0gSG90SW5kZXhlZEdldE1v ZGlmaWVkQml0bWFwKGh0dXAsCisJCQkJCQkJCQkJCQkJCSBJdGVtSWRHZXRMZW5ndGgobHAp LAorCQkJCQkJCQkJCQkJCQkgYm1uYXR0cyk7CisKKwkJCQlpZiAoSG90SW5kZXhlZEJpdG1h cElzU3Vic2V0KGF0dHJzLCBsYXRlcmF0dHJzLCBibW5hdHRzKSkKKwkJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1ZSk7 CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaGVhcF9wcnVuZV9yZWNvcmRfc3R1YihwcnN0YXRl LCBjaGFpbml0ZW1zW2ldLCBuZXh0X3N1cnZpdm9yKTsKKwkJCQkJbmV4dF9zdXJ2aXZvciA9 IGNoYWluaXRlbXNbaV07CisJCQkJfQorCQkJCUhvdEluZGV4ZWRCaXRtYXBVbmlvbihsYXRl cmF0dHJzLCBhdHRycywgYm1uYXR0cyk7CisJCQl9CisJCQllbHNlCisJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQl9CisK KwkJcm9vdF90YXJnZXQgPSBuZXh0X3N1cnZpdm9yOworCisJCS8qCisJCSAqIHJvb3QgLT4g Zmlyc3Qgc3Vydml2b3IgKHNraXAgYSByZWR1bmRhbnQgbm8tb3AgcmVkaXJlY3Qgb24KKwkJ ICogcmUtcHJ1bmUpCisJCSAqLworCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKHJvb3RscCkg JiYKKwkJCUl0ZW1JZEdldFJlZGlyZWN0KHJvb3RscCkgPT0gcm9vdF90YXJnZXQpCisJCQlo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9m Zm51bSk7CisJCWVsc2UKKwkJCWhlYXBfcHJ1bmVfcmVjb3JkX3JlZGlyZWN0KHByc3RhdGUs IHJvb3RvZmZudW0sIHJvb3RfdGFyZ2V0LAorCQkJCQkJCQkJICAgSXRlbUlkSXNOb3JtYWwo cm9vdGxwKSk7CiAKIAkJLyogdGhlIHJlc3Qgb2YgdHVwbGVzIGluIHRoZSBjaGFpbiBhcmUg bm9ybWFsLCB1bmNoYW5nZWQgdHVwbGVzICovCiAJCWZvciAoaW50IGkgPSBuZGVhZGNoYWlu OyBpIDwgbmNoYWluOyBpKyspCkBAIC0xNzE4LDYgKzE5OTMsMzQgQEAgaGVhcF9wcnVuZV9y ZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkgKiBzZXBhcmF0ZWx5IGFz IGFuIHVuY2hhbmdlZCB0dXBsZS4KIAkgKi8KIAorCS8qCisJICogSWYgdGhlIHJlZGlyZWN0 IHBvaW50cyBhdCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGxpdmUgdHVwbGUsIHRoZQor CSAqIHBhZ2UgbWF5IHN0aWxsIGNhcnJ5IHN0YWxlIGJ0cmVlIGVudHJpZXMgdGhhdCByZXNv bHZlIHRocm91Z2ggdGhpcworCSAqIHJlZGlyZWN0IHRvIGEgdHVwbGUgd2l0aCBhIGRpZmZl cmVudCBrZXkuICBTdWNoIGVudHJpZXMgYXJlIGZpbHRlcmVkIGJ5CisJICogdGhlIHJlYWQg cGF0aCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2ggcmVxdWlyZXMgZmV0Y2hp bmcgdGhlCisJICogaGVhcCB0dXBsZSAtLSBidXQgYW4gaW5kZXgtb25seSBzY2FuIHRydXN0 cyB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHNraXBzCisJICogdGhhdCBmZXRjaC4gIFNvCisJ ICogdGhlIHBhZ2UgbXVzdCBub3QgYmUgcmVwb3J0ZWQgYWxsLXZpc2libGUvYWxsLWZyb3pl biB3aGlsZSBzdWNoIGEKKwkgKiByZWRpcmVjdCBleGlzdHM7IGl0IGJlY29tZXMgZWxpZ2li bGUgYWdhaW4gb25seSBvbmNlIHZhY3V1bSBoYXMgc3dlcHQKKwkgKiB0aGUgc3RhbGUgbGVh dmVzIGFuZCByZWNsYWltZWQgdGhlIHJlZGlyZWN0LgorCSAqLworCWlmIChyZG9mZm51bSA+ PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQlyZG9mZm51bSA8PSBQYWdlR2V0TWF4T2Zmc2V0 TnVtYmVyKHByc3RhdGUtPnBhZ2UpKQorCXsKKwkJSXRlbUlkCQl0bHAgPSBQYWdlR2V0SXRl bUlkKHByc3RhdGUtPnBhZ2UsIHJkb2ZmbnVtKTsKKworCQlpZiAoSXRlbUlkSXNOb3JtYWwo dGxwKSkKKwkJeworCQkJSGVhcFR1cGxlSGVhZGVyIHRodHVwID0gKEhlYXBUdXBsZUhlYWRl cikgUGFnZUdldEl0ZW0ocHJzdGF0ZS0+cGFnZSwgdGxwKTsKKworCQkJaWYgKCh0aHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCXsKKwkJCQlw cnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQlwcnN0YXRlLT5zZXRfYWxs X2Zyb3plbiA9IGZhbHNlOworCQkJfQorCQl9CisJfQorCiAJQXNzZXJ0KHByc3RhdGUtPm5y ZWRpcmVjdGVkIDwgTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwogCXByc3RhdGUtPnJlZGlyZWN0 ZWRbcHJzdGF0ZS0+bnJlZGlyZWN0ZWQgKiAyXSA9IG9mZm51bTsKIAlwcnN0YXRlLT5yZWRp cmVjdGVkW3Byc3RhdGUtPm5yZWRpcmVjdGVkICogMiArIDFdID0gcmRvZmZudW07CkBAIC0x NzM1LDYgKzIwMzgsNjUgQEAgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwKIAlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOwogfQogCisvKgorICogUmVj b3JkIGEgbGluZSBwb2ludGVyIHRvIGJlIHJld3JpdHRlbiBpbiBwbGFjZSBhcyBhIEhPVC1z ZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGZvcndhcmRp bmcgdG8gJ2ZvcndhcmQnLgorICoKKyAqIFRoZSBzb3VyY2UgbXVzdCBiZSBhIGRlYWQgaGVh cC1vbmx5IHR1cGxlIHRoYXQgY2FycmllZCBpdHMgb3duIGJ0cmVlCisgKiBlbnRyaWVzIChh IGtleSB0dXBsZSkgYW5kIHNvIGNhbm5vdCBiZSByZWNsYWltZWQgb3V0cmlnaHQ6IGEgc3Rh bGUgZW50cnkgbWF5CisgKiBzdGlsbCByZXNvbHZlIHRocm91Z2ggaXQuICBSZXdyaXRpbmcg aXQgaW50byBhbiB4aWQtZnJlZSBzdHViIGtlZXBzIHRoZQorICogZm9yd2FyZCBsaW5rIGFu ZCB0aGUgdHVwbGUncyBpbmxpbmUgbW9kaWZpZWQtYXR0cnMgYml0bWFwIChzbyB0aGUgcmVh ZCBwYXRoCisgKiBjYW4ganVkZ2Ugc3RhbGVuZXNzKSB3aGlsZSBkcm9wcGluZyBpdHMgWElE cywgd2hpY2gga2VlcHMgdGhlIHBhZ2UKKyAqIGZyZWV6ZS1zYWZlLgorICovCitzdGF0aWMg dm9pZAoraGVhcF9wcnVuZV9yZWNvcmRfc3R1YihQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJ CQkgICBPZmZzZXROdW1iZXIgb2ZmbnVtLCBPZmZzZXROdW1iZXIgZm9yd2FyZCkKK3sKKwlB c3NlcnQoIXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dKTsKKwlwcnN0YXRlLT5wcm9jZXNz ZWRbb2ZmbnVtXSA9IHRydWU7CisKKwkvKgorCSAqIEFzIHdpdGggYSByZWRpcmVjdCB0byBh IEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIHR1cGxlLCB0aGUgcGFnZSBtdXN0CisJICogbm90 IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4gd2hpbGUgYSBzdHViIGV4aXN0 czogYW4KKwkgKiBpbmRleC1vbmx5IHNjYW4gd291bGQgb3RoZXJ3aXNlIHRydXN0IHRoZSBW TSBhbmQgc2tpcCB0aGUgcmVjaGVjayB0aGF0CisJICogZmlsdGVycyBhIG5vdy1zdGFsZSBl bnRyeSByZXNvbHZpbmcgdGhyb3VnaCB0aGUgc3R1Yi4gIEEgc3R1YidzCisJICogSEVBUF9Y TUlOX0lOVkFMSUQgYWxzbyBtYWtlcyBpdCBpbnZpc2libGUgdG8gZXZlcnkgc25hcHNob3Qs IHdoaWNoIGFuCisJICogYWxsLXZpc2libGUgcGFnZSBtdXN0IG5ldmVyIGNvbnRhaW4uICBF bGlnaWJpbGl0eSByZXR1cm5zIG9uY2UgdmFjdXVtCisJICogcmVjbGFpbXMgdGhlIHN0dWIu CisJICovCisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+ c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKworCUFzc2VydChwcnN0YXRlLT5uc3R1YnMgPCBN YXhIZWFwVHVwbGVzUGVyUGFnZSk7CisJcHJzdGF0ZS0+c3R1YnNbcHJzdGF0ZS0+bnN0dWJz ICogMl0gPSBvZmZudW07CisJcHJzdGF0ZS0+c3R1YnNbcHJzdGF0ZS0+bnN0dWJzICogMiAr IDFdID0gZm9yd2FyZDsKKwlwcnN0YXRlLT5uc3R1YnMrKzsKKworCS8qIFRoZSBkZWFkIGtl eSB0dXBsZSdzIHN0b3JhZ2UgaXMgYmVpbmcgZGlzY2FyZGVkOyBjb3VudCBpdCByZW1vdmVk LiAqLworCXByc3RhdGUtPm5kZWxldGVkKys7CisKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVl OworfQorCisvKgorICogUmVjb3JkIGFuIGV4aXN0aW5nIGNvbGxhcHNlLXN1cnZpdm9yIHN0 dWIgdGhhdCBpcyB0byBiZSBsZWZ0IHVuY2hhbmdlZC4KKyAqCisgKiBFbmNvdW50ZXJlZCB3 aGVuIHJlLXBydW5pbmcgYSBwYWdlIHRoYXQgYWxyZWFkeSBob2xkcyBzdHVicyBmcm9tIGFu IGVhcmxpZXIKKyAqIGNvbGxhcHNlLiAgVGhlIHN0dWIgaXMgcHJlc2VydmVkIChpdHMgYml0 bWFwIGlzIHN0aWxsIG5lZWRlZCkgYW5kIGNvdW50cyBhcworICogYSByZWFzb24gdGhlIHBh Z2UgY2Fubm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4uCisgKi8KK3N0 YXRpYyB2b2lkCitoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfc3R1YihQcnVuZVN0 YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQoreworCUFzc2VydCghcHJzdGF0 ZS0+cHJvY2Vzc2VkW29mZm51bV0pOworCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dID0g dHJ1ZTsKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOworCisJcHJzdGF0ZS0+c2V0X2FsbF92 aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKK30K KwogLyogUmVjb3JkIGxpbmUgcG9pbnRlciB0byBiZSBtYXJrZWQgZGVhZCAqLwogc3RhdGlj IHZvaWQKIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTE4MTYsNiArMjE3OCw1MiBAQCBoZWFwX3BydW5lX3Jl Y29yZF91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwg Ym9vbCB3YXNfbm9ybQogCQlwcnN0YXRlLT5uZGVsZXRlZCsrOwogfQogCisKKy8qCisgKiBo ZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVkCisgKgkJVHJ1ZSBpZmYgdGhl IExQIGF0IGBvZmZudW1gIG9uIGBwYWdlYCBpcyBhIGxpdmUgSE9ULWluZGV4ZWQgKEhPVC9T SVUpCisgKgkJaGVhcC1vbmx5IHR1cGxlIHdob3NlIExQIG11c3QgYmUgcHJlc2VydmVkIHJh dGhlciB0aGFuIHJlY2xhaW1lZCB0bworICoJCUxQX1VOVVNFRCwgYmVjYXVzZSBhIG5vdC15 ZXQtc3dlcHQgaW5kZXggZW50cnkgbWF5IHN0aWxsIHBvaW50IGF0IGl0LgorICoKKyAqIEEg SE9ULWluZGV4ZWQgdXBkYXRlIHBsYW50cyBhIG5ldyBpbmRleCBlbnRyeSBwb2ludGluZyBh dCB0aGUgaGVhcC1vbmx5CisgKiB0dXBsZSdzIG93biBUSUQuICBDbGFzc2ljIEhPVCdzIGlu dmFyaWFudCB0aGF0IG1pZC1jaGFpbiBMUHMgaGF2ZSBubworICogZXh0ZXJuYWwgcmVmZXJl bmNlcyB0aGVyZWZvcmUgZG9lcyBub3QgaG9sZCBmb3Igc3VjaCB0dXBsZXM6IHVudGlsCisg KiBhbWJ1bGtkZWxldGUgc3dlZXBzIGFueSBzdGFsZSBpbmRleCBlbnRyeSwgYSByZWFkZXIg YXJyaXZpbmcgdmlhIGl0IG11c3QKKyAqIHN0aWxsIGZpbmQgYSB3YWxrYWJsZSBob3AgYXQg dGhlIExQLiAgQ2hhaW4gY29sbGFwc2UgY29udmVydHMgZGVhZCBtZW1iZXJzCisgKiB0byBM UF9SRURJUkVDVCBmb3J3YXJkZXJzIGZvciBleGFjdGx5IHRoaXMgcmVhc29uOyBhIGxpdmUg bWVtYmVyIGxpa2UgdGhpcworICogb25lIG11c3Qgc2ltcGx5IG5vdCBiZSByZWNsYWltZWQg b3V0IGZyb20gdW5kZXIgc3VjaCBhIHJlYWRlci4KKyAqCisgKiBFeGNsdWRlZCBmcm9tIHBy ZXNlcnZhdGlvbjoKKyAqICAgLSBpdGVtcyB0aGF0IGFyZSBub3QgTFBfTk9STUFMIChSRURJ UkVDVCwgREVBRCwgVU5VU0VEKTsKKyAqICAgLSB0dXBsZXMgd2l0aG91dCBIRUFQX0lOREVY RURfVVBEQVRFRCAoY2xhc3NpYyBIT1QgY2hhaW4gbWVtYmVycyBuZXZlcgorICogICAgIGhh ZCBhIHBlci10dXBsZSBpbmRleCBlbnRyeSBwbGFudGVkKTsKKyAqICAgLSB0dXBsZXMgd2l0 aCBubyBhdHRyaWJ1dGVzIChkZWZlbnNpdmU6IG5vdCBhIHJlYWwgY2hhaW4gbWVtYmVyKTsK KyAqICAgLSBhYm9ydGVkIGhlYXAtb25seSB0dXBsZXMgKEhFQVBfWE1JTl9JTlZBTElEKTog bmV2ZXIgdmlzaWJsZSB0aHJvdWdoIGFueQorICogICAgIGluZGV4IGVudHJ5LCBzbyByZWNs YWltaW5nIHRoZW0gaXMgc2FmZS4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcHJ1bmVfaXRl bV9wcmVzZXJ2ZXNfaG90X2luZGV4ZWQoUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2ZmbnVt KQoreworCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CisJSGVh cFR1cGxlSGVhZGVyIGh0dXA7CisKKwlpZiAoIUl0ZW1JZElzTm9ybWFsKGxwKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGxwKTsKKworCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBE QVRFRCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChIZWFwVHVwbGVIZWFkZXJHZXRO YXR0cyhodHVwKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKChodHVwLT50X2luZm9t YXNrICYgSEVBUF9YTUlOX0lOVkFMSUQpICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCXJl dHVybiB0cnVlOworfQorCisKKwogLyoKICAqIFJlY29yZCBhbiB1bnVzZWQgbGluZSBwb2lu dGVyIHRoYXQgaXMgbGVmdCB1bmNoYW5nZWQuCiAgKi8KQEAgLTIwNDksOCArMjQ1Nyw0NCBA QCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bQogCSAqLwogCUFzc2VydCghcHJzdGF0ZS0+ cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dID0gdHJ1 ZTsKKworCS8qCisJICogQXMgaW4gaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3Q6IGlmIHRo aXMgcmVkaXJlY3QgZm9yd2FyZHMgdG8gYQorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVk IGxpdmUgdHVwbGUsIHRoZSBwYWdlIG1heSBjYXJyeSBzdGFsZSBidHJlZQorCSAqIGVudHJp ZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggaXQsIHNvIGl0IG11c3Qgbm90IGJlIHJlcG9ydGVk CisJICogYWxsLXZpc2libGUvYWxsLWZyb3plbiAoYW4gaW5kZXgtb25seSBzY2FuIHdvdWxk IG90aGVyd2lzZSBza2lwIHRoZQorCSAqIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjaGVj aykuICBUaGlzIG11c3QgaGFwcGVuIGhlcmUgdG9vLCBub3Qgb25seSB3aGVuIHRoZQorCSAq IHJlZGlyZWN0IGlzIGZpcnN0IGNyZWF0ZWQsIGJlY2F1c2UgYSByZS1wcnVuZSByZWNvcmRz IGFuIGV4aXN0aW5nIFNJVQorCSAqIHJlZGlyZWN0IGFzIHVuY2hhbmdlZC4KKwkgKi8KKwl7 CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHByc3RhdGUtPnBhZ2UsIG9mZm51bSk7 CisKKwkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkpCisJCXsKKwkJCU9mZnNldE51bWJl ciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsKKworCQkJaWYgKHJkb2ZmbnVt ID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkJcmRvZmZudW0gPD0gUGFnZUdldE1heE9m ZnNldE51bWJlcihwcnN0YXRlLT5wYWdlKSkKKwkJCXsKKwkJCQlJdGVtSWQJCXRscCA9IFBh Z2VHZXRJdGVtSWQocHJzdGF0ZS0+cGFnZSwgcmRvZmZudW0pOworCisJCQkJaWYgKEl0ZW1J ZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwcnN0YXRlLT5wYWdlLCB0bHApOworCisJ CQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9 IDApCisJCQkJCXsKKwkJCQkJCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IGZhbHNlOwor CQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKwkJCQkJfQorCQkJCX0K KwkJCX0KKwkJfQorCX0KIH0KIAorCiAvKgogICogUGVyZm9ybSB0aGUgYWN0dWFsIHBhZ2Ug Y2hhbmdlcyBuZWVkZWQgYnkgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4KICAqCkBA IC0yMDY1LDE3ICsyNTA5LDIyIEBAIHZvaWQKIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1 ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCU9mZnNldE51bWJl ciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJT2Zmc2V0TnVtYmVyICpu b3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50 IG51bnVzZWQpCisJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQs CisJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKQogewogCVBhZ2UJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zmc2V0TnVtYmVyICpvZmZudW07CiAJ SGVhcFR1cGxlSGVhZGVyIGh0dXAgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwogCiAJLyog U2hvdWxkbid0IGJlIGNhbGxlZCB1bmxlc3MgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8K LQlBc3NlcnQobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCk7 CisJQXNzZXJ0KG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDAg fHwgbnN0dWJzID4gMCk7CiAKLQkvKiBJZiAnbHBfdHJ1bmNhdGVfb25seScsIHdlIGNhbiBv bmx5IHJlbW92ZSBhbHJlYWR5LWRlYWQgbGluZSBwb2ludGVycyAqLwotCUFzc2VydCghbHBf dHJ1bmNhdGVfb25seSB8fCAobnJlZGlyZWN0ZWQgPT0gMCAmJiBuZGVhZCA9PSAwKSk7CisJ LyoKKwkgKiBJZiAnbHBfdHJ1bmNhdGVfb25seScsIHdlIGNhbiBvbmx5IHJlbW92ZSBhbHJl YWR5LWRlYWQgbGluZSBwb2ludGVycworCSAqIGFuZCByZS1wb2ludCByZWRpcmVjdHMgKHRo ZSBsYXR0ZXIgd2hlbiB2YWN1dW0gcmVjbGFpbXMgYSBjb2xsYXBzZWQKKwkgKiBjaGFpbiBh bmQgcmUtcG9pbnRzIGEgcm9vdCByZWRpcmVjdCBhdCB0aGUgc3Vydml2aW5nIHR1cGxlKS4K KwkgKi8KKwlBc3NlcnQoIWxwX3RydW5jYXRlX29ubHkgfHwgbmRlYWQgPT0gMCk7CiAKIAkv KiBVcGRhdGUgYWxsIHJlZGlyZWN0ZWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IHJl ZGlyZWN0ZWQ7CkBAIC0yMDg2LDYgKzI1MzUsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1 dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQlJdGVtSWQJCWZy b21scCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgZnJvbW9mZik7CiAJCUl0ZW1JZAkJdG9scCBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKKwkJLyoKKwkJICogQSByZWR1bmRhbnQgcmVk aXJlY3QgKHRoZSBMUCBhbHJlYWR5IHJlZGlyZWN0cyB0byB0b29mZikgaXMgYQorCQkgKiBo YXJtbGVzcyBuby1vcC4gIFRoaXMgYXJpc2VzIHdoZW4gYSBIT1QtaW5kZXhlZCBjaGFpbiB0 aGF0IHdhcworCQkgKiBhbHJlYWR5IGNvbGxhcHNlZCBpcyByZS1wcnVuZWQgYW5kIHRoZSBy b290IHN0aWxsIHJlc29sdmVzIHRvIHRoZQorCQkgKiBzYW1lIHRhcmdldDsgc2tpcCBpdCBz byB0aGUgYXBwbHkgc3RheXMgaWRlbXBvdGVudCBvbiBib3RoIHByaW1hcnkKKwkJICogYW5k IHJlcGxheS4KKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoZnJvbWxwKSAmJiBJ dGVtSWRHZXRSZWRpcmVjdChmcm9tbHApID09IHRvb2ZmKQorCQkJY29udGludWU7CisKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAKIAkJLyoKQEAgLTIxMDAsNyArMjU1OSwxNiBA QCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5j YXRlX29ubHksCiAJCQlBc3NlcnQoSXRlbUlkSGFzU3RvcmFnZShmcm9tbHApICYmIEl0ZW1J ZElzTm9ybWFsKGZyb21scCkpOwogCiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFn ZUdldEl0ZW0ocGFnZSwgZnJvbWxwKTsKLQkJCUFzc2VydCghSGVhcFR1cGxlSGVhZGVySXNI ZWFwT25seShodHVwKSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVkaXJlY3Qgc291cmNlIGlz IG5vcm1hbGx5IHRoZSBub24taGVhcC1vbmx5IGNoYWluIHJvb3QuIEEKKwkJCSAqIEhPVC9T SVUgY2hhaW4gY29sbGFwc2UgYWRkaXRpb25hbGx5IHJlZGlyZWN0cyBkZWFkIGhlYXAtb25s eQorCQkJICogbWVtYmVycyB0aGF0IGNhcnJpZWQgdGhlaXIgb3duIGJ0cmVlIGVudHJ5IHRv IHRoZSBsaXZlIHR1cGxlLAorCQkJICogc28gYSBoZWFwLW9ubHkgcmVkaXJlY3Qgc291cmNl IGlzIGFsbG93ZWQgd2hlbiBpdCBpcworCQkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQg KEhFQVBfSU5ERVhFRF9VUERBVEVEKS4KKwkJCSAqLworCQkJQXNzZXJ0KCFIZWFwVHVwbGVI ZWFkZXJJc0hlYXBPbmx5KGh0dXApIHx8CisJCQkJICAgKGh0dXAtPnRfaW5mb21hc2syICYg SEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjEy OCwxMiArMjU5Niw1NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVy LCBib29sIGxwX3RydW5jYXRlX29ubHksCiAJCXRvbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IHRvb2ZmKTsKIAkJQXNzZXJ0KEl0ZW1JZEhhc1N0b3JhZ2UodG9scCkgJiYgSXRlbUlkSXNO b3JtYWwodG9scCkpOwogCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0o cGFnZSwgdG9scCk7CisJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUgZmlyc3Qgc3Vydml2 aW5nIG1lbWJlcjogYSBoZWFwLW9ubHkgdHVwbGUuICovCiAJCUFzc2VydChIZWFwVHVwbGVI ZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKICNlbmRpZgogCiAJCUl0ZW1JZFNldFJlZGlyZWN0 KGZyb21scCwgdG9vZmYpOwogCX0KIAorCS8qCisJICogUmV3cml0ZSBjb2xsYXBzZS1zdXJ2 aXZvciBzdHVicyBpbiBwbGFjZS4gIEVhY2ggKG9mZnNldCwgZm9yd2FyZCkgcGFpcgorCSAq IG5hbWVzIGEgZGVhZCBrZXkgdHVwbGUgdG8gYmUgdHVybmVkIGludG8gYW4geGlkLWZyZWUg Zm9yd2FyZGluZyBzdHViOgorCSAqIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlO X0lOVkFMSUR8SEVBUF9YTUFYX0lOVkFMSUQpLCBmbGFnZ2VkCisJICogSEVBUF9JTkRFWEVE X1VQREFURUQgd2l0aCBuYXR0cyA9PSAwIHNvIGNvbnN1bWVycyByZWNvZ25pc2UgaXQgYXMg YQorCSAqIHN0dWIgcmF0aGVyIHRoYW4gYSB0dXBsZSwgaGVhcC1vbmx5IHByZXNlcnZlZCBz byBpdCByZW1haW5zIGEgdmFsaWQKKwkgKiByZWRpcmVjdC9mb3J3YXJkIHRhcmdldCwgYW5k IHRfY3RpZC5vZmZudW0gc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4KKwkgKiBUaGUgaXRl bSdzIHN0b3JhZ2UgKGluY2x1ZGluZyBpdHMgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1h cCBpbiB0aGUKKwkgKiBmaW5hbCBieXRlcykgaXMgbGVmdCB1bmRpc3R1cmJlZCwgc28gdGhl IGJpdG1hcCBzdXJ2aXZlcyBhbmQgbmVlZCBub3QKKwkgKiBiZSBjYXJyaWVkIGluIFdBTC4K KwkgKi8KKwlvZmZudW0gPSBzdHViczsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5zdHViczsg aSsrKQorCXsKKwkJT2Zmc2V0TnVtYmVyIG9mZiA9ICpvZmZudW0rKzsKKwkJT2Zmc2V0TnVt YmVyIGZvcndhcmQgPSAqb2ZmbnVtKys7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIG9mZik7CisJCUhlYXBUdXBsZUhlYWRlciB0dXA7CisJCWludAkJCWJpdG1hcF9u YXR0czsKKworCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobHApKTsKKwkJdHVwID0gKEhlYXBU dXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCisJCS8qCisJCSAqIFByZXNl cnZlIHRoZSB0dXBsZSdzIHdyaXRlLXRpbWUgbmF0dHMgYmVmb3JlIHdlIG92ZXJ3cml0ZSB0 aGUgbmF0dHMKKwkJICogZmllbGQgd2l0aCB0aGUgc3R1YiBzZW50aW5lbCAoMCk6IHRoZSB0 cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAKKwkJICogd2FzIHNpemVkIHdpdGggaXQs IGFuZCByZWFkZXJzIG5lZWQgaXQgdG8gbG9jYXRlIHRoZSBiaXRtYXAgd2hlbiB0aGUKKwkJ ICogcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzIGhhcyBzaW5jZSBncm93biAoQUREIENPTFVN TikuICBUaGUgc3R1YidzCisJCSAqIHRfY3RpZCBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9y d2FyZCBsaW5rOyB0aGUgYmxvY2sgaGFsZiBpcyB1bnVzZWQKKwkJICogZm9yIGEgc3R1Yiwg c28gc3Rhc2ggdGhlIG5hdHRzIHRoZXJlLiAgVGhpcyBydW5zIGlkZW50aWNhbGx5IG9uIHRo ZQorCQkgKiBwcmltYXJ5IGFuZCBpbiByZWRvICh0aGUgcHJlLXN0dWIgdHVwbGUgaXMgb24g Ym90aCBwYWdlcyksIHNvIG5vIFdBTAorCQkgKiBjaGFuZ2UgaXMgbmVlZGVkLgorCQkgKi8K KwkJYml0bWFwX25hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKKworCQl0 dXAtPnRfaW5mb21hc2sgPSBIRUFQX1hNSU5fSU5WQUxJRCB8IEhFQVBfWE1BWF9JTlZBTElE OworCQl0dXAtPnRfaW5mb21hc2syID0gSEVBUF9PTkxZX1RVUExFIHwgSEVBUF9JTkRFWEVE X1VQREFURUQ7CisJCUhlYXBUdXBsZUhlYWRlclNldE5hdHRzKHR1cCwgMCk7CisJCUl0ZW1Q b2ludGVyU2V0T2Zmc2V0TnVtYmVyKCZ0dXAtPnRfY3RpZCwgZm9yd2FyZCk7CisJCUhvdElu ZGV4ZWRTdHViU2V0Qml0bWFwTmF0dHModHVwLCBiaXRtYXBfbmF0dHMpOworCX0KKwogCS8q IFVwZGF0ZSBhbGwgbm93LWRlYWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IG5vd2Rl YWQ7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBuZGVhZDsgaSsrKQpAQCAtMjE0OSwxMiArMjY2 MCwyMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxw X3RydW5jYXRlX29ubHksCiAJCSAqIGFuIGluZGV4LiAgVGhpcyBzaG91bGQgbmV2ZXIgYmUg bmVjZXNzYXJ5IHdpdGggYW55IGluZGl2aWR1YWwKIAkJICogaGVhcC1vbmx5IHR1cGxlIGl0 ZW0sIHRob3VnaC4gKEl0J3Mgbm90IGNsZWFyIGhvdyBtdWNoIG9mIGEgcHJvYmxlbQogCQkg KiB0aGF0IHdvdWxkIGJlLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIGFsbG93IGl0LikK KwkJICoKKwkJICogRXhjZXB0aW9uOiBhIEhPVC1pbmRleGVkIGFib3J0ZWQgb3JwaGFuIHdo b3NlIGNoYWluIHJvb3QgaXMKKwkJICogdW5yZWFjaGFibGUgb24gdGhpcyBwYWdlIGlzIGlu dGVudGlvbmFsbHkgbWFya2VkIExQX0RFQUQgYnkgdGhlCisJCSAqIGhlYXAtb25seS10dXBs ZXMgbG9vcCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAoc2VlIHRoZQorCQkgKiBo ZWFwX3BydW5lX3JlY29yZF9kZWFkIGNhbGwgdGhlcmUpLiAgVGhlIHR1cGxlIGlzIGhlYXAt b25seSAoaXQgd2FzCisJCSAqIGNyZWF0ZWQgYnkgYW4gVVBEQVRFKSBhbmQgY2FycmllcyBI RUFQX0lOREVYRURfVVBEQVRFRDsgdGhlCisJCSAqIGFkamFjZW50IGJ0cmVlIGxlYWYgaXMg c3RpbGwgbGl2ZSwgc28gd2Uga2VlcCB0aGUgc2xvdCBwaW5uZWQgdmlhCisJCSAqIExQX0RF QUQgdW50aWwgYW1idWxrZGVsZXRlIHN3ZWVwcyBpdC4gIEEgc3Vic2VxdWVudCB2YWN1dW0g cmVjbGFpbXMKKwkJICogdGhlIExQIHRvIExQX1VOVVNFRC4KIAkJICovCiAJCWlmIChJdGVt SWRIYXNTdG9yYWdlKGxwKSkKIAkJewogCQkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7 CiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwot CQkJQXNzZXJ0KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKKwkJCUFzc2Vy dCghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShodHVwKSB8fAorCQkJCSAgICgoaHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCAmJgorCQkJCQlIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyhodHVwKSA+IDApKTsKIAkJfQogCQllbHNlCiAJCXsKQEAg LTIxNzcsNyArMjY5OSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZm ZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAogCQlpZiAobHBfdHJ1bmNhdGVfb25seSkK IAkJewotCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0ncyBz ZWNvbmQgcGFzcyAqLworCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2 YWN1dW0ncyBzZWNvbmQgcGFzcy4gKi8KIAkJCUFzc2VydChJdGVtSWRJc0RlYWQobHApICYm ICFJdGVtSWRIYXNTdG9yYWdlKGxwKSk7CiAJCX0KIAkJZWxzZQpAQCAtMjE4OCw3ICsyNzEw LDggQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90 cnVuY2F0ZV9vbmx5LAogCQkJICogaXRlbXMgdG8gYmUgbWFkZSBMUF9VTlVTRUQgaW5zdGVh ZC4gIFRoaXMgaXMgb25seSBwb3NzaWJsZSBpZgogCQkJICogdGhlIHJlbGF0aW9uIGhhcyBu byBpbmRleGVzLiAgSWYgdGhlcmUgYXJlIGFueSBkZWFkIGl0ZW1zLCB0aGVuCiAJCQkgKiBt YXJrX3VudXNlZF9ub3cgd2FzIG5vdCB0cnVlIGFuZCBldmVyeSBpdGVtIGJlaW5nIG1hcmtl ZAotCQkJICogTFBfVU5VU0VEIG11c3QgcmVmZXIgdG8gYSBoZWFwLW9ubHkgdHVwbGUuCisJ CQkgKiBMUF9VTlVTRUQgbXVzdCByZWZlciB0byBhIGhlYXAtb25seSB0dXBsZSB3aG9zZSBj aGFpbiBoYXMgYmVlbgorCQkJICogcHJ1bmVkLgogCQkJICovCiAJCQlpZiAobmRlYWQgPiAw KQogCQkJewpAQCAtMjI2NCw2ICsyNzg3LDggQEAgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBh Z2UgcGFnZSkKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKHRhcmdpdGVtKSk7CiAJCUFzc2Vy dChJdGVtSWRIYXNTdG9yYWdlKHRhcmdpdGVtKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCB0YXJnaXRlbSk7CisKKwkJLyogQSByZWRpcmVjdCB0 YXJnZXRzIHRoZSBmaXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyOiBoZWFwLW9ubHkuICov CiAJCUFzc2VydChIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKIAl9CiAjZW5k aWYKQEAgLTI1NjYsNyArMzA5MSw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkgIEhlYXBUdXBsZUZyZWV6 ZSAqZnJvemVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVj dGVkLCBpbnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50 IG5kZWFkLAotCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpCisJ CQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCwKKwkJCQkJCSAgT2Zm c2V0TnVtYmVyICpzdHVicywgaW50IG5zdHVicykKIHsKIAl4bF9oZWFwX3BydW5lIHhscmVj OwogCVhMb2dSZWNQdHIJcmVjcHRyOwpAQCAtMjU4MSw4ICszMTA3LDEwIEBAIGxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ eGxocF9wcnVuZV9pdGVtcyByZWRpcmVjdF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIGRl YWRfaXRlbXM7CiAJeGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CisJeGxocF9wcnVu ZV9pdGVtcyBzdHViX2l0ZW1zOwogCU9mZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFw VHVwbGVzUGVyUGFnZV07Ci0JYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwg bmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0 ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fAorCQluc3R1YnMgPiAwOwog CWJvb2wJCWRvX3NldF92bSA9IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7 CiAJYm9vbAkJaGVhcF9mcGlfYWxsb3dlZCA9IHRydWU7CiAKQEAgLTI2NzAsNiArMzE5OCwx NiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHVudXNlZCwKIAkJCQkJCQlz aXplb2YoT2Zmc2V0TnVtYmVyKSAqIG51bnVzZWQpOwogCX0KKwlpZiAobnN0dWJzID4gMCkK Kwl7CisJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTOworCisJ CXN0dWJfaXRlbXMubnRhcmdldHMgPSBuc3R1YnM7CisJCVhMb2dSZWdpc3RlckJ1ZkRhdGEo MCwgJnN0dWJfaXRlbXMsCisJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0 YSkpOworCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHN0dWJzLAorCQkJCQkJCXNpemVvZihP ZmZzZXROdW1iZXJbMl0pICogbnN0dWJzKTsKKwl9CiAJaWYgKG5mcm96ZW4gPiAwKQogCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihPZmZz ZXROdW1iZXIpICogbmZyb3plbik7CkBAIC0yNjkyLDggKzMyMzAsMTcgQEAgbG9nX2hlYXBf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ eGxyZWMuZmxhZ3MgfD0gWExIUF9DTEVBTlVQX0xPQ0s7CiAJZWxzZQogCXsKLQkJQXNzZXJ0 KG5yZWRpcmVjdGVkID09IDAgJiYgbmRlYWQgPT0gMCk7Ci0JCS8qIGFsc28sIGFueSBpdGVt cyBpbiAndW51c2VkJyBtdXN0J3ZlIGJlZW4gTFBfREVBRCBwcmV2aW91c2x5ICovCisJCS8q CisJCSAqIFdpdGhvdXQgYSBjbGVhbnVwIGxvY2sgd2UgY2FuIG9ubHkgcmVtb3ZlIGFscmVh ZHktZGVhZCBsaW5lCisJCSAqIHBvaW50ZXJzIGFuZCByZS1wb2ludCByZWRpcmVjdHMuICBU aGUgbGF0dGVyIGhhcHBlbnMgd2hlbiB2YWN1dW0ncworCQkgKiBzZWNvbmQgcGFzcyByZWNs YWltcyBhIGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBhbmQgcmUtcG9pbnRzCisJCSAq IHRoZSByb290IHJlZGlyZWN0IGF0IGZpcnN0X2xpdmU6IHRoYXQgY2hhbmdlIGlzIG1hZGUg dW5kZXIgYW4KKwkJICogZXhjbHVzaXZlIGxvY2sgYW5kIHByZXNlcnZlcyB0aGUgY2hhaW4n cyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlcgorCQkgKiBzdGlsbCByZWFjaGVzIGZpcnN0 X2xpdmUpLCBzbyBubyBjbGVhbnVwIGxvY2sgaXMgbmVlZGVkIC0tIHRoZSBzYW1lCisJCSAq IGJhc2lzIG9uIHdoaWNoIHRoaXMgcGFzcyBhbHJlYWR5IHJlY2xhaW1zIGRlYWQgbGluZSBw b2ludGVycyB0bworCQkgKiBMUF9VTlVTRUQuCisJCSAqLworCQlBc3NlcnQobmRlYWQgPT0g MCk7CiAJfQogCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwog CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDM5Mzk1YWVkMGQ1Li44NTA5NjBhMDQwOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTMxLDYgKzEzMSw3 IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVh cGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNp bmNsdWRlICJhY2Nlc3MvdGlkc3RvcmUuaCIKQEAgLTQ0NSw3ICs0NDYsOCBAQCBzdGF0aWMg Ym9vbCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIHZvaWQgbGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0 YXRpYyB2b2lkIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJs b2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJl ciAqZGVhZG9mZnNldHMsCi0JCQkJCQkJCSAgaW50IG51bV9vZmZzZXRzLCBCdWZmZXIgdm1i dWZmZXIpOworCQkJCQkJCQkgIGludCBudW1fb2Zmc2V0cywgQnVmZmVyIHZtYnVmZmVyLAor CQkJCQkJCQkgIGJvb2wgZ290X2NsZWFudXBfbG9jayk7CiBzdGF0aWMgYm9vbCBsYXp5X2No ZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2 b2lkIGxhenlfY2xlYW51cF9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0 aW9uIGluZHJlbCwKQEAgLTE5NzIsNiArMTk3NCw3IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1w dHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywK IAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAogCQkJCQkJCQkJ CSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAw KTsKIAogCQkJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMjIxNCw2ICsyMjE3LDcgQEAgbGF6 eV9zY2FuX25vcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCiAJCWhhc3R1cCA9IHRydWU7 CQkJLyogcGFnZSBwcmV2ZW50cyByZWwgdHJ1bmNhdGlvbiAqLwogCQl0dXBsZWhlYWRlciA9 IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CisKIAkJaWYg KGhlYXBfdHVwbGVfc2hvdWxkX2ZyZWV6ZSh0dXBsZWhlYWRlciwgJnZhY3JlbC0+Y3V0b2Zm cywKIAkJCQkJCQkJCSAmTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkLAogCQkJCQkJCQkJICZO b0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkKSkKQEAgLTI2ODYsNiArMjY5MCw3IEBAIGxhenlfdmFj dXVtX2hlYXBfcmVsKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJU2l6ZQkJZnJlZXNwYWNlOwog CQlPZmZzZXROdW1iZXIgb2Zmc2V0c1tNYXhPZmZzZXROdW1iZXJdOwogCQlpbnQJCQludW1f b2Zmc2V0czsKKwkJYm9vbAkJZ290X2NsZWFudXBfbG9jazsKIAogCQl2YWN1dW1fZGVsYXlf cG9pbnQoZmFsc2UpOwogCkBAIC0yNzA4LDEwICsyNzEzLDIwIEBAIGxhenlfdmFjdXVtX2hl YXBfcmVsKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJICovCiAJCXZpc2liaWxpdHltYXBfcGlu KHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCQkvKiBXZSBuZWVkIGEgbm9u LWNsZWFudXAgZXhjbHVzaXZlIGxvY2sgdG8gbWFyayBkZWFkX2l0ZW1zIHVudXNlZCAqLwot CQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJLyoKKwkJICog U2V0dGluZyBkZWFkIGl0ZW1zIHVudXNlZCBuZWVkcyBvbmx5IGFuIGV4Y2x1c2l2ZSBsb2Nr LiAgV2Ugc3RpbGwKKwkJICogcHJlZmVyIGEgY2xlYW51cCBsb2NrIGhlcmUsIGFzIHRoZSBm aXJzdCBwYXNzIGRvZXMsIGFuZCBmYWxsIGJhY2sgdG8KKwkJICogYW4gZXhjbHVzaXZlIGxv Y2sgaWYgb25lIGlzIG5vdCBpbW1lZGlhdGVseSBhdmFpbGFibGUuICBUaGlzIHBhc3MKKwkJ ICogb25seSB0dXJucyBMUF9ERUFEIGl0ZW1zIGludG8gTFBfVU5VU0VEOyBpdCBkb2VzIE5P VCByZWNsYWltIGEKKwkJICogY29sbGFwc2VkIEhPVC1pbmRleGVkIGNoYWluJ3Mgc3R1YnMg b3IgcmUtcG9pbnQgaXRzIHJlZGlyZWN0cyAtLQorCQkgKiB0aGF0IGNoYWluLXN0cnVjdHVy ZSByZXdyaXRlICh3aGljaCBtb3ZlcyBUSURzIGNvbmN1cnJlbnQgc2NhbnMKKwkJICogZm9s bG93LCBhbmQgc28gbmVlZHMgYSBjbGVhbnVwIGxvY2spIGlzIGxlZnQgdG8gYSBsYXRlciBw cnVuZS4KKwkJICovCisJCWdvdF9jbGVhbnVwX2xvY2sgPSBDb25kaXRpb25hbExvY2tCdWZm ZXJGb3JDbGVhbnVwKGJ1Zik7CisJCWlmICghZ290X2NsZWFudXBfbG9jaykKKwkJCUxvY2tC dWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwogCQlsYXp5X3ZhY3V1bV9oZWFw X3BhZ2UodmFjcmVsLCBibGtubywgYnVmLCBvZmZzZXRzLAotCQkJCQkJCSAgbnVtX29mZnNl dHMsIHZtYnVmZmVyKTsKKwkJCQkJCQkgIG51bV9vZmZzZXRzLCB2bWJ1ZmZlciwgZ290X2Ns ZWFudXBfbG9jayk7CiAKIAkJLyogTm93IHRoYXQgd2UndmUgdmFjdXVtZWQgdGhlIHBhZ2Us IHJlY29yZCBpdHMgYXZhaWxhYmxlIHNwYWNlICovCiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1Zik7CkBAIC0yNzQ2LDYgKzI3NjEsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3JlbChMVlJl bFN0YXRlICp2YWNyZWwpCiAJcmVzdG9yZV92YWN1dW1fZXJyb3JfaW5mbyh2YWNyZWwsICZz YXZlZF9lcnJfaW5mbyk7CiB9CiAKKwogLyoKICAqCWxhenlfdmFjdXVtX2hlYXBfcGFnZSgp IC0tIGZyZWUgcGFnZSdzIExQX0RFQUQgaXRlbXMgbGlzdGVkIGluIHRoZQogICoJCQkJCQkg IHZhY3JlbC0+ZGVhZF9pdGVtcyBzdG9yZS4KQEAgLTI3NTcsNyArMjc3Myw3IEBAIGxhenlf dmFjdXVtX2hlYXBfcmVsKExWUmVsU3RhdGUgKnZhY3JlbCkKIHN0YXRpYyB2b2lkCiBsYXp5 X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtu bywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLCBp bnQgbnVtX29mZnNldHMsCi0JCQkJCSAgQnVmZmVyIHZtYnVmZmVyKQorCQkJCQkgIEJ1ZmZl ciB2bWJ1ZmZlciwgYm9vbCBnb3RfY2xlYW51cF9sb2NrKQogewogCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zmc2V0TnVtYmVyIHVudXNlZFtNYXhIZWFwVHVw bGVzUGVyUGFnZV07CkBAIC0yNzgzLDcgKzI3OTksOSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZl ciwKIAkgKiBhbmQgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUg Y3JpdGljYWwgc2VjdGlvbiwKIAkgKiBlbmFibGluZyBib3RoIGNoYW5nZXMgdG8gYmUgZW1p dHRlZCBpbiBhIHNpbmdsZSBXQUwgcmVjb3JkLiBTaW5jZSB0aGUKIAkgKiB2aXNpYmlsaXR5 IGNoZWNrcyBtYXkgcGVyZm9ybSBJL08gYW5kIGFsbG9jYXRlIG1lbW9yeSwgdGhleSBtdXN0 IGJlCi0JICogZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgorCSAqIGRvbmUg b3V0c2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbi4gIEEgZGVmZXJyZWQgcmVjbGFpbSBsZWF2 ZXMgYQorCSAqIG5vdC15ZXQtcmVtb3ZlZCBtZW1iZXIgb24gdGhlIHBhZ2UsIHNvIHNraXAg dGhlIGNoZWNrIHdoZW4gYW55dGhpbmcgd2FzCisJICogZGVmZXJyZWQuCiAJICovCiAJaWYg KGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAog CQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LCB0cnVlLApAQCAtMjgxNSwxMyArMjgzMywx MiBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051 bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIHRvZmYpOwogCisJCS8qIEEgcmVjbGFpbWFibGUgaXRlbSBpcyBhIGNsYXNzaWMg TFBfREVBRCBsaW5lIHBvaW50ZXIuICovCiAJCUFzc2VydChJdGVtSWRJc0RlYWQoaXRlbWlk KSAmJiAhSXRlbUlkSGFzU3RvcmFnZShpdGVtaWQpKTsKIAkJSXRlbUlkU2V0VW51c2VkKGl0 ZW1pZCk7CiAJCXVudXNlZFtudW51c2VkKytdID0gdG9mZjsKIAl9CiAKLQlBc3NlcnQobnVu dXNlZCA+IDApOwotCiAJLyogQXR0ZW1wdCB0byB0cnVuY2F0ZSBsaW5lIHBvaW50ZXIgYXJy YXkgbm93ICovCiAJUGFnZVRydW5jYXRlTGluZVBvaW50ZXJBcnJheShwYWdlKTsKIApAQCAt Mjg1MSwxMiArMjg2OCwxMyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB2 bWZsYWdzICE9IDAgPyB2bWJ1ZmZlciA6IEludmFsaWRCdWZmZXIsCiAJCQkJCQkJCSAgdm1m bGFncywKIAkJCQkJCQkJICBjb25mbGljdF94aWQsCi0JCQkJCQkJCSAgZmFsc2UsCS8qIG5v IGNsZWFudXAgbG9jayByZXF1aXJlZCAqLworCQkJCQkJCQkgIGdvdF9jbGVhbnVwX2xvY2ss CiAJCQkJCQkJCSAgUFJVTkVfVkFDVVVNX0NMRUFOVVAsCiAJCQkJCQkJCSAgTlVMTCwgMCwJ LyogZnJvemVuICovCiAJCQkJCQkJCSAgTlVMTCwgMCwJLyogcmVkaXJlY3RlZCAqLwogCQkJ CQkJCQkgIE5VTEwsIDAsCS8qIGRlYWQgKi8KLQkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQp OworCQkJCQkJCQkgIHVudXNlZCwgbnVudXNlZCwKKwkJCQkJCQkJICBOVUxMLCAwKTsgLyog c3R1YnMgKi8KIAl9CiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CkBAIC0zNjQ3LDEwICszNjY1 LDQ0IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCiAJCSpsb2dnaW5nX29mZm51bSA9IG9mZm51bTsKIAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCi0JCS8qIFVudXNlZCBvciByZWRpcmVjdCBs aW5lIHBvaW50ZXJzIGFyZSBvZiBubyBpbnRlcmVzdCAqLwotCQlpZiAoIUl0ZW1JZElzVXNl ZChpdGVtaWQpIHx8IEl0ZW1JZElzUmVkaXJlY3RlZChpdGVtaWQpKQorCQkvKiBVbnVzZWQg bGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3QuICovCisJCWlmICghSXRlbUlkSXNV c2VkKGl0ZW1pZCkpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBQbGFpbiByZWRpcmVj dHMgYXJlIG9mIG5vIGludGVyZXN0ICh0aGUgY2hhaW4gbWVtYmVyIHRoZXkgcG9pbnQgYXQK KwkJICogaXMgaW5zcGVjdGVkIHNlcGFyYXRlbHkpIC0tIGV4Y2VwdCBhIHJlZGlyZWN0IHRo YXQgZm9yd2FyZHMgdG8gYQorCQkgKiBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBsaXZlIHR1 cGxlLiAgU3VjaCBhIHJlZGlyZWN0IG1heSBzdGlsbCBiZQorCQkgKiByZWFjaGVkIGJ5IGEg c3RhbGUgaW5kZXggZW50cnkgd2hvc2Uga2V5IHRoZSBsaXZlIHR1cGxlIG5vIGxvbmdlcgor CQkgKiBob2xkczsgaWYgdGhlIHBhZ2Ugd2VyZSBtYXJrZWQgYWxsLXZpc2libGUgYW4gaW5k ZXgtb25seSBzY2FuIHdvdWxkCisJCSAqIHRydXN0IHRoZSBWTSwgc2tpcCB0aGUgaGVhcCBm ZXRjaCwgYW5kIHN1cmZhY2UgdGhhdCBzdGFsZSBrZXkuCisJCSAqIEtlZXAgdGhlIHBhZ2Ug bm90LWFsbC12aXNpYmxlIHVudGlsIHRoZSBzdGFsZSBsZWF2ZXMgYXJlIHN3ZXB0IGFuZAor CQkgKiB0aGUgcmVkaXJlY3QgcmVjbGFpbWVkLiAgVGhpcyBtaXJyb3JzIHRoZSBndWFyZCBp bgorCQkgKiBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgYXBwbGllZCBoZXJlIGJlY2F1 c2UgVkFDVVVNJ3Mgc2Vjb25kCisJCSAqIHBhc3MgY2FuIHNldCBhbGwtdmlzaWJsZSBhZnRl ciByZWNsYWltaW5nIG90aGVyIGl0ZW1zIG9uIHRoZSBwYWdlLgorCQkgKi8KKwkJaWYgKEl0 ZW1JZElzUmVkaXJlY3RlZChpdGVtaWQpKQorCQl7CisJCQlPZmZzZXROdW1iZXIgcmRvZmYg PSBJdGVtSWRHZXRSZWRpcmVjdChpdGVtaWQpOworCisJCQlpZiAocmRvZmYgPj0gRmlyc3RP ZmZzZXROdW1iZXIgJiYgcmRvZmYgPD0gbWF4b2ZmKQorCQkJeworCQkJCUl0ZW1JZAkJdGxw ID0gUGFnZUdldEl0ZW1JZChwYWdlLCByZG9mZik7CisKKwkJCQlpZiAoSXRlbUlkSXNOb3Jt YWwodGxwKSkKKwkJCQl7CisJCQkJCUhlYXBUdXBsZUhlYWRlciB0aHR1cCA9IChIZWFwVHVw bGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIHRscCk7CisKKwkJCQkJaWYgKCh0aHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCQkJeworCQkJ CQkJKmFsbF9mcm96ZW4gPSBhbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCQkJYnJlYWs7CisJ CQkJCX0KKwkJCQl9CisJCQl9CisJCQljb250aW51ZTsKKwkJfQorCiAJCUl0ZW1Qb2ludGVy U2V0KCYodHVwbGUudF9zZWxmKSwgYmxvY2tubywgb2ZmbnVtKTsKIAogCQkvKgpAQCAtMzY3 Niw2ICszNzI4LDI0IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCiAJCXR1cGxlLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGl0 ZW1pZCk7CiAJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CiAK KwkJLyoKKwkJICogQSBIT1QtaW5kZXhlZCBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFu IExQX05PUk1BTCBpdGVtIHRoYXQgaXMKKwkJICogbm90IGEgcmVhbCB0dXBsZTogaXQgZm9y d2FyZHMgdGhyb3VnaCB0aGUgY2hhaW4gYW5kIGNhcnJpZXMgYQorCQkgKiBwcmVzZXJ2ZWQg bW9kaWZpZWQtYXR0cnMgYml0bWFwIHRoYXQgYSByZWFkZXIgYXJyaXZpbmcgdmlhIGEgc3Rh bGUKKwkJICogbGVhZiBtdXN0IHN0aWxsIGNyb3NzLiAgQSBwYWdlIGhvbGRpbmcgb25lIG11 c3Qgc3RheSBub3QtYWxsLXZpc2libGUKKwkJICogc28gaW5kZXgtb25seSBzY2FucyBoZWFw LWZldGNoIHRocm91Z2ggdGhlIGNoYWluLCBleGFjdGx5IGxpa2UgdGhlCisJCSAqIHJlZGly ZWN0LXRvLVNJVSBjYXNlIGFib3ZlLiAgQSBzdHViJ3MgaGVhZGVyIGlzIGZyb3plbi1pbnZh bGlkCisJCSAqIChIRUFQX1hNSU5fSU5WQUxJRCksIHNvIHRoZSB2aXNpYmlsaXR5IGNoZWNr IGJlbG93IHdvdWxkIGFsc28gY2xhc3MKKwkJICogaXQgbm90LWFsbC12aXNpYmxlIC0tIGJ1 dCByZWNvZ25pemUgaXQgZXhwbGljaXRseSBoZXJlIHJhdGhlciB0aGFuCisJCSAqIHJlbHlp bmcgb24gdGhhdCBzaWRlIGVmZmVjdCwgc28gdGhlIGd1YXJkIGNhbm5vdCBzaWxlbnRseSBs YXBzZSBpZgorCQkgKiB0aGUgc3R1YiBlbmNvZGluZyBldmVyIGNoYW5nZXMuCisJCSAqLwor CQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1Yih0dXBsZS50X2RhdGEpKQorCQl7CisJCQkq YWxsX2Zyb3plbiA9IGFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCiAJ CS8qIFZpc2liaWxpdHkgY2hlY2tzIG1heSBkbyBJTyBvciBhbGxvY2F0ZSBtZW1vcnkgKi8K IAkJQXNzZXJ0KENyaXRTZWN0aW9uQ291bnQgPT0gMCk7CiAJCXN3aXRjaCAoSGVhcFR1cGxl U2F0aXNmaWVzVmFjdXVtSG9yaXpvbigmdHVwbGUsIGJ1ZiwgJmRlYWRfYWZ0ZXIpKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCA3NWFlNmY5ZDM3NS4u OTdmOTI1ZGYxNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9o ZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j CkBAIC0xMDgsNyArMTA4LDggQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9m cmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9m ZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZz ZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXRO dW1iZXIgKipub3d1bnVzZWQpCisJCQkJCQkJCQkgICBpbnQgKm51bnVzZWQsIE9mZnNldE51 bWJlciAqKm5vd3VudXNlZCwKKwkJCQkJCQkJCSAgIGludCAqbnN0dWJzLCBPZmZzZXROdW1i ZXIgKipzdHVicykKIHsKIAlpZiAoZmxhZ3MgJiBYTEhQX0hBU19GUkVFWkVfUExBTlMpCiAJ ewpAQCAtMTc4LDYgKzE3OSwyMyBAQCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5k X2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJKm5vd3VudXNlZCA9IE5V TEw7CiAJfQogCisJaWYgKGZsYWdzICYgWExIUF9IQVNfSE9UX0lOREVYRURfU1RVQlMpCisJ eworCQl4bGhwX3BydW5lX2l0ZW1zICpzdWJyZWNvcmQgPSAoeGxocF9wcnVuZV9pdGVtcyAq KSBjdXJzb3I7CisKKwkJKm5zdHVicyA9IHN1YnJlY29yZC0+bnRhcmdldHM7CisJCUFzc2Vy dCgqbnN0dWJzID4gMCk7CisJCSpzdHVicyA9ICZzdWJyZWNvcmQtPmRhdGFbMF07CisKKwkJ Y3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMsIGRhdGEpOworCQljdXJzb3Ig Kz0gc2l6ZW9mKE9mZnNldE51bWJlclsyXSkgKiAqbnN0dWJzOworCX0KKwllbHNlCisJewor CQkqbnN0dWJzID0gMDsKKwkJKnN0dWJzID0gTlVMTDsKKwl9CisKIAkqZnJ6X29mZnNldHMg PSAoT2Zmc2V0TnVtYmVyICopIGN1cnNvcjsKIH0KIApAQCAtMzA1LDYgKzMyMyw4IEBAIGhl YXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJ aW50CQkJbnJlZGlyZWN0ZWQ7CiAJCQlpbnQJCQludW51c2VkOwogCQkJaW50CQkJbmRlYWQ7 CisJCQlpbnQJCQluc3R1YnM7CisJCQlPZmZzZXROdW1iZXIgKnN0dWJzOwogCQkJaW50CQkJ bnBsYW5zOwogCQkJeGxocF9mcmVlemVfcGxhbiAqcGxhbnM7CiAJCQlPZmZzZXROdW1iZXIg KmZyel9vZmZzZXRzOwpAQCAtMzE1LDEwICszMzUsMTEgQEAgaGVhcDJfZGVzYyhTdHJpbmdJ bmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkJCQkgICAmbnBs YW5zLCAmcGxhbnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgICZucmVkaXJlY3Rl ZCwgJnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkJCQkgICAmbmRlYWQsICZub3dkZWFkLAotCQkJ CQkJCQkJCQkJICAgJm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkJICAgJm51 bnVzZWQsICZub3d1bnVzZWQsCisJCQkJCQkJCQkJCQkgICAmbnN0dWJzLCAmc3R1YnMpOwog Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgbnBsYW5zOiAldSwgbnJlZGlyZWN0ZWQ6 ICV1LCBuZGVhZDogJXUsIG51bnVzZWQ6ICV1IiwKLQkJCQkJCQkgbnBsYW5zLCBucmVkaXJl Y3RlZCwgbmRlYWQsIG51bnVzZWQpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIG5w bGFuczogJXUsIG5yZWRpcmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBudW51c2VkOiAldSwgbnN0 dWJzOiAldSIsCisJCQkJCQkJIG5wbGFucywgbnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51c2Vk LCBuc3R1YnMpOwogCiAJCQlpZiAobnBsYW5zID4gMCkKIAkJCXsKQEAgLTM0Nyw2ICszNjgs MTMgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCQkJYXJyYXlfZGVzYyhidWYsIG5vd3VudXNlZCwgc2l6ZW9mKE9mZnNldE51bWJl ciksIG51bnVzZWQsCiAJCQkJCQkgICAmb2Zmc2V0X2VsZW1fZGVzYywgTlVMTCk7CiAJCQl9 CisKKwkJCWlmIChuc3R1YnMgPiAwKQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiLCBzdHViczoiKTsKKwkJCQlhcnJheV9kZXNjKGJ1Ziwgc3R1YnMsIHNpemVv ZihPZmZzZXROdW1iZXIpICogMiwKKwkJCQkJCSAgIG5zdHVicywgJnJlZGlyZWN0X2VsZW1f ZGVzYywgTlVMTCk7CisJCQl9CiAJCX0KIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hF QVAyX01VTFRJX0lOU0VSVCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAxY2RmODkxMDU1Yy4u NzJjOWU0MjAzYzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQ4OCw3ICs0ODgsOCBAQCBl eHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFt cyAqcGFyYW1zLAogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVy IGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJCQkJT2Zmc2V0TnVtYmVy ICpyZWRpcmVjdGVkLCBpbnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIg Km5vd2RlYWQsIGludCBuZGVhZCwKLQkJCQkJCQkJCU9mZnNldE51bWJlciAqbm93dW51c2Vk LCBpbnQgbnVudXNlZCk7CisJCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50 IG51bnVzZWQsCisJCQkJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKTsK IGV4dGVybiB2b2lkIGhlYXBfZ2V0X3Jvb3RfdHVwbGVzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVt YmVyICpyb290X29mZnNldHMpOwogZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgQnVm ZmVyIHZtYnVmZmVyLCB1aW50OCB2bWZsYWdzLApAQCAtNDk4LDcgKzQ5OSw4IEBAIGV4dGVy biB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBpbnQg bmZyb3plbiwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBpbnQgbnJl ZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFkLAot CQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpOworCQkJCQkJ CQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQsCisJCQkJCQkJCQkgIE9m ZnNldE51bWJlciAqc3R1YnMsIGludCBuc3R1YnMpOwogCiAvKiBpbiBoZWFwL2hlYXBhbS5j ICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggZmRjYTdkODIxYzguLjg5 OTdhNTA1MDA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjczLDYgKzI3 MywxMCBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICoJCXVpbnQxNgkJCQlu dW51c2VkCiAgKgkJT2Zmc2V0TnVtYmVyCQlub3d1bnVzZWRbbnVudXNlZF0KICAqCisgKgl4 bGhwX3BydW5lX2l0ZW1zCisgKgkJdWludDE2CQkJCW5zdHVicworICoJCU9mZnNldE51bWJl cgkJc3R1YnNbMiAqIG5zdHVic10KKyAqCiAgKglPZmZzZXROdW1iZXIJCQlmcnpfb2Zmc2V0 c1tzdW0oW3BsYW4ubnR1cGxlcyBmb3IgcGxhbiBpbiBwbGFuc10pXQogICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKQEAgLTM0MSw2ICszNDUsMTggQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfaGVhcF9wcnVuZQogI2RlZmluZQkJWExIUF9WTV9BTExfVklTSUJMRQkJCSgxIDw8IDgp CiAjZGVmaW5lCQlYTEhQX1ZNX0FMTF9GUk9aRU4JCQkoMSA8PCA5KQogCisvKgorICogSW5k aWNhdGVzIHRoYXQgYW4geGxocF9wcnVuZV9pdGVtcyBzdWItcmVjb3JkIHdpdGggSE9ULXNl bGVjdGl2ZWx5LXVwZGF0ZWQKKyAqIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzIGlzIHByZXNl bnQuICBFYWNoIHBhaXIgKG9mZnNldCwgZm9yd2FyZCkgbmFtZXMgYQorICogbGluZSBwb2lu dGVyIHRvIGJlIHJld3JpdHRlbiBpbiBwbGFjZSBpbnRvIGFuIHhpZC1mcmVlIGZvcndhcmRp bmcgc3R1YgorICogKEhFQVBfWE1JTl9JTlZBTElEfEhFQVBfWE1BWF9JTlZBTElELCBIRUFQ X09OTFlfVFVQTEV8SEVBUF9JTkRFWEVEX1VQREFURUQsCisgKiBuYXR0cz09MCkgd2hvc2Ug dF9jdGlkLm9mZm51bSBpcyBzZXQgdG8gdGhlIGZvcndhcmQgb2Zmc2V0LiAgVGhlIHN0dWIn cworICogbW9kaWZpZWQtYXR0cnMgYml0bWFwIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUg aXRlbSBvbiB0aGUgcGFnZSAoaXQgaXMgdGhlCisgKiBwcmUtcHJ1bmUgdHVwbGUncyBpbmxp bmUgYml0bWFwLCBsZWZ0IHVuZGlzdHVyYmVkKSwgc28gaXQgaXMgbm90IGNhcnJpZWQgaW4K KyAqIHRoZSBXQUwuCisgKi8KKyNkZWZpbmUJCVhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJT CSgxIDw8IDEwKQorCiAvKgogICogeGxocF9mcmVlemVfcGxhbiBkZXNjcmliZXMgaG93IHRv IGZyZWV6ZSBhIGdyb3VwIG9mIG9uZSBvciBtb3JlIGhlYXAgdHVwbGVzCiAgKiAoYXBwZWFy cyBpbiB4bF9oZWFwX3BydW5lJ3MgeGxocF9mcmVlemVfcGxhbnMgc3ViLXJlY29yZCkKQEAg LTQ5NCw2ICs1MTAsNyBAQCBleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1 bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqKmZyel9vZmZzZXRzLAogCQkJCQkJCQkJCQkJICAgaW50ICpu cmVkaXJlY3RlZCwgT2Zmc2V0TnVtYmVyICoqcmVkaXJlY3RlZCwKIAkJCQkJCQkJCQkJCSAg IGludCAqbmRlYWQsIE9mZnNldE51bWJlciAqKm5vd2RlYWQsCi0JCQkJCQkJCQkJCQkgICBp bnQgKm51bnVzZWQsIE9mZnNldE51bWJlciAqKm5vd3VudXNlZCk7CisJCQkJCQkJCQkJCQkg ICBpbnQgKm51bnVzZWQsIE9mZnNldE51bWJlciAqKm5vd3VudXNlZCwKKwkJCQkJCQkJCQkJ CSAgIGludCAqbnN0dWJzLCBPZmZzZXROdW1iZXIgKipzdHVicyk7CiAKICNlbmRpZgkJCQkJ CQkvKiBIRUFQQU1fWExPR19IICovCi0tIAoyLjUwLjEKCg== --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBjNWY0OTljOTgxNTMzOGZkNzhiMWRkZjJiNmVmYjdjOTA0ZGM1OGU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDYv OV0gVGVhY2ggYW1jaGVjayB0byByZWNvZ25pemUgSE9ULWluZGV4ZWQgY2hhaW5zIGFuZAog Y29sbGFwc2Ugc3R1YnMKCnZlcmlmeV9oZWFwYW0gbXVzdCBub3QgZmxhZyB0aGUgSE9ULWlu ZGV4ZWQgYXJ0aWZhY3RzIGFzIGNvcnJ1cHRpb246IGEgbGl2ZQpIRUFQX0lOREVYRURfVVBE QVRFRCBoZWFwLW9ubHkgdHVwbGUgd2hvc2UgbWlkLWNoYWluIGxpbmUgcG9pbnRlciBpcyBw cmVzZXJ2ZWQKYmVjYXVzZSBhbiBpbmRleCBlbnRyeSBzdGlsbCBwb2ludHMgYXQgaXQsIGFu IHhpZC1mcmVlIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsCmFuZCBtb3JlIHRoYW4gb25lIExQ X1JFRElSRUNUIGZvcndhcmRpbmcgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZSBhcmUgYWxsCmxl Z2l0aW1hdGUuICBSZWNvZ25pemUgdGhlbSBhbmQgY29udGludWUgY2hlY2tpbmcgdGhlIHJl c3Qgb2YgdGhlIGNoYWluLgoKQ292ZXIgdGhpcyB3aXRoIGFuIGFtY2hlY2sgcmVncmVzc2lv biB0ZXN0LCBhbmQgYWRkIGEgcGdfdXBncmFkZSB0ZXN0IHRoYXQKY2FycmllcyBhIHJlbGF0 aW9uIHdpdGggSE9ULWluZGV4ZWQgY2hhaW5zLCBhbiBBQkEtY3ljbGVkIGluZGV4ZWQgY29s dW1uLCBhbgpvdXQtb2YtbGluZSBpbmRleGVkIGNvbHVtbiwgYW5kIFZBQ1VVTS1jb2xsYXBz ZWQgc3R1YnMgYWNyb3NzIGFuIHVwZ3JhZGUsCnZlcmlmeWluZyB0aGUgZGF0YSwgdmVyaWZ5 X2hlYXBhbSwgYnRfaW5kZXhfY2hlY2ssIGFuZCB0aGUgY2hhaW4gc2NhbnMgb24gdGhlCm5l dyBjbHVzdGVyLgoKQXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0K IGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dCAgICB8ICA0MCArKysr KysrCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsICAgICAgICAgfCAgMzcg KysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyAgICAgICAgICAgIHwg IDgxICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U LUlOREVYRUQgfCAgMTAgKysKIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQu cGwgICAgfCAxMTggKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDI3 NyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKCmRpZmYgLS1naXQgYS9j b250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgYi9jb250cmliL2FtY2hl Y2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKaW5kZXggOTc5ZTVlODRlNzIuLmI4ZGVlMmJi NzFiIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5v dXQKKysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0CkBAIC0y MzEsNiArMjMxLDQ2IEBAIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgndGVzdF9mb3Jl aWduX3RhYmxlJywKIAkJCQkJCQllbmRibG9jayA6PSBOVUxMKTsKIEVSUk9SOiAgY2Fubm90 IGNoZWNrIHJlbGF0aW9uICJ0ZXN0X2ZvcmVpZ25fdGFibGUiCiBERVRBSUw6ICBUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBmb3JlaWduIHRhYmxlcy4KKy0tIEhPVC1p bmRleGVkIChIT1QvU0lVKSBvbi1wYWdlIGFydGlmYWN0czoKKy0tCistLSBBIEhPVC1pbmRl eGVkIFVQREFURSBrZWVwcyB0aGUgbmV3IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBo ZWFwLW9ubHkKKy0tIHR1cGxlIG1hcmtlZCBIRUFQX0lOREVYRURfVVBEQVRFRCBhbmQgcGxh bnRzIGluZGV4IGVudHJpZXMgcG9pbnRpbmcgYXQgaXRzCistLSBvd24gVElELiAgUHJ1bmlu ZyBhIGNoYWluIG9mIHN1Y2ggdXBkYXRlcyBjb2xsYXBzZXMgZGVhZCBtZW1iZXJzIHRvCist LSBMUF9SRURJUkVDVCBmb3J3YXJkZXJzIGFuZCBwcmVzZXJ2ZXMgdGhlIExQIG9mIGEgbGl2 ZSBIT1QtaW5kZXhlZCBtZW1iZXIKKy0tIHdob3NlIGluZGV4IGVudHJpZXMgbWF5IG5vdCB5 ZXQgYmUgc3dlcHQuICB2ZXJpZnlfaGVhcGFtIG11c3QgdHJlYXQgYWxsIG9mCistLSB0aGVz ZSBhcyBsZWdpdGltYXRlLiAgVGhpcyBzY2VuYXJpbyBleGVyY2lzZXMgdGhlbSBhbmQgYXNz ZXJ0cyB0aGF0CistLSB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBjb3JydXB0aW9uIGFn YWluc3QgbGVnaXRpbWF0ZSBIT1QtaW5kZXhlZAorLS0gYWN0aXZpdHkuCitDUkVBVEUgVEFC TEUgaG90X2luZGV4ZWRfY2hlY2sgKGlkIGludCBQUklNQVJZIEtFWSwgYzEgaW50LCBjMiBp bnQsIGMzIGludCkKKwlXSVRIIChmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIGhv dF9pbmRleGVkX2NoZWNrX2MxIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMSk7CitDUkVBVEUg SU5ERVggaG90X2luZGV4ZWRfY2hlY2tfYzIgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMyKTsK K0lOU0VSVCBJTlRPIGhvdF9pbmRleGVkX2NoZWNrCisJU0VMRUNUIGcsIGcsIGcsIGcgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gU2luZ2xlLXN0ZXAgVVBEQVRFczog ZWFjaCByb3cgZ2V0cyBvbmUgSE9ULWluZGV4ZWQgdXBkYXRlLiAgRWFjaAorLS0gc3VjY2Vz c2Z1bCBIT1QtaW5kZXhlZCB1cGRhdGUga2VlcHMgaXRzIG5ldyB0dXBsZSBvbi1wYWdlIGFu ZCBpbnNlcnRzIGFuCistLSBlbnRyeSBvbmx5IGludG8gdGhlIGluZGV4IHdob3NlIGF0dHJp YnV0ZSBjaGFuZ2VkLgorVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMSA9IGMxICsg MTAwMDsKKy0tIE11bHRpLXN0ZXAgVVBEQVRFczogZHJpdmUgc2V2ZXJhbCBzdWNjZXNzaXZl IEhPVC1pbmRleGVkIHVwZGF0ZXMgYWdhaW5zdAorLS0gdGhlIHNhbWUgcm93cyBzbyBwcnVu ZSBzZWVzIGEgY2hhaW4gb2YgZGVhZCBpbnRlcm1lZGlhdGVzIGFuZCBjb2xsYXBzZXMKKy0t IHRoZW0gdG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4gIEFuIGV4cGxpY2l0IFZBQ1VVTSBy dW5zIHRoZSBwcnVuZSBwYXRoCistLSBhbmQgZXhlcmNpc2VzIGNoYWluIGNvbGxhcHNlLgor VVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1 MDsKK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQg PD0gNTA7CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJF IGlkIDw9IDUwOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaG90X2luZGV4ZWRfY2hl Y2s7CistLSB2ZXJpZnlfaGVhcGFtIG11c3Qgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBh Z2FpbnN0IGxlZ2l0aW1hdGUgSE9ULQorLS0gaW5kZXhlZCBhcnRpZmFjdHMuICBTZWxlY3Rp bmcgdGhlIGNvcnJ1cHRpbmcgbWVzc2FnZSBtYWtlcyBhbnkKKy0tIHJlZ3Jlc3Npb24gdW5t aXN0YWthYmxlIGluIHRoZSByZWdyZXNzIGRpZmYuCitTRUxFQ1QgYmxrbm8sIG9mZm51bSwg YXR0bnVtLCBtc2cKKwlGUk9NIHZlcmlmeV9oZWFwYW0oJ2hvdF9pbmRleGVkX2NoZWNrJywK KwkJCQkJICAgc3RhcnRibG9jayA6PSBOVUxMLAorCQkJCQkgICBlbmRibG9jayA6PSBOVUxM KTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaG90X2luZGV4ZWRfY2hl Y2s7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhlYXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hl Y2svc3FsL2NoZWNrX2hlYXAuc3FsIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFw LnNxbAppbmRleCAxNzQ1YmFlNjM0ZS4uYzBiYTI2MzUxODAgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwKKysrIGIvY29udHJpYi9hbWNoZWNrL3Nx bC9jaGVja19oZWFwLnNxbApAQCAtMTM4LDYgKzEzOCw0MyBAQCBTRUxFQ1QgKiBGUk9NIHZl cmlmeV9oZWFwYW0oJ3Rlc3RfZm9yZWlnbl90YWJsZScsCiAJCQkJCQkJc3RhcnRibG9jayA6 PSBOVUxMLAogCQkJCQkJCWVuZGJsb2NrIDo9IE5VTEwpOwogCistLSBIT1QtaW5kZXhlZCAo SE9UL1NJVSkgb24tcGFnZSBhcnRpZmFjdHM6CistLQorLS0gQSBIT1QtaW5kZXhlZCBVUERB VEUga2VlcHMgdGhlIG5ldyB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5 CistLSB0dXBsZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQgYW5kIHBsYW50cyBpbmRl eCBlbnRyaWVzIHBvaW50aW5nIGF0IGl0cworLS0gb3duIFRJRC4gIFBydW5pbmcgYSBjaGFp biBvZiBzdWNoIHVwZGF0ZXMgY29sbGFwc2VzIGRlYWQgbWVtYmVycyB0bworLS0gTFBfUkVE SVJFQ1QgZm9yd2FyZGVycyBhbmQgcHJlc2VydmVzIHRoZSBMUCBvZiBhIGxpdmUgSE9ULWlu ZGV4ZWQgbWVtYmVyCistLSB3aG9zZSBpbmRleCBlbnRyaWVzIG1heSBub3QgeWV0IGJlIHN3 ZXB0LiAgdmVyaWZ5X2hlYXBhbSBtdXN0IHRyZWF0IGFsbCBvZgorLS0gdGhlc2UgYXMgbGVn aXRpbWF0ZS4gIFRoaXMgc2NlbmFyaW8gZXhlcmNpc2VzIHRoZW0gYW5kIGFzc2VydHMgdGhh dAorLS0gdmVyaWZ5X2hlYXBhbSByZXBvcnRzIHplcm8gY29ycnVwdGlvbiBhZ2FpbnN0IGxl Z2l0aW1hdGUgSE9ULWluZGV4ZWQKKy0tIGFjdGl2aXR5LgorQ1JFQVRFIFRBQkxFIGhvdF9p bmRleGVkX2NoZWNrIChpZCBpbnQgUFJJTUFSWSBLRVksIGMxIGludCwgYzIgaW50LCBjMyBp bnQpCisJV0lUSCAoZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCBob3RfaW5kZXhl ZF9jaGVja19jMSBPTiBob3RfaW5kZXhlZF9jaGVjayAoYzEpOworQ1JFQVRFIElOREVYIGhv dF9pbmRleGVkX2NoZWNrX2MyIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMik7CitJTlNFUlQg SU5UTyBob3RfaW5kZXhlZF9jaGVjaworCVNFTEVDVCBnLCBnLCBnLCBnIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwMCkgZzsKKy0tIFNpbmdsZS1zdGVwIFVQREFURXM6IGVhY2ggcm93 IGdldHMgb25lIEhPVC1pbmRleGVkIHVwZGF0ZS4gIEVhY2gKKy0tIHN1Y2Nlc3NmdWwgSE9U LWluZGV4ZWQgdXBkYXRlIGtlZXBzIGl0cyBuZXcgdHVwbGUgb24tcGFnZSBhbmQgaW5zZXJ0 cyBhbgorLS0gZW50cnkgb25seSBpbnRvIHRoZSBpbmRleCB3aG9zZSBhdHRyaWJ1dGUgY2hh bmdlZC4KK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzEgPSBjMSArIDEwMDA7Cist LSBNdWx0aS1zdGVwIFVQREFURXM6IGRyaXZlIHNldmVyYWwgc3VjY2Vzc2l2ZSBIT1QtaW5k ZXhlZCB1cGRhdGVzIGFnYWluc3QKKy0tIHRoZSBzYW1lIHJvd3Mgc28gcHJ1bmUgc2VlcyBh IGNoYWluIG9mIGRlYWQgaW50ZXJtZWRpYXRlcyBhbmQgY29sbGFwc2VzCistLSB0aGVtIHRv IExQX1JFRElSRUNUIGZvcndhcmRlcnMuICBBbiBleHBsaWNpdCBWQUNVVU0gcnVucyB0aGUg cHJ1bmUgcGF0aAorLS0gYW5kIGV4ZXJjaXNlcyBjaGFpbiBjb2xsYXBzZS4KK1VQREFURSBo b3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0gNTA7CitVUERB VEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9IDUwOwor VVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1 MDsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhvdF9pbmRleGVkX2NoZWNrOworLS0g dmVyaWZ5X2hlYXBhbSBtdXN0IG5vdCByZXBvcnQgYW55IGNvcnJ1cHRpb24gYWdhaW5zdCBs ZWdpdGltYXRlIEhPVC0KKy0tIGluZGV4ZWQgYXJ0aWZhY3RzLiAgU2VsZWN0aW5nIHRoZSBj b3JydXB0aW5nIG1lc3NhZ2UgbWFrZXMgYW55CistLSByZWdyZXNzaW9uIHVubWlzdGFrYWJs ZSBpbiB0aGUgcmVncmVzcyBkaWZmLgorU0VMRUNUIGJsa25vLCBvZmZudW0sIGF0dG51bSwg bXNnCisJRlJPTSB2ZXJpZnlfaGVhcGFtKCdob3RfaW5kZXhlZF9jaGVjaycsCisJCQkJCSAg IHN0YXJ0YmxvY2sgOj0gTlVMTCwKKwkJCQkJICAgZW5kYmxvY2sgOj0gTlVMTCk7CitEUk9Q IFRBQkxFIGhvdF9pbmRleGVkX2NoZWNrOworCiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhl YXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRp ZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jIGIvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwppbmRleCAyMGZmNThhYTc4Mi4uNzNiMjA2MjMzODEg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKKysrIGIvY29u dHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwpAQCAtMTMsOCArMTMsMTAgQEAKICNpbmNs dWRlICJhY2Nlc3MvZGV0b2FzdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4 ZWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNz L3JlbGF0aW9uLmgiCisKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJh Y2Nlc3MvdG9hc3RfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHlt YXAuaCIKQEAgLTUyMiw5ICs1MjQsMTIgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9B UkdTKQogCQkJICovCiAJCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKGN0eC5pdGVtaWQpKQog CQkJewotCQkJCU9mZnNldE51bWJlciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0 eC5pdGVtaWQpOworCQkJCU9mZnNldE51bWJlciByZG9mZm51bTsKIAkJCQlJdGVtSWQJCXJk aXRlbTsKIAorCQkJCS8qIFJlc29sdmUgdGhlIHJlZGlyZWN0J3MgdGFyZ2V0IG9mZnNldC4g Ki8KKwkJCQlyZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0eC5pdGVtaWQpOworCiAJ CQkJaWYgKHJkb2ZmbnVtIDwgRmlyc3RPZmZzZXROdW1iZXIpCiAJCQkJewogCQkJCQlyZXBv cnRfY29ycnVwdGlvbigmY3R4LApAQCAtNjE1LDE4ICs2MjAsMzggQEAgdmVyaWZ5X2hlYXBh bShQR19GVU5DVElPTl9BUkdTKQogCQkJY3R4LnR1cGhkciA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBjdHguaXRlbWlkKTsKIAkJCWN0eC5uYXR0cyA9IEhl YXBUdXBsZUhlYWRlckdldE5hdHRzKGN0eC50dXBoZHIpOwogCi0JCQkvKiBPaywgcmVhZHkg dG8gY2hlY2sgdGhpcyBuZXh0IHR1cGxlICovCi0JCQljaGVja190dXBsZSgmY3R4LAotCQkJ CQkJJnhtaW5fY29tbWl0X3N0YXR1c19va1tjdHgub2ZmbnVtXSwKLQkJCQkJCSZ4bWluX2Nv bW1pdF9zdGF0dXNbY3R4Lm9mZm51bV0pOworCQkJLyoKKwkJCSAqIEEgSE9ULXNlbGVjdGl2 ZWx5LXVwZGF0ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBhbgorCQkJICogTFBfTk9S TUFMIGl0ZW0gdGhhdCBpcyBub3QgYSByZWFsIHR1cGxlOiBIRUFQX0lOREVYRURfVVBEQVRF RAorCQkJICogd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2libGUgKEhFQVBf WE1JTl9JTlZBTElEKSwKKwkJCSAqIGNhcnJ5aW5nIGEgZm9yd2FyZCBsaW5rIGFuZCBhIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcC4gIFRoZQorCQkJICogcGVyLXR1cGxlIGNoZWNrcyBhc3N1 bWUgYSByZWFsIHR1cGxlIGFuZCB3b3VsZCBtaXNyZXBvcnQgaXQsIHNvCisJCQkgKiBza2lw IHRoZW07IHRoZSB1cGRhdGUtY2hhaW4gcGFzcyBiZWxvdyBzdGlsbCByZWNvcmRzIGl0cwor CQkJICogZm9yd2FyZCBlZGdlIGFuZCB0cmVhdHMgaXQgbGlrZSBhIHJlZGlyZWN0IChhIGZv cndhcmRpbmcgbm9kZSkuCisJCQkgKi8KKwkJCWlmICghSG90SW5kZXhlZEhlYWRlcklzU3R1 YihjdHgudHVwaGRyKSkKKwkJCQljaGVja190dXBsZSgmY3R4LAorCQkJCQkJCSZ4bWluX2Nv bW1pdF9zdGF0dXNfb2tbY3R4Lm9mZm51bV0sCisJCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1 c1tjdHgub2ZmbnVtXSk7CiAKIAkJCS8qCiAJCQkgKiBJZiB0aGUgQ1RJRCBmaWVsZCBvZiB0 aGlzIHR1cGxlIHNlZW1zIHRvIHBvaW50IHRvIGFub3RoZXIgdHVwbGUKIAkJCSAqIG9uIHRo ZSBzYW1lIHBhZ2UsIHJlY29yZCB0aGF0IHR1cGxlIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhp cwotCQkJICogb25lLgorCQkJICogb25lLiAgQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIHN0 b3JlcyBpdHMgZm9yd2FyZCBsaW5rIGluIHRoZQorCQkJICogdF9jdGlkIG9mZnNldCBvbmx5 ICh0aGUgYmxvY2sgaGFsZiBpcyByZXB1cnBvc2VkIHRvIGhvbGQgdGhlCisJCQkgKiBzdHVi J3Mgd3JpdGUtdGltZSBuYXR0cyksIHNvIHJlc29sdmUgaXRzIHN1Y2Nlc3NvciB2aWEgdGhl IHN0dWIKKwkJCSAqIGFjY2Vzc29yOyB0aGUgZm9yd2FyZCB0YXJnZXQgaXMgYWx3YXlzIG9u IHRoZSBzYW1lIHBhZ2UuCiAJCQkgKi8KLQkJCW5leHRibGtubyA9IEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJihjdHgudHVwaGRyKS0+dF9jdGlkKTsKLQkJCW5leHRvZmZudW0gPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQpOworCQkJ aWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3R4LnR1cGhkcikpCisJCQl7CisJCQkJbmV4 dGJsa25vID0gY3R4LmJsa25vOworCQkJCW5leHRvZmZudW0gPSBIb3RJbmRleGVkU3R1Ykdl dEZvcndhcmQoY3R4LnR1cGhkcik7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJbmV4dGJs a25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQp OworCQkJCW5leHRvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGN0eC50 dXBoZHIpLT50X2N0aWQpOworCQkJfQogCQkJaWYgKG5leHRibGtubyA9PSBjdHguYmxrbm8g JiYgbmV4dG9mZm51bSAhPSBjdHgub2ZmbnVtICYmCiAJCQkJbmV4dG9mZm51bSA+PSBGaXJz dE9mZnNldE51bWJlciAmJiBuZXh0b2ZmbnVtIDw9IG1heG9mZikKIAkJCQlzdWNjZXNzb3Jb Y3R4Lm9mZm51bV0gPSBuZXh0b2ZmbnVtOwpAQCAtNjc1LDcgKzcwMCw3IEBAIHZlcmlmeV9o ZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkgKi8KIAkJCQlBc3NlcnQoSXRlbUlkSXNO b3JtYWwobmV4dF9scCkpOwogCi0JCQkJLyogQ2FuIG9ubHkgcmVkaXJlY3QgdG8gYSBIT1Qg dHVwbGUuICovCisJCQkJLyogQSByZWRpcmVjdCB0YXJnZXRzIHRoZSBmaXJzdCBzdXJ2aXZp bmcgY2hhaW4gbWVtYmVyLiAqLwogCQkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBuZXh0X2xwKTsKIAkJCQlpZiAoIUhlYXBUdXBsZUhl YWRlcklzSGVhcE9ubHkobmV4dF9odHVwKSkKIAkJCQl7CkBAIC02ODcsNiArNzEyLDE5IEBA IHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkvKiBIT1QgY2hhaW5zIHNo b3VsZCBub3QgaW50ZXJzZWN0LiAqLwogCQkJCWlmIChwcmVkZWNlc3NvcltuZXh0b2ZmbnVt XSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQogCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogSW4g dGhlIEhPVC9TSVUgbW9kZWwgc2V2ZXJhbCByZWRpcmVjdHMgbGVnaXRpbWF0ZWx5CisJCQkJ CSAqIGZvcndhcmQgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZTogd2hlbiBhIGNoYWluIGNvbGxh cHNlcywKKwkJCQkJICogdGhlIHJvb3QgYW5kIGVhY2ggZW50cnktYmVhcmluZyBkZWFkIG1l bWJlciBiZWNvbWUgYQorCQkJCQkgKiByZWRpcmVjdCB0byBmaXJzdF9saXZlIHNvIGV2ZXJ5 IHN0YWxlIGJ0cmVlIGVudHJ5IHN0aWxsCisJCQkJCSAqIHJlc29sdmVzIHRoZXJlICh0aGUg cmVhZCBwYXRoIHRoZW4gcmVjaGVja3MgdGhlIGxlYWYKKwkJCQkJICoga2V5KS4gIE11bHRp cGxlIHByZWRlY2Vzc29ycyBhcmUgdGhlcmVmb3JlIGV4cGVjdGVkCisJCQkJCSAqIHdoZW4g dGhlIHRhcmdldCBpcyBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZDsga2VlcCB0aGUKKwkJCQkJ ICogZmlyc3QgcHJlZGVjZXNzb3IgYW5kIGRvIG5vdCByZXBvcnQgaXQgYXMgY29ycnVwdGlv bi4KKwkJCQkJICovCisJCQkJCWlmICgobmV4dF9odHVwLT50X2luZm9tYXNrMiAmIEhFQVBf SU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQkJCQkJY29udGludWU7CisKIAkJCQkJcmVwb3J0 X2NvcnJ1cHRpb24oJmN0eCwKIAkJCQkJCQkJCSAgcHNwcmludGYoInJlZGlyZWN0IGxpbmUg cG9pbnRlciBwb2ludHMgdG8gb2Zmc2V0ICVkLCBidXQgb2Zmc2V0ICVkIGFsc28gcG9pbnRz IHRoZXJlIiwKIAkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSwgcHJlZGVjZXNzb3JbbmV4dG9m Zm51bV0pKTsKQEAgLTcwMSw2ICs3MzksMzAgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElP Tl9BUkdTKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCisJCQkvKgorCQkJICogQSBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGZvcndhcmRzIGxpa2UgYSByZWRpcmVjdDogaXQgaXMgbm90IGEK KwkJCSAqIHJlYWwgdHVwbGUsIHNvIGRvbid0IGFwcGx5IHRoZSB0dXBsZS10by10dXBsZSB1 cGRhdGUtY2hhaW4KKwkJCSAqIGNoZWNrcywgYnV0IGRvIHJlY29yZCB0aGUgcHJlZGVjZXNz b3IgZWRnZSB0byBpdHMgdGFyZ2V0IHNvIHRoZQorCQkJICogbGl2ZSB0dXBsZSBpdCB1bHRp bWF0ZWx5IGZvcndhcmRzIHRvIGlzIG5vdCBtaXN0YWtlbiBmb3IgYQorCQkJICogY2hhaW4g cm9vdC4gIEl0cyB0YXJnZXQgbXVzdCBiZSBoZWFwLW9ubHkgKGFub3RoZXIgc3R1YiBvciB0 aGUKKwkJCSAqIGxpdmUgaGVhcC1vbmx5IHR1cGxlKS4KKwkJCSAqLworCQkJY3Vycl9odHVw ID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4LnBhZ2UsIGN1cnJfbHApOwor CQkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3Vycl9odHVwKSkKKwkJCXsKKwkJCQlp ZiAoSXRlbUlkSXNOb3JtYWwobmV4dF9scCkpCisJCQkJeworCQkJCQluZXh0X2h0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgbmV4dF9scCk7CisJCQkJ CWlmICghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShuZXh0X2h0dXApKQorCQkJCQkJcmVw b3J0X2NvcnJ1cHRpb24oJmN0eCwKKwkJCQkJCQkJCQkgIHBzcHJpbnRmKCJIT1QtaW5kZXhl ZCBzdHViIGZvcndhcmRzIHRvIGEgbm9uLWhlYXAtb25seSB0dXBsZSBhdCBvZmZzZXQgJWQi LAorCQkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSkpOworCQkJCQllbHNlIGlmIChwcmVkZWNl c3NvcltuZXh0b2ZmbnVtXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJCQkJcHJlZGVj ZXNzb3JbbmV4dG9mZm51bV0gPSBjdHgub2ZmbnVtOworCQkJCX0KKwkJCQljb250aW51ZTsK KwkJCX0KKwogCQkJLyoKIAkJCSAqIElmIHRoZSBuZXh0IGxpbmUgcG9pbnRlciBpcyBhIHJl ZGlyZWN0LCBvciBpZiBpdCdzIGEgdHVwbGUgYnV0CiAJCQkgKiB0aGUgWE1BWCBvZiB0aGlz IHR1cGxlIGRvZXNuJ3QgbWF0Y2ggdGhlIFhNSU4gb2YgdGhlIG5leHQKQEAgLTcwOSw3ICs3 NzEsNiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKi8KIAkJCWlm IChJdGVtSWRJc1JlZGlyZWN0ZWQobmV4dF9scCkpCiAJCQkJY29udGludWU7Ci0JCQljdXJy X2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgY3Vycl9s cCk7CiAJCQljdXJyX3htYXggPSBIZWFwVHVwbGVIZWFkZXJHZXRVcGRhdGVYaWQoY3Vycl9o dHVwKTsKIAkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0 eC5wYWdlLCBuZXh0X2xwKTsKIAkJCW5leHRfeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFht aW4obmV4dF9odHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1Qt SU5ERVhFRAppbmRleCBhYjRmOGJjMTg4MS4uMWY0MWIwZmZmZTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAorKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTI0NCw2ICsyNDQsMTYg QEAgc3RhbGUgZW50cmllcyAoZW5mb3JjZWQgaW4gaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJl Y3QsIHRoZSBzdHViIHJlY29yZGVycywgYW5kCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUpLgogCiAKK2FtY2hlY2sgYW5kIHN0YXRpc3RpY3MKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKwordmVyaWZ5X2hlYXBhbSB0cmVhdHMgdGhlIEhPVC1pbmRleGVkIGFydGlmYWN0 cyBhcyBsZWdpdGltYXRlOiBhIGxpdmUKK0hFQVBfSU5ERVhFRF9VUERBVEVEIGhlYXAtb25s eSB0dXBsZSB3aG9zZSBsaW5lIHBvaW50ZXIgaXMgcHJlc2VydmVkLCBhbmQKK211bHRpcGxl IExQX1JFRElSRUNUcyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZlIHR1cGxlLgorCitTdGF0aXN0 aWNzOiBwZ19zdGF0X2FsbF90YWJsZXMubl90dXBfaG90X2luZGV4ZWRfdXBkIGNvdW50cyBI T1QtaW5kZXhlZAorCisKIEFwcGVuZGljZXMKIC0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21l c29uLmJ1aWxkCmluZGV4IGZmYmY2YWU4ZDc1Li4wYTZmYTBkY2ZmMiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9tZXNvbi5idWlsZApAQCAtNjksNiArNjksNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8w MDZfdHJhbnNmZXJfbW9kZXMucGwnLAogICAgICAgJ3QvMDA3X211bHRpeGFjdF9jb252ZXJz aW9uLnBsJywKICAgICAgICd0LzAwOF9leHRlbnNpb25fY29udHJvbF9wYXRoLnBsJywKKyAg ICAgICd0LzAwOV9ob3RfaW5kZXhlZC5wbCcsCiAgICAgXSwKICAgICAnZGVwcyc6IFt0ZXN0 X2V4dF0sCiAgICAgJ3Rlc3Rfa3dhcmdzJzogeydwcmlvcml0eSc6IDQwfSwgIyBwZ191cGdy YWRlIHRlc3RzIGFyZSBzbG93CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDlfaG90X2luZGV4ZWQucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4 ZWQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3MTEyOWFl MDNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA5X2hvdF9p bmRleGVkLnBsCkBAIC0wLDAgKzEsMTE4IEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBwZ191cGdyYWRlIG11c3Qg cHJlc2VydmUgSE9ULWluZGV4ZWQgb24tZGlzayBzdGF0ZS4gIEEgcmVsYXRpb24gdGhhdCBo YXMKKyMgYWNjdW11bGF0ZWQgSE9ULWluZGV4ZWQgY2hhaW5zIC0tIGluY2x1ZGluZyBhIHZh bHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrCisjIChBQkEpLCBhbiBvdXQtb2YtbGluZSAoVE9B U1QpIGluZGV4ZWQgY29sdW1uLCBhbmQgY2hhaW5zIGNvbGxhcHNlZCB0bworIyB4aWQtZnJl ZSBmb3J3YXJkaW5nIHN0dWJzIGJ5IFZBQ1VVTSAtLSBtdXN0IGNvbWUgdGhyb3VnaCBhbiB1 cGdyYWRlIHdpdGggaXRzCisjIGRhdGEgaW50YWN0LCBpdHMgaW5kZXhlcyBzdHJ1Y3R1cmFs bHkgc291bmQsIGFuZCBpdHMgY2hhaW5zIHN0aWxsIHNjYW5uaW5nCisjIGNvcnJlY3RseS4g IHBnX3VwZ3JhZGUgdHJhbnNmZXJzIGhlYXAgYW5kIGluZGV4IGZpbGVzIHZlcmJhdGltLCBz byB0aGlzIGlzCisjIHJlYWxseSBhIGNoZWNrIHRoYXQgdGhlIG5ldy1zdGF0ZSBiaXRzIChI RUFQX0lOREVYRURfVVBEQVRFRCwgY29sbGFwc2Ugc3R1YnMpCisjIGFyZSBub3QgcmVqZWN0 ZWQgYnkgcGdfdXBncmFkZSdzIGNoZWNrcyBhbmQgc3RheSBjb3JyZWN0IG9uIHRoZSBuZXcg Y2x1c3Rlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRtb2RlID0gJEVOVntQR19URVNUX1BH X1VQR1JBREVfTU9ERX0gfHwgJy0tY29weSc7CisKK215ICRvbGRub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdvbGRfbm9kZScpOworJG9sZG5vZGUtPmluaXQ7Cisk b2xkbm9kZS0+c3RhcnQ7CisKKyMgQnVpbGQgYSByZWxhdGlvbiB3aXRoIHNldmVyYWwgc2Vj b25kYXJ5IGluZGV4ZXMgc28gc2luZ2xlLWNvbHVtbiB1cGRhdGVzCisjIHN0YXkgSE9ULWlu ZGV4ZWQsIHRoZW4gZXhlcmNpc2UgdGhlIGNhc2VzIHRoYXQgcHJvZHVjZSBpbnRlcmVzdGlu ZyBvbi1kaXNrCisjIHN0YXRlLgorJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx eworCUNSRUFURSBFWFRFTlNJT04gYW1jaGVjazsKKwlDUkVBVEUgVEFCTEUgaGkgKGlkIGlu dCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50LCBiaWcgdGV4dCkKKwkgIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CisJQUxURVIgVEFCTEUgaGkgQUxURVIgQ09MVU1OIGJpZyBTRVQgU1RP UkFHRSBFWFRFUk5BTDsKKwlDUkVBVEUgSU5ERVggaGlfayBPTiBoaSAoayk7CisJQ1JFQVRF IElOREVYIGhpX3YgT04gaGkgKHYpOworCUNSRUFURSBJTkRFWCBoaV9iaWcgT04gaGkgKGJp Zyk7CisJSU5TRVJUIElOVE8gaGkgU0VMRUNUIGcsIGcsIGcgKiAxMCwgcmVwZWF0KGNocig2 NCArIGcpLCAyMDAwKQorCSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGc7Cit9KTsK KworIyBJbnRlcmxlYXZlIHVwZGF0ZXMgb2YgZGlmZmVyZW50IGluZGV4ZWQgY29sdW1ucyBv biB0aGUgc2FtZSByb3dzLiAgQSBtZW1iZXIKKyMgdGhhdCBjaGFuZ2VkIGEgY29sdW1uIG5v dCBjaGFuZ2VkIGFnYWluIGJ5IGEgbGF0ZXIgaG9wIHN1cnZpdmVzIFZBQ1VVTSBhcyBhCisj IGNvbGxhcHNlIHN0dWI7IHRoZSByZXN0IGFyZSByZWNsYWltZWQuICBSb3cgMSBhZGRpdGlv bmFsbHkgY3ljbGVzIGsgYXdheSBhbmQKKyMgYmFjayAoQUJBKSwgYW5kIHJvdyAyIHJld3Jp dGVzIGl0cyB0b2FzdGVkIGluZGV4ZWQgY29sdW1uLgorJG9sZG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxeworCVVQREFURSBoaSBTRVQgayA9IGsgKyAxMDAgV0hFUkUgaWQgPD0g MTA7ICAgLS0gY2hhbmdlcyBrCisJVVBEQVRFIGhpIFNFVCB2ID0gdiArIDEgICBXSEVSRSBp ZCA8PSAxMDsgICAgLS0gY2hhbmdlcyB2IChzdXJ2aXZlcyBhcyBzdHViKQorCVVQREFURSBo aSBTRVQgayA9IGsgLSAxMDAgV0hFUkUgaWQgPD0gMTA7ICAgIC0tIGsgYmFjayB0byBvcmln aW5hbCAoQUJBKQorCVVQREFURSBoaSBTRVQgYmlnID0gcmVwZWF0KCdaJywgMjAwMCkgV0hF UkUgaWQgPSAyOworfSk7CisjIENvbGxhcHNlIGRlYWQgY2hhaW4gbWVtYmVycyB0byBzdHVi cy4KKyRvbGRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZBQ1VVTSAoSU5ERVhfQ0xF QU5VUCBvZmYpIGhpJyk7CisKKyMgVGhlIHByZS11cGdyYWRlIHN0YXRlIG11c3QgYWxyZWFk eSBiZSBzZWxmLWNvbnNpc3RlbnQuCitpcyggJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpJyl9KSwK KwknMCcsICdwcmUtdXBncmFkZSBoZWFwIGlzIGNvbnNpc3RlbnQnKTsKKworIyBTbmFwc2hv dCB0aGUgZGF0YSB3ZSB3aWxsIGNvbXBhcmUgYWZ0ZXIgdGhlIHVwZ3JhZGUuCitteSAkZXhw ZWN0ID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIGlkLCBr LCB2LCBsZW5ndGgoYmlnKSBGUk9NIGhpIE9SREVSIEJZIGlkfSk7CisKKyRvbGRub2RlLT5z dG9wOworCisjIE5ldyBjbHVzdGVyLCBzYW1lIHZlcnNpb24uCitteSAkbmV3bm9kZSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbmV3X25vZGUnKTsKKyRuZXdub2RlLT5p bml0OworCitteSAkb2xkYmluZGlyID0gJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRp cicpOworbXkgJG5ld2JpbmRpciA9ICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXIn KTsKKworIyBSdW4gcGdfdXBncmFkZSBmcm9tIGEgd3JpdGFibGUgZGlyZWN0b3J5IChtYXRj aGVzIDAwMl9wZ191cGdyYWRlKS4KK2NoZGlyICR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRtcF9jaGVja307CisKK2NvbW1hbmRfb2soCisJWworCQkncGdfdXBncmFkZScsICctLW5v LXN5bmMnLAorCQknLS1vbGQtZGF0YWRpcicgPT4gJG9sZG5vZGUtPmRhdGFfZGlyLAorCQkn LS1uZXctZGF0YWRpcicgPT4gJG5ld25vZGUtPmRhdGFfZGlyLAorCQknLS1vbGQtYmluZGly JyA9PiAkb2xkYmluZGlyLAorCQknLS1uZXctYmluZGlyJyA9PiAkbmV3YmluZGlyLAorCQkn LS1zb2NrZXRkaXInID0+ICRuZXdub2RlLT5ob3N0LAorCQknLS1vbGQtcG9ydCcgPT4gJG9s ZG5vZGUtPnBvcnQsCisJCSctLW5ldy1wb3J0JyA9PiAkbmV3bm9kZS0+cG9ydCwKKwkJJG1v ZGUsCisJXSwKKwkncnVuIG9mIHBnX3VwZ3JhZGUgZm9yIEhPVC1pbmRleGVkIHJlbGF0aW9u Jyk7CisKKyRuZXdub2RlLT5zdGFydDsKKworIyBEYXRhIHN1cnZpdmVkIGludGFjdC4KK215 ICRnb3QgPSAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaWQs IGssIHYsIGxlbmd0aChiaWcpIEZST00gaGkgT1JERVIgQlkgaWR9KTsKK2lzKCRnb3QsICRl eHBlY3QsICdIT1QtaW5kZXhlZCB0YWJsZSBkYXRhIHByZXNlcnZlZCBhY3Jvc3MgcGdfdXBn cmFkZScpOworCisjIEhlYXAgYW5kIGluZGV4ZXMgYXJlIHN0cnVjdHVyYWxseSBzb3VuZCBv biB0aGUgbmV3IGNsdXN0ZXIuCitpcyggJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpJyl9KSwKKwkn MCcsICdwb3N0LXVwZ3JhZGUgaGVhcCBpcyBjb25zaXN0ZW50IChjb2xsYXBzZSBzdHVicyBy ZWNvZ25pc2VkKScpOworaXMoICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsK KwkJU0VMRUNUIGNvdW50KCopIEZST00gKAorCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKGMu b2lkKQorCQkJRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5kZXggaSBPTiBpLmluZGV4cmVs aWQgPSBjLm9pZAorCQkJV0hFUkUgaS5pbmRyZWxpZCA9ICdoaSc6OnJlZ2NsYXNzKSBzfSks CisJJzQnLCAncG9zdC11cGdyYWRlIGluZGV4ZXMgcGFzcyBidF9pbmRleF9jaGVjaycpOwor CisjIFRoZSBBQkEgY2hhaW4gb24gcm93IDEgc3RpbGwgc2NhbnMgY29ycmVjdGx5IHRocm91 Z2ggYSBmb3JjZWQgaW5kZXggc2NhbjoKKyMgaz0xIHJldHVybnMgZXhhY3RseSB0aGUgb25l IGxpdmUgcm93LCBhbmQgaXRzIHN1cGVyc2VkZWQgdmFsdWUgaXMgZ29uZS4KK2lzKCAkbmV3 bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCVNFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworCQlTRUxFQ1QgY291bnQoKikg RlJPTSBoaSBXSEVSRSBrID0gMX0pLAorCScxJywgJ3Bvc3QtdXBncmFkZSBpbmRleCBzY2Fu IHJldHVybnMgdGhlIEFCQSByb3cgb25jZScpOworaXMoICRuZXdub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXsKKwkJU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyBTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CisJCVNFTEVDVCBjb3VudCgqKSBGUk9NIGhpIFdIRVJFIGsg PSAxMDF9KSwKKwknMCcsICdwb3N0LXVwZ3JhZGUgaW5kZXggc2NhbiBkcm9wcyB0aGUgc3Vw ZXJzZWRlZCB2YWx1ZScpOworCiskbmV3bm9kZS0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7 Ci0tIAoyLjUwLjEKCg== --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0007-Add-HOT-indexed-statistics-and-the-comprehensive.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0007-Add-HOT-indexed-statistics-and-the-comprehensive.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAzYzlmZjdjM2YzNThkY2ZjNmFhMzIwOWJjZGU4ZTBkYmY1MDBhNGFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozODoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDcv OV0gQWRkIEhPVC1pbmRleGVkIHN0YXRpc3RpY3MgYW5kIHRoZSBjb21wcmVoZW5zaXZlIHRl c3QKIHN1aXRlCgpFeHBvc2UgdGhlIEhPVC1pbmRleGVkIGFjdGl2aXR5IGNvdW50ZXJzIG1h aW50YWluZWQgYnkgdGhlIHdyaXRlIHBhdGg6CnBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1cF9o b3RfaW5kZXhlZF91cGQsIHRoZSBwZXItaW5kZXgKbl90dXBfaG90X2luZGV4ZWRfdXBkX21h dGNoZWQgLyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBjb3VudGVycyBpbgpwZ19z dGF0X2FsbF9pbmRleGVzLCBhbmQgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoKSBy ZXBvcnRpbmcgcGVyLXJlbGF0aW9uCkhPVC1pbmRleGVkIGNoYWluIGNvbXBvc2l0aW9uLiAg RG9jdW1lbnQgdGhlbSBpbiBtb25pdG9yaW5nLnNnbWwgYW5kIHRoZQpSRUFETUUuCgpXaXRo IHN0YXRpc3RpY3MsIHBydW5lL2NvbGxhcHNlLCBhbmQgYW1jaGVjayByZWNvZ25pdGlvbiBh bGwgaW4gcGxhY2UsIGFkZCB0aGUKZnVsbCBmZWF0dXJlIHRlc3Qgc3VpdGUsIHdoaWNoIHVz ZXMgdGhvc2UgZmFjaWxpdGllcyB0byB2ZXJpZnkgYmVoYXZpb3I6CgotIGhvdF9pbmRleGVk X3VwZGF0ZXMgKHJlZ3Jlc3Npb24pOiBlbGlnaWJpbGl0eSBhbmQgY2xhc3NpZmljYXRpb247 IHNlbGVjdGl2ZQogIG1haW50ZW5hbmNlIGFjcm9zcyBtdWx0aXBsZS9jb21wb3NpdGUgaW5k ZXhlczsgdGhlIGNyb3NzZWQtYXR0cmlidXRlIHJlYWQKICBwYXRoIGZvciBlcXVhbGl0eSwg cmFuZ2UsIGFuZCBpbmVxdWFsaXR5IHNjYW5zOyBhIGtleSBjeWNsZWQgYXdheSBhbmQgYmFj awogIChBQkEpLCBpbmNsdWRpbmcgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M7IFRP QVNUZWQgaW5kZXhlZCBjb2x1bW5zOwogIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGZsaXBz IChrZXkgYW5kIG5vbi1rZXkgcHJlZGljYXRlIGNvbHVtbnMpOwogIHRyaWdnZXItbW9kaWZp ZWQgaW5kZXhlZCBjb2x1bW5zOyBleGNsdXNpb24tY29uc3RyYWludCB0YWJsZXM7IHBhcnRp dGlvbmVkCiAgdGFibGVzOyBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgKGhhc2gsIEdJTiwg R2lTVCk7IGEgVU5JUVVFIGluZGV4IG9uIGEgdHlwZQogIHdoZXJlIGltYWdlIGVxdWFsaXR5 IGRpZmZlcnMgZnJvbSBvcGVyYXRvciBlcXVhbGl0eTsgQ1JFQVRFIElOREVYIC8gUkVJTkRF WAogIGFuZCBEUk9QIElOREVYIG92ZXIgbGl2ZSBjaGFpbnM7IHBydW5lIHJlY2xhbWF0aW9u LCBzdHViIG1peGVzLCBhbmQKICByZS1jb2xsYXBzZSBhY3Jvc3MgcGFydGlhbCBWQUNVVU1z OyB0aGUgbmV2ZXItYWxsLXZpc2libGUgZ3VhcmQ7IGFuZCBEREwKICBhZnRlciBhIGNoYWlu IGV4aXN0cyAoQUREIENPTFVNTiBjcm9zc2luZyBhIGJpdG1hcC1zaXplIGJvdW5kYXJ5LCBE Uk9QCiAgQ09MVU1OKS4KLSBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbCAoaXNvbGF0aW9uKTog Y29uY3VycmVudCBVUERBVEUgLyBWQUNVVU0gLyBwcnVuZSBhbmQKICBpbmRleCBzY2Fucywg a2V5IGN5Y2xpbmcsIGFib3J0cywgYW5kIHJlYWRlciBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBj b25jdXJyZW50CiAgY29sbGFwc2UuCi0gMDU0X2hvdF9pbmRleGVkX3JlY292ZXJ5IChyZWNv dmVyeSk6IFdBTCByZXBsYXkgb2YgdGhlIGNoYWluIGFuZCBpdHMgY29sbGFwc2UKICB1bmRl ciB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcuCi0gcGdfc3VyZ2VyeSBoYW5kbGluZyBvZiBI T1QtaW5kZXhlZCB0dXBsZXMgYW5kIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzLgoKQXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0KIGNvbnRyaWIvcGdfc3VyZ2Vy eS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQgIHwgICA4MyArCiBjb250cmliL3BnX3N1 cmdlcnkvaGVhcF9zdXJnZXJ5LmMgICAgICAgICAgICAgfCAgIDE2ICsKIGNvbnRyaWIvcGdf c3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbCAgICAgICB8ICAgNTMgKwogZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwgICA1NyArCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCAgICB8ICAgIDMgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2luZGV4ZWRfc3RhdHMuYyAgIHwgIDE4NiArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAgMSAr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgICA0 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICB8ICAg MTIgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwg ICAyOCArCiAuLi4vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0ICAgICAg fCAgMTM5ICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAg ICAgfCAgICAxICsKIC4uLi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjICAg ICAgICB8ICAxMjMgKysKIHNyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogLi4uL3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3Jl Y292ZXJ5LnBsICAgIHwgIDE0OSArKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X2luZGV4 ZWRfdXBkYXRlcy5vdXQgIHwgMTcwNiArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAxMiArCiBzcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3FsICB8IDExNTQgKysrKysrKysr KysKIDIyIGZpbGVzIGNoYW5nZWQsIDM3MzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRl eGVkX3N0YXRzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhl ZF9yZWNvdmVyeS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X2luZGV4ZWRfdXBkYXRlcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbAoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfc3VyZ2VyeS9NYWtlZmlsZSBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9NYWtl ZmlsZQppbmRleCBhNjY3NzZjNGM0MS4uZGE3NTJhODExNDcgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfc3VyZ2VyeS9NYWtlZmlsZQorKysgYi9jb250cmliL3BnX3N1cmdlcnkvTWFrZWZp bGUKQEAgLTEwLDYgKzEwLDcgQEAgREFUQSA9IHBnX3N1cmdlcnktLTEuMC5zcWwKIFBHRklM RURFU0MgPSAicGdfc3VyZ2VyeSAtIHBlcmZvcm0gc3VyZ2VyeSBvbiBhIGRhbWFnZWQgcmVs YXRpb24iCiAKIFJFR1JFU1MgPSBoZWFwX3N1cmdlcnkKK0VYVFJBX0lOU1RBTEwgPSBjb250 cmliL3BhZ2VpbnNwZWN0CiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25m aWcKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3RlZC9oZWFwX3N1cmdl cnkub3V0IGIvY29udHJpYi9wZ19zdXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQK aW5kZXggZGY3ZDEzYjA5MDguLjFhNWZlZjViMmJiIDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3N1cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5Lm91dAorKysgYi9jb250cmliL3BnX3N1 cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5Lm91dApAQCAtMTc1LDYgKzE3NSw4OSBAQCBE RVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KIHNl bGVjdCBoZWFwX2ZvcmNlX2ZyZWV6ZSgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSdd Ojp0aWRbXSk7CiBFUlJPUjogIGNhbm5vdCBvcGVyYXRlIG9uIHJlbGF0aW9uICJ2dyIKIERF VEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpZXdzLgorLS0g QSBIT1QvU0lVIGNoYWluIGNvbGxhcHNlIHR1cm5zIHRoZSBjaGFpbiByb290IGFuZCBlYWNo IGRlYWQgZW50cnktYmVhcmluZworLS0gbWVtYmVyIGludG8gYW4gTFBfUkVESVJFQ1QgdG8g dGhlIGxpdmUgdHVwbGUuICBwZ19zdXJnZXJ5IG9wZXJhdGVzIG9uIHJlYWwKKy0tIHR1cGxl cyBhbmQgbXVzdCBsZWF2ZSB0aGUgbGl2ZSByb3cgcmVhY2hhYmxlIGFmdGVyIHN1Y2ggYSBj b2xsYXBzZS4KK2NyZWF0ZSBleHRlbnNpb24gcGFnZWluc3BlY3Q7CitjcmVhdGUgdGFibGUg aHRvbWIgKGlkIGludCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRoIChmaWxsZmFj dG9yID0gNTApOworY3JlYXRlIGluZGV4IGh0b21iX2Egb24gaHRvbWIoYSk7CitpbnNlcnQg aW50byBodG9tYiB2YWx1ZXMgKDEsIDEwLCAyMCk7CistLSBUd28gSE9ULWluZGV4ZWQgdXBk YXRlcyBvbiBhbiBpbmRleGVkIGF0dHIsIHRoZW4gcHJ1bmU6IHRoZSBkZWFkIG1pZC1jaGFp bgorLS0gdmVyc2lvbnMgY29sbGFwc2UgdG8gTFBfUkVESVJFQ1RzIHRvIHRoZSBsaXZlIHR1 cGxlLiAgSU5ERVhfQ0xFQU5VUCBvZmYga2VlcHMKKy0tIHRoZSBzdGFsZSBidHJlZSBsZWF2 ZXMgKGFuZCBoZW5jZSB0aGUgcmVkaXJlY3RzKSBpbiBwbGFjZS4KK3VwZGF0ZSBodG9tYiBz ZXQgYSA9IDExIHdoZXJlIGlkID0gMTsKK3VwZGF0ZSBodG9tYiBzZXQgYSA9IDEyIHdoZXJl IGlkID0gMTsKK3ZhY3V1bSAoaW5kZXhfY2xlYW51cCBvZmYpIGh0b21iOworc2VsZWN0IG5f aG90X2luZGV4ZWQgPiAwIGFzIG1hZGVfaG90X2luZGV4ZWQKKyAgZnJvbSBwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cygnaHRvbWInKTsKKyBtYWRlX2hvdF9pbmRleGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSB0aGUgbGl2ZSByb3cgaXMgaW50 YWN0IGFuZCByZWFjaGFibGUgYWZ0ZXIgdGhlIGNvbGxhcHNlCitzZWxlY3QgaWQsIGEsIGIg ZnJvbSBodG9tYjsKKyBpZCB8IGEgIHwgYiAgCistLS0tKy0tLS0rLS0tLQorICAxIHwgMTIg fCAyMAorKDEgcm93KQorCitkcm9wIHRhYmxlIGh0b21iOworLS0gQSBjb2xsYXBzZSB0aGF0 IGtlZXBzIGEgKnN0dWIqIChhbiB4aWQtZnJlZSBmb3J3YXJkaW5nIExQX05PUk1BTCBpdGVt IHdpdGgKKy0tIG5hdHRzID09IDApLCBub3QganVzdCByZWRpcmVjdHM6IHVwZGF0ZSB0d28g ZGlmZmVyZW50IGluZGV4ZWQgY29sdW1ucyBzbyB0aGUKKy0tIGZpcnN0IGRlYWQgbWVtYmVy J3MgY2hhbmdlZC1hdHRyIGJpdG1hcCBpcyBub3Qgc3Vic3VtZWQgYnkgbGF0ZXIgaG9wcyBh bmQgaXMKKy0tIHByZXNlcnZlZCBhcyBhIHN0dWIuICBwZ19zdXJnZXJ5IG11c3Qgc2tpcCBz dWNoIGEgc3R1YiAtLSBmb3JjaW5nIGEKKy0tIGZyZWV6ZS9raWxsIHdvdWxkIG92ZXJ3cml0 ZSBpdHMgdF9jdGlkIGZvcndhcmQgbGluayBhbmQgY29ycnVwdCB0aGUgY2hhaW4uCitjcmVh dGUgdGFibGUgaHN0dWIgKGlkIGludCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRo IChmaWxsZmFjdG9yID0gNTApOworY3JlYXRlIGluZGV4IGhzdHViX2Egb24gaHN0dWIoYSk7 CitjcmVhdGUgaW5kZXggaHN0dWJfYiBvbiBoc3R1YihiKTsKK2luc2VydCBpbnRvIGhzdHVi IHZhbHVlcyAoMSwgMTAsIDEwMCk7Cit1cGRhdGUgaHN0dWIgc2V0IGEgPSAxMSB3aGVyZSBp ZCA9IDE7ICAgLS0gY2hhbmdlcyBhCit1cGRhdGUgaHN0dWIgc2V0IGEgPSAxMiB3aGVyZSBp ZCA9IDE7ICAgLS0gY2hhbmdlcyBhIGFnYWluIChzdXBlcnNlZGVzKQordXBkYXRlIGhzdHVi IHNldCBiID0gMTAxIHdoZXJlIGlkID0gMTsgIC0tIGNoYW5nZXMgYiAtPiBmaXJzdCBob3An cyB7YX0ga2VwdCBhcyBzdHViCit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBoc3R1YjsK Ky0tIExvY2F0ZSB0aGUgc3R1YjogYW4gTFBfTk9STUFMIGl0ZW0gY2FycnlpbmcgSEVBUF9J TkRFWEVEX1VQREFURUQgKDB4MDgwMCBpbgorLS0gdF9pbmZvbWFzazIpIHdpdGggemVybyBs aXZlIGF0dHJpYnV0ZXMgKHRfaW5mb21hc2syIG5hdHRzIGJpdHMgPT0gMCkuCitzZWxlY3Qg bHAgYXMgc3R1Yl9vZmYKKyAgZnJvbSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdo c3R1YicsIDApKQorICB3aGVyZSBscF9mbGFncyA9IDEgICAgICAgICAgICAgICAgICAgICAg IC0tIExQX05PUk1BTAorICAgIGFuZCAodF9pbmZvbWFzazIgJiAyMDQ4KSA8PiAwICAgICAg ICAgIC0tIEhFQVBfSU5ERVhFRF9VUERBVEVECisgICAgYW5kICh0X2luZm9tYXNrMiAmIDIw NDcpID0gMCAgICAgICAgICAgLS0gbmF0dHMgPT0gMCAoc3R1YiBzZW50aW5lbCkKKyAgXGdz ZXQKKy0tIEZvcmNlIGtpbGwvZnJlZXplIG9uIHRoZSBzdHViJ3MgdGlkOiBib3RoIG11c3Qg YmUgcmVmdXNlZCB3aXRoIGEgTk9USUNFLgorc2VsZWN0IGhlYXBfZm9yY2Vfa2lsbCgnaHN0 dWInOjpyZWdjbGFzcywgQVJSQVlbKCcoMCwnIHx8IDonc3R1Yl9vZmYnIHx8ICcpJyldOjp0 aWRbXSk7CitOT1RJQ0U6ICBza2lwcGluZyB0aWQgKDAsIDMpIGZvciByZWxhdGlvbiAiaHN0 dWIiIGJlY2F1c2UgaXQgaXMgYSBIT1QtaW5kZXhlZCBjb2xsYXBzZSBzdHViCisgaGVhcF9m b3JjZV9raWxsIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGhl YXBfZm9yY2VfZnJlZXplKCdoc3R1Yic6OnJlZ2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidz dHViX29mZicgfHwgJyknKV06OnRpZFtdKTsKK05PVElDRTogIHNraXBwaW5nIHRpZCAoMCwg MykgZm9yIHJlbGF0aW9uICJoc3R1YiIgYmVjYXVzZSBpdCBpcyBhIEhPVC1pbmRleGVkIGNv bGxhcHNlIHN0dWIKKyBoZWFwX2ZvcmNlX2ZyZWV6ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworLS0gVGhlIGNoYWluIGlzIHVudG91Y2hlZDogdGhlIGxpdmUgcm93 IGlzIHN0aWxsIHJlYWNoYWJsZSB0aHJvdWdoIGVhY2ggaW5kZXguCitzZXQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CitzZXQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitzZWxlY3QgaWQs IGEsIGIgZnJvbSBoc3R1YiB3aGVyZSBhID0gMTI7CisgaWQgfCBhICB8ICBiICAKKy0tLS0r LS0tLSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKworc2VsZWN0IGlkLCBhLCBi IGZyb20gaHN0dWIgd2hlcmUgYiA9IDEwMTsKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0t Ky0tLS0tCisgIDEgfCAxMiB8IDEwMQorKDEgcm93KQorCityZXNldCBlbmFibGVfYml0bWFw c2NhbjsKK3Jlc2V0IGVuYWJsZV9zZXFzY2FuOworZHJvcCB0YWJsZSBoc3R1YjsKK2Ryb3Ag ZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OwogLS0gY2xlYW51cC4KIGRyb3AgdmlldyB2dzsKIGRy b3AgZXh0ZW5zaW9uIHBnX3N1cmdlcnk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdl cnkvaGVhcF9zdXJnZXJ5LmMgYi9jb250cmliL3BnX3N1cmdlcnkvaGVhcF9zdXJnZXJ5LmMK aW5kZXggYjhjZTEwOTU3ODIuLjdmYzY1M2NjMzM0IDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3N1cmdlcnkvaGVhcF9zdXJnZXJ5LmMKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L2hlYXBf c3VyZ2VyeS5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAog I2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90 X2luZGV4ZWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0Lmgi CkBAIC0yMjYsNiArMjI3LDIxIEBAIGhlYXBfZm9yY2VfY29tbW9uKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBIZWFwVHVwbGVGb3JjZU9wdGlvbiBoZWFwX2ZvcmNlX29wdCkKIAkJCQkJ CQkJYmxrbm8sIG9mZm5vLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCQkJ CWNvbnRpbnVlOwogCQkJfQorCQkJZWxzZSBpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1Yigo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpKSkKKwkJCXsKKwkJ CQkvKgorCQkJCSAqIEEgSE9ULWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBh biB4aWQtZnJlZQorCQkJCSAqIGZvcndhcmRpbmcgbm9kZSwgbm90IGEgcmVhbCB0dXBsZTog aXRzIHRfY3RpZCBjYXJyaWVzIHRoZQorCQkJCSAqIGNoYWluIGZvcndhcmQgbGluayBhbmQg dGhlIHdyaXRlLXRpbWUgbmF0dHMsIGFuZCBpdCBoYXMgbm8KKwkJCQkgKiBhdHRyaWJ1dGUg ZGF0YS4gIEZvcmNpbmcgYSBraWxsIG9yIGZyZWV6ZSB3b3VsZCBvdmVyd3JpdGUKKwkJCQkg KiB0X2N0aWQgYW5kIGNsZWFyIGl0cyB4YWN0IGJpdHMsIGJyZWFraW5nIHRoZSBjaGFpbiB3 YWxrIGFuZAorCQkJCSAqIGNvcnJ1cHRpbmcgdGhlIGhlYXAuICBTa2lwIGl0LCBhcyB3ZSBk byBmb3IgcmVkaXJlY3RzLgorCQkJCSAqLworCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJ KGVycm1zZygic2tpcHBpbmcgdGlkICgldSwgJXUpIGZvciByZWxhdGlvbiBcIiVzXCIgYmVj YXVzZSBpdCBpcyBhIEhPVC1pbmRleGVkIGNvbGxhcHNlIHN0dWIiLAorCQkJCQkJCQlibGtu bywgb2Zmbm8sIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQkJY29udGlu dWU7CisJCQl9CiAKIAkJCS8qIE1hcmsgaXQgZm9yIHByb2Nlc3NpbmcuICovCiAJCQlBc3Nl cnQob2Zmbm8gPD0gTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ19zdXJnZXJ5L3NxbC9oZWFwX3N1cmdlcnkuc3FsIGIvY29udHJpYi9wZ19zdXJnZXJ5 L3NxbC9oZWFwX3N1cmdlcnkuc3FsCmluZGV4IDY1MjZiMjc1MzVkLi5iZTRmZWQyYWY2NSAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdXJnZXJ5L3NxbC9oZWFwX3N1cmdlcnkuc3FsCisr KyBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbApAQCAtODMsNiAr ODMsNTkgQEAgY3JlYXRlIHZpZXcgdncgYXMgc2VsZWN0IDE7CiBzZWxlY3QgaGVhcF9mb3Jj ZV9raWxsKCd2dyc6OnJlZ2NsYXNzLCBBUlJBWVsnKDAsIDEpJ106OnRpZFtdKTsKIHNlbGVj dCBoZWFwX2ZvcmNlX2ZyZWV6ZSgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSddOjp0 aWRbXSk7CiAKKy0tIEEgSE9UL1NJVSBjaGFpbiBjb2xsYXBzZSB0dXJucyB0aGUgY2hhaW4g cm9vdCBhbmQgZWFjaCBkZWFkIGVudHJ5LWJlYXJpbmcKKy0tIG1lbWJlciBpbnRvIGFuIExQ X1JFRElSRUNUIHRvIHRoZSBsaXZlIHR1cGxlLiAgcGdfc3VyZ2VyeSBvcGVyYXRlcyBvbiBy ZWFsCistLSB0dXBsZXMgYW5kIG11c3QgbGVhdmUgdGhlIGxpdmUgcm93IHJlYWNoYWJsZSBh ZnRlciBzdWNoIGEgY29sbGFwc2UuCitjcmVhdGUgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0Owor Y3JlYXRlIHRhYmxlIGh0b21iIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkg d2l0aCAoZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBodG9tYl9hIG9uIGh0b21i KGEpOworaW5zZXJ0IGludG8gaHRvbWIgdmFsdWVzICgxLCAxMCwgMjApOworLS0gVHdvIEhP VC1pbmRleGVkIHVwZGF0ZXMgb24gYW4gaW5kZXhlZCBhdHRyLCB0aGVuIHBydW5lOiB0aGUg ZGVhZCBtaWQtY2hhaW4KKy0tIHZlcnNpb25zIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUcyB0 byB0aGUgbGl2ZSB0dXBsZS4gIElOREVYX0NMRUFOVVAgb2ZmIGtlZXBzCistLSB0aGUgc3Rh bGUgYnRyZWUgbGVhdmVzIChhbmQgaGVuY2UgdGhlIHJlZGlyZWN0cykgaW4gcGxhY2UuCit1 cGRhdGUgaHRvbWIgc2V0IGEgPSAxMSB3aGVyZSBpZCA9IDE7Cit1cGRhdGUgaHRvbWIgc2V0 IGEgPSAxMiB3aGVyZSBpZCA9IDE7Cit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBodG9t YjsKK3NlbGVjdCBuX2hvdF9pbmRleGVkID4gMCBhcyBtYWRlX2hvdF9pbmRleGVkCisgIGZy b20gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2h0b21iJyk7CistLSB0aGUgbGl2 ZSByb3cgaXMgaW50YWN0IGFuZCByZWFjaGFibGUgYWZ0ZXIgdGhlIGNvbGxhcHNlCitzZWxl Y3QgaWQsIGEsIGIgZnJvbSBodG9tYjsKK2Ryb3AgdGFibGUgaHRvbWI7CisKKy0tIEEgY29s bGFwc2UgdGhhdCBrZWVwcyBhICpzdHViKiAoYW4geGlkLWZyZWUgZm9yd2FyZGluZyBMUF9O T1JNQUwgaXRlbSB3aXRoCistLSBuYXR0cyA9PSAwKSwgbm90IGp1c3QgcmVkaXJlY3RzOiB1 cGRhdGUgdHdvIGRpZmZlcmVudCBpbmRleGVkIGNvbHVtbnMgc28gdGhlCistLSBmaXJzdCBk ZWFkIG1lbWJlcidzIGNoYW5nZWQtYXR0ciBiaXRtYXAgaXMgbm90IHN1YnN1bWVkIGJ5IGxh dGVyIGhvcHMgYW5kIGlzCistLSBwcmVzZXJ2ZWQgYXMgYSBzdHViLiAgcGdfc3VyZ2VyeSBt dXN0IHNraXAgc3VjaCBhIHN0dWIgLS0gZm9yY2luZyBhCistLSBmcmVlemUva2lsbCB3b3Vs ZCBvdmVyd3JpdGUgaXRzIHRfY3RpZCBmb3J3YXJkIGxpbmsgYW5kIGNvcnJ1cHQgdGhlIGNo YWluLgorY3JlYXRlIHRhYmxlIGhzdHViIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBi IGludCkgd2l0aCAoZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBoc3R1Yl9hIG9u IGhzdHViKGEpOworY3JlYXRlIGluZGV4IGhzdHViX2Igb24gaHN0dWIoYik7CitpbnNlcnQg aW50byBoc3R1YiB2YWx1ZXMgKDEsIDEwLCAxMDApOwordXBkYXRlIGhzdHViIHNldCBhID0g MTEgd2hlcmUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYQordXBkYXRlIGhzdHViIHNldCBhID0g MTIgd2hlcmUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK3Vw ZGF0ZSBoc3R1YiBzZXQgYiA9IDEwMSB3aGVyZSBpZCA9IDE7ICAtLSBjaGFuZ2VzIGIgLT4g Zmlyc3QgaG9wJ3Mge2F9IGtlcHQgYXMgc3R1YgordmFjdXVtIChpbmRleF9jbGVhbnVwIG9m ZikgaHN0dWI7CistLSBMb2NhdGUgdGhlIHN0dWI6IGFuIExQX05PUk1BTCBpdGVtIGNhcnJ5 aW5nIEhFQVBfSU5ERVhFRF9VUERBVEVEICgweDA4MDAgaW4KKy0tIHRfaW5mb21hc2syKSB3 aXRoIHplcm8gbGl2ZSBhdHRyaWJ1dGVzICh0X2luZm9tYXNrMiBuYXR0cyBiaXRzID09IDAp Lgorc2VsZWN0IGxwIGFzIHN0dWJfb2ZmCisgIGZyb20gaGVhcF9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgnaHN0dWInLCAwKSkKKyAgd2hlcmUgbHBfZmxhZ3MgPSAxICAgICAgICAgICAg ICAgICAgICAgICAtLSBMUF9OT1JNQUwKKyAgICBhbmQgKHRfaW5mb21hc2syICYgMjA0OCkg PD4gMCAgICAgICAgICAtLSBIRUFQX0lOREVYRURfVVBEQVRFRAorICAgIGFuZCAodF9pbmZv bWFzazIgJiAyMDQ3KSA9IDAgICAgICAgICAgIC0tIG5hdHRzID09IDAgKHN0dWIgc2VudGlu ZWwpCisgIFxnc2V0CistLSBGb3JjZSBraWxsL2ZyZWV6ZSBvbiB0aGUgc3R1YidzIHRpZDog Ym90aCBtdXN0IGJlIHJlZnVzZWQgd2l0aCBhIE5PVElDRS4KK3NlbGVjdCBoZWFwX2ZvcmNl X2tpbGwoJ2hzdHViJzo6cmVnY2xhc3MsIEFSUkFZWygnKDAsJyB8fCA6J3N0dWJfb2ZmJyB8 fCAnKScpXTo6dGlkW10pOworc2VsZWN0IGhlYXBfZm9yY2VfZnJlZXplKCdoc3R1Yic6OnJl Z2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidzdHViX29mZicgfHwgJyknKV06OnRpZFtdKTsK Ky0tIFRoZSBjaGFpbiBpcyB1bnRvdWNoZWQ6IHRoZSBsaXZlIHJvdyBpcyBzdGlsbCByZWFj aGFibGUgdGhyb3VnaCBlYWNoIGluZGV4Lgorc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor c2V0IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworc2VsZWN0IGlkLCBhLCBiIGZyb20gaHN0 dWIgd2hlcmUgYSA9IDEyOworc2VsZWN0IGlkLCBhLCBiIGZyb20gaHN0dWIgd2hlcmUgYiA9 IDEwMTsKK3Jlc2V0IGVuYWJsZV9iaXRtYXBzY2FuOworcmVzZXQgZW5hYmxlX3NlcXNjYW47 Citkcm9wIHRhYmxlIGhzdHViOworZHJvcCBleHRlbnNpb24gcGFnZWluc3BlY3Q7CisKIC0t IGNsZWFudXAuCiBkcm9wIHZpZXcgdnc7CiBkcm9wIGV4dGVuc2lvbiBwZ19zdXJnZXJ5Owpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMTJiOWVlMjBkNGEuLmYzNGFhNjQ4YjU5IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKQEAgLTQ0NTcsNiArNDQ1NywxOSBAQCBkZXNjcmlwdGlvbiB8 IFdhaXRpbmcgZm9yIGEgbmV3bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVy YWJsZSBzdG9yYWdlCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm5fdHVw X2hvdF9pbmRleGVkX3VwZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiByb3dzIHVwZGF0 ZWQgdXNpbmcgdGhlIEhPVC1pbmRleGVkIHBhdGg6IHRoZSBzdWNjZXNzb3IKKyAgICAgICB2 ZXJzaW9uIHN0YXlzIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBoZWFwLW9ubHkgdHVwbGUgZXZl biB0aG91Z2ggaXQKKyAgICAgICBjaGFuZ2VkIG9uZSBvciBtb3JlIGluZGV4ZWQgY29sdW1u cywgYW5kIG9ubHkgdGhlIGFmZmVjdGVkIGluZGV4ZXMKKyAgICAgICByZWNlaXZlIGEgbmV3 IGVudHJ5LiAgRXZlcnkgc3VjaCB1cGRhdGUgaXMgYWxzbyBjb3VudGVkIGluCisgICAgICAg PHN0cnVjdGZpZWxkPm5fdHVwX2hvdF91cGQ8L3N0cnVjdGZpZWxkPi4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+bl90dXBfbmV3cGFnZV91cGQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5iaWdpbnQ8L3R5cGU+CkBAIC00OTI3LDYgKzQ5NDAsMjcgQEAgZGVzY3JpcHRp b24gfCBXYWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNo IGR1cmFibGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5u X3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2lu dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBv ZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgaW5zZXJ0ZWQgYSBuZXcgZW50cnkgaW50byB0 aGlzCisgICAgICAgaW5kZXggKHRoZSB1cGRhdGUgY2hhbmdlZCBvbmUgb2YgdGhpcyBpbmRl eCdzIGF0dHJpYnV0ZXMpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm5f dHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9m IEhPVC1pbmRleGVkIHVwZGF0ZXMgdGhhdCBza2lwcGVkIHRoaXMgaW5kZXggKHRoZSB1cGRh dGUKKyAgICAgICBjaGFuZ2VkIG5vIGF0dHJpYnV0ZSBvZiB0aGlzIGluZGV4LCBzbyBpdHMg ZXhpc3RpbmcgZW50cnkgY29udGludWVzCisgICAgICAgdG8gcmVzb2x2ZSB0aGUgSE9UIGNo YWluKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgICA8c3RydWN0ZmllbGQ+c3RhdHNfcmVzZXQ8 L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CkBA IC01NjA4LDYgKzU2NDIsMjkgQEAgZGVzY3JpcHRpb24gfCBXYWl0aW5nIGZvciBhIG5ld2x5 IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFibGUgc3RvcmFnZQogICAgICA8 L3RoZWFkPgogCiAgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IGlk PSJwZy1yZWxhdGlvbi1ob3QtaW5kZXhlZC1zdGF0cyIgcm9sZT0iZnVuY190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgICAgPHByaW1hcnk+cGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHM8L3ByaW1h cnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHM8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cmVsYXRpb248 L3BhcmFtZXRlcj4gPHR5cGU+cmVnY2xhc3M8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZh bHVlPnJlY29yZDwvcmV0dXJudmFsdWU+CisgICAgICAgICggPHBhcmFtZXRlcj5uX2hvdF9p bmRleGVkPC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAgICAgIDxwYXJh bWV0ZXI+bl9jaGFpbnM8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiwKKyAgICAg ICAgPHBhcmFtZXRlcj5hdmdfY2hhaW5fbGVuPC9wYXJhbWV0ZXI+IDx0eXBlPmRvdWJsZSBw cmVjaXNpb248L3R5cGU+LAorICAgICAgICA8cGFyYW1ldGVyPm1heF9jaGFpbl9sZW48L3Bh cmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiApCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBSZXBvcnRzIEhPVC1pbmRleGVkIHN0cnVjdHVyYWwgc3RhdGlz dGljcyBmb3IgYSB0YWJsZSBieSBzY2FubmluZworICAgICAgICBldmVyeSBwYWdlIHVuZGVy IDxsaXRlcmFsPkFjY2Vzc1NoYXJlTG9jazwvbGl0ZXJhbD46CisgICAgICAgIDxwYXJhbWV0 ZXI+bl9ob3RfaW5kZXhlZDwvcGFyYW1ldGVyPiBpcyB0aGUgbnVtYmVyIG9mIGxpdmUKKyAg ICAgICAgSE9ULWluZGV4ZWQgdHVwbGUgdmVyc2lvbnMgcHJlc2VudCwgYW5kCisgICAgICAg IDxwYXJhbWV0ZXI+bl9jaGFpbnM8L3BhcmFtZXRlcj4sIDxwYXJhbWV0ZXI+YXZnX2NoYWlu X2xlbjwvcGFyYW1ldGVyPgorICAgICAgICBhbmQgPHBhcmFtZXRlcj5tYXhfY2hhaW5fbGVu PC9wYXJhbWV0ZXI+IGRlc2NyaWJlIHRoZSBIT1QtaW5kZXhlZAorICAgICAgICBjaGFpbnMu ICBJbnRlbmRlZCBmb3IgZGlhZ25vc3RpY3MuCisgICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgICA8L3Jvdz4KKwogICAgICAgPHJvdz4KICAgICAgICA8IS0tIFNlZSBhbHNvIHRoZSBl bnRyeSBmb3IgdGhpcyBpbiBmdW5jLnNnbWwgLS0+CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1 bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvTWFrZWZpbGUKaW5kZXggMWQyN2NjYjkxNmUuLmRmYWYzMzUwNzM2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZQpAQCAtMjAsNiArMjAsNyBAQCBPQkpTID0gXAog CWhlYXBhbV94bG9nLm8gXAogCWhlYXB0b2FzdC5vIFwKIAloaW8ubyBcCisJaG90X2luZGV4 ZWRfc3RhdHMubyBcCiAJcHJ1bmVoZWFwLm8gXAogCXJld3JpdGVoZWFwLm8gXAogCXZhY3V1 bWxhenkubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUu SE9ULUlOREVYRUQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVY RUQKaW5kZXggMWY0MWIwZmZmZTguLjJlNWU1ZjRhMDgxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECkBAIC0yNTIsNiArMjUyLDkgQEAgSEVB UF9JTkRFWEVEX1VQREFURUQgaGVhcC1vbmx5IHR1cGxlIHdob3NlIGxpbmUgcG9pbnRlciBp cyBwcmVzZXJ2ZWQsIGFuZAogbXVsdGlwbGUgTFBfUkVESVJFQ1RzIGZvcndhcmRpbmcgdG8g b25lIGxpdmUgdHVwbGUuCiAKIFN0YXRpc3RpY3M6IHBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1 cF9ob3RfaW5kZXhlZF91cGQgY291bnRzIEhPVC1pbmRleGVkCit1cGRhdGVzOyBwZ19zdGF0 X2FsbF9pbmRleGVzLm5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkIC8gX3NraXBwZWQg Y291bnQKK3Blci1pbmRleCByZWNoZWNrIG91dGNvbWVzOyBhbmQgcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoKSByZXBvcnRzCitwZXItcmVsYXRpb24gSE9ULWluZGV4ZWQgY2hh aW4gY291bnRzLgogCiAKIEFwcGVuZGljZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9ob3RfaW5kZXhlZF9zdGF0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi41N2VmOTQ2MTU2MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMKQEAgLTAsMCArMSwxODYgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkX3N0YXRzLmMKKyAqCSAgU1FM LWNhbGxhYmxlIGRpYWdub3N0aWMgdGhhdCB3YWxrcyBldmVyeSBwYWdlIG9mIGEgaGVhcCBy ZWxhdGlvbiBhbmQKKyAqCSAgcmVwb3J0cyBob3QtaW5kZXhlZC1yZWxhdGVkIHN0cnVjdHVy YWwgc3RhdGlzdGljcy4KKyAqCisgKiBUaGVzZSBudW1iZXJzIGNvbXBsZW1lbnQgdGhlIHJ1 bm5pbmcgcGdzdGF0IGNvdW50ZXJzCisgKiAobl90dXBfaG90X2luZGV4ZWRfdXBkIGluIHBn X3N0YXRfYWxsX3RhYmxlcyk6IHRoZXkgYW5zd2VyICJ3aGF0IGlzIG9uIGRpc2sKKyAqIHJp Z2h0IG5vdz8iIHJhdGhlciB0aGFuICJob3cgb2Z0ZW4gZGlkIGhvdC1pbmRleGVkIGZpcmUg ZHVyaW5nIHRoZSBzdGF0cworICogd2luZG93PyIuCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aG90X2luZGV4ZWRfc3RhdHMuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmpl Y3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAi Zm1nci5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFn ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXRlbXB0ci5oIgorI2luY2x1ZGUgInV0aWxzL2Fj bC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvcmVs LmgiCisKKy8qCisgKiBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyhyZWdjbGFzcykg LT4gcmVjb3JkCisgKgorICogV2Fsa3MgZXZlcnkgYmxvY2sgb2YgdGhlIHJlbGF0aW9uJ3Mg bWFpbiBmb3JrIGFuZCBjb3VudHM6CisgKiAgIG5faG90X2luZGV4ZWQgICAtLSBsaXZlIEhP VC1pbmRleGVkIHZlcnNpb25zIChIRUFQX0lOREVYRURfVVBEQVRFRCwgbmF0dHM+MCwKKyAq ICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5aW5nIGFuIGlubGluZS10cmFpbGluZyBtb2Rp ZmllZC1hdHRycyBiaXRtYXApCisgKiAgIG5fY2hhaW5zICAgICAgICAtLSBMUF9SRURJUkVD VCBpdGVtcywgaS5lLiBIT1QgY2hhaW4gcm9vdHMuICBNYXRjaGVzCisgKiAgICAgICAgICAg ICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IEhPVCBjaGFpbnMgdGhhdCBoYXZl IHN1cnZpdmVkCisgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgbW9zdCByZWNlbnQgcHJ1 bmUuICBSb290LW5vdC1yZWRpcmVjdCBjaGFpbnMKKyAqICAgICAgICAgICAgICAgICAgICAg IChsZW5ndGggMSkgYXJlIG5vdCBjb3VudGVkIGhlcmUgYmVjYXVzZSB0aGV5IGFyZQorICog ICAgICAgICAgICAgICAgICAgICAgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIG5vbi1jaGFp biB0dXBsZS4KKyAqICAgYXZnX2NoYWluX2xlbiAgIC0tIG1lYW4gbGVuZ3RoIGFjcm9zcyBj aGFpbnMgcm9vdGVkIGF0IGFuIExQX1JFRElSRUNULAorICogICAgICAgICAgICAgICAgICAg ICAgZGVyaXZlZCBieSB3YWxraW5nIGVhY2ggcmVkaXJlY3QgdGFyZ2V0IHRvIHRoZSBlbmQK KyAqICAgICAgICAgICAgICAgICAgICAgIG9mIGl0cyBIRUFQX0hPVF9VUERBVEVEIGNoYWlu LgorICogICBtYXhfY2hhaW5fbGVuICAgLS0gbG9uZ2VzdCBjaGFpbiBvYnNlcnZlZC4KKyAq CisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCBTRUxFQ1QgcHJpdmlsZWdlIG9uIHRoZSByZWxh dGlvbiwgbGlrZSBvdGhlcgorICogcmVsYXRpb24taW5zcGVjdGlvbiBmdW5jdGlvbnM7IGl0 IHRha2VzIG9ubHkgQWNjZXNzU2hhcmVMb2NrIGFuZCBzaG9ydC10ZXJtCisgKiBidWZmZXIg c2hhcmUgbG9ja3Mgd2hpbGUgc2Nhbm5pbmcuCisgKi8KK0RhdHVtCitwZ19yZWxhdGlvbl9o b3RfaW5kZXhlZF9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXJlbGlkID0g UEdfR0VUQVJHX09JRCgwKTsKKwlSZWxhdGlvbglyZWw7CisJQWNsUmVzdWx0CWFjbHJlc3Vs dDsKKwlCbG9ja051bWJlciBuYmxvY2tzOworCUJsb2NrTnVtYmVyIGJsazsKKwlpbnQ2NAkJ bl9ob3RfaW5kZXhlZCA9IDA7CisJaW50NjQJCW5fY2hhaW5zID0gMDsKKwlpbnQ2NAkJc3Vt X2NoYWluX2xlbiA9IDA7CisJaW50NjQJCW1heF9jaGFpbl9sZW4gPSAwOworCVR1cGxlRGVz Ywl0dXBkZXNjOworCURhdHVtCQl2YWx1ZXNbNF07CisJYm9vbAkJbnVsbHNbNF0gPSB7MH07 CisJSGVhcFR1cGxlCXJlc3VsdHR1cDsKKworCXJlbCA9IHJlbGF0aW9uX29wZW4ocmVsaWQs IEFjY2Vzc1NoYXJlTG9jayk7CisJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJ TkRfUkVMQVRJT04gJiYKKwkJcmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRW SUVXICYmCisJCXJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfVE9BU1RWQUxVRSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIG1hdGVyaWFsaXpl ZCB2aWV3LCBvciBUT0FTVCB0YWJsZSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKSkpOworCisJLyogQ2FsbGVyIG11c3QgYmUgYWJsZSB0byByZWFkIHRoZSByZWxh dGlvbi4gKi8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayhyZWxpZCwgR2V0VXNl cklkKCksIEFDTF9TRUxFQ1QpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJ CWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwKKwkJCQkJICAgZ2V0X3JlbGtpbmRfb2JqdHlw ZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCkpOworCisJbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVs KTsKKworCWZvciAoYmxrID0gMDsgYmxrIDwgbmJsb2NrczsgYmxrKyspCisJeworCQlCdWZm ZXIJCWJ1ZjsKKwkJUGFnZQkJcGFnZTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJT2Zmc2V0 TnVtYmVyIG1heG9mZjsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWJ1ZiA9 IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgYmxrLCBSQk1fTk9STUFM LCBOVUxMKTsKKwkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpIHx8IFBh Z2VJc0VtcHR5KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisJ CQljb250aW51ZTsKKwkJfQorCisJCW1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIo cGFnZSk7CisJCWZvciAob2ZmID0gRmlyc3RPZmZzZXROdW1iZXI7IG9mZiA8PSBtYXhvZmY7 IG9mZiA9IE9mZnNldE51bWJlck5leHQob2ZmKSkKKwkJeworCQkJSXRlbUlkCQlscCA9IFBh Z2VHZXRJdGVtSWQocGFnZSwgb2ZmKTsKKworCQkJaWYgKCFJdGVtSWRJc1VzZWQobHApKQor CQkJCWNvbnRpbnVlOworCisJCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKGxwKSkKKwkJCXsK KwkJCQkvKiBXYWxrIHRoZSBjaGFpbiBzdGFydGluZyBhdCB0aGUgcmVkaXJlY3QgdGFyZ2V0 LiAqLworCQkJCU9mZnNldE51bWJlciBjdXIgPSBJdGVtSWRHZXRSZWRpcmVjdChscCk7CisJ CQkJaW50NjQJCWxlbiA9IDA7CisKKwkJCQkvKgorCQkJCSAqIFdhbGsgdGhlIHNhbWUtcGFn ZSBIT1QgY2hhaW4uICBCb3VuZCB0aGUgbG9vcCBieSB0aGUgcGFnZSdzCisJCQkJICogaXRl bSBjb3VudCBzbyBhIGNvcnJ1cHQgY3ljbGljIHRfY3RpZCBjYW5ub3Qgc3BpbiBmb3JldmVy CisJCQkJICogdW5kZXIgdGhlIGJ1ZmZlciBsb2NrLCBhbmQgY2hlY2sgZm9yIGludGVycnVw dHMgZWFjaCBzdGVwLgorCQkJCSAqLworCQkJCXdoaWxlIChjdXIgPj0gRmlyc3RPZmZzZXRO dW1iZXIgJiYgY3VyIDw9IG1heG9mZiAmJiBsZW4gPCBtYXhvZmYpCisJCQkJeworCQkJCQlJ dGVtSWQJCWNoYWluX2xwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBjdXIpOworCQkJCQlIZWFw VHVwbGVIZWFkZXIgdGhkcjsKKworCQkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJ CQkJCWlmICghSXRlbUlkSXNOb3JtYWwoY2hhaW5fbHApKQorCQkJCQkJYnJlYWs7CisJCQkJ CXRoZHIgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBjaGFpbl9scCk7 CisJCQkJCWxlbisrOworCQkJCQlpZiAoISh0aGRyLT50X2luZm9tYXNrMiAmIEhFQVBfSE9U X1VQREFURUQpKQorCQkJCQkJYnJlYWs7CisJCQkJCS8qIEhPVCBjaGFpbnMgc3RheSBvbiBv bmUgcGFnZTsgc3RvcCBpZiB0aGUgbGluayBsZWF2ZXMgaXQuICovCisJCQkJCWlmIChJdGVt UG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0aGRyLT50X2N0aWQpICE9IGJsaykKKwkJCQkJCWJy ZWFrOworCQkJCQljdXIgPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdGhkci0+dF9j dGlkKTsKKwkJCQl9CisJCQkJaWYgKGxlbiA+IDApCisJCQkJeworCQkJCQluX2NoYWlucysr OworCQkJCQlzdW1fY2hhaW5fbGVuICs9IGxlbjsKKwkJCQkJaWYgKGxlbiA+IG1heF9jaGFp bl9sZW4pCisJCQkJCQltYXhfY2hhaW5fbGVuID0gbGVuOworCQkJCX0KKwkJCX0KKwkJCWVs c2UgaWYgKEl0ZW1JZElzTm9ybWFsKGxwKSkKKwkJCXsKKwkJCQlIZWFwVHVwbGVIZWFkZXIg dGhkciA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKKworCQkJ CWlmICgodGhkci0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkK KwkJCQkJbl9ob3RfaW5kZXhlZCsrOworCQkJfQorCQl9CisKKwkJVW5sb2NrUmVsZWFzZUJ1 ZmZlcihidWYpOworCX0KKworCXJlbGF0aW9uX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2Nr KTsKKworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyg0KTsKKwlUdXBsZURl c2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJuX2hvdF9pbmRleGVkIiwg SU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51 bWJlcikgMiwgIm5fY2hhaW5zIiwgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRF bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMywgImF2Z19jaGFpbl9sZW4iLCBGTE9BVDhP SUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIp IDQsICJtYXhfY2hhaW5fbGVuIiwgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0ZpbmFs aXplKHR1cGRlc2MpOworCXR1cGRlc2MgPSBCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsKKwor CXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0obl9ob3RfaW5kZXhlZCk7CisJdmFsdWVzWzFd ID0gSW50NjRHZXREYXR1bShuX2NoYWlucyk7CisJaWYgKG5fY2hhaW5zID4gMCkKKwkJdmFs dWVzWzJdID0gRmxvYXQ4R2V0RGF0dW0oKChkb3VibGUpIHN1bV9jaGFpbl9sZW4pIC8gKGRv dWJsZSkgbl9jaGFpbnMpOworCWVsc2UKKwkJdmFsdWVzWzJdID0gRmxvYXQ4R2V0RGF0dW0o MC4wKTsKKwl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVtKG1heF9jaGFpbl9sZW4pOworCisJ cmVzdWx0dHVwID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOwor CVBHX1JFVFVSTl9EQVRVTShIZWFwVHVwbGVHZXREYXR1bShyZXN1bHR0dXApKTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxkIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQKaW5kZXggMDBlYzA3ZDdmMzAuLmI1YzJh OGQ1Y2I2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9tZXNvbi5idWlsZApAQCAtOCw2ICs4 LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnaGVhcGFtX3hsb2cuYycsCiAg ICdoZWFwdG9hc3QuYycsCiAgICdoaW8uYycsCisgICdob3RfaW5kZXhlZF9zdGF0cy5jJywK ICAgJ3BydW5laGVhcC5jJywKICAgJ3Jld3JpdGVoZWFwLmMnLAogICAndmFjdXVtbGF6eS5j JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA2YzFjNTU0NWNi NS4uMDJjOGEwNDlhMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwK QEAgLTczMCw2ICs3MzAsNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2FsbF90YWJsZXMgQVMK ICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKEMub2lkKSBBUyBuX3R1 cF91cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfZGVsZXRlZChDLm9pZCkg QVMgbl90dXBfZGVsLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRh dGVkKEMub2lkKSBBUyBuX3R1cF9ob3RfdXBkLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRf dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVk X3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQo Qy5vaWQpIEFTIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRf bGl2ZV90dXBsZXMoQy5vaWQpIEFTIG5fbGl2ZV90dXAsCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF9kZWFkX3R1cGxlcyhDLm9pZCkgQVMgbl9kZWFkX3R1cCwKQEAgLTc2OCw2ICs3Njks NyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3hhY3RfYWxsX3RhYmxlcyBBUwogICAgICAgICAg ICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfdXBk LAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfZGVsZXRlZChDLm9pZCkg QVMgbl90dXBfZGVsLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX2hvdF91cGQsCisgICAgICAgICAgICBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9o b3RfaW5kZXhlZF91cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19u ZXdwYWdlX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX25ld3BhZ2VfdXBkCiAgICAgRlJPTSBw Z19jbGFzcyBDIExFRlQgSk9JTgogICAgICAgICAgcGdfaW5kZXggSSBPTiBDLm9pZCA9IEku aW5kcmVsaWQKQEAgLTg2OSw2ICs4NzEsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2FsbF9p bmRleGVzIEFTCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9sYXN0c2NhbihJLm9pZCkgQVMg bGFzdF9pZHhfc2NhbiwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19yZXR1cm5l ZChJLm9pZCkgQVMgaWR4X3R1cF9yZWFkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVw bGVzX2ZldGNoZWQoSS5vaWQpIEFTIGlkeF90dXBfZmV0Y2gsCisgICAgICAgICAgICBwZ19z dGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9za2lwcGVkKEkub2lkKSBBUyBu X3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0 X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQoSS5vaWQpIEFTIG5fdHVwX2hv dF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfc3RhdF9y ZXNldF90aW1lKEkub2lkKSBBUyBzdGF0c19yZXNldAogICAgIEZST00gcGdfY2xhc3MgQyBK T0lOCiAgICAgICAgICAgICBwZ19pbmRleCBYIE9OIEMub2lkID0gWC5pbmRyZWxpZCBKT0lO CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IGI1ZjI3YjA0NjNjLi42 MjllMGY1MmRiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTkz LDYgKzkzLDE1IEBAIFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19mZXRjaGVk KQogLyogcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkICovCiBQR19TVEFUX0dFVF9S RUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X3VwZGF0ZWQpCiAKKy8qIHBnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkICovCitQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2 NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCkKKworLyogcGdfc3RhdF9nZXRfdHVwbGVz X2hvdF9pbmRleGVkX3VwZGF0ZWRfc2tpcHBlZCAqLworUEdfU1RBVF9HRVRfUkVMRU5UUllf SU5UNjQodHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkKQorCisvKiBwZ19zdGF0X2dl dF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVkICovCitQR19TVEFUX0dFVF9S RUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQpCisKIC8qIHBn X3N0YXRfZ2V0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQgKi8KIFBHX1NUQVRfR0VUX1JFTEVO VFJZX0lOVDY0KHR1cGxlc19uZXdwYWdlX3VwZGF0ZWQpCiAKQEAgLTE4ODgsNiArMTg5Nyw5 IEBAIFBHX1NUQVRfR0VUX1hBQ1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX2ZldGNoZWQpCiAv KiBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAqLwogUEdfU1RBVF9HRVRf WEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X3VwZGF0ZWQpCiAKKy8qIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQgKi8KK1BHX1NUQVRfR0VUX1hB Q1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQpCisKIC8qIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCAqLwogUEdfU1RBVF9HRVRf WEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfbmV3cGFnZV91cGRhdGVkKQogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzY2I4NDM1OWFkZi4uMTc1ZmE4OGViNTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTU5NCw2ICs1NTk0LDI5IEBACiAgIHByb25h bWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJv YXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hv dF91cGRhdGVkJyB9LAoreyBvaWQgPT4gJzk5NTMnLAorICBkZXNjciA9PiAnc3RhdGlzdGlj czogbnVtYmVyIG9mIHR1cGxlcyB1cGRhdGVkIHZpYSBIT1QtaW5kZXhlZCAoU2VsZWN0aXZl IEluZGV4IFVwZGF0ZSknLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90 X2luZGV4ZWRfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwg PT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisg IHByb3NyYyA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQnIH0s Cit7IG9pZCA9PiAnOTk1NicsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2Yg SE9ULWluZGV4ZWQgdXBkYXRlcyB0aGF0IHNraXBwZWQgdGhpcyBpbmRleCcsCisgIHByb25h bWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX3NraXBwZWQn LCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlw ZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0 YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCcgfSwKK3sgb2lkID0+ICc5 OTU3JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiBIT1QtaW5kZXhlZCB1 cGRhdGVzIHRoYXQgaW5zZXJ0ZWQgaW50byB0aGlzIGluZGV4JywKKyAgcHJvbmFtZSA9PiAn cGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfbWF0Y2hlZCcsIHByb3Zv bGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRf dHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkJyB9LAoreyBvaWQgPT4gJzk5NTUnLAor ICBkZXNjciA9PiAnSE9ULWluZGV4ZWQgc3RydWN0dXJhbCBzdGF0czogSE9ULWluZGV4ZWQg dmVyc2lvbnMgYW5kIGNoYWluIGxlbmd0aHMnLAorICBwcm9uYW1lID0+ICdwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cycsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcGFyYWxs ZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAncmVn Y2xhc3MnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3JlZ2NsYXNzLGludDgsaW50OCxmbG9h dDgsaW50OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sb30nLAorICBwcm9hcmdu YW1lcyA9PiAne3JlbGF0aW9uLG5faG90X2luZGV4ZWQsbl9jaGFpbnMsYXZnX2NoYWluX2xl bixtYXhfY2hhaW5fbGVufScsCisgIHByb3NyYyA9PiAncGdfcmVsYXRpb25faG90X2luZGV4 ZWRfc3RhdHMnIH0sCiB7IG9pZCA9PiAnNjIxNycsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNz OiBudW1iZXIgb2YgdHVwbGVzIHVwZGF0ZWQgb250byBhIG5ldyBwYWdlJywKICAgcHJvbmFt ZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCcsIHByb3ZvbGF0aWxl ID0+ICdzJywKQEAgLTYxNzksNiArNjIwMiwxMSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAg cHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMg PT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQnIH0sCit7IG9pZCA9PiAnOTk1NCcsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBu dW1iZXIgb2YgSE9ULWluZGV4ZWQgdHVwbGUgdXBkYXRlcyBpbiBjdXJyZW50IHRyYW5zYWN0 aW9uJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4 ZWRfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcGFyYWxsZWwgPT4gJ3In LCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3Ny YyA9PiAncGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCcgfSwK IHsgb2lkID0+ICc2MjE4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiB0 dXBsZXMgdXBkYXRlZCBvbnRvIGEgbmV3IHBhZ2UgaW4gY3VycmVudCB0cmFuc2FjdGlvbics CiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRl ZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5vdXQgYi9zcmMvdGVzdC9pc29s YXRpb24vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMmY2MjgwMTUxMwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfaW5kZXhlZF9hZHZlcnNh cmlhbC5vdXQKQEAgLTAsMCArMSwxMzkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCA2IHNl c3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9ub3NlcSBzMV9jeWNsZSBzMl9l cTEwIHMyX2VxMjAKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K3N0ZXAgczFfY3ljbGU6IFVQREFURSBoaWEgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7IFVQ REFURSBoaWEgU0VUIGsgPSAxMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMyX2VxMTA6IFNFTEVD VCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMTA7CitpZHwgaworLS0rLS0KKyAxfDEwCiso MSByb3cpCisKK3N0ZXAgczJfZXEyMDogU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsg PSAyMDsKK2lkfGsKKy0tKy0KKygwIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMyX25vc2VxIHMxX2N5Y2xlIHMyX3JhbmdlCitzdGVwIHMyX25vc2VxOiBTRVQgZW5hYmxl X3NlcXNjYW4gPSBvZmY7CitzdGVwIHMxX2N5Y2xlOiBVUERBVEUgaGlhIFNFVCBrID0gMjAg V0hFUkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMTAgV0hFUkUgaWQgPSAxOworc3Rl cCBzMl9yYW5nZTogU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPj0gNSBPUkRFUiBC WSBrOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMl9ub3NlcSBzMV9iZWdpbiBzMV91cGQyMCBzMV9hYm9ydCBzMl9lcTIwIHMy X2VxMTAKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK3N0ZXAg czFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91cGQyMDogVVBEQVRFIGhpYSBTRVQgayA9IDIw IFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfYWJvcnQ6IFJPTExCQUNLOworc3RlcCBzMl9lcTIw OiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDIwOworaWR8aworLS0rLQorKDAg cm93cykKKworc3RlcCBzMl9lcTEwOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9 IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMV9iZWdpbiBzMV91dXBkMjAgczJfaW5zMTAgczFfY29tbWl0CitzdGVwIHMx X2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXVwZDIwOiBVUERBVEUgaGl1IFNFVCBrID0gMjAg V0hFUkUgaWQgPSAxOworc3RlcCBzMl9pbnMxMDogSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAo MiwgMTAsIHJlcGVhdCgneScsIDQwKSk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFfY29tbWl0 OiBDT01NSVQ7CitzdGVwIHMyX2luczEwOiA8Li4uIGNvbXBsZXRlZD4KKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9jb21taXQgczJfaW5zMTAKK3N0 ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91dXBkMjA6IFVQREFURSBoaXUgU0VUIGsg PSAyMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMxX2NvbW1pdDogQ09NTUlUOworc3RlcCBzMl9p bnMxMDogSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMiwgMTAsIHJlcGVhdCgneScsIDQwKSk7 CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV91dXBkMjAgczFfY29tbWl0 IHMyX2luczIwCitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXVwZDIwOiBVUERB VEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOworc3RlcCBzMV9jb21taXQ6IENPTU1J VDsKK3N0ZXAgczJfaW5zMjA6IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDMsIDIwLCByZXBl YXQoJ3onLCA0MCkpOworRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVu aXF1ZSBjb25zdHJhaW50ICJoaXVfayIKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMzX2Jl Z2luIHMzX2VxMTAgczJfdG8zMCBzMl9zY2FuMzAgczNfZXExMCBzM19jb21taXQKK3N0ZXAg czNfYmVnaW46IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IFNFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK3N0ZXAgczNfZXExMDogU0VMRUNUIGlkLCBrIEZST00g aGlhIFdIRVJFIGsgPSAxMDsKK2lkfCBrCistLSstLQorIDF8MTAKKygxIHJvdykKKworc3Rl cCBzMl90bzMwOiBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUg aGlhIFNFVCBrID0gMzAgV0hFUkUgaWQgPSAxOworc3RlcCBzMl9zY2FuMzA6IFNFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsgU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAzMDsK K2lkfCBrCistLSstLQorIDF8MzAKKygxIHJvdykKKworc3RlcCBzM19lcTEwOiBTRUxFQ1Qg aWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEg cm93KQorCitzdGVwIHMzX2NvbW1pdDogQ09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlv bjogYjFfYmVnaW4gYjFfc25hcCBiMl91cGRhdGUgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29t bWl0IGIzX3NlcQorc3RlcCBiMV9iZWdpbjogQkVHSU47CitzdGVwIGIxX3NuYXA6IFNFTEVD VCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2ID0gNDAwOworaWR8ICB2CistLSstLS0KKyAxfDQw MAorKDEgcm93KQorCitzdGVwIGIyX3VwZGF0ZTogVVBEQVRFIGhpYiBTRVQgdiA9IDUwMCBX SEVSRSBpZCA9IDE7CitzdGVwIGIyX3ZhY3V1bTogVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9m ZikgaGliOworc3RlcCBiMV9zbmFwOiBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgV0hFUkUgdiA9 IDQwMDsKK2lkfHYKKy0tKy0KKygwIHJvd3MpCisKK3N0ZXAgYjFfY29tbWl0OiBDT01NSVQ7 CitzdGVwIGIzX3NlcTogU0VMRUNUIGlkLCB2IEZST00gaGliIE9SREVSIEJZIGlkOworaWR8 ICB2CistLSstLS0KKyAxfDUwMAorIDJ8IDIwCisgM3wgMzAKKyA0fCA0MAorIDV8IDUwCiso NSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBiMV9iZWdpbiBiMl91cGRhdGUg YjFfc25hcCBiMl92YWN1dW0gYjFfc25hcCBiMV9jb21taXQgYjNfc2VxCitzdGVwIGIxX2Jl Z2luOiBCRUdJTjsKK3N0ZXAgYjJfdXBkYXRlOiBVUERBVEUgaGliIFNFVCB2ID0gNTAwIFdI RVJFIGlkID0gMTsKK3N0ZXAgYjFfc25hcDogU0VMRUNUIGlkLCB2IEZST00gaGliIFdIRVJF IHYgPSA0MDA7CitpZHx2CistLSstCisoMCByb3dzKQorCitzdGVwIGIyX3ZhY3V1bTogVkFD VVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGliOworc3RlcCBiMV9zbmFwOiBTRUxFQ1QgaWQs IHYgRlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsKK2lkfHYKKy0tKy0KKygwIHJvd3MpCisKK3N0 ZXAgYjFfY29tbWl0OiBDT01NSVQ7CitzdGVwIGIzX3NlcTogU0VMRUNUIGlkLCB2IEZST00g aGliIE9SREVSIEJZIGlkOworaWR8ICB2CistLSstLS0KKyAxfDUwMAorIDJ8IDIwCisgM3wg MzAKKyA0fCA0MAorIDV8IDUwCisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZQppbmRleCBiOGViZTkyNTUzYy4uZTlhZmI0ODE5OWUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTI4LDMgKzEyOCw0IEBAIHRl c3Q6IG1hdHZpZXctd3JpdGUtc2tldwogdGVzdDogbG9jay1ub3dhaXQKIHRlc3Q6IGZvci1w b3J0aW9uLW9mCiB0ZXN0OiBkZGwtZGVwZW5kZW5jeS1sb2NraW5nCit0ZXN0OiBob3RfaW5k ZXhlZF9hZHZlcnNhcmlhbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNjQ3MDViZjM3ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYwpAQCAt MCwwICsxLDEyMyBAQAorIyBBZHZlcnNhcmlhbCBjb3JyZWN0bmVzcyB0ZXN0cyBmb3IgSE9U LWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgRWFjaCBwZXJtdXRhdGlvbiBwaW5zIGEg Y2FzZSB0aGF0IHRoZSBtaWQtY2hhaW4tcG9pbnRpbmcgaW52YXJpYW50IG11c3QKKyMgc2F0 aXNmeTogYW4gaW5kZXggZW50cnkgcG9pbnRzIGF0IHRoZSBoZWFwLW9ubHkgdmVyc2lvbiB3 aG9zZSBrZXkgaXQKKyMgbWF0Y2hlZCwgYW5kIGEgY2hhaW4gd2FsayB0aGF0IGNyb3NzZXMg YSBIT1QtaW5kZXhlZCBob3AgZHJvcHMgdGhlIGFycml2aW5nCisjIGVudHJ5IHdoZW4gdGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBvdmVybGFwcyB0aGUgaW5kZXgncyBrZXkgY29s dW1ucworIyAobm8ga2V5IGNvbXBhcmlzb24pLiAgVGhlc2UgYXJlCisjIGV4YWN0bHkgdGhl IGNhc2VzIHRoYXQgaGlzdG9yaWNhbGx5IGJyb2tlIHdyaXRlLWFtcGxpZmljYXRpb24tcmVk dWN0aW9uCisjIGRlc2lnbnMuCisKK3NldHVwCit7CisgICAgQ1JFQVRFIFRBQkxFIGhpYSAo aWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgcGFkIHRleHQpIFdJVEggKGZpbGxmYWN0b3Ig PSA0MCk7CisgICAgQ1JFQVRFIElOREVYIGhpYV9rIE9OIGhpYShrKTsKKyAgICBDUkVBVEUg VEFCTEUgaGl1IChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCBwYWQgdGV4dCkgV0lUSCAo ZmlsbGZhY3RvciA9IDQwKTsKKyAgICBDUkVBVEUgVU5JUVVFIElOREVYIGhpdV9rIE9OIGhp dShrKTsKKyAgICBJTlNFUlQgSU5UTyBoaWEgVkFMVUVTICgxLCAxMCwgcmVwZWF0KCd4Jywg NDApKTsKKyAgICBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgxLCAxMCwgcmVwZWF0KCd4Jywg NDApKTsKKworICAgIC0tIFRhYmxlIGZvciB0aGUgY29uY3VycmVudC1jb2xsYXBzZSByZWFk ZXItY29uc2lzdGVuY3kgY2FzZSAoNykuCisgICAgQ1JFQVRFIFRBQkxFIGhpYiAoaWQgaW50 IFBSSU1BUlkgS0VZLCB2IGludCwgcGFkIHRleHQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CisgICAgQ1JFQVRFIElOREVYIGhpYl92X2lkeCBPTiBoaWIodik7CisgICAgSU5TRVJUIElO VE8gaGliIFNFTEVDVCBnLCBnICogMTAsIHJlcGVhdCgneCcsIDUwKSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1KSBnOworICAgIFVQREFURSBoaWIgU0VUIHYgPSAxMDAgV0hFUkUgaWQg PSAxOworICAgIFVQREFURSBoaWIgU0VUIHYgPSAyMDAgV0hFUkUgaWQgPSAxOworICAgIFVQ REFURSBoaWIgU0VUIHYgPSAzMDAgV0hFUkUgaWQgPSAxOworICAgIFVQREFURSBoaWIgU0VU IHYgPSA0MDAgV0hFUkUgaWQgPSAxOworfQorCit0ZWFyZG93bgoreworICAgIERST1AgVEFC TEUgaGlhOworICAgIERST1AgVEFCTEUgaGl1OworICAgIERST1AgVEFCTEUgaGliOworfQor CitzZXNzaW9uIHMxCitzdGVwIHMxX2JlZ2luICAgeyBCRUdJTjsgfQorIyBDeWNsZSB0aGUg aW5kZXhlZCBrZXkgYXdheSBhbmQgYmFjazogMTAgLT4gMjAgLT4gMTAuICBUaGUgb3JpZ2lu YWwgMTAgbGVhZgorIyBhbmQgdGhlIGZyZXNobHktaW5zZXJ0ZWQgMTAgbGVhZiBib3RoIHJl c29sdmUgdG8gdGhlIGxpdmUgdHVwbGU7IHRoZSBjaGFpbgorIyB3YWxrIG11c3QgZHJvcCB0 aGUgc3RhbGUgb25lIHNvIGEgbG9va3VwIHJldHVybnMgdGhlIHJvdyBleGFjdGx5IG9uY2Uu CitzdGVwIHMxX2N5Y2xlICAgeyBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAx OyBVUERBVEUgaGlhIFNFVCBrID0gMTAgV0hFUkUgaWQgPSAxOyB9CisjIEEgc2luZ2xlIEhP VC1pbmRleGVkIHVwZGF0ZSBvbiBoaWEsIHVzZWQgYnkgdGhlIGFib3J0IGFuZCByZWFkZXIg Y2FzZXMuCitzdGVwIHMxX3VwZDIwICAgeyBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hFUkUg aWQgPSAxOyB9CisjIEEgSE9ULWluZGV4ZWQgdXBkYXRlIG9uIHRoZSBVTklRVUUtaW5kZXhl ZCB0YWJsZSwgZnJlZWluZyBrZXkgMTAgZm9yIGs9MjAuCitzdGVwIHMxX3V1cGQyMCAgeyBV UERBVEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMxX2NvbW1pdCAg eyBDT01NSVQ7IH0KK3N0ZXAgczFfYWJvcnQgICB7IFJPTExCQUNLOyB9CisKK3Nlc3Npb24g czIKKyMgSW5kZXgtb25seSBsb29rdXBzIChmb3JjZWQpIHRoYXQgZXhlcmNpc2UgdGhlIHN0 YWxlLWxlYWYgcmVjaGVjay4KK3N0ZXAgczJfbm9zZXEgICB7IFNFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsgfQorc3RlcCBzMl9lcTEwICAgIHsgU0VMRUNUIGlkLCBrIEZST00gaGlhIFdI RVJFIGsgPSAxMDsgfQorc3RlcCBzMl9lcTIwICAgIHsgU0VMRUNUIGlkLCBrIEZST00gaGlh IFdIRVJFIGsgPSAyMDsgfQorc3RlcCBzMl9yYW5nZSAgIHsgU0VMRUNUIGlkLCBrIEZST00g aGlhIFdIRVJFIGsgPj0gNSBPUkRFUiBCWSBrOyB9CisjIENvbmN1cnJlbnQgdW5pcXVlIGlu c2VydCBvZiB0aGUga2V5IHMxIGlzIGZyZWVpbmcgKDEwKSBhbmQgb2YgdGhlIGtleSBzMSBp cworIyB0YWtpbmcgKDIwKTsgX2J0X2NoZWNrX3VuaXF1ZSBtdXN0IGZpbHRlciB0aGUgc3Rh bGUgMTAgbGVhZiBidXQgc3RpbGwKKyMgY29uZmxpY3Qgb24gdGhlIGxpdmUga2V5Lgorc3Rl cCBzMl9pbnMxMCAgIHsgSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMiwgMTAsIHJlcGVhdCgn eScsIDQwKSk7IH0KK3N0ZXAgczJfaW5zMjAgICB7IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMg KDMsIDIwLCByZXBlYXQoJ3onLCA0MCkpOyB9CisjIE1vdmUgdGhlIGluZGV4ZWQga2V5IHdl bGwgYXdheSBmcm9tIDEwICh0d28gSE9ULWluZGV4ZWQgaG9wcykgYW5kIGZvcmNlIGFuCisj IGluZGV4IHNjYW4gb24gdGhlIG5ldyBrZXkuICBUaGF0IHNjYW4gcmVhY2hlcyB0aGUgbGl2 ZSB0dXBsZSB0aHJvdWdoIHRoZQorIyBzdGFsZSAxMCBsZWFmIGFuZCBtYXkgdHJ5IHRvIGtp bGwgaXQgZm9yIGJsb2F0IHJlY2xhaW0uCitzdGVwIHMyX3RvMzAgICAgeyBVUERBVEUgaGlh IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMzAgV0hFUkUg aWQgPSAxOyB9CitzdGVwIHMyX3NjYW4zMCAgeyBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMzA7IH0KKworIyBSZWFkZXIgaG9s ZGluZyBhbiBvbGRlciBSRVBFQVRBQkxFIFJFQUQgc25hcHNob3QgdGhhdCBzdGlsbCBzZWVz IGs9MTAuCitzZXNzaW9uIHMzCitzdGVwIHMzX2JlZ2luICAgeyBCRUdJTiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOyBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7IH0KK3N0 ZXAgczNfZXExMCAgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMTA7IH0K K3N0ZXAgczNfY29tbWl0ICB7IENPTU1JVDsgfQorCitzZXNzaW9uIGIxCitzdGVwIGIxX2Jl Z2luICAgeyBCRUdJTjsgfQorIyBSZWFkZXIgdGFrZXMgYSBzbmFwc2hvdCBhbmQgcmVhZHMg dGhlIGNoYWluIHZpYSB0aGUgc2Vjb25kYXJ5IGluZGV4Lgorc3RlcCBiMV9zbmFwICAgIHsg U0VMRUNUIGlkLCB2IEZST00gaGliIFdIRVJFIHYgPSA0MDA7IH0KK3N0ZXAgYjFfY29tbWl0 ICB7IENPTU1JVDsgfQorCitzZXNzaW9uIGIyCisjIEZvcmNlIHBydW5lL2NvbGxhcHNlOiBh bm90aGVyIEhPVC1pbmRleGVkIHVwZGF0ZSBwbHVzIGEgVkFDVVVNIHRoYXQKKyMgY29sbGFw c2VzIHRoZSBkZWFkIGNoYWluIG1lbWJlcnMgdG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4K K3N0ZXAgYjJfdXBkYXRlICB7IFVQREFURSBoaWIgU0VUIHYgPSA1MDAgV0hFUkUgaWQgPSAx OyB9CitzdGVwIGIyX3ZhY3V1bSAgeyBWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaWI7 IH0KKworc2Vzc2lvbiBiMworc3RlcCBiM19zZXEgICAgIHsgU0VMRUNUIGlkLCB2IEZST00g aGliIE9SREVSIEJZIGlkOyB9CisKKyMgMS4gYS0+Yi0+YSBjeWNsZTogZXhhY3RseSBvbmUg cm93IGZvciB0aGUgY3ljbGVkLWJhY2sga2V5LCBub25lIGZvciB0aGUKKyMgICAgdHJhbnNp ZW50IGtleS4KK3Blcm11dGF0aW9uIHMyX25vc2VxIHMxX2N5Y2xlIHMyX2VxMTAgczJfZXEy MAorCisjIDIuIFJhbmdlIHNjYW4gcmV0dXJucyB0aGUgbGl2ZSByb3cgZXhhY3RseSBvbmNl IGFjcm9zcyB0aGUgc3RhbGUrZnJlc2gKKyMgICAgbGVhdmVzIGxlZnQgYnkgdGhlIGN5Y2xl LgorcGVybXV0YXRpb24gczJfbm9zZXEgczFfY3ljbGUgczJfcmFuZ2UKKworIyAzLiBBYm9y dCBvZiBhIEhPVC1pbmRleGVkIHVwZGF0ZTogdGhlIG5ldyBrZXkgbXVzdCBub3Qgc3VyZmFj ZSBhbmQgdGhlIG9sZAorIyAgICBrZXkgbXVzdCBzdGlsbCByZXNvbHZlIHRvIHRoZSAocmVz dG9yZWQpIGxpdmUgdHVwbGUuCitwZXJtdXRhdGlvbiBzMl9ub3NlcSBzMV9iZWdpbiBzMV91 cGQyMCBzMV9hYm9ydCBzMl9lcTIwIHMyX2VxMTAKKworIyA0LiBDb25jdXJyZW50IHVuaXF1 ZSBpbnNlcnQgd2hpbGUgYSBIT1QtaW5kZXhlZCB1cGRhdGUgaXMgaW4gZmxpZ2h0LiAgQW4K KyMgICAgaW5zZXJ0IG9mIHRoZSBrZXkgczEgaXMgZnJlZWluZyAoMTApIG11c3Qgd2FpdCBv biB0aGUgdW5jb21taXR0ZWQgdXBkYXRlciwKKyMgICAgdGhlbiBzdWNjZWVkIG9uY2UgaXQg Y29tbWl0cyAodGhlIHN0YWxlIDEwIGxlYWYgaXMgZmlsdGVyZWQpLgorcGVybXV0YXRpb24g czFfYmVnaW4gczFfdXVwZDIwIHMyX2luczEwIHMxX2NvbW1pdAorCisjIDUuIEFmdGVyIHRo ZSB1cGRhdGUgY29tbWl0cywgdGhlIGZyZWVkIGtleSAoMTApIGluc2VydHMgY2xlYW5seSBh bmQgdGhlCisjICAgIHRha2VuIGtleSAoMjApIGNvbmZsaWN0cyAtLSB0aGUgbGl2ZSBsZWFm IGlzIGhvbm91cmVkLCB0aGUgc3RhbGUgb25lIGlzIG5vdC4KK3Blcm11dGF0aW9uIHMxX2Jl Z2luIHMxX3V1cGQyMCBzMV9jb21taXQgczJfaW5zMTAKK3Blcm11dGF0aW9uIHMxX2JlZ2lu IHMxX3V1cGQyMCBzMV9jb21taXQgczJfaW5zMjAKKworIyA2LiBTbmFwc2hvdCBzYWZldHkg b2Ygc3RhbGUtbGVhZiByZWNsYWltLiAgQW4gb2xkZXIgUkVQRUFUQUJMRSBSRUFEIHJlYWRl cgorIyAgICBzdGlsbCBzZWVzIGs9MTA7IGEgY29uY3VycmVudCBzZXNzaW9uIHRoZW4gbW92 ZXMgdGhlIGtleSB0byAzMCBhbmQgcnVucyBhbgorIyAgICBpbmRleCBzY2FuIHRoYXQgcmVh Y2hlcyB0aGUgbGl2ZSB0dXBsZSB0aHJvdWdoIHRoZSBzdGFsZSAxMCBsZWFmIGFuZCBtYXkK KyMgICAgdHJ5IHRvIHJlY2xhaW0gaXQuICBUaGUgcmVjbGFpbSBpcyBnYXRlZCBvbiB0aGUg c2tpcHBlZCB2ZXJzaW9ucyBiZWluZworIyAgICBkZWFkIHRvIGFsbCB0cmFuc2FjdGlvbnMs IHdoaWNoIHMzJ3MgaGVsZCBzbmFwc2hvdCBwcmV2ZW50cywgc28gczMgbXVzdAorIyAgICBz dGlsbCBmaW5kIHRoZSByb3cgYnkgaz0xMCBhZnRlciB0aGUgc2Nhbi4KK3Blcm11dGF0aW9u IHMzX2JlZ2luIHMzX2VxMTAgczJfdG8zMCBzMl9zY2FuMzAgczNfZXExMCBzM19jb21taXQK KworIyA3LiBSZWFkZXIgY29uc2lzdGVuY3kgYWNyb3NzIGEgY29uY3VycmVudCBwcnVuZS9j b2xsYXBzZS4gIHMxJ3MgaW5kZXggc2NhbiwKKyMgICAgY3Jvc3NpbmcgdGhlIGNvbGxhcHNl ZCBjaGFpbiBhZnRlciB0aGUgVkFDVVVNLCBtdXN0IHN0aWxsIHJldHVybiB0aGUgcm93Cisj ICAgIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwOyB0aGUgcXVlcnkgbXVzdCBu b3QgZXJyb3IgYW5kIHRoZSByb3cgY291bnQKKyMgICAgbXVzdCBiZSBjb25zaXN0ZW50Lgor cGVybXV0YXRpb24gYjFfYmVnaW4gYjFfc25hcCBiMl91cGRhdGUgYjJfdmFjdXVtIGIxX3Nu YXAgYjFfY29tbWl0IGIzX3NlcQorcGVybXV0YXRpb24gYjFfYmVnaW4gYjJfdXBkYXRlIGIx X3NuYXAgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29tbWl0IGIzX3NlcQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUgYi9zcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmls ZQppbmRleCBkNDFhYWFmOGFlMS4uMjczNmNhYTFhMWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlY292ZXJ5L01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlCkBA IC05LDcgKzksOCBAQAogIwogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRVhUUkFfSU5TVEFM TD1jb250cmliL3BnX3ByZXdhcm0gXAorRVhUUkFfSU5TVEFMTD1jb250cmliL2FtY2hlY2sg XAorCWNvbnRyaWIvcGdfcHJld2FybSBcCiAJY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMg XAogCWNvbnRyaWIvdGVzdF9kZWNvZGluZyBcCiAJc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCBi L3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IGFkMGQ4NWY0MTg5Li44ZGJj ZGEzNTc3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysr IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAgLTYzLDYgKzYzLDcgQEAgdGVz dHMgKz0gewogICAgICAgJ3QvMDUyX2NoZWNrcG9pbnRfc2VnbWVudF9taXNzaW5nLnBsJywK ICAgICAgICd0LzA1M19zdGFuZGJ5X2xvZ2luX2V2ZW50X3RyaWdnZXIucGwnLAogICAgICAg J3QvMDU0X3VubG9nZ2VkX3NlcXVlbmNlX3Byb21vdGlvbi5wbCcsCisgICAgICAndC8wNTVf aG90X2luZGV4ZWRfcmVjb3ZlcnkucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbCBiL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3JlY292ZXJ5LnBsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNmYwNzdiMzE1OQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3JlY292ZXJ5 LnBsCkBAIC0wLDAgKzEsMTQ5IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIENyYXNoLXJlY292ZXJ5IGNvdmVy YWdlIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJVSkgY2hhaW5zLgorIworIyBCdWlsZCBhIEhP VC1pbmRleGVkIGNoYWluIGJ5IHJlcGVhdGVkbHkgVVBEQVRFaW5nIGEgc2luZ2xlIHJvdywK KyMgY2hhbmdpbmcgb25lIGluZGV4ZWQgKG5vbi1QSykgY29sdW1uIGVhY2ggdGltZS4gIEZv cmNlIGEgcHJ1bmUgc28gdGhlCisjIGRlYWQgY2hhaW4gbWVtYmVycyBjb2xsYXBzZSB0byBM UF9SRURJUkVDVCBmb3J3YXJkZXJzICh3aXRoIHRoZSBsaXZlCisjIEhPVC1pbmRleGVkIHZl cnNpb24gdmlzaWJsZSB2aWEgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMgYXMKKyMg bl9ob3RfaW5kZXhlZCA+IDApLiAgQ3Jhc2gtcmVjb3ZlciB0aGUgcHJpbWFyeSB3aXRoIHN0 b3AoJ2ltbWVkaWF0ZScpCisjIHNvIHRoZSBjb2xsYXBzZWQgY2hhaW4gY29tZXMgYmFjayBm cm9tIFdBTCBvciBmcm9tIHRoZSBGUEkuICBBZnRlcgorIyByZXN0YXJ0LCB2ZXJpZnk6Cisj CisjICAgMS4gYW4gaW5kZXggbG9va3VwIHdhbGtpbmcgdGhlIGNoYWluIHJldHVybnMgdGhl IGxpdmUgdHVwbGUsCisjICAgMi4gcGdfYW1jaGVjayAodmVyaWZ5X2hlYXBhbSkgcmVwb3J0 cyBubyBlcnJvcnMgb24gdGhlIHJlbGF0aW9uLAorIyAgIDMuIFZBQ1VVTSByZWNsYWltcyB0 aGUgY29sbGFwc2VkIGNoYWluIChuX2hvdF9pbmRleGVkIGRyb3BzIHRvIDApLgorIwordXNl IHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRl c3Q6Ok1vcmU7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdwcmltYXJ5Jyk7Ciskbm9kZS0+aW5pdDsKKyMgRGlzYWJsZSBhdXRvdmFjdXVtIHRvIGtl ZXAgdGhlIGNoYWluIHNoYXBlIHN0YWJsZSB1cCB0byB0aGUgZXhwbGljaXQKKyMgcHJ1bmUg d2UgdHJpZ2dlciBiZWxvdy4KKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgcXthdXRvdmFjdXVtID0gb2ZmCit3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcgPSAnYWxs J30pOworJG5vZGUtPnN0YXJ0OworCisjIGFtY2hlY2sgKHZlcmlmeV9oZWFwYW0pIGlzIHNo aXBwZWQgYXMgYSBjb250cmliIGV4dGVuc2lvbjsgd2UgdXNlIGl0CisjIGZyb20gU1FMIGFm dGVyIHRoZSBjcmFzaC1yZXN0YXJ0IGN5Y2xlLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxe0NSRUFURSBFWFRFTlNJT04gYW1jaGVja30pOworCisjIFdpZGUtaXNoIHRhYmxl OiBQSyArIGZvdXIgaW5kZXhlZCBjb2x1bW5zIHBsdXMgYSBub24taW5kZXhlZCBwYXlsb2Fk CisjIHNvIEhPVC1pbmRleGVkIHVwZGF0ZXMgaGF2ZSB3aWR0aCB0byBhbW9ydGlzZS4gIGZp bGxmYWN0b3IgPSA1MCBrZWVwcworIyBmcmVlIHNwYWNlIG9uLXBhZ2UgZm9yIEhPVC1pbmRl eGVkIGNvbnRpbnVhdGlvbnMuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJ Q1JFQVRFIFRBQkxFIGhpX3JlY292ICgKKwkJaWQgICAgICBpbnQgUFJJTUFSWSBLRVksCisJ CWMxICAgICAgaW50LAorCQljMiAgICAgIGludCwKKwkJYzMgICAgICBpbnQsCisJCWM0ICAg ICAgaW50LAorCQlwYXlsb2FkIHRleHQKKwkpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisJ Q1JFQVRFIElOREVYIGhpX3JlY292X2MxIE9OIGhpX3JlY292KGMxKTsKKwlDUkVBVEUgSU5E RVggaGlfcmVjb3ZfYzIgT04gaGlfcmVjb3YoYzIpOworCUNSRUFURSBJTkRFWCBoaV9yZWNv dl9jMyBPTiBoaV9yZWNvdihjMyk7CisJQ1JFQVRFIElOREVYIGhpX3JlY292X2M0IE9OIGhp X3JlY292KGM0KTsKKwlJTlNFUlQgSU5UTyBoaV9yZWNvdiBWQUxVRVMgKDEsIDEwMCwgMjAw LCAzMDAsIDQwMCwgJ3BheWxvYWQnKTsKK30pOworCisjIEJ1aWxkIGEgSE9ULWluZGV4ZWQg Y2hhaW46IGZpdmUgVVBEQVRFcywgZWFjaCB0b3VjaGluZyBvbmUgaW5kZXhlZAorIyBjb2x1 bW4uICBFdmVyeSBVUERBVEUga2VlcHMgdGhlIG5ldyB2ZXJzaW9uIG9uLXBhZ2UgYW5kIHBs YW50cyBhIGZyZXNoCisjIGluZGV4IGVudHJ5IGJlY2F1c2UgYzEgaXMgaW5kZXhlZCBhbmQg Y2hhbmdlZC4gIFVzZSBhIFNRTCB0cmFuc2FjdGlvbi0KKyMgcmFuZ2UgbG9vcCBzbyBlYWNo IFVQREFURSBpcyBpdHMgb3duIHhhY3QgKHhtaW4veG1heCBkaXN0aW5jdCkuCitmb3IgbXkg JGkgKDEgLi4gNSkKK3sKKwlteSAkbmV3dmFsID0gMTAwICsgJGk7CisJJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIGhpX3JlY292IFNFVCBjMSA9ICRuZXd2YWwg V0hFUkUgaWQgPSAxIik7Cit9CisKK215ICRwcmVfcHJ1bmUgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qgbl9ob3RfaW5kZXhlZCBGUk9NIHBnX3JlbGF0aW9u X2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNvdicpfSk7CitjbXBfb2soJHByZV9wcnVuZSwg Jz4nLCAwLAorCSdIT1QtaW5kZXhlZCBjaGFpbiBoYXMgYXQgbGVhc3Qgb25lIGxpdmUgSE9U LWluZGV4ZWQgdmVyc2lvbiBiZWZvcmUgcHJ1bmUnKTsKKworIyBGb3JjZSBhIHBydW5lLiAg VGhlIGNoYWluIGhhcyBkZWFkIGhlYXAtb25seSBtZW1iZXJzIGZyb20gdGhlIGVhcmx5Cisj IFVQREFURXMgKHRoZWlyIHhtaW5zIGFyZSBub3cgY29tbWl0dGVkIGFuZCBiZWxvdyB0aGUg c25hcHNob3QgaG9yaXpvbikuCisjIEEgU0VMRUNUIHVuZGVyIGRlZmF1bHQgaXNvbGF0aW9u IHZpc2l0cyB0aGUgcGFnZTsgdW5kZXIKKyMgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldCBl dGMuIHRoYXQncyBub3QgZW5vdWdoIG9uIGl0cyBvd24gdG8gdHJpZ2dlcgorIyBwcnVuZS4g IFRoZSByZWxpYWJsZSB3YXkgdG8gZHJpdmUgb3Bwb3J0dW5pc3RpYyBwcnVuZSBpcyBhIHF1 ZXJ5IHRoYXQKKyMgZXhlcmNpc2VzIHRoZSBoZWFwX3BhZ2VfcHJ1bmVfb3B0IHBhdGgsIHdo aWNoIGZpcmVzIGZyb20gYW4gaW5kZXhzY2FuCisjIHRoYXQgZmluZHMgdGhlIHBhZ2Ugbm9u LWFsbC12aXNpYmxlLiAgVXNlIGEgc2VxdWVudGlhbCBzY2FuIHBsdXMgYQorIyBzdWJzZXF1 ZW50IFVQREFURSB0aGF0IGl0c2VsZiBsb29rcyBmb3IgZnJlZSBzcGFjZSAoaGVhcF91cGRh dGUgY2FsbHMKKyMgaGVhcF9wYWdlX3BydW5lX29wdCkuCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHF7CisJU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CisJU0VMRUNUIGNv dW50KCopIEZST00gaGlfcmVjb3Y7CisJVVBEQVRFIGhpX3JlY292IFNFVCBwYXlsb2FkID0g J3BydW5lZCcgV0hFUkUgaWQgPSAxOworfSk7CisKKyMgUmVhZCB0aGUgY2hhaW4gc3RhdGUg YWZ0ZXIgdGhlIHBydW5lOiB0aGUgbGl2ZSBIT1QtaW5kZXhlZCB2ZXJzaW9uCisjIHJlbWFp bnMgd2hpbGUgZGVhZCBtZW1iZXJzIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUIGZvcndhcmRl cnMuCitteSAkcG9zdF9wcnVuZSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlx e1NFTEVDVCBuX2hvdF9pbmRleGVkIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3Rh dHMoJ2hpX3JlY292Jyl9KTsKK2NtcF9vaygkcG9zdF9wcnVuZSwgJz4nLCAwLAorCSdsaXZl IEhPVC1pbmRleGVkIHZlcnNpb24gc3Vydml2ZXMgb3Bwb3J0dW5pc3RpYyBwcnVuZScpOwor CisjIENyYXNoLXJlc3RhcnQuICBzdG9wKCdpbW1lZGlhdGUnKSBpcyB0aGUgc3RhbmRhcmQg ImtpbGwgLTkiIHNpbXVsYXRpb24KKyMgdXNlZCBlbHNld2hlcmUgaW4gc3JjL3Rlc3QvcmVj b3ZlcnkvLiAgV2UgaW50ZW50aW9uYWxseSBkbyBOT1QgaXNzdWUgYQorIyBDSEVDS1BPSU5U IGZpcnN0OiB0aGF0IHdvdWxkIGFkdmFuY2UgdGhlIHJlZG8gcG9pbnQgcGFzdCB0aGUgSE9U LWluZGV4ZWQKKyMgVVBEQVRFL3BydW5lIHJlY29yZHMgYW5kIGxlYXZlIG5vdGhpbmcgZm9y IHJlY292ZXJ5IHRvIHJlcGxheS4gIENyYXNoaW5nCisjIHdpdGhvdXQgYSBjaGVja3BvaW50 IGZvcmNlcyBzdGFydHVwIHJlZG8gdG8gcmVjb25zdHJ1Y3QgdGhlIGNvbGxhcHNlZAorIyBj aGFpbiBmcm9tIFdBTCwgYW5kIHdhbF9jb25zaXN0ZW5jeV9jaGVja2luZyA9ICdhbGwnIChz ZXQgYWJvdmUpIGNvbXBhcmVzCisjIGVhY2ggcmVwbGF5ZWQgcGFnZSBhZ2FpbnN0IGl0cyBm dWxsLXBhZ2UgaW1hZ2UsIGNhdGNoaW5nIGFueSBkaXZlcmdlbmNlCisjIGJldHdlZW4gdGhl IHdyaXRlIHBhdGggYW5kIHRoZSByZWRvIHBhdGguCiskbm9kZS0+c3RvcCgnaW1tZWRpYXRl Jyk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgMS4gQ2hhaW4gd2FsayB2aWEgdGhlIGluZGV4ZWQg Y29sdW1uIG9uIHRoZSBsaXZlIHJvdyByZXR1cm5zIHRoZQorIyAgICBjb3JyZWN0IChhbmQg b25seSB0aGUgY29ycmVjdCkgdHVwbGUuICBjMSA9IDEwNSB3YXMgdGhlIGxhc3QKKyMgICAg VVBEQVRFLCBzbyB0aGUgbGl2ZSB0dXBsZSBoYXMgYzEgPSAxMDUgYW5kIGMyLi5jNCB1bmNo YW5nZWQuCitteSAkbGl2ZSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisJU0VMRUNUIGlkLCBjMSwgYzIsIGMzLCBjNCwg cGF5bG9hZCBGUk9NIGhpX3JlY292IFdIRVJFIGMxID0gMTA1OworfSk7CitpcygkbGl2ZSwg IjF8MTA1fDIwMHwzMDB8NDAwfHBydW5lZCIsCisJJ2luZGV4IGxvb2t1cCBvbiBjaGFpbiBy ZXR1cm5zIHRoZSBwb3N0LXBydW5lIGxpdmUgdHVwbGUnKTsKKworIyBPbGRlciBjMSB2YWx1 ZXMgYXJlIG5vdCByZWFjaGFibGU6IGV2ZXJ5IHN0YWxlIGJ0cmVlIGVudHJ5IHRoYXQKKyMg Y2hhaW4tcmVzb2x2ZXMgYWNyb3NzIGEgSE9UL1NJVSBob3AgbXVzdCBiZSBkcm9wcGVkIGJ5 IHRoZSByZWFkLXNpZGUKKyMgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLgorbXkgJHN0YWxl X2NvdW50ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIGNvdW50 KCopIEZST00gaGlfcmVjb3YgV0hFUkUgYzEgPSAxMDB9KTsKK2lzKCRzdGFsZV9jb3VudCwg JzAnLAorCSdzdGFsZSBidHJlZSBlbnRyaWVzIGFyZSBmaWx0ZXJlZCBieSB0aGUgY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwJyk7CisKKyMgMi4gdmVyaWZ5X2hlYXBhbSByZXBvcnRzIG5v IGVycm9ycyBvbiB0aGUgcmVsYXRpb24gKHNraXBfb3B0aW9uID0KKyMgICAgJ2FsbC1mcm96 ZW4nIGlzIHRoZSBkZWZhdWx0OyB3ZSB3YW50IHRvIHNjYW4gZXZlcnl0aGluZykuCitteSAk aGVhcGNoZWNrID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVNFTEVDVCBj b3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY292JywKKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNraXAgOj0gJ25vbmUnLAorCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hlY2tfdG9hc3QgOj0gZmFsc2UpOworfSk7Citpcygk aGVhcGNoZWNrLCAnMCcsCisJJ3ZlcmlmeV9oZWFwYW0gcmVwb3J0cyB6ZXJvIGVycm9ycyBh ZnRlciBjcmFzaCByZWNvdmVyeScpOworCisjIDMuIFJlY2xhbWF0aW9uOiBhZnRlciB0aGUg bGl2ZSByb3cgaXMgZGVsZXRlZCwgdHdvIFZBQ1VVTSAoRlJFRVpFKQorIyAgICBwYXNzZXMg ZHJpdmUgcHJ1bmUgdG8gcmV2aXNpdCB0aGUgcGFnZSBhbmQgcmVjbGFpbSB0aGUgbm93LWZ1 bGx5LWRlYWQKKyMgICAgY29sbGFwc2VkIGNoYWluICh0aGUgZmlyc3QgcmVtb3ZlcyB0aGUg ZGVhZCByb3cncyBpbmRleCBlbnRyaWVzIGFuZAorIyAgICByZWR1Y2VzIGl0cyBMUDsgdGhl IHNlY29uZCByZWNsYWltcyB0aGUgdW5yZWZlcmVuY2VkIG1lbWJlcnMgYW5kCisjICAgIHJl LXBvaW50cyB0aGUgcmVkaXJlY3QpLiAgQWZ0ZXIgdGhhdCwgbl9ob3RfaW5kZXhlZCBtdXN0 IGJlIHplcm8uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7REVMRVRFIEZST00g aGlfcmVjb3YgV0hFUkUgaWQgPSAxfSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJcXtWQUNVVU0gKEZSRUVaRSwgRElTQUJMRV9QQUdFX1NLSVBQSU5HKSBoaV9yZWNvdn0p OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7VkFDVVVNIChGUkVFWkUsIERJ U0FCTEVfUEFHRV9TS0lQUElORykgaGlfcmVjb3Z9KTsKK215ICRmaW5hbCA9ICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBuX2hvdF9pbmRleGVkIEZST00gcGdf cmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY292Jyl9KTsKK2lzKCRmaW5hbCwg JzAnLAorCSd0d28gVkFDVVVNIChGUkVFWkUpIHBhc3NlcyBhZnRlciBERUxFVEUgcmVjbGFp bSB0aGUgY2hhaW4gcG9zdC1yZWNvdmVyeScpOworCiskbm9kZS0+c3RvcDsKKworZG9uZV90 ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF9p bmRleGVkX3VwZGF0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfaW5k ZXhlZF91cGRhdGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMWQ4MjI5OGY1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0CkBAIC0wLDAgKzEsMTcwNiBAQAorLS0K Ky0tIEhPVF9JTkRFWEVEX1VQREFURVMKKy0tIFRlc3QgSE9ULWluZGV4ZWQgdXBkYXRlICho b3QtaW5kZXhlZCksIGFrYSBIT1QtaW5kZXhlZCwgYmVoYXZpb3VyCistLQorLS0gRXZlcnkg VVBEQVRFIGluIHRoaXMgZmlsZSBtb2RpZmllcyBhdCBsZWFzdCBvbmUgbm9uLXN1bW1hcml6 aW5nCistLSBpbmRleGVkIGF0dHJpYnV0ZS4gIE9uIGEgcHJlLWhvdC1pbmRleGVkIHNlcnZl ciBhbGwgb2YgdGhlc2Ugd291bGQgYmUKKy0tIG5vbi1IT1Q7IG9uIHRoZSBob3QtaW5kZXhl ZCBicmFuY2ggZWFjaCBlbGlnaWJsZSB1cGRhdGUgc3RheXMgb24tcGFnZSBhbmQKKy0tIGlu c2VydHMgaW50byBvbmx5IHRoZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgYWN0dWFsbHkg Y2hhbmdlZC4KKy0tCistLSBXZSB2ZXJpZnkgZm91ciB0aGluZ3M6CistLSAgIChBKSBwZ19z dGF0IGNvdW50ZXJzOiBIT1QgYW5kIGhvdC1pbmRleGVkIGNvdW50cyBpbmNyZW1lbnQgYXMg ZXhwZWN0ZWQKKy0tICAgKEIpIGluZGV4IGxvb2t1cHMgcmV0dXJuIHRoZSBuZXcgdmFsdWUg YW5kIG5vdCB0aGUgc3RhbGUgdmFsdWUKKy0tICAgICAgIGZvciBFUVVBTElUWSBxdWVyaWVz ICh0aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0IGRyb3BzIGEKKy0tICAgICAgIGxlYWYg d2hvc2UgY292ZXJlZCBhdHRyaWJ1dGUgY2hhbmdlZCBvbiB0aGUgd2F5IHRvIHRoZSBsaXZl IHR1cGxlKQorLS0gICAoQykgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMgcmVwb3J0 cyB0aGUgSE9ULWluZGV4ZWQgdmVyc2lvbnMgd2UgZXhwZWN0CistLSAgIChEKSAqKlJBTkdF L0lORVFVQUxJVFkqKiBxdWVyaWVzIHJldHVybiB0aGUgY29ycmVjdCBudW1iZXIgb2YKKy0t ICAgICAgIHR1cGxlcyAtLSB0aGlzIGlzIHRoZSBjbGFzcyBvZiBidWdzIHdoZXJlIGEgc3Rh bGUgYnRyZWUKKy0tICAgICAgIGVudHJ5J3Mga2V5IGlzIHN0aWxsIHJlYWNoYWJsZSB2aWEg YSBsb29zZXIgc2NhbiBrZXk7IHRoZQorLS0gICAgICAgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwIGRyb3BzIHRoZSBzdGFsZSBhcnJpdmFsIGJlY2F1c2UgdGhlIGluZGV4J3MKKy0tICAg ICAgIGF0dHJpYnV0ZSBjaGFuZ2VkIGJldHdlZW4gdGhhdCBsZWFmJ3MgdGFyZ2V0IGFuZCB0 aGUgbGl2ZSB0dXBsZQorLS0KK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdl aW5zcGVjdDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVs X25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMgQklHSU5ULCBob3QgQklHSU5U KSBBUyAkJAorREVDTEFSRSByZWxfb2lkIG9pZDsKK0JFR0lOCisgICAgcmVsX29pZCA6PSBy ZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgICBD T0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsK KyAgICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRf aGlfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMgQklHSU5U LCBob3QgQklHSU5ULCBob3RfaWR4IEJJR0lOVCkgQVMgJCQKK0RFQ0xBUkUgcmVsX29pZCBv aWQ7CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7Cisg ICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxf b2lkKSwgMCkgKworICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBD T0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCk7CisgICAgaG90X2lkeCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X2lu ZGV4ZWRfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKHJlbF9vaWQpLCAwKTsK KyAgICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEuIEJhc2ljIGhvdC1pbmRleGVkOiBtb2RpZnlpbmcg YW4gaW5kZXhlZCBjb2x1bW4gc3RheXMgSE9UIGFuZCBjb3VudHMgYXMgaG90LWluZGV4ZWQK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2Jhc2ljICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9p bmRleGVkX2NvbCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaGlfYmFzaWNfaWR4IE9OIGhpX2Jhc2ljKGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRP IGhpX2Jhc2ljIFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworLS0gUHJlLWhvdC1pbmRl eGVkIHRoaXMgd291bGQgYmUgbm9uLUhPVC4gIFVuZGVyIGhvdC1pbmRleGVkIGl0J3MgSE9U LWluZGV4ZWQ7IGJvdGggdGhlCistLSBIT1QgY291bnRlciBhbmQgdGhlIGhvdC1pbmRleGVk IGNvdW50ZXIgYWR2YW5jZS4KK1VQREFURSBoaV9iYXNpYyBTRVQgaW5kZXhlZF9jb2wgPSAx NTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9iYXNpYycp OworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0t LQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKKy0tIFRoZSBuZXcgdmFs dWUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgaW5kZXguCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBv ZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBo aV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gaGlfYmFzaWMKKyAgIFJlY2hlY2sg Q29uZDogKGluZGV4ZWRfY29sID0gMTUwKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IGhpX2Jhc2ljX2lkeAorICAgICAgICAgSW5kZXggQ29uZDogKGluZGV4ZWRfY29sID0gMTUw KQorKDQgcm93cykKKworU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhpX2Jhc2ljIFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIHwgaW5kZXhlZF9jb2wgCistLS0tKy0tLS0t LS0tLS0tLS0KKyAgMSB8ICAgICAgICAgMTUwCisoMSByb3cpCisKKy0tIFRoZSBvbGQgdmFs dWUgaXMgbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoaXMgaW5kZXg6IHRoZSBzdGFsZSBidHJl ZQorLS0gZW50cnkgKGluZGV4ZWRfY29sPTEwMCkgd2Fsa3MgdG8gdGhlIGN1cnJlbnQgdHVw bGUgdmlhIHRoZSBob3QtaW5kZXhlZCBob3AsCistLSBub2RlSW5kZXhzY2FuIHJlLWV2YWx1 YXRlcyBgaW5kZXhlZF9jb2wgPSAxMDBgIGFnYWluc3QgdGhlIGN1cnJlbnQKKy0tIHR1cGxl IChpbmRleGVkX2NvbD0xNTApLCBhbmQgdGhlIHJvdyBpcyBjb3JyZWN0bHkgZHJvcHBlZC4g IFRoaXMgaXMKKy0tIHRoZSBlcXVhbGl0eS1sb29rdXAgY2FzZSB0aGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwIGhhbmRsZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBG Uk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBoaV9iYXNpYworICAgUmVj aGVjayBDb25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gaGlfYmFzaWNfaWR4CisgICAgICAgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wg PSAxMDApCisoNCByb3dzKQorCitTRUxFQ1QgaWQgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRl eGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworLS0gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMgc2VlcyBvbmUgSE9U LWluZGV4ZWQgdmVyc2lvbiwgemVybyBIT1QgcmVkaXJlY3RzICh0aGUKKy0tIGNoYWluIGhh cyBub3QgeWV0IGJlZW4gcHJ1bmVkIHNvIG5vIExQX1JFRElSRUNUIGV4aXN0cykuCitTRUxF Q1Qgbl9ob3RfaW5kZXhlZCwgbl9jaGFpbnMsIGF2Z19jaGFpbl9sZW4sIG1heF9jaGFpbl9s ZW4KK0ZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX2Jhc2ljJyk7Cisg bl9ob3RfaW5kZXhlZCB8IG5fY2hhaW5zIHwgYXZnX2NoYWluX2xlbiB8IG1heF9jaGFpbl9s ZW4gCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgMSB8ICAgICAgICAwIHwgICAgICAgICAgICAgMCB8 ICAgICAgICAgICAgIDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9iYXNpYzsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4gUkFOR0UvSU5FUVVBTElUWSBjb3JyZWN0bmVz cyBhZnRlciBob3QtaW5kZXhlZCBvbiBhbiBpbmRleGVkIGNvbHVtbgorLS0KKy0tIFRoaXMg aXMgdGhlIHRlc3QgY2xhc3MgdGhhdCBjYXRjaGVzIHRoZSBob3QtaW5kZXhlZCBmYWxzZS1k dXAgYnVnOiBhIHN0YWxlCistLSBidHJlZSBlbnRyeSB3aG9zZSBrZXkgdmFsdWUgc3RpbGwg c2F0aXNmaWVzIHRoZSByYW5nZSBwcmVkaWNhdGUsCistLSByZWFjaGFibGUgdmlhIHRoZSBo b3QtaW5kZXhlZCBjaGFpbiBob3AuCistLQorLS0gVG8gZXhlcmNpc2UgdGhlIGJ1ZyB3ZSBt dXN0IGZvcmNlIGFuIEluZGV4U2NhbiBwbGFuICh0aGUKKy0tIEluZGV4T25seVNjYW4gcGF0 aCBwZXJtaXNzaXZlbHkgZHJvcHMgZXZlcnkgaG90LWluZGV4ZWQtcmVhY2hhYmxlIGluZGV4 LW9ubHkKKy0tIGhpdDsgdGhlIEJpdG1hcEhlYXBTY2FuIHBhdGggZGVkdXBzIGJ5IFRJRCku ICBXZSBpbmNsdWRlIGEgcGF5bG9hZAorLS0gY29sdW1uIG5vdCBwcmVzZW50IGluIHRoZSBQ SyBzbyB0aGUgcGxhbm5lciBtdXN0IGhlYXAtZmV0Y2guCistLQorLS0gVGhlIHJlYWQtc2lk ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgbWFrZXMgdGhlIEluZGV4U2NhbiByZXR1cm4g dGhlIGNvcnJlY3QKKy0tIGNvdW50IG9mIDE6IHRoZSBzdGFsZSBlbnRyeSAoJzEnLCc1Jykg Y2hhaW4td2Fsa3MgdG8gdGhlIGxpdmUgdHVwbGUgYWNyb3NzCistLSB0aGUgYi1jaGFuZ2lu ZyBob3AsIGFuZCBiZWNhdXNlIHRoZSBQSyBjb3ZlcnMgYiB0aGUgb3ZlcmxhcCBpcyBub24t ZW1wdHksIHNvCistLSB0aGUgc3RhbGUgbGVhZiBpcyBkcm9wcGVkLiAgVGhlIGZyZXNoIGVu dHJ5ICgnMScsJzE1JykgcG9pbnRzIGRpcmVjdGx5IGF0IHRoZQorLS0gbGl2ZSB0dXBsZSAo bm8gaG9wIGFmdGVyIGl0KSBhbmQgaXMga2VwdC4gIFRoZSBPUkRFUiBCWSBsaWtld2lzZSBy ZXR1cm5zIHRoZQorLS0gc2luZ2xlIGxpdmUgcm93LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfcmFuZ2UgKAorICAgIGEgaW50LAorICAgIGIgaW50LAor ICAgIHBheWxvYWQgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAoYSwgYikKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0lOU0VSVCBJTlRPIGhpX3JhbmdlIFZBTFVFUyAoMSwgNSwgJ2hp Jyk7CistLSBob3QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIHNlY29uZCBQSyBjb2x1bW46IHN0 YWxlIGJ0cmVlIGVudHJ5ICgnMScsJzUnKQorLS0gcmVtYWlucywgbmV3IGVudHJ5ICgnMScs JzE1JykgaW5zZXJ0ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9pbnRzIGF0CistLSB0aGUgY2hh aW4gcm9vdDsgdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJlY3RseSBhdCB0aGUgbmV3Cist LSBoZWFwLW9ubHkgdHVwbGUuCitVUERBVEUgaGlfcmFuZ2UgU0VUIGIgPSAxNSBXSEVSRSBh ID0gMSBBTkQgYiA9IDU7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CistLSBJbmRleFNjYW46IHBheWxvYWQgSVMgTk9UIE5VTEwg Zm9yY2VzIGhlYXAgZmV0Y2gsIG5vIEluZGV4T25seVNjYW4uCistLSBUaGUgc3RhbGUgKCcx JywnNScpIGxlYWYgaXMgZHJvcHBlZCBieSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFw LCBzbyB0aGlzCistLSByZXR1cm5zIDEuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Y291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5 bG9hZCBJUyBOT1QgTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgaGlf cmFuZ2VfcGtleSBvbiBoaV9yYW5nZQorICAgICAgICAgSW5kZXggQ29uZDogKChhID0gMSkg QU5EIChiIDwgMTAwKSkKKyAgICAgICAgIEZpbHRlcjogKHBheWxvYWQgSVMgTk9UIE5VTEwp CisoNCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0g MSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjb3VudCAKKy0tLS0t LS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgYSwgYiBGUk9NIGhpX3JhbmdlIFdIRVJF IGEgPSAxIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMIE9SREVSIEJZIGI7CisgYSB8IGIgIAor LS0tKy0tLS0KKyAxIHwgMTUKKygxIHJvdykKKworLS0gSW5kZXhPbmx5U2NhbjogdGhlIHBh Z2UgaG9sZHMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIHNvIGl0IGlzIG5ldmVy IGFsbC12aXNpYmxlOyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBoZWFwIGZldGNoIGFuZCB0aGUg Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSAoJzEnLCc1JykKKy0t IGxlYWYsIHNvIGNvdW50ID0gMS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50 KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CisgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGhpX3JhbmdlX3BrZXkgb24g aGlfcmFuZ2UKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9IDEpIEFORCAoYiA8IDEwMCkp CisoMyByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0g MSBBTkQgYiA8IDEwMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCist LSBCaXRtYXBIZWFwU2NhbjogVElEIGRlZHVwIGNvbGxhcHNlcyB0aGUgc3RhbGUgYW5kIGZy ZXNoIGhpdHMuCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfaW5k ZXhvbmx5c2NhbiA9IG9mZjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBB TkQgYiA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBoaV9y YW5nZQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSAxKSBBTkQgKGIgPCAxMDApKQor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGhpX3JhbmdlX3BrZXkKKyAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9IDEpIEFORCAoYiA8IDEwMCkpCisoNSByb3dz KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8 IDEwMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFi bGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNjYW47CistLSBTZXFTY2Fu OiByZWFkcyB0aGUgaGVhcCBkaXJlY3RseSwgc2VlcyBleGFjdGx5IG9uZSBsaXZlIHR1cGxl LgorUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsK K1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2Nh biA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlf cmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CisgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBoaV9yYW5nZQorICAg ICAgICAgRmlsdGVyOiAoKGIgPCAxMDApIEFORCAoYSA9IDEpKQorKDMgcm93cykKKworU0VM RUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7Cisg Y291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2luZGV4 c2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1h cHNjYW47CistLSBTYW1lIHNoYXBlIG9uIGEgc2Vjb25kYXJ5IChub24tUEspIGJ0cmVlOiBh bm90aGVyIGhvdC1pbmRleGVkIHVwZGF0ZSBvbiBiLgorQ1JFQVRFIElOREVYIGhpX3Jhbmdl X2JfaWR4IE9OIGhpX3JhbmdlKGIpOworVVBEQVRFIGhpX3JhbmdlIFNFVCBiID0gMjUgV0hF UkUgYSA9IDEgQU5EIGIgPSAxNTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKy0tIEluZGV4U2NhbiBwYXRoIG9uIHRoZSBzZWNv bmRhcnkgaW5kZXg7IHNhbWUgZml4IGFwcGxpZXMuCitTRUxFQ1QgY291bnQoKikgRlJPTSBo aV9yYW5nZSBXSEVSRSBiIEJFVFdFRU4gMCBBTkQgMTAwIEFORCBwYXlsb2FkIElTIE5PVCBO VUxMOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIGhpX3Jh bmdlOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzLiBBbGwtb3Itbm9uZSBvbiBh IG11bHRpLWluZGV4ZWQgdGFibGU6IGhvdC1pbmRleGVkIG9ubHkgdG91Y2hlcyBpbmRleGVz CistLSAgICB3aG9zZSBhdHRyaWJ1dGVzIGNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX211bHRpICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAg bm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElO REVYIGhpX211bHRpX2FfaWR4IE9OIGhpX211bHRpKGNvbF9hKTsKK0NSRUFURSBJTkRFWCBo aV9tdWx0aV9iX2lkeCBPTiBoaV9tdWx0aShjb2xfYik7CitDUkVBVEUgSU5ERVggaGlfbXVs dGlfY19pZHggT04gaGlfbXVsdGkoY29sX2MpOworSU5TRVJUIElOVE8gaGlfbXVsdGkgVkFM VUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0gY29sX2Egb25seTogdW5kZXIg aG90LWluZGV4ZWQgdGhpcyBpcyBIT1QtaW5kZXhlZCwgYW5kIG9ubHkgaGlfbXVsdGlfYV9p ZHgKKy0tIGdldHMgYSBuZXcgZW50cnkuICBoaV9tdWx0aV9iX2lkeCAvIGhpX211bHRpX2Nf aWR4IGtlZXAgcG9pbnRpbmcKKy0tIGF0IHRoZSBjaGFpbiByb290LgorVVBEQVRFIGhpX211 bHRpIFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9j b3VudCgnaGlfbXVsdGknKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0tLS0t LSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEgcm93KQor CistLSBMb29rdXBzIG9uIGFsbCB0aHJlZSBpbmRleGVzIHJldHVybiB0aGUgcm93LgorU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hFUkUg Y29sX2EgPSAxNTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJP TSBoaV9tdWx0aSBXSEVSRSBjb2xfYiA9IDIwOworIGlkIAorLS0tLQorICAxCisoMSByb3cp CisKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNvbF9jID0gMzA7CisgaWQgCist LS0tCisgIDEKKygxIHJvdykKKworLS0gT2xkIGNvbF9hIHZhbHVlIGlzIHVucmVhY2hhYmxl IGJ5IGVxdWFsaXR5IChzdGFsZSBlbnRyeSBkcm9wcGVkIGJ5IHRoZQorLS0gcmVhZC1zaWRl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCkuCitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBX SEVSRSBjb2xfYSA9IDEwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX211bHRpOworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSA0LiBNdWx0aS1jb2x1bW4gYnRyZWU6IGhvdC1pbmRleGVkIG9uIHBhcnQgb2Yg YSBjb21wb3NpdGUga2V5CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9jb21wb3NpdGUgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBp bnQsCisgICAgY29sX2IgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhpX2NvbXBvc2l0ZV9hYl9pZHggT04gaGlfY29tcG9z aXRlKGNvbF9hLCBjb2xfYik7CitJTlNFUlQgSU5UTyBoaV9jb21wb3NpdGUgVkFMVUVTICgx LCAxMCwgMjAsICdkYXRhJyk7CistLSBjb2xfYSBpcyBwYXJ0IG9mIHRoZSBjb21wb3NpdGUg a2V5OiBob3QtaW5kZXhlZC4KK1VQREFURSBoaV9jb21wb3NpdGUgU0VUIGNvbF9hID0gMTU7 CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBvc2l0ZScpOworIHVwZGF0ZXMg fCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEg fCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKKy0tIFJlc2V0IGFuZCB0aGVuIHVwZGF0ZSBj b2xfYiAoYWxzbyBwYXJ0IG9mIHRoZSBrZXkpLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQg Y29sX2EgPSAxMDsKK1VQREFURSBoaV9jb21wb3NpdGUgU0VUIGNvbF9iID0gMjU7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU ICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBvc2l0ZScpOworIHVwZGF0ZXMgfCBob3Qg fCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDMgfCAgIDMg fCAgICAgICAzCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfY29tcG9zaXRlOworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSA1LiBQYXJ0aWFsIGluZGV4OiBzdGF0dXMgdHJhbnNp dGlvbiBvdXQtb2YtcHJlZGljYXRlCistLQorLS0gJ3N0YXR1cycgaXMgYSBwYXJ0aWFsLWlu ZGV4IHByZWRpY2F0ZSBjb2x1bW4uICBBIGNoYW5nZSB0byBhIHByZWRpY2F0ZQorLS0gY29s dW1uIGNhbiBmbGlwIGEgcm93IGluIG9yIG91dCBvZiB0aGUgaW5kZXgsIHdoaWNoIHRoZSBy ZWFkLXNpZGUga2V5CistLSByZWNoZWNrIGNhbm5vdCBkZXRlY3QsIHNvIEhlYXBVcGRhdGVI b3RBbGxvd2FibGUgY29uc2VydmF0aXZlbHkgZGlzcXVhbGlmaWVzCistLSBIT1QtaW5kZXhl ZCBmb3IgYW55IHByZWRpY2F0ZS1jb2x1bW4gY2hhbmdlIChldmVuIHRoaXMgb3V0LW9mLXBy ZWRpY2F0ZSAtPgorLS0gb3V0LW9mLXByZWRpY2F0ZSBjYXNlKS4gIFRoZSB1cGRhdGUgaXMg dGhlcmVmb3JlIG5vbi1IT1QsIGFuZCB0aGUgcGFydGlhbAorLS0gaW5kZXggY29ycmVjdGx5 IHN0YXlzIGVtcHR5IGZvciB0aGVzZSBub24tJ2FjdGl2ZScgcm93cy4KKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRpYWwgKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0aWFsX2FjdGl2ZV9pZHgg T04gaGlfcGFydGlhbChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworSU5TRVJU IElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VS VCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKK0lO U0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdkYXRhMycpOwor LS0gb3V0IC0+IG91dCB0cmFuc2l0aW9uIG9uIHRoZSBwcmVkaWNhdGUgY29sdW1uOiBIT1Qt aW5kZXhlZCBrZWVwcyBpdCBvbi1wYWdlLAorLS0gYW5kIHRoZSBwYXJ0aWFsIGluZGV4IGdl dHMgbm8gZW50cnkgKHRoZSByb3cgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUgbmVpdGhlcgor LS0gYmVmb3JlIG5vciBhZnRlciB0aGUgdXBkYXRlKS4KK1VQREFURSBoaV9wYXJ0aWFsIFNF VCBzdGF0dXMgPSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9wYXJ0aWFsJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0t LS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJv dykKKworLS0gVGhlIHBhcnRpYWwgaW5kZXggc3RpbGwgY29ycmVjdGx5IGFuc3dlcnMgImFj dGl2ZSIgcXVlcmllcy4KK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaGlfcGFydGlhbCBXSEVS RSBzdGF0dXMgPSAnYWN0aXZlJzsKKyBpZCB8IHN0YXR1cyAKKy0tLS0rLS0tLS0tLS0KKyAg MSB8IGFjdGl2ZQorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3BhcnRpYWw7CistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDYuIFBhcnRpdGlvbjogaG90LWluZGV4ZWQgaW5zaWRl IG9uZSBwYXJ0aXRpb24KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX3BhcnQgKAorICAgIGlkIGludCwKKyAgICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBp bmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwg cGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9OIEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsK K0NSRUFURSBUQUJMRSBoaV9wYXJ0XzEgUEFSVElUSU9OIE9GIGhpX3BhcnQKKyAgICBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaGlfcGFydF9pZHggT04gaGlfcGFydChpbmRleGVkX2NvbCk7CitJTlNFUlQg SU5UTyBoaV9wYXJ0IFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2RhdGEnKTsKK1VQREFURSBoaV9w YXJ0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBn ZXRfaGlfY291bnQoJ2hpX3BhcnRfMScpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAor LS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCiso MSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhp X3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgCistLS0tCisgIDEKKygxIHJv dykKKworU0VMRUNUIGlkIEZST00gaGlfcGFydCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsK KyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBU QUJMRSBoaV9wYXJ0IENBU0NBREU7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcu IFRyaWdnZXIgbW9kaWZpZXMgaW5kZXhlZCBjb2x1bW46IGhvdC1pbmRleGVkLCBub3Qgbm9u LUhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdHJpZ2dl ciAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAor ICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX3RyaWdnZXJfaWR4IE9OIGhpX3RyaWdnZXIodHJpZ2dlcmVkX2NvbCk7CitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKQorUkVUVVJOUyBUUklHR0VS IEFTICQkCitCRUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9j b2wgKyAxOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor Q1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9idW1wCisgICAgQkVGT1JFIFVQREFURSBP TiBoaV90cmlnZ2VyCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBGVU5DVElPTiBo aV90cmlnZ2VyX2J1bXAoKTsKK0lOU0VSVCBJTlRPIGhpX3RyaWdnZXIgVkFMVUVTICgxLCAx MDAsICdpbml0aWFsJyk7CistLSBVUERBVEUncyBTRVQgY2xhdXNlIGRvZXNuJ3QgdG91Y2gg dGhlIGluZGV4ZWQgY29sdW1uLCBidXQgdGhlCistLSB0cmlnZ2VyIG1vZGlmaWVzIGl0IHZp YSBoZWFwX21vZGlmeV90dXBsZS4gIGhvdC1pbmRleGVkIG11c3QgZGV0ZWN0IHRoaXMKKy0t IGFuZCBrZWVwIHRoZSB0dXBsZSBvbi1wYWdlIChIRUFQX0lOREVYRURfVVBEQVRFRCkgcGx1 cyBhIG5ldyBidHJlZSBlbnRyeS4KK1VQREFURSBoaV90cmlnZ2VyIFNFVCBkYXRhID0gJ3Vw ZGF0ZWQnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfdHJp Z2dlcicpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0t LS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCB0 cmlnZ2VyZWRfY29sIEZST00gaGlfdHJpZ2dlciBXSEVSRSBpZCA9IDE7CisgdHJpZ2dlcmVk X2NvbCAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxMDEKKygxIHJvdykKKworLS0g TmV3IHZhbHVlIHJlYWNoYWJsZS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVD VCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgdHJpZ2dlcmVkX2NvbCA9IDEwMTsKKyBpZCAK Ky0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV90cmlnZ2VyIFdIRVJF IHRyaWdnZXJlZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBl bmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfdHJpZ2dlciBDQVNDQURFOworRFJPUCBG VU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gOC4gSlNPTkIgZXhwcmVzc2lvbiBpbmRleDogSE9ULWluZGV4ZWQgaXMgbm90IHlldCBz dXBwb3J0ZWQgb24gZXhwcmVzc2lvbgorLS0gICAgaW5kZXhlcywgc28gdGhlIHVwZGF0ZSBm YWxscyBiYWNrIHRvIGEgbm9uLUhPVCB1cGRhdGUgKGhvdF9pZHggPSAwKS4KKy0tICAgIFJl YWRzIHN0YXkgY29ycmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX2pzb25iICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBqc29u YgorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2pzb25iX25h bWVfaWR4IE9OIGhpX2pzb25iICgoZGF0YS0+PiduYW1lJykpOworSU5TRVJUIElOVE8gaGlf anNvbmIgVkFMVUVTICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwfScpOworLS0gQ2hh bmdpbmcgdGhlIGluZGV4ZWQgZXhwcmVzc2lvbidzIHZhbHVlIChuYW1lKTogZXhwcmVzc2lv biBpbmRleGVzIGFyZSBub3QKKy0tIHlldCBzdXBwb3J0ZWQsIHNvIHRoaXMgaXMgYSBub24t SE9UIHVwZGF0ZS4KK1VQREFURSBoaV9qc29uYiBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRh LCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0 X2hpX2NvdW50KCdoaV9qc29uYicpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0t LS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDAgfCAgICAgICAwCisoMSBy b3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX2pz b25iIFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxpY2UyJzsKKyBpZCAKKy0tLS0KKyAgMQor KDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9qc29uYiBXSEVSRSBkYXRhLT4+J25hbWUn ID0gJ0FsaWNlJzsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworRFJPUCBUQUJMRSBoaV9qc29uYjsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gOS4gR0lOIGluZGV4IHdpdGggY2hhbmdlZCBleHRyYWN0ZWQga2V5czogaG90LWluZGV4 ZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2dpbiAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRhZ3MgdGV4dFtdCispIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfZ2luX3RhZ3NfaWR4IE9OIGhpX2dpbiBV U0lORyBnaW4gKHRhZ3MpOworSU5TRVJUIElOVE8gaGlfZ2luIFZBTFVFUyAoMSwgQVJSQVlb J3RhZzEnLCAndGFnMiddKTsKKy0tIEFkZGluZyBhIHRhZyB5aWVsZHMgYSBkaWZmZXJlbnQg ZXh0cmFjdGVkLWtleSBzZXQ6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2dpbiBTRVQgdGFn cyA9IEFSUkFZWyd0YWcxJywgJ3RhZzInLCAndGFnNSddIFdIRVJFIGlkID0gMTsKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIGdldF9oaV9jb3VudCgnaGlfZ2luJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9p ZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAg IDEKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZS T00gaGlfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKKyBpZCAKKy0tLS0KKyAg MQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfZ2lu OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMC4gUGVyLWluZGV4IEhPVC1pbmRl eGVkIGNvdW50ZXJzOiBza2lwcGVkIHZzIG1hdGNoZWQKKy0tCistLSBBIHRhYmxlIHdpdGgg dHdvIGluZGVwZW5kZW50IHNlY29uZGFyeSBpbmRleGVzLiAgQW4gVVBEQVRFIHRvdWNoZXMg YQorLS0gY29sdW1uIGNvdmVyZWQgYnkgb25seSBvbmUgb2YgdGhlbTsgdGhlIEhPVC1pbmRl eGVkIHBhdGggbXVzdCBpbnNlcnQKKy0tIGludG8gdGhhdCBvbmUgaW5kZXggYW5kIHNraXAg dGhlIG90aGVyLiAgcGdfc3RhdF9hbGxfaW5kZXhlcyByZXBvcnRzCistLSBtYXRjaGVkPjAg b24gdGhlIHVwZGF0ZWQgaW5kZXggYW5kIHNraXBwZWQ+MCBvbiB0aGUgdW50b3VjaGVkIGlu ZGV4LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90aWR4X3Bl cmluZGV4ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQsCisgICAgYiBp bnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RpZHhfcGVy aW5kZXhfYSBPTiBob3RpZHhfcGVyaW5kZXgoYSk7CitDUkVBVEUgSU5ERVggaG90aWR4X3Bl cmluZGV4X2IgT04gaG90aWR4X3BlcmluZGV4KGIpOworSU5TRVJUIElOVE8gaG90aWR4X3Bl cmluZGV4IFZBTFVFUyAoMSwgMTAwLCAyMDApOworLS0gTW9kaWZ5IG9ubHkgY29sdW1uIGEu ICBIT1QtaW5kZXhlZCBpbnNlcnRzIGludG8gaG90aWR4X3BlcmluZGV4X2EgYW5kCistLSBz a2lwcyBob3RpZHhfcGVyaW5kZXhfYiAocHJpbWFyeSBrZXkgaW5kcmVsaWQgaXMgdGhlIHRh YmxlIGl0c2VsZiBhbmQKKy0tIGFsc28gdW5jaGFuZ2VkLCBzbyBpdCBjb3VudHMgYXMgc2tp cHBlZCB0b28pLgorVVBEQVRFIGhvdGlkeF9wZXJpbmRleCBTRVQgYSA9IDEwMSBXSEVSRSBp ZCA9IDE7CistLSBGb3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0YXRzIHRvIHRoZSBzaGFyZWQg ZW50cnkuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91 cGRfbWF0Y2hlZCBBUyBtYXRjaGVkLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9z a2lwcGVkIEFTIHNraXBwZWQKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUg cmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOwor ICAgICBpbmRleHJlbG5hbWUgICAgIHwgbWF0Y2hlZCB8IHNraXBwZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0KKyBob3RpZHhfcGVyaW5kZXhfYSAg ICB8ICAgICAgIDEgfCAgICAgICAwCisgaG90aWR4X3BlcmluZGV4X2IgICAgfCAgICAgICAw IHwgICAgICAgMQorIGhvdGlkeF9wZXJpbmRleF9wa2V5IHwgICAgICAgMCB8ICAgICAgIDEK KygzIHJvd3MpCisKKy0tIEEgc2Vjb25kIFVQREFURSB0b3VjaGluZyBvbmx5IGIgaW52ZXJ0 cyB0aGUgYXNzaWdubWVudC4KK1VQREFURSBob3RpZHhfcGVyaW5kZXggU0VUIGIgPSAyMDEg V0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2lu ZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhl ZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcwor IFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVs bmFtZTsKKyAgICAgaW5kZXhyZWxuYW1lICAgICB8IG1hdGNoZWQgfCBza2lwcGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tCisgaG90aWR4X3Blcmlu ZGV4X2EgICAgfCAgICAgICAxIHwgICAgICAgMQorIGhvdGlkeF9wZXJpbmRleF9iICAgIHwg ICAgICAgMSB8ICAgICAgIDEKKyBob3RpZHhfcGVyaW5kZXhfcGtleSB8ICAgICAgIDAgfCAg ICAgICAyCisoMyByb3dzKQorCistLSBJbnZhcmlhbnQ6IG1hdGNoZWQgKyBza2lwcGVkID09 IG93bmluZyB0YWJsZSdzIG5fdHVwX2hvdF9pbmRleGVkX3VwZC4KK1NFTEVDVCBpbmRleHJl bG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKyBuX3R1cF9o b3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyB0b3RhbCwKKyAgICAgICAoU0VMRUNUIG5fdHVw X2hvdF9pbmRleGVkX3VwZCBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgV0hF UkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnKSBBUyB0YWJsZV9ob3RfaWR4X3VwZAor ICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9w ZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5hbWU7CisgICAgIGluZGV4cmVsbmFtZSAg ICAgfCB0b3RhbCB8IHRhYmxlX2hvdF9pZHhfdXBkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBob3RpZHhfcGVyaW5kZXhfYSAgICB8 ICAgICAyIHwgICAgICAgICAgICAgICAgIDIKKyBob3RpZHhfcGVyaW5kZXhfYiAgICB8ICAg ICAyIHwgICAgICAgICAgICAgICAgIDIKKyBob3RpZHhfcGVyaW5kZXhfcGtleSB8ICAgICAy IHwgICAgICAgICAgICAgICAgIDIKKygzIHJvd3MpCisKKy0tIEJvb2xlYW4gYXNzZXJ0aW9u IG9mIHRoZSBzYW1lIGludmFyaWFudC4gIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBmb3JtCist LSByZXZpZXdlcnMgYXNrZWQgZm9yOiBldmVyeSBpbmRleCBlbnRyeSBpcyBlaXRoZXIgbWF0 Y2hlZCAodGhlIGluZGV4CistLSBnb3QgYSBmcmVzaCBpbnNlcnQgdGhpcyBVUERBVEUpIG9y IHNraXBwZWQgKEhPVC1pbmRleGVkIGNvcnJlY3RseQorLS0gYXZvaWRlZCBhbiBpbnNlcnQg YmVjYXVzZSB0aGUgaW5kZXgncyBhdHRycyBkaWQgbm90IGNoYW5nZSkuICBJZiB0aGUKKy0t IHR3byBjb3VudGVycyBkcmlmdCBhcGFydCBmcm9tIHRoZSB0YWJsZS1sZXZlbCBuX3R1cF9o b3RfaW5kZXhlZF91cGQgd2UKKy0tIGhhdmUgZWl0aGVyIGxvc3QgYSBwZXItaW5kZXggaW5j cmVtZW50IG9yIGRvdWJsZS1jb3VudGVkIG9uZS4KK1NFTEVDVCBib29sX2FuZCgobl90dXBf aG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBl ZCkgPQorICAgICAgICAgICAgICAgIChTRUxFQ1Qgbl90dXBfaG90X2luZGV4ZWRfdXBkIEZS T00gcGdfc3RhdF9hbGxfdGFibGVzCisgICAgICAgICAgICAgICAgICBXSEVSRSByZWxuYW1l ID0gJ2hvdGlkeF9wZXJpbmRleCcpKQorICAgICAgICAgQVMgcGVyaW5kZXhfaW52YXJpYW50 X2hvbGRzCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAn aG90aWR4X3BlcmluZGV4JzsKKyBwZXJpbmRleF9pbnZhcmlhbnRfaG9sZHMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RpZHhf cGVyaW5kZXg7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDExLiBMb25nIGhvdC1s b29wIFVQREFURSBzdGF5cyBjb21wYWN0IGFuZCBIT1QtaW5kZXhlZAorLS0KKy0tIEEgbG9u ZyBydW4gb2YgSE9ULWluZGV4ZWQgVVBEQVRFcyB0byBhIHNpbmdsZSByb3cgc3RheXMgY29t cGFjdDogcHJ1bmUKKy0tIGNvbGxhcHNlcyBlYWNoIGRlYWQgdmVyc2lvbiB0byBhIHJlZGly ZWN0IHRvIHRoZSBsaXZlIHR1cGxlIGFuZCByZXVzZXMgaXRzCistLSBzbG90LCBzbyB0aGUg cm93IG5ldmVyIGxlYXZlcyBpdHMgb3JpZ2luYWwgcGFnZSBhbmQgdGhlIGNoYWluIGRvZXMg bm90IGdyb3cKKy0tIHVuYm91bmRlZC4gIEV2ZXJ5IFVQREFURSB0aGF0IGNoYW5nZXMgdGhl IGluZGV4ZWQgY29sdW1uIChhbmQgbGVhdmVzIGFub3RoZXIKKy0tIGluZGV4LCBoZXJlIHRo ZSBQSywgdW5jaGFuZ2VkKSB0YWtlcyB0aGUgSE9ULWluZGV4ZWQgcGF0aC4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2NoYWluY2FwICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsK K0NSRUFURSBJTkRFWCBoaV9jaGFpbmNhcF9hX2lkeCBPTiBoaV9jaGFpbmNhcChhKTsKK0lO U0VSVCBJTlRPIGhpX2NoYWluY2FwIFZBTFVFUyAoMSwgMCk7CitETyAkJAorREVDTEFSRQor ICAgIGkgaW50OworQkVHSU4KKyAgICBGT1IgaSBJTiAxIC4uIDIwMCBMT09QCisgICAgICAg IFVQREFURSBoaV9jaGFpbmNhcCBTRVQgYSA9IGkgV0hFUkUgaWQgPSAxOworICAgIEVORCBM T09QOworRU5EICQkOworLS0gQWZ0ZXIgMjAwIFVQREFURXMgdGhlIHJvdydzIHZhbHVlIGlz IDIwMC4KK1NFTEVDVCBhIEZST00gaGlfY2hhaW5jYXAgV0hFUkUgaWQgPSAxOworICBhICAK Ky0tLS0tCisgMjAwCisoMSByb3cpCisKKy0tIEV2ZXJ5IFVQREFURSB0b29rIHRoZSBIT1Qt aW5kZXhlZCBwYXRoICh0aGUgUEsgaW5kZXggaXMgdW5jaGFuZ2VkLCBzbyBpdCBpcworLS0g c2tpcHBlZCksIHNvIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBhZHZhbmNlZC4KK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2gg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaG90 X2lkeCA+IDAgQVMgaG90X2luZGV4ZWRfZmlyZWQKKyAgRlJPTSBnZXRfaGlfY291bnQoJ2hp X2NoYWluY2FwJyk7CisgaG90X2luZGV4ZWRfZmlyZWQgCistLS0tLS0tLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorCistLSBUaGUgaGVhcCBzdGF5ZWQgY29tcGFjdDogcHJ1bmUrY29s bGFwc2UgcmVjbGFpbWVkIHRoZSBkZWFkIHZlcnNpb25zLCBzbyB0aGUKKy0tIHNpbmdsZSBs aXZlIHJvdyBzdGlsbCBvY2N1cGllcyBqdXN0IG9uZSBwYWdlLgorU0VMRUNUIHJlbHBhZ2Vz IDw9IDEgQVMgaGVhcF9zdGF5ZWRfY29tcGFjdAorICBGUk9NIHBnX2NsYXNzIFdIRVJFIHJl bG5hbWUgPSAnaGlfY2hhaW5jYXAnOworIGhlYXBfc3RheWVkX2NvbXBhY3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfY2hhaW5jYXA7 CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEyLiBSZWNsYW1hdGlvbiBvZiBhIGNv bGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBieSBwcnVuZQorLS0KKy0tIEEgZGVhZCBIT1Qt aW5kZXhlZCBjaGFpbiBtZW1iZXIgaXMgcHJlc2VydmVkIGF0IHBydW5lIHRpbWUgKGl0cyBz dGFsZSBsZWFmCistLSBtYXkgc3RpbGwgZXhpc3QpIGFuZCB0aGUgY2hhaW4gY29sbGFwc2Vz IHRvIGFuIExQX1JFRElSRUNUIGZvcndhcmRlcjsgdGhlCistLSBpbmRleCBjbGVhbnVwIHBh c3MgdGhlbiBzd2VlcHMgdGhlIHN0YWxlIGxlYWYsIGFuZCBhIHNlY29uZCBWQUNVVU0gcmVj bGFpbXMKKy0tIHRoZSBub3ctdW5yZWZlcmVuY2VkIG1lbWJlciBhbmQgcmUtcG9pbnRzIHRo ZSByZWRpcmVjdC4gIFNvIHRoZSBjaGFpbiBpcworLS0gZnVsbHkgcmVjbGFpbWVkIGFmdGVy IHRoZSBzZWNvbmQgVkFDVVVNLCBub3QgdGhlIGZpcnN0LgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVjbGFpbSAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaGlfcmVjbGFpbV9hX2lkeCBPTiBoaV9yZWNsYWltKGEpOworSU5TRVJUIElOVE8gaGlf cmVjbGFpbSBWQUxVRVMgKDEsIDEwMCk7CistLSBHZW5lcmF0ZSBhIGNvbGxhcHNlZCBjaGFp biB2aWEgYSBIT1QtaW5kZXhlZCB1cGRhdGUuCitVUERBVEUgaGlfcmVjbGFpbSBTRVQgYSA9 IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+PSAxIEFTIGhvdF9p bmRleGVkX3ByZXNlbnRfYmVmb3JlX3JlY2xhaW0KKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3Rf aW5kZXhlZF9zdGF0cygnaGlfcmVjbGFpbScpOworIGhvdF9pbmRleGVkX3ByZXNlbnRfYmVm b3JlX3JlY2xhaW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKKy0tIERlbGV0ZSB0aGUgbGl2ZSB0dXBsZS4gIFRoZSBmaXJzdCBWQUNV VU0gY29sbGFwc2VzIHRoZSBkZWFkIGNoYWluIGFuZCBzd2VlcHMKKy0tIHRoZSBzdGFsZSBs ZWFmOyB0aGUgc2Vjb25kIHJlY2xhaW1zIHRoZSBub3ctdW5yZWZlcmVuY2VkIG1lbWJlcnMu CitERUxFVEUgRlJPTSBoaV9yZWNsYWltIFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSBoaV9yZWNs YWltOworVkFDVVVNIGhpX3JlY2xhaW07CitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCBBUyBob3Rf aW5kZXhlZF9hZnRlcl9yZWNsYWltLAorICAgICAgIG5fY2hhaW5zIEFTIGNoYWluc19hZnRl cl9yZWNsYWltCisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3Jl Y2xhaW0nKTsKKyBob3RfaW5kZXhlZF9hZnRlcl9yZWNsYWltIHwgY2hhaW5zX2FmdGVyX3Jl Y2xhaW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgICAg MAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3JlY2xhaW07CistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDEzLiBQYWdlIHdpdGggYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVt YmVyIGlzIG5ldmVyIG1hcmtlZCBhbGwtdmlzaWJsZQorLS0KKy0tIHBydW5laGVhcCBkZWxp YmVyYXRlbHkgbGVhdmVzIFBEX0FMTF9WSVNJQkxFIGNsZWFyIG9uIGFueSBwYWdlIHRoYXQg c3RpbGwKKy0tIGNhcnJpZXMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyOiBhbiBp bmRleC1vbmx5IHNjYW4gbXVzdCBoZWFwLWZldGNoCistLSB0aHJvdWdoIHRoZSBjaGFpbiBz byB0aGUgcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyIHN0 YWxlIGJ0cmVlCistLSBlbnRyaWVzLgorLS0KKy0tIFdlIGZvcmNlIHRoZSBmcmVlemUgcGF0 aCB3aXRoIFZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGFuZAorLS0g dGhlbiByZWFkIHBkX2ZsYWdzIHZpYSBwYWdlaW5zcGVjdC5wYWdlX2hlYWRlci4gIFRoZSBw YWdlIG11c3Qgc3RpbGwgY2FycnkKKy0tIGEgSE9ULWluZGV4ZWQgbWVtYmVyIChuX2hvdF9p bmRleGVkID4gMCkgQU5EIG11c3Qgbm90IGhhdmUgUERfQUxMX1ZJU0lCTEUKKy0tICgweDAw MDQpLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdm0gKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhpX3ZtX2FfaWR4IE9OIGhpX3ZtKGEpOworSU5TRVJU IElOVE8gaGlfdm0gVkFMVUVTICgxLCAxKTsKKy0tIFR3byBIT1QtaW5kZXhlZCB1cGRhdGVz IGxlYXZlIGEgbXVsdGktaG9wIGNoYWluLCBzbyBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZAor LS0gbWVtYmVyIHJlbWFpbnMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmUsIHdoaWNoIGlzIHdo YXQgdGhpcyB0ZXN0IG5lZWRzLgorVVBEQVRFIGhpX3ZtIFNFVCBhID0gMiBXSEVSRSBpZCA9 IDE7CitVUERBVEUgaGlfdm0gU0VUIGEgPSAzIFdIRVJFIGlkID0gMTsKKy0tIEZvcmNlIHRo ZSBhbGwtdmlzaWJsZSBiaXQgZGVjaXNpb246IFZBQ1VVTSB3aXRoIERJU0FCTEVfUEFHRV9T S0lQUElORworLS0gY29uc2lkZXJzIGV2ZXJ5IHBhZ2U7IEZSRUVaRSBwdXNoZXMgaGludCBi aXRzIGhhcmQuICBBZnRlciB0aGlzLCBhbnkKKy0tIHBhZ2UgYmVhcmluZyBhIHByZXNlcnZl ZCBIT1QtaW5kZXhlZCBtZW1iZXIgbXVzdCBzdGlsbCByZXBvcnQgYWxsX3Zpc2libGUgPSAw LgorVkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgaGlfdm07CitTRUxF Q1Qgbl9ob3RfaW5kZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVkX3ByZXNlbnQKKyAgRlJPTSBw Z19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdm0nKTsKKyBob3RfaW5kZXhlZF9w cmVzZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBQRF9B TExfVklTSUJMRSA9IDB4MDAwNC4gIE11c3QgYmUgMCBvbiBhIHBhZ2Ugd2l0aCBhIHByZXNl cnZlZCBtZW1iZXIuCitTRUxFQ1QgKGZsYWdzICYgNCkgPSAwIEFTIG5vdF9tYXJrZWRfYWxs X3Zpc2libGUKKyAgRlJPTSBwYWdlX2hlYWRlcihnZXRfcmF3X3BhZ2UoJ2hpX3ZtJywgMCkp OworIG5vdF9tYXJrZWRfYWxsX3Zpc2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfdm07CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDE0LiBDeWNsZS1rZXkgZGVkdXA6IGNvbHVtbiByZW5hbWUgYSAtPiBiIC0+ IGEgc3RheXMgY29ycmVjdAorLS0KKy0tIEEgcmVuYW1lIGRvZXMgbm90IHJld3JpdGUgaGVh cCBvciBpbmRleCBlbnRyaWVzOyBpdCBvbmx5IHVwZGF0ZXMgdGhlCistLSBjYXRhbG9nLiAg VGhlIHJlbGNhY2hlIGludmFsaWRhdGlvbiBtdXN0IHRyaWdnZXIgYSBmcmVzaCBhdHRyaWJ1 dGUKKy0tIGJpdG1hcCBhbmQgdGhlIEhPVC1pbmRleGVkIHByZWRpY2F0ZSBtdXN0IGNvbXBh cmUgYXR0cmlidXRlICpudW1iZXJzKiwKKy0tIG5vdCBhdHRyaWJ1dGUgKm5hbWVzKi4gIEFm dGVyIHR3byByZW5hbWVzIHRoYXQgbmV0IHRvIGlkZW50aXR5LCBldmVyeQorLS0gc3Vic2Vx dWVudCBVUERBVEUgbXVzdCBjb250aW51ZSB0byBkcml2ZSB0aGUgSE9ULWluZGV4ZWQgcGF0 aC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2N5Y2xlICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9jeWNsZV9hX2lkeCBPTiBoaV9jeWNsZShhKTsK K0lOU0VSVCBJTlRPIGhpX2N5Y2xlIFZBTFVFUyAoMSwgMTAwKTsKKy0tIEN5Y2xlIHRoZSBj b2x1bW4gbmFtZSBhbmQgY29uZmlybSBib3RoIGludGVybWVkaWF0ZSBmb3JtcyBkcml2ZSBI T1QtaW5kZXhlZC4KK0FMVEVSIFRBQkxFIGhpX2N5Y2xlIFJFTkFNRSBDT0xVTU4gYSBUTyBi OworVVBEQVRFIGhpX2N5Y2xlIFNFVCBiID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2gg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaG90 X2lkeCA+IDAgQVMgaG90X2luZGV4ZWRfYWZ0ZXJfZmlyc3RfcmVuYW1lCisgIEZST00gZ2V0 X2hpX2NvdW50KCdoaV9jeWNsZScpOworIGhvdF9pbmRleGVkX2FmdGVyX2ZpcnN0X3JlbmFt ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitB TFRFUiBUQUJMRSBoaV9jeWNsZSBSRU5BTUUgQ09MVU1OIGIgVE8gYTsKK1VQREFURSBoaV9j eWNsZSBTRVQgYSA9IDMwMCBXSEVSRSBpZCA9IDE7CistLSBMb29rdXAgdmlhIHRoZSBpbmRl eCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlLCBub3QgYW55IG9mIHRoZQorLS0gcHJlLXJl bmFtZSB2YWx1ZXMuCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEg RlJPTSBoaV9jeWNsZSBXSEVSRSBhID0gMzAwOworIGlkIHwgIGEgIAorLS0tLSstLS0tLQor ICAxIHwgMzAwCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9NIGhpX2N5Y2xlIFdIRVJFIGEg PSAxMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNs ZSBXSEVSRSBhID0gMjAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2N5Y2xlOworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAxNS4gU3VtbWFyaXppbmctb25seSBjb2x1bW4gVVBEQVRFIHByb2R1Y2VzIENM QVNTSUMsIG5vdCBJTkRFWEVECistLQorLS0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSByZXR1 cm5zIEhFQVBfSEVBUF9PTkxZX1VQREFURSB3aGVuIGV2ZXJ5CistLSBtb2RpZmllZCBpbmRl eGVkIGF0dHJpYnV0ZSBpcyBjb3ZlcmVkIG9ubHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcy4K Ky0tIEEgQlJJTi1vbmx5IGNvbHVtbiBpcyB0aGUgY2Fub25pY2FsIGNhc2U6IHRoZSBCUklO IGluZGV4IGdldHMgYQorLS0gbmV3IHN1bW1hcnkgZW50cnkgdmlhIGFtaW5zZXJ0LCBidXQg bm8gcGVyLXVwZGF0ZSBidHJlZSBlbnRyeSBpcworLS0gbmVlZGVkIGFuZCBIT1QtaW5kZXhl ZCBkb2VzIG5vdCBmaXJlLiAgVGhlIHNpZ25hbCBpcworLS0gbl90dXBfaG90X3VwZCA+IDAg d2l0aCBuX3R1cF9ob3RfaW5kZXhlZF91cGQgdW5jaGFuZ2VkLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfYnJpbiAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIGJjb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUg SU5ERVggaGlfYnJpbl9pZHggT04gaGlfYnJpbiBVU0lORyBicmluKGJjb2wpOworSU5TRVJU IElOVE8gaGlfYnJpbiBWQUxVRVMgKDEsIDEwMCk7CistLSBDYXB0dXJlIHRoZSBIT1QtaW5k ZXhlZCBjb3VudGVyIGJlZm9yZSwgZHJpdmUgYSBCUklOLW9ubHkgdXBkYXRlLAorLS0gYW5k IGFzc2VydCB0aGF0IGNsYXNzaWMgSE9UIGFkdmFuY2VkIHdoaWxlIEhPVC1pbmRleGVkIGRp ZCBub3QuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIGhvdF9pZHggQVMgaG90X2lkeF9iZWZvcmUgRlJPTSBnZXRfaGlfY291 bnQoJ2hpX2JyaW4nKSBcZ3NldAorVVBEQVRFIGhpX2JyaW4gU0VUIGJjb2wgPSAyMDAgV0hF UkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCAoaG90IC0gMCkgPiAwIEFTIGNsYXNzaWNfaG90X2ZpcmVkLAor ICAgICAgIGhvdF9pZHggPSA6aG90X2lkeF9iZWZvcmUgQVMgaG90X2luZGV4ZWRfZGlkX25v dF9maXJlCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9icmluJyk7CisgY2xhc3NpY19ob3Rf ZmlyZWQgfCBob3RfaW5kZXhlZF9kaWRfbm90X2ZpcmUgCistLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICAgICAgICAgfCB0Ciso MSByb3cpCisKKy0tIFRoZSBCUklOIGluZGV4IHNlZXMgdGhlIG5ldyB2YWx1ZSB2aWEgYW1p bnNlcnQuCitTRUxFQ1QgYmNvbCBGUk9NIGhpX2JyaW4gV0hFUkUgaWQgPSAxOworIGJjb2wg CistLS0tLS0KKyAgMjAwCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfYnJpbjsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTYuIFVOSVFVRSBpbmRleCBvbiBhIHR5cGUgd2hl cmUgaW1hZ2UgZXF1YWxpdHkgIT0gb3BlcmF0b3IgZXF1YWxpdHkKKy0tCistLSBudW1lcmlj IDEuMCBhbmQgMS4wMCBhcmUgZXF1YWwgdW5kZXIgdGhlIGJ0cmVlIG9wY2xhc3MgYnV0IGhh dmUKKy0tIGRpZmZlcmVudCBvbi1kaXNrIGltYWdlcy4gIEEgSE9ULWluZGV4ZWQgdXBkYXRl IDEuMCAtPiAxLjAwIGluc2VydHMgYQorLS0gZnJlc2ggbGVhZiBjYXJyeWluZyB0aGUgbGl2 ZSBpbWFnZSBhbmQgbGVhdmVzIGEgc3RhbGUgbGVhZiBmb3IgMS4wCistLSAodGhlIGhvcCdz IG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBtYXJrcyBrIGNoYW5nZWQsIHNpbmNlIG1vZGlmaWVk LWNvbHVtbgorLS0gZGV0ZWN0aW9uIGlzIGltYWdlLWJhc2VkKS4gIEEgbGF0ZXIgSU5TRVJU IG9mIGEgdmFsdWUgZXF1YWwgdW5kZXIgdGhlCistLSBvcGNsYXNzIG11c3Qgc3RpbGwgYmUg ZGV0ZWN0ZWQgYXMgYSBkdXBsaWNhdGU6IHRoZSB1bmlxdWUgY2hlY2sgcmVhY2hlcworLS0g dGhlIGxpdmUgdHVwbGUgdGhyb3VnaCB0aGUgZnJlc2ggbGVhZiwgd2hpY2ggcG9pbnRzIGRp cmVjdGx5IGF0IGl0IChubyBob3AKKy0tIGFmdGVyIGl0LCBzbyB0aGUgb3ZlcmxhcCBpcyBl bXB0eSBhbmQgdGhlIGxlYWYgaXMgYSBnZW51aW5lIGNvbmZsaWN0KTsgdGhlCistLSBzdGFs ZSAxLjAgbGVhZiBpcyBza2lwcGVkIGJlY2F1c2UgdGhlIGstY2hhbmdpbmcgaG9wIG92ZXJs YXBzIHRoZSB1bmlxdWUKKy0tIGluZGV4J3MgYXR0cmlidXRlLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdW51bSAoayBudW1lcmljIFVOSVFVRSwgaiBp bnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfdW51bV9qIE9O IGhpX3VudW0oaik7ICAgICAgICAgICAgIC0tIDJuZCBpbmRleGVkIGF0dHIsIGtlcHQgZml4 ZWQKK0lOU0VSVCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEwMCk7CitVUERBVEUgaGlf dW51bSBTRVQgayA9IDEuMDAgV0hFUkUgaiA9IDEwMDsgICAgICAgIC0tIEhPVC1pbmRleGVk OiAxLjAgLT4gMS4wMAorU0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2lu ZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdW51bScp OworIG1hZGVfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKKy0tIEEgbnVtZXJpY2FsbHktZXF1YWwgaW5zZXJ0IG11c3QgY29uZmxpY3QgKHRoZSBm cmVzaCBsZWFmIGNhdGNoZXMgaXQpOgorSU5TRVJUIElOVE8gaGlfdW51bSBWQUxVRVMgKDEu MCwgMSk7ICAgICAgICAgICAgICAtLSBleHBlY3QgZHVwbGljYXRlIGtleSBlcnJvcgorRVJS T1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJo aV91bnVtX2tfa2V5IgorREVUQUlMOiAgS2V5IChrKT0oMS4wKSBhbHJlYWR5IGV4aXN0cy4K Ky0tIEEgZ2VudWluZWx5IGRpZmZlcmVudCB2YWx1ZSBpcyBhY2NlcHRlZDoKK0lOU0VSVCBJ TlRPIGhpX3VudW0gVkFMVUVTICgyLjAsIDIpOworU0VMRUNUIGssIGogRlJPTSBoaV91bnVt IE9SREVSIEJZIGo7CisgIGsgICB8ICBqICAKKy0tLS0tLSstLS0tLQorICAyLjAgfCAgIDIK KyAxLjAwIHwgMTAwCisoMiByb3dzKQorCitEUk9QIFRBQkxFIGhpX3VudW07CistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE3LiBDUkVBVEUgSU5ERVggYW5kIFJFSU5ERVggb3Zl ciBsaXZlIEhPVC1pbmRleGVkIGNoYWlucworLS0KKy0tIEEgZnJlc2hseSBidWlsdCBvciBy ZWJ1aWx0IGluZGV4IG11c3QgcmVmbGVjdCBjdXJyZW50IHZhbHVlcywgbmV2ZXIgYQorLS0g c3RhbGUgY2hhaW4gbWVtYmVyOiB0aGUgYnVpbGQgc2NhbnMgbGl2ZSB0dXBsZXMgb25seSBh bmQgcG9pbnRzIGVhY2gKKy0tIEhPVC1pbmRleGVkIGxpdmUgdHVwbGUncyBlbnRyeSBhdCBp dHMgb3duIFRJRCwgc28gdGhlIG5ldyBlbnRyaWVzIGhhdmUgbm8KKy0tIGhvcCBhZnRlciB0 aGVtIGFuZCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGtlZXBzIHRoZW0uCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yZWluZGV4IChpZCBpbnQg UFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NS RUFURSBJTkRFWCBoaV9yZWluZGV4X2EgT04gaGlfcmVpbmRleChhKTsKK0lOU0VSVCBJTlRP IGhpX3JlaW5kZXggU0VMRUNUIGcsIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikg ZzsKK1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAg LS0gSE9ULWluZGV4ZWQgb24gYQorVVBEQVRFIGhpX3JlaW5kZXggU0VUIGEgPSBhICsgMTAw OyAgICAgICAgICAgICAgICAtLSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9o b3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9u X2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWluZGV4Jyk7CisgbWFkZV9ob3RfaW5kZXhlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gQnVpbGQgYSBORVcgaW5k ZXggYW5kIFJFSU5ERVggdGhlIGV4aXN0aW5nIG9uZSBvdmVyIHRoZSBsaXZlIGNoYWlucy4K K0NSRUFURSBJTkRFWCBoaV9yZWluZGV4X2IgT04gaGlfcmVpbmRleChiKTsKK1JFSU5ERVgg SU5ERVggaGlfcmVpbmRleF9hOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNU IGlkLCBhIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gMjA0OyAgICAgICAtLSBjdXJyZW50 IHZhbHVlIC0+IGlkIDQKKyBpZCB8ICBhICAKKy0tLS0rLS0tLS0KKyAgNCB8IDIwNAorKDEg cm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yZWluZGV4IFdIRVJFIGEgPSA0OyAg ICAgIC0tIG9ic29sZXRlIHZhbHVlIC0+IDAKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAor KDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9yZWluZGV4IFdIRVJFIGIgPSAyOyAgICAg ICAgICAgIC0tIHZpYSBmcmVzaGx5IGJ1aWx0IGluZGV4IC0+IDIKKyBpZCAKKy0tLS0KKyAg MgorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfcmVp bmRleDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTguIERST1AgZXZlcnkgaW5k ZXggb3ZlciBsaXZlIEhPVC1pbmRleGVkIGNoYWlucywgdGhlbiBWQUNVVU0KKy0tCistLSBB ZnRlciBhbGwgaW5kZXhlcyBhcmUgZHJvcHBlZCwgaGVhcCBwYWdlcyBtYXkgc3RpbGwgY2Fy cnkgcHJlc2VydmVkCistLSBIT1QtaW5kZXhlZCBtZW1iZXJzIGxlZnQgYnkgZWFybGllciB1 cGRhdGVzLiAgVkFDVVVNIG9mIHN1Y2ggYSBuby1pbmRleAorLS0gcmVsYXRpb24gbXVzdCBj b21wbGV0ZSB3aXRob3V0IGVycm9yLCBhbmQgcmVhZHMgbXVzdCBzdGF5IGNvcnJlY3Qgdmlh IHRoZQorLS0gcmVkaXJlY3QgZm9yd2FyZGVycy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX2Ryb3BpZHggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfZHJvcGlkeF9hIE9O IGhpX2Ryb3BpZHgoYSk7CitJTlNFUlQgSU5UTyBoaV9kcm9waWR4IFNFTEVDVCBnLCBnIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYpIGc7CitVUERBVEUgaGlfZHJvcGlkeCBTRVQgYSA9 IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBo aV9kcm9waWR4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4g bG9uZ2VyIGNoYWlucworU0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2lu ZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfZHJvcGlk eCcpOworIG1hZGVfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKKy0tIERyb3AgZXZlcnkgaW5kZXgsIGxlYXZpbmcgcHJlc2VydmVkIEhPVC1pbmRl eGVkIG1lbWJlcnMgd2l0aCBubyBpbmRleCB0byBzd2VlcC4KK0RST1AgSU5ERVggaGlfZHJv cGlkeF9hOworQUxURVIgVEFCTEUgaGlfZHJvcGlkeCBEUk9QIENPTlNUUkFJTlQgaGlfZHJv cGlkeF9wa2V5OworLS0gTXVzdCBub3QgY3Jhc2ggb24gdGhlIG5vLWluZGV4IHBhdGg7IHR3 byBwYXNzZXMgZXhlcmNpc2UgdGhlIHNlY29uZC1wYXNzCistLSByZWNsYWltIGd1YXJkIGFz IHdlbGwuCitWQUNVVU0gaGlfZHJvcGlkeDsKK1ZBQ1VVTSBoaV9kcm9waWR4OworLS0gUmVh ZHMgcmVtYWluIGNvcnJlY3QgYWZ0ZXIgdGhlIGluZGV4ZXMgYXJlIGdvbmUuCitTRUxFQ1Qg aWQsIGEgRlJPTSBoaV9kcm9waWR4IE9SREVSIEJZIGlkOworIGlkIHwgIGEgIAorLS0tLSst LS0tLQorICAxIHwgMjAxCisgIDIgfCAyMDIKKyAgMyB8IDIwMworICA0IHwgMjA0CisgIDUg fCAyMDUKKyAgNiB8IDIwNgorKDYgcm93cykKKworRFJPUCBUQUJMRSBoaV9kcm9waWR4Owor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOS4gUmUtY29sbGFwc2Ugb2YgYSBkYXRh LXJlZGlyZWN0IGNoYWluIGFjcm9zcyBwYXJ0aWFsIFZBQ1VVTXMKKy0tCistLSBBIGNoYWlu IHRoYXQgY29sbGFwc2VzIHRvIGEgSE9ULWluZGV4ZWQgZGF0YSByZWRpcmVjdCwgaXMgdmFj dXVtZWQgd2l0aAorLS0gSU5ERVhfQ0xFQU5VUCBvZmYgKHNvIHRoZSBzdGFsZSBsZWF2ZXMg YW5kIHRoZSByZWRpcmVjdCBzdXJ2aXZlKSwgdGhlbgorLS0gcmVjZWl2ZXMgZnVydGhlciBI T1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgcmUtY29sbGFwc2UgdGhlIGNoYWluIGFuZAorLS0g cmUtcG9pbnQgdGhlIHJlZGlyZWN0IGF0IGEgbmV3IGxpdmUgdHVwbGUsIG11c3Qgbm90IGxl YXZlIHRoZSByZWRpcmVjdAorLS0gZGFuZ2xpbmcuICBBIHN1YnNlcXVlbnQgZnVsbCBWQUNV VU0gbXVzdCBjb21wbGV0ZSB3aXRob3V0IGVycm9yLCBsZWF2ZSB0aGUKKy0tIGhlYXAgY29u c2lzdGVudCAodmVyaWZ5X2hlYXBhbSByZXBvcnRzIG5vdGhpbmcpLCBhbmQgcmVhZHMgbXVz dCBzdGF5CistLSBjb3JyZWN0LiAgKFJlZ3Jlc3Npb246IGFuIGVhcmxpZXIgcmV2aXNpb24g Y3Jhc2hlZCByZWNsYWltaW5nIGEgbWlkLWNoYWluCistLSBtZW1iZXIgd2hpbGUgYSBkYXRh IHJlZGlyZWN0IHN0aWxsIHBvaW50ZWQgcGFzdCBpdC4pCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBhbWNoZWNrOworQ1JFQVRF IFRBQkxFIGhpX3JlY29sbGFwc2UgKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQpIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcmVjb2xsYXBzZV9hIE9OIGhp X3JlY29sbGFwc2UoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWNvbGxhcHNlIFZBTFVFUyAoMSwg MSk7CistLSBGaXJzdCBjaGFpbjogdHdvIEhPVC1pbmRleGVkIHVwZGF0ZXMsIHRoZW4gcHJ1 bmUgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBsZWF2aW5nIHRoZSBzdGFsZSBidHJl ZSBsZWF2ZXMgaW4gcGxhY2UgKElOREVYX0NMRUFOVVAgb2ZmKS4KK1VQREFURSBoaV9yZWNv bGxhcHNlIFNFVCBhID0gMiBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfcmVjb2xsYXBzZSBT RVQgYSA9IDMgV0hFUkUgaWQgPSAxOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlf cmVjb2xsYXBzZTsKKy0tIFJlLWNvbGxhcHNlOiBtb3JlIEhPVC1pbmRleGVkIHVwZGF0ZXMg ZXh0ZW5kIHRoZSBjaGFpbiBwYXN0IHRoZSByZWRpcmVjdAorLS0gdGFyZ2V0OyB0aGUgbmV4 dCBwcnVuZSByZS1wb2ludHMgdGhlIGRhdGEgcmVkaXJlY3QgYXQgdGhlIG5ldyBmaXJzdCBs aXZlCistLSB0dXBsZSBhbmQgZXh0ZW5kcyBpdHMgdW5pb24uCitVUERBVEUgaGlfcmVjb2xs YXBzZSBTRVQgYSA9IDQgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VU IGEgPSA1IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3Jl Y29sbGFwc2U7CistLSBGdWxsIHZhY3V1bSBub3cgcmVjbGFpbXMgdGhlIGRlYWQgY2hhaW47 IHRoZSByZS1wb2ludGVkIHJlZGlyZWN0IG11c3Qgbm90CistLSBkYW5nbGUuICBUd28gcGFz c2VzIGFsc28gZXhlcmNpc2UgdGhlIHJlZGlyZWN0IHJlLXBvaW50IHNlY29uZCBwYXNzLgor VkFDVVVNIGhpX3JlY29sbGFwc2U7CitWQUNVVU0gaGlfcmVjb2xsYXBzZTsKKy0tIEhlYXAg bXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lzdGVudCAobm8gcm93cyA9PSBubyBjb3JydXB0 aW9uKS4KK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfcmVjb2xsYXBzZScpOwor IGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLSstLS0tLQorKDAgcm93cykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VM RUNUIGlkLCBhIEZST00gaGlfcmVjb2xsYXBzZSBXSEVSRSBhID0gNTsgICAgIC0tIGN1cnJl bnQgdmFsdWUgLT4gaWQgMQorIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCA1CisoMSByb3cp CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUgYSA9IDM7ICAt LSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJv dykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWNv bGxhcHNlIE9SREVSIEJZIGlkOworIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCA1CisoMSBy b3cpCisKK0RST1AgVEFCTEUgaGlfcmVjb2xsYXBzZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gMjAuIEluZGV4IGRlbGV0aW9uIG92ZXIgYW4gZW50cnkgdGhhdCBwb2ludHMg YXQgYSBkYXRhLXJlZGlyZWN0IHJvb3QKKy0tCistLSBBIGRhdGEgcmVkaXJlY3QgaXMgYW4g TFBfUkVESVJFQ1QgdGhhdCBjYXJyaWVzIGEgYml0bWFwLCBzbyBpdCByZXBvcnRzCistLSBs cF9sZW4gPiAwIChJdGVtSWRIYXNTdG9yYWdlIHRydWUpIGV2ZW4gdGhvdWdoIGl0IGlzIG5v dCBhIG5vcm1hbCB0dXBsZS4KKy0tIGluZGV4X2RlbGV0ZV9jaGVja19odGlkIG11c3QgdHJl YXQgaXQgYXMgYSByZWRpcmVjdCwgbm90IHJlYWQgaXRzIGJsb2IgYXMgYQorLS0gSGVhcFR1 cGxlSGVhZGVyLiAgUmVwcm9kdWNlOiBjb2xsYXBzZSBhIGNoYWluIHJvb3QgdG8gYSBkYXRh IHJlZGlyZWN0IHdoaWxlCistLSBrZWVwaW5nIHRoZSBzdGFsZSBsZWFmIHRoYXQgcG9pbnRz IGF0IGl0IChJTkRFWF9DTEVBTlVQIG9mZiksIHRoZW4gaW5zZXJ0CistLSBtYW55IGR1cGxp Y2F0ZXMgb2YgdGhlIHN0YWxlIGtleSBzbyBidHJlZSBib3R0b20tdXAgZGVsZXRpb24gcnVu cworLS0gaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzIG92ZXIgdGhhdCBzdGFsZSBlbnRyeS4K Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2lkZGVsIChpZCBp bnQsIGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2lk ZGVsX2EgT04gaGlfaWRkZWwoYSk7CitJTlNFUlQgSU5UTyBoaV9pZGRlbCBWQUxVRVMgKDEs IDEpOworVVBEQVRFIGhpX2lkZGVsIFNFVCBhID0gYSArIDEgV0hFUkUgaWQgPSAxOyAgICAg ICAgICAtLSBIT1QtaW5kZXhlZAorVVBEQVRFIGhpX2lkZGVsIFNFVCBhID0gYSArIDEgV0hF UkUgaWQgPSAxOyAgICAgICAgICAtLSBtdWx0aS1ob3AgY2hhaW4KK1ZBQ1VVTSAoSU5ERVhf Q0xFQU5VUCBvZmYpIGhpX2lkZGVsOyAgICAgICAgICAgICAgICAgLS0gcm9vdCAtPiBkYXRh IHJlZGlyZWN0LCBrZWVwIHN0YWxlIGE9MSBsZWFmCistLSBNYW55IGR1cGxpY2F0ZXMgb2Yg dGhlIHN0YWxlIGtleSBmaWxsIHRoZSBsZWFmIGFuZCB0cmlnZ2VyIGJvdHRvbS11cAorLS0g ZGVsZXRpb24sIHdoaWNoIGZlZWRzIHRoZSBzdGFsZSBhPTEgZW50cnkgKGh0aWQgLT4gdGhl IGRhdGEtcmVkaXJlY3Qgcm9vdCkKKy0tIHRvIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcy4g IE11c3Qgbm90IGNyYXNoIG9yIG1pc3JlYWQgdGhlIGJsb2IuCitJTlNFUlQgSU5UTyBoaV9p ZGRlbCBTRUxFQ1QgZywgMSBGUk9NIGdlbmVyYXRlX3NlcmllcygyLCAzMDAwKSBnOworVkFD VVVNIGhpX2lkZGVsOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9pZGRlbCcp OworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLSstLS0tLQorKDAgcm93cykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VMRUNUIGlkLCBhIEZST00gaGlfaWRkZWwgV0hFUkUgaWQgPSAxOyAgICAgICAgICAgICAt LSBjdXJyZW50IHZhbHVlIC0+IGEgPSAzCisgaWQgfCBhIAorLS0tLSstLS0KKyAgMSB8IDMK KygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2lkZGVs OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMS4gQSBjaGFuZ2UgdG8gYSBjb2x1 bW4gY292ZXJlZCBieSBhIG5vbi1idHJlZSBpbmRleCBBTSBpcyBIT1QtaW5kZXhlZAorLS0K Ky0tIEEgSE9ULWluZGV4ZWQgdXBkYXRlIGxlYXZlcyBhIHN0YWxlIHByZS11cGRhdGUgbGVh ZiB0aGF0IHRoZSByZWFkIHNpZGUKKy0tIGZpbHRlcnMgdmlhIHRoZSBjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXAsIHdoaWNoIGlzIGFjY2Vzcy1tZXRob2QgYWdub3N0aWMuCistLSBBIGNv bHVtbiBjb3ZlcmVkIGJ5IGEgbm9uLWJ0cmVlIGluZGV4IChoZXJlIGEgR2lTVCBpbmRleCBv biBhIHBvaW50IGNvbHVtbikKKy0tIGlzIHRoZXJlZm9yZSBIT1QtaW5kZXhlZCBsaWtlIGFu eSBvdGhlciwgYW5kIHRoZSBHaVNUIGluZGV4IHN0aWxsIHJldHVybnMKKy0tIGNvcnJlY3Qg cmVzdWx0cyBhY3Jvc3MgdGhlIGNoYWluLiAgQSBjaGFuZ2UgdG8gYSBidHJlZS1vbmx5IGNv bHVtbiBvbiB0aGUKKy0tIHNhbWUgdGFibGUgaXMgbGlrZXdpc2UgSE9ULWluZGV4ZWQuCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9ub25idHJlZSAoaWQg aW50IFBSSU1BUlkgS0VZLCB0YWcgaW50LCBwIHBvaW50KQorICAgIFdJVEggKGZpbGxmYWN0 b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfbm9uYnRyZWVfdGFnIE9OIGhpX25vbmJ0cmVl ICh0YWcpOyAgICAgICAgICAtLSBidHJlZSBpbmRleAorQ1JFQVRFIElOREVYIGhpX25vbmJ0 cmVlX3AgT04gaGlfbm9uYnRyZWUgVVNJTkcgZ2lzdCAocCk7ICAgLS0gR2lTVCwgbm9uLWJ0 cmVlCitJTlNFUlQgSU5UTyBoaV9ub25idHJlZSBTRUxFQ1QgZywgZywgcG9pbnQoZywgZykK KyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGc7CistLSBDaGFuZ2UgdGhlIEdp U1QtY292ZXJlZCBjb2x1bW4gZmlyc3Q6IEhPVC1pbmRleGVkIChob3RfaWR4ID0gMjAwKS4K K1VQREFURSBoaV9ub25idHJlZSBTRVQgcCA9IHBvaW50KHBbMF0gKyAxMDAwLCBwWzFdICsg MTAwMCk7CitTRUxFQ1QgaG90X2lkeCBBUyBnaXN0X2NvbF9ob3RfaW5kZXhlZCBGUk9NIGdl dF9oaV9jb3VudCgnaGlfbm9uYnRyZWUnKTsKKyBnaXN0X2NvbF9ob3RfaW5kZXhlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgIDIwMAorKDEgcm93KQor CistLSBUaGUgR2lTVCBpbmRleCBtdXN0IHJldHVybiBjb3JyZWN0IHJlc3VsdHM6IHRoZSBv bGQgcG9zaXRpb25zIGFyZSBnb25lIGFuZAorLS0gZXZlcnkgcm93IGlzIGZvdW5kIGF0IGl0 cyBuZXcgcG9zaXRpb24gKG5vIHN0YWxlIGxlYWYgc3VyZmFjZXMgYW4gb2xkIGtleSkuCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgYXRfb2xkX3Bv c2l0aW9ucworICAgIEZST00gaGlfbm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQoMCwg MCksIHBvaW50KDMwMCwgMzAwKSk7CisgYXRfb2xkX3Bvc2l0aW9ucyAKKy0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCop IEFTIGF0X25ld19wb3NpdGlvbnMKKyAgICBGUk9NIGhpX25vbmJ0cmVlIFdIRVJFIHAgPEAg Ym94KHBvaW50KDEwMDAsIDEwMDApLCBwb2ludCgxMzAwLCAxMzAwKSk7CisgYXRfbmV3X3Bv c2l0aW9ucyAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyMDAKKygxIHJv dykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CistLSBDaGFuZ2luZyB0aGUgYnRyZWUtb25s eSBjb2x1bW4gKHAgdW5jaGFuZ2VkKSBzdGF5cyBIT1QtaW5kZXhlZC4KK1VQREFURSBoaV9u b25idHJlZSBTRVQgdGFnID0gdGFnICsgMTAwMDsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBi dHJlZV9jb2xfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX25vbmJ0cmVl Jyk7CisgYnRyZWVfY29sX2lzX2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfbm9uYnRyZWU7CistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIyLiBBQkEgb24gYSB1bmlxdWUga2V5IGFjcm9zcyB0 d28gZGlzdGluY3QgbGl2ZSByb3dzOiBhIGtleSBjeWNsZWQgYXdheQorLS0gYW5kIGJhY2sg bXVzdCBzdGlsbCBjb2xsaWRlIHdpdGggYW5vdGhlciByb3cgdGhhdCBob2xkcyBpdC4gIFRo ZSBzdGFsZQorLS0gbGVhdmVzIGxlZnQgYnkgdGhlIGN5Y2xlIG11c3Qgbm90IGxldCBhIGdl bnVpbmUgZHVwbGljYXRlIHNsaXAgcGFzdCB0aGUKKy0tIHVuaXF1ZW5lc3MgY2hlY2sgLS0g dGhlIHJlYWQtc2lkZSByZWNoZWNrIGNvbXBhcmVzIHRoZSBsaXZlIGtleSwgbm90IGp1c3QK Ky0tIGEgY2hhbmdlZC1hdHRyaWJ1dGUgYml0bWFwLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfYWJhIChrIGludCwgdiBpbnQpIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7 CitDUkVBVEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhp X2FiYSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKy0tIEN5Y2xlIHJvdzEncyB1bmlxdWUg a2V5IDEgLT4gMyAtPiAxICh2IHVuY2hhbmdlZCwgc28gZWFjaCBzdGVwIGlzCistLSBIT1Qt aW5kZXhlZCBhbmQgbGVhdmVzIHN0YWxlIGVudHJpZXMgaW4gaGlfYWJhX2spLgorVVBEQVRF IGhpX2FiYSBTRVQgayA9IDMgV0hFUkUgdiA9IDEwOworVVBEQVRFIGhpX2FiYSBTRVQgayA9 IDEgV0hFUkUgdiA9IDEwOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGN5Y2xlZF9ob3RfaW5k ZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfYWJhJyk7CisgY3ljbGVkX2hvdF9pbmRleGVk IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIHJvdzEgaXMgbGl2 ZSBhdCBrID0gMSBhZ2Fpbi4gIE1vdmluZyByb3cyIG9udG8gayA9IDEgbXVzdCByYWlzZSBh IHVuaXF1ZQorLS0gdmlvbGF0aW9uIGRlc3BpdGUgdGhlIHN0YWxlICcxJyBsZWF2ZXMgZnJv bSB0aGUgY3ljbGUuCitVUERBVEUgaGlfYWJhIFNFVCBrID0gMSBXSEVSRSB2ID0gMjA7CitF UlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQg ImhpX2FiYV9rIgorREVUQUlMOiAgS2V5IChrKT0oMSkgYWxyZWFkeSBleGlzdHMuCitEUk9Q IFRBQkxFIGhpX2FiYTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjMuIFBhcnRp YWwgaW5kZXggd2hvc2UgcHJlZGljYXRlIHJlZmVyZW5jZXMgYSBub24ta2V5IGNvbHVtbi4g IEZsaXBwaW5nIHRoZQorLS0gcm93IG91dCBvZiB0aGUgcHJlZGljYXRlIHdoaWxlIGxlYXZp bmcgdGhlIGluZGV4ZWQga2V5IHVuY2hhbmdlZCBpcworLS0gSE9ULWluZGV4ZWQ6IHRoZSBw cmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhlIGluZGV4J3MgYXR0cmlidXRlIHNldCwg c28KKy0tIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMgdGhlIG5vdy1zdGFs ZSBwYXJ0aWFsLWluZGV4IGVudHJ5IG9uIHJlYWQKKy0tIChubyB2YWx1ZSByZWNoZWNrIGlz IGludm9sdmVkKS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhp X3BhcnRwcmVkIChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCBhY3RpdmUgYm9vbGVhbikK KyAgICBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRwcmVk X2sgT04gaGlfcGFydHByZWQgKGspIFdIRVJFIGFjdGl2ZTsKK0lOU0VSVCBJTlRPIGhpX3Bh cnRwcmVkIFZBTFVFUyAoMSwgMTAwLCB0cnVlKTsKKy0tIEZsaXAgdGhlIHByZWRpY2F0ZSBj b2x1bW4gJ2FjdGl2ZScgdHJ1ZSAtPiBmYWxzZTsgdGhlIGluZGV4IGtleSBrIGlzCistLSB1 bmNoYW5nZWQuICBUaGUgcm93IG5vIGxvbmdlciBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwg c28gaXRzIHBhcnRpYWwtaW5kZXgKKy0tIGVudHJ5IG11c3QgYmUgcmVtb3ZlZCwgbm90IGxl ZnQgcG9pbnRpbmcgaW50byB0aGUgY2hhaW4uCitVUERBVEUgaGlfcGFydHByZWQgU0VUIGFj dGl2ZSA9IGZhbHNlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaG90LCBob3RfaWR4IEZST00gZ2V0 X2hpX2NvdW50KCdoaV9wYXJ0cHJlZCcpOworIGhvdCB8IGhvdF9pZHggCistLS0tLSstLS0t LS0tLS0KKyAgIDEgfCAgICAgICAxCisoMSByb3cpCisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4 IG11c3Qgbm90IHN1cmZhY2UgdGhlIHJvdyBub3cgdGhhdCBhY3RpdmUgPSBmYWxzZS4KKy0t IEEgcXVlcnkgd2hvc2UgcXVhbCBleGFjdGx5IG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGlj YXRlIHVzZXMgdGhlIGluZGV4CistLSB3aXRob3V0IHJlLWZpbHRlcmluZyAnYWN0aXZlJyBv biB0aGUgaGVhcCwgc28gYSBzdGFsZSBlbnRyeSB3b3VsZCBzdXJmYWNlLgorU0VUIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBhY3RpdmU7 CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBT Y2FuIHVzaW5nIGhpX3BhcnRwcmVkX2sgb24gaGlfcGFydHByZWQKKygxIHJvdykKKworU0VM RUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUgayA9IDEwMCBBTkQgYWN0aXZlOworIGlk IAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUg YWN0aXZlOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfcGFydHByZWQ7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI0LiBSZWNsYWltICsgc3R1YiBtaXguICBS ZXBlYXRlZCB1cGRhdGVzIG9mIGNvbHVtbiBhIGZvbGxvd2VkIGJ5IGFuIHVwZGF0ZQorLS0g b2YgY29sdW1uIGIgYnVpbGQgYSBjaGFpbiB3aG9zZSBwcnVuZSByZWNsYWltcyB0aGUgbWVt YmVycyB3aG9zZSBjaGFuZ2Ugd2FzCistLSBzdXBlcnNlZGVkIChhIGNoYW5nZWQgYWdhaW4p IGFuZCBrZWVwcyBzdHVicyBmb3IgdGhvc2UgdGhhdCB3ZXJlIG5vdCwgc28gYQorLS0gcm9v dCByZWRpcmVjdCBlbmRzIHVwIHBvaW50aW5nIGF0IGEgc3R1YiBhbmQgYSBsYXRlciB3YWxr IGNyb3NzZXMgbWlkLWNoYWluCistLSBzdHVicy4gIFJlYWRzIHRocm91Z2ggZWFjaCBpbmRl eCBhbmQgYW1jaGVjayBtdXN0IHN0YXkgY29ycmVjdCBhY3Jvc3MgdGhlCistLSBjb2xsYXBz ZSwgYW5kIGEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rpbmcgc3R1YnMgd2l0 aG91dCBzZXZlcmluZworLS0gdGhlIGNoYWluLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfc3R1Ym1peCAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwg YiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfc3R1Ym1p eF9hIE9OIGhpX3N0dWJtaXggKGEpOworQ1JFQVRFIElOREVYIGhpX3N0dWJtaXhfYiBPTiBo aV9zdHVibWl4IChiKTsKK0lOU0VSVCBJTlRPIGhpX3N0dWJtaXggVkFMVUVTICgxLCAxMCwg MTAwKTsKK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTEgV0hFUkUgaWQgPSAxOyAgIC0t IGNoYW5nZXMgYQorVVBEQVRFIGhpX3N0dWJtaXggU0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7 ICAgLS0gY2hhbmdlcyBhIGFnYWluIChzdXBlcnNlZGVzKQorVVBEQVRFIGhpX3N0dWJtaXgg U0VUIGIgPSAxMDEgV0hFUkUgaWQgPSAxOyAgLS0gY2hhbmdlcyBiCitWQUNVVU0gaGlfc3R1 Ym1peDsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2Nh biA9IG9mZjsKK1NFTEVDVCBpZCwgYSwgYiBGUk9NIGhpX3N0dWJtaXggV0hFUkUgYSA9IDEy OyAgIC0tIGN1cnJlbnQgYQorIGlkIHwgYSAgfCAgYiAgCistLS0tKy0tLS0rLS0tLS0KKyAg MSB8IDEyIHwgMTAxCisoMSByb3cpCisKK1NFTEVDVCBpZCwgYSwgYiBGUk9NIGhpX3N0dWJt aXggV0hFUkUgYiA9IDEwMTsgIC0tIGN1cnJlbnQgYgorIGlkIHwgYSAgfCAgYiAgCistLS0t Ky0tLS0rLS0tLS0KKyAgMSB8IDEyIHwgMTAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9N IGhpX3N0dWJtaXggV0hFUkUgYSA9IDEwOyAgICAgICAgIC0tIHN0YWxlIGE6IDAgcm93cwor IGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNF VCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfc3R1 Ym1peCcpOyAgICAgIC0tIG5vIGNvcnJ1cHRpb24gYWNyb3NzIHN0dWJzCisgYmxrbm8gfCBv ZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t CisoMCByb3dzKQorCistLSBBIHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5n IHN0dWJzIChubyBwcmlvclhtYXggc2V2ZXIpLgorVVBEQVRFIGhpX3N0dWJtaXggU0VUIGEg PSAxMyBXSEVSRSBpZCA9IDE7CitWQUNVVU0gaGlfc3R1Ym1peDsKK1NFTEVDVCBpZCwgYSwg YiBGUk9NIGhpX3N0dWJtaXggV0hFUkUgYSA9IDEzOworIGlkIHwgYSAgfCAgYiAgCistLS0t Ky0tLS0rLS0tLS0KKyAgMSB8IDEzIHwgMTAxCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g dmVyaWZ5X2hlYXBhbSgnaGlfc3R1Ym1peCcpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVt IHwgbXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKwor RFJPUCBUQUJMRSBoaV9zdHVibWl4OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAy My4gRXhjbHVzaW9uLWNvbnN0cmFpbnQgdGFibGVzIGFyZSBIT1QtaW5kZXhlZC1lbGlnaWJs ZS4KKy0tCistLSBBbiBleGNsdXNpb24gY29uc3RyYWludCBpcyBlbmZvcmNlZCBieSBjaGVj a19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQsCistLSB3aGljaCByZWNoZWNrcyBl YWNoIGNhbmRpZGF0ZSBhZ2FpbnN0IHRoZSBsaXZlIHR1cGxlJ3MgY3VycmVudCBpbmRleC1m b3JtCistLSB3aXRoIHRoZSBjb25zdHJhaW50J3Mgb3duIG9wZXJhdG9ycywgc28gYSBzdGFs ZSBlbnRyeSBsZWZ0IGJ5IGEgSE9ULWluZGV4ZWQKKy0tIHVwZGF0ZSBpcyBza2lwcGVkIHdo aWxlIHRoZSBsaXZlIGtleSBhbHdheXMgaGFzIGl0cyBvd24gZW50cnkuICBVcGRhdGluZyBh CistLSBub24tY29uc3RyYWluZWQgaW5kZXhlZCBjb2x1bW4gaXMgSE9ULWluZGV4ZWQgKHRo ZSBHaVNUIGV4Y2x1c2lvbiBpbmRleCBpcworLS0gc2tpcHBlZCksIGFuZCB0aGUgY29uc3Ry YWludCBzdGF5cyBjb3JyZWN0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUg VEFCTEUgaGlfZXhjbCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRhZyBpbnQs CisgICAgZHVyaW5nIGludDRyYW5nZSwKKyAgICBFWENMVURFIFVTSU5HIGdpc3QgKGR1cmlu ZyBXSVRIICYmKQorKSBXSVRIIChmaWxsZmFjdG9yID0gMTApOworQ1JFQVRFIElOREVYIGhp X2V4Y2xfdGFnIE9OIGhpX2V4Y2wodGFnKTsKK0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVT ICgxLCAxMDAsIGludDRyYW5nZSgxLCAxMCkpLCAoMiwgMjAwLCBpbnQ0cmFuZ2UoMjAsIDMw KSk7CistLSBVcGRhdGUgYSBub24tY29uc3RyYWluZWQgaW5kZXhlZCBjb2x1bW46IEhPVC1p bmRleGVkIChHaVNUIGV4Y2x1c2lvbiBpbmRleAorLS0gYW5kIFBLIHNraXBwZWQpLCBhbmQg dGhlIGV4Y2x1c2lvbiBjb25zdHJhaW50IGlzIHN0aWxsIGVuZm9yY2VkLgorVVBEQVRFIGhp X2V4Y2wgU0VUIHRhZyA9IHRhZyArIDEgV0hFUkUgaWQgPSAxOworU0VMRUNUIGhvdF9pZHgg PiAwIEFTIHRhZ191cGRhdGVfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2V4 Y2wnKTsKKyB0YWdfdXBkYXRlX2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgdAorKDEgcm93KQorCitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoMywgMzAw LCBpbnQ0cmFuZ2UoNSwgMTUpKTsgIC0tIG92ZXJsYXBzIGlkPTEncyAoMSwxMCkKK0VSUk9S OiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50 ICJoaV9leGNsX2R1cmluZ19leGNsIgorREVUQUlMOiAgS2V5IChkdXJpbmcpPShbNSwxNSkp IGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoZHVyaW5nKT0oWzEsMTApKS4KKy0tIE1v dmUgaWQ9MSdzIHJhbmdlIGF3YXkgKHRoaXMgdXBkYXRlcyB0aGUgR2lTVCBpbmRleCwgbGVh dmluZyBhIHN0YWxlIGVudHJ5CistLSBmb3IgdGhlIG9sZCAoMSwxMCkgcmFuZ2UpLiAgQSBy YW5nZSBvdmVybGFwcGluZyBvbmx5IHRoZSBPTEQgcmFuZ2Ugbm93CistLSBpbnNlcnRzIGNs ZWFubHkgKHRoZSBzdGFsZSBlbnRyeSBpcyBza2lwcGVkKTsgb25lIG92ZXJsYXBwaW5nIHRo ZSBORVcgcmFuZ2UKKy0tIHN0aWxsIGNvbmZsaWN0cy4KK1VQREFURSBoaV9leGNsIFNFVCBk dXJpbmcgPSBpbnQ0cmFuZ2UoMTAwLCAxMTApIFdIRVJFIGlkID0gMTsKK0lOU0VSVCBJTlRP IGhpX2V4Y2wgVkFMVUVTICg0LCA0MDAsIGludDRyYW5nZSg1LCAxNSkpOyAgIC0tIG9ubHkg b3ZlcmxhcHBlZCBvbGQgcmFuZ2U6IE9LCitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAo NSwgNTAwLCBpbnQ0cmFuZ2UoMTA1LCAxMTUpKTstLSBvdmVybGFwcyBuZXcgKDEwMCwxMTAp OiBjb25mbGljdAorRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhj bHVzaW9uIGNvbnN0cmFpbnQgImhpX2V4Y2xfZHVyaW5nX2V4Y2wiCitERVRBSUw6ICBLZXkg KGR1cmluZyk9KFsxMDUsMTE1KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChkdXJp bmcpPShbMTAwLDExMCkpLgorRFJPUCBUQUJMRSBoaV9leGNsOworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAyNS4gVE9BU1QgaW50ZXJhY3Rpb24uICBBbiBpbmRleGVkIGNvbHVt biBzdG9yZWQgb3V0LW9mLWxpbmUgbXVzdCBiZWhhdmUKKy0tIGNvcnJlY3RseSBhY3Jvc3Mg SE9ULWluZGV4ZWQgdXBkYXRlczogYW4gZW50cnkga2VwdCBhY3Jvc3MgYW4gdXBkYXRlIG9m IGEKKy0tIGRpZmZlcmVudCBjb2x1bW4gc3RpbGwgcmVzb2x2ZXMgdG8gdGhlICh1bmNoYW5n ZWQpIHRvYXN0ZWQgdmFsdWUsIGFuZCBhZnRlcgorLS0gdGhlIHRvYXN0ZWQgY29sdW1uIGl0 c2VsZiBpcyBjaGFuZ2VkIHRoZSBzdGFsZSBlbnRyeSBpcyBkcm9wcGVkIGJ5IHRoZQorLS0g Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIChubyB2YWx1ZSBjb21wYXJpc29uIG9yIGRldG9h c3RpbmcgaXMgbmVlZGVkKS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX3RvYXN0IChpZCBpbnQgUFJJTUFSWSBLRVksIGJpZyB0ZXh0LCB0YWcgaW50KSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQUxURVIgVEFCTEUgaGlfdG9hc3QgQUxURVIgQ09M VU1OIGJpZyBTRVQgU1RPUkFHRSBFWFRFUk5BTDsgIC0tIG5vIGNvbXByZXNzaW9uCitDUkVB VEUgSU5ERVggaGlfdG9hc3RfYmlnIE9OIGhpX3RvYXN0IChiaWcpOworQ1JFQVRFIElOREVY IGhpX3RvYXN0X3RhZyBPTiBoaV90b2FzdCAodGFnKTsKK0lOU0VSVCBJTlRPIGhpX3RvYXN0 IFZBTFVFUyAoMSwgcmVwZWF0KCdBJywgMjAwMCksIDEwKTsKKy0tIFRoZSBiaWcgdmFsdWUg aXMgc3RvcmVkIG91dC1vZi1saW5lLgorU0VMRUNUIHBnX2NvbHVtbl9zaXplKGJpZykgPiAx NTAwIEFTIGJpZ19pc19leHRlcm5hbCBGUk9NIGhpX3RvYXN0IFdIRVJFIGlkID0gMTsKKyBi aWdfaXNfZXh0ZXJuYWwgCistLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0g SE9ULWluZGV4ZWQgdXBkYXRlIG9mIHRhZyBsZWF2ZXMgYmlnIChhbmQgaXRzIGluZGV4IGVu dHJ5KSB1bmNoYW5nZWQuCitVUERBVEUgaGlfdG9hc3QgU0VUIHRhZyA9IDExIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0YWdfdXBkYXRlX2hvdF9pbmRleGVkIEZS T00gZ2V0X2hpX2NvdW50KCdoaV90b2FzdCcpOworIHRhZ191cGRhdGVfaG90X2luZGV4ZWQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBlbmFibGVf c2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBp ZCwgdGFnLCBsZW5ndGgoYmlnKSBGUk9NIGhpX3RvYXN0IFdIRVJFIGJpZyA9IHJlcGVhdCgn QScsIDIwMDApOworIGlkIHwgdGFnIHwgbGVuZ3RoIAorLS0tLSstLS0tLSstLS0tLS0tLQor ICAxIHwgIDExIHwgICAyMDAwCisoMSByb3cpCisKKy0tIEhPVC1pbmRleGVkIHVwZGF0ZSBv ZiB0aGUgdG9hc3RlZCBpbmRleGVkIGNvbHVtbiBpdHNlbGY6IHRoZSBvbGQgZW50cnkgaXMK Ky0tIG5vdyBzdGFsZSBiZWNhdXNlIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgc2hv d3MgYmlnIGNoYW5nZWQuCitVUERBVEUgaGlfdG9hc3QgU0VUIGJpZyA9IHJlcGVhdCgnQics IDIwMDApIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBpZCBGUk9NIGhpX3RvYXN0IFdIRVJFIGJp ZyA9IHJlcGVhdCgnQScsIDIwMDApOyAgIC0tIHN0YWxlOiAwIHJvd3MKKyBpZCAKKy0tLS0K KygwIHJvd3MpCisKK1NFTEVDVCBpZCwgbGVuZ3RoKGJpZykgRlJPTSBoaV90b2FzdCBXSEVS RSBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKTsgIC0tIGN1cnJlbnQKKyBpZCB8IGxlbmd0aCAK Ky0tLS0rLS0tLS0tLS0KKyAgMSB8ICAgMjAwMAorKDEgcm93KQorCitSRVNFVCBlbmFibGVf Yml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJp ZnlfaGVhcGFtKCdoaV90b2FzdCcpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNn IAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJPUCBU QUJMRSBoaV90b2FzdDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjYuIEFCQSBv biBhbiBpbmRleGVkIGNvbHVtbi4gIEEgSE9ULWluZGV4ZWQgdXBkYXRlIHRoYXQgc2V0cyBh biBpbmRleGVkCistLSBjb2x1bW4gdG8gYSB2YWx1ZSBhbiBlYXJsaWVyIGNoYWluIG1lbWJl ciBhbHJlYWR5IGhlbGQgbGVhdmVzIHR3byBsZWF2ZXMKKy0tIHdpdGggdGhhdCBzYW1lIGtl eSwgYm90aCBjaGFpbi1yZXNvbHZpbmcgdG8gdGhlIGxpdmUgdHVwbGUuICBBIHZhbHVlLWJh c2VkCistLSByZWNoZWNrIGNhbm5vdCB0ZWxsIHRoZW0gYXBhcnQgYW5kIHdvdWxkIHJldHVy biB0aGUgcm93IHR3aWNlOyB0aGUKKy0tIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9w cyB0aGUgc3RhbGUgYW5jZXN0b3IgbGVhZiAoaXRzIHdhbGsgY3Jvc3NlcyB0aGUKKy0tIGtl eS1jaGFuZ2luZyBob3BzKSBhbmQga2VlcHMgb25seSB0aGUgZnJlc2ggZW50cnksIHNvIGEg Zm9yY2VkIGluZGV4IHNjYW4KKy0tIHJldHVybnMgdGhlIHJvdyBleGFjdGx5IG9uY2UuICBS RUlOREVYIG11c3Qgbm90IGNoYW5nZSB0aGF0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfYWJhIChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCB2IGlu dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfayBPTiBo aV9hYmEgKGspOworQ1JFQVRFIElOREVYIGhpX2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNF UlQgSU5UTyBoaV9hYmEgVkFMVUVTICgxLCAxLCAxMDApOworVVBEQVRFIGhpX2FiYSBTRVQg ayA9IDMgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRleGVkOiBrIGNoYW5nZWQsIHYga2Vw dAorVVBEQVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRl eGVkOiBrIGN5Y2xlZCBiYWNrIChBQkEpCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitT RVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgazFfb25j ZSBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMTsgICAgIC0tIGV4YWN0bHkgMQorIGsxX29uY2Ug CistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBr M19nb25lIEZST00gaGlfYWJhIFdIRVJFIGsgPSAzOyAgICAgLS0gMCAoc3RhbGUgZHJvcHBl ZCkKKyBrM19nb25lIAorLS0tLS0tLS0tCisgICAgICAgMAorKDEgcm93KQorCitSRUlOREVY IElOREVYIGhpX2FiYV9rOworU0VMRUNUIGNvdW50KCopIEFTIGsxX2FmdGVyX3JlaW5kZXgg RlJPTSBoaV9hYmEgV0hFUkUgayA9IDE7ICAtLSBzdGlsbCAxCisgazFfYWZ0ZXJfcmVpbmRl eCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKwor UkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVD VCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfYWJhJyk7CisgYmxrbm8gfCBvZmZudW0gfCBh dHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tCisoMCByb3dz KQorCitEUk9QIFRBQkxFIGhpX2FiYTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0g MjcuIFBhcnRpYWwgaW5kZXgsIHByZWRpY2F0ZSBjb2x1bW4gY2hhbmdlZCBidXQgdGhlIHJv dyBTVEFZUyBpbiB0aGUgaW5kZXgKKy0tIChwcmVkaWNhdGUgc3RpbGwgdHJ1ZSwga2V5IHVu Y2hhbmdlZCkuICBUaGUgdXBkYXRlIGlzIEhPVC1pbmRleGVkOyBzZWxlY3RpdmUKKy0tIG1h aW50ZW5hbmNlIHJlLWluc2VydHMgYSBmcmVzaCBlbnRyeSAodGhlIHByZWRpY2F0ZSBjb2x1 bW4gY2hhbmdlZCBhbmQgc3RpbGwKKy0tIGhvbGRzKSwgc28gdGhlIHJvdyBpcyBzdGlsbCBy ZXR1cm5lZCAtLSB0aGUgYml0bWFwIGRyb3BzIHRoZSBvbGRlciBlbnRyeSBhbmQKKy0tIHRo ZSBmcmVzaCBvbmUgcmUtc3VwcGxpZXMgaXQuICBHdWFyZHMgYWdhaW5zdCBhICJsb3N0IHJv dyIgZnJvbSBvdmVyLWVhZ2VyCistLSBkcm9wcGluZy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRzdGF5IChpZCBpbnQgUFJJTUFSWSBLRVksIGsg aW50LCBuIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9w YXJ0c3RheV9rIE9OIGhpX3BhcnRzdGF5IChrKSBXSEVSRSBuID4gMDsKK0NSRUFURSBJTkRF WCBoaV9wYXJ0c3RheV9pZDIgT04gaGlfcGFydHN0YXkgKGlkKTsKK0lOU0VSVCBJTlRPIGhp X3BhcnRzdGF5IFZBTFVFUyAoMSwgNSwgMyk7CitVUERBVEUgaGlfcGFydHN0YXkgU0VUIG4g PSA3IFdIRVJFIGlkID0gMTsgICAtLSBuIDMtPjcsIHN0aWxsID4gMCwgayB1bmNoYW5nZWQK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgaG90X2lkeCA+IDAgQVMgc3RheV9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9j b3VudCgnaGlfcGFydHN0YXknKTsKKyBzdGF5X2lzX2hvdF9pbmRleGVkIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgc3Rh eV9yb3dzIEZST00gaGlfcGFydHN0YXkgV0hFUkUgayA9IDUgQU5EIG4gPiAwOyAgIC0tIHdh bnQgMQorIHN0YXlfcm93cyAKKy0tLS0tLS0tLS0tCisgICAgICAgICAxCisoMSByb3cpCisK K1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9Q IFRBQkxFIGhpX3BhcnRzdGF5OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOC4g UGFydGl0aW9uZWQgdGFibGUuICBBIHdpdGhpbi1wYXJ0aXRpb24gVVBEQVRFIG9mIG9uZSBp bmRleGVkIGNvbHVtbiBpcworLS0gSE9ULWluZGV4ZWQgb24gdGhlIGxlYWYgcGFydGl0aW9u J3MgaGVhcCBleGFjdGx5IGFzIGZvciBhIG5vbi1wYXJ0aXRpb25lZAorLS0gdGFibGU7IGEg Y3Jvc3MtcGFydGl0aW9uIHVwZGF0ZSBpcyBhIGRlbGV0ZStpbnNlcnQgYW5kIG5ldmVyIEhP VC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnQgKGlk IGludCwgYSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkKTsKK0NSRUFURSBU QUJMRSBoaV9wYXJ0MSBQQVJUSVRJT04gT0YgaGlfcGFydCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxMDApCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBo aV9wYXJ0X2EgT04gaGlfcGFydCAoYSk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9iIE9OIGhp X3BhcnQgKGIpOworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEsIDEwLCAyMCk7CitV UERBVEUgaGlfcGFydCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBvbmUgaW5kZXhl ZCBjb2wsIHdpdGhpbiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgcGFydF9pc19o b3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydDEnKTsKKyBwYXJ0X2lzX2hv dF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitT RUxFQ1QgY291bnQoKikgQVMgYTExIEZST00gaGlfcGFydCBXSEVSRSBhID0gMTE7ICAgLS0g d2FudCAxCisgYTExIAorLS0tLS0KKyAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCop IEFTIGExMCBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDEwOyAgIC0tIHdhbnQgMCAoc3RhbGUg ZHJvcHBlZCkKKyBhMTAgCistLS0tLQorICAgMAorKDEgcm93KQorCitSRVNFVCBlbmFibGVf Yml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJp ZnlfaGVhcGFtKCdoaV9wYXJ0MScpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNn IAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJPUCBU QUJMRSBoaV9wYXJ0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOS4gTm9uLWJ0 cmVlIGFjY2VzcyBtZXRob2QgKGhhc2gpLiAgUmVhZC1zaWRlIHN0YWxlbmVzcyBpcyBhY2Nl c3MtbWV0aG9kCistLSBhZ25vc3RpYyAodGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCks IHNvIGFueSBpbmRleCBBTSdzIGNvbHVtbiBpcworLS0gSE9ULWluZGV4ZWQuICBIYXNoIGlz IHRoZSBzaGFycGVzdCBjYXNlOiBpdHMgc2NhbnMgcmVjaGVjayB0aGUgaGVhcCB2YWx1ZSwK Ky0tIHdoaWNoIGFsb25lIGNhbm5vdCBkaXNhbWJpZ3VhdGUgYSB2YWx1ZSBjeWNsZWQgYXdh eSBhbmQgYmFjayAoQUJBKSAtLSB0aGUKKy0tIGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgYW5j ZXN0b3Igc28gdGhlIHJvdyBpcyByZXR1cm5lZCBleGFjdGx5IG9uY2UuCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9oYXNoIChpZCBpbnQgUFJJTUFSWSBL RVksIHYgaW50LCB3IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBoaV9oYXNoX3YgT04gaGlfaGFzaCBVU0lORyBoYXNoICh2KTsKK0NSRUFURSBJTkRFWCBo aV9oYXNoX3cgT04gaGlfaGFzaCAodyk7CitJTlNFUlQgSU5UTyBoaV9oYXNoIFZBTFVFUyAo MSwgMTAsIDEwMCk7CitVUERBVEUgaGlfaGFzaCBTRVQgdiA9IDk5IFdIRVJFIGlkID0gMTsK K1VQREFURSBoaV9oYXNoIFNFVCB2ID0gMTAgV0hFUkUgaWQgPSAxOyAgIC0tIEFCQTogMTAg LT4gOTkgLT4gMTAsIHcgdW5jaGFuZ2VkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhhc2hfaXNf aG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2hhc2gnKTsKKyBoYXNoX2lzX2hv dF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitT RUxFQ1QgY291bnQoKikgQVMgaGFzaF92MTAgRlJPTSBoaV9oYXNoIFdIRVJFIHYgPSAxMDsg ICAtLSB3YW50IDEgKG5vIGR1cGxpY2F0ZSkKKyBoYXNoX3YxMCAKKy0tLS0tLS0tLS0KKyAg ICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgaGFzaF92OTkgRlJPTSBo aV9oYXNoIFdIRVJFIHYgPSA5OTsgICAtLSB3YW50IDAgKHN0YWxlIGRyb3BwZWQpCisgaGFz aF92OTkgCistLS0tLS0tLS0tCisgICAgICAgIDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxl X2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfaGFz aDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzAuIERETCBhZnRlciBhIEhPVC1p bmRleGVkIGNoYWluIGV4aXN0cy4gIFRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJzCistLSBi aXRtYXAgb24gdGhlIHBhZ2UgaXMga2V5ZWQgYnkgcGh5c2ljYWwgYXR0cmlidXRlIG51bWJl ciBhbmQgc2l6ZWQgYnkgdGhlCistLSByZWxhdGlvbidzIG5hdHRzIEFUIFdSSVRFIFRJTUUu ICBJbmRleGVzIGFkZGVkL2Ryb3BwZWQgYWZ0ZXIgdGhlIGNoYWluCistLSBmb3JtcywgYW5k IEFERC9EUk9QIENPTFVNTiwgbXVzdCBub3QgY29ycnVwdCB0aGUgcmVhZC1zaWRlIHN0YWxl bmVzcyB0ZXN0LgorLS0gVGhlIHNoYXJwIGNhc2UgaXMgQUREIENPTFVNTiBjcm9zc2luZyBh biA4LWF0dHJpYnV0ZSBib3VuZGFyeSwgd2hpY2ggZ3Jvd3MKKy0tIGNlaWwobmF0dHMvOCk6 IHJlYWRlcnMgbXVzdCBsb2NhdGUgZWFjaCBob3AncyBiaXRtYXAgZnJvbSB0aGF0IGhvcCdz IG93bgorLS0gd3JpdGUtdGltZSBuYXR0cyAoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMgLyB0 aGUgc3R1YidzIHN0YXNoZWQgbmF0dHMpLCBub3QKKy0tIHRoZSByZWxhdGlvbidzIGN1cnJl bnQgbmF0dHMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEV4YWN0bHkgOCBhdHRy aWJ1dGVzIChjMS4uYzcgKyBwYXlsb2FkKSBzbyBhZGRpbmcgdGhlIDl0aCBmbGlwcyB0aGUg Yml0bWFwCistLSBmcm9tIDEgYnl0ZSB0byAyLiAgYzcgaXMgdGhlIGNvbHVtbiB3ZSBjaHVy bjsgYzIgaXMgYW4gdW5jaGFuZ2VkIGluZGV4ZWQKKy0tIGNvbHVtbiB3aG9zZSBsZWFmIG11 c3Qgc3RheSBjdXJyZW50LgorQ1JFQVRFIFRBQkxFIGhpX2RkbCAoCisgICAgYzEgaW50IFBS SU1BUlkgS0VZLCBjMiBpbnQsIGMzIGludCwgYzQgaW50LAorICAgIGM1IGludCwgYzYgaW50 LCBjNyBpbnQsIHBheWxvYWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JF QVRFIElOREVYIGhpX2RkbF9jMiBPTiBoaV9kZGwoYzIpOworQ1JFQVRFIElOREVYIGhpX2Rk bF9jNyBPTiBoaV9kZGwoYzcpOworSU5TRVJUIElOVE8gaGlfZGRsIFZBTFVFUyAoMSwgMTAs IDIwLCAzMCwgNDAsIDUwLCA3MCwgJ3AnKTsKKy0tIEZvcm0gYSBIT1QtaW5kZXhlZCBjaGFp biBvbiBjNyBCRUZPUkUgYW55IGZ1cnRoZXIgRERMLgorVVBEQVRFIGhpX2RkbCBTRVQgYzcg PSA3MSBXSEVSRSBjMSA9IDE7CitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDcyIFdIRVJFIGMx ID0gMTsKKy0tIChhKSBDUkVBVEUgSU5ERVggYWZ0ZXIgdGhlIGNoYWluIGV4aXN0czogdGhl IG5ldyBpbmRleCBpcyBidWlsdCBhZ2FpbnN0IHRoZQorLS0gbGl2ZSB0dXBsZSB1bmRlciBp dHMgb3duIFRJRCwgc28gaXRzIGVudHJ5IGlzIG5ldmVyIHN0YWxlLgorQ1JFQVRFIElOREVY IGhpX2RkbF9jMyBPTiBoaV9kZGwoYzMpOworLS0gKGIpIEFERCBDT0xVTU4gY3Jvc3Npbmcg dGhlIDgtYXR0cmlidXRlIGJvdW5kYXJ5IChuYXR0cyA4IC0+IDkpLiAgRXhpc3RpbmcKKy0t IGhvcHMga2VlcCB0aGVpciAxLWJ5dGUgYml0bWFwczsgdGhlIHJlbGF0aW9uIG5vdyB3YW50 cyAyLiAgUmVhZHMgdGhyb3VnaCB0aGUKKy0tIG9sZCBjaGFpbiBtdXN0IHN0aWxsIGJlIGNv cnJlY3QuCitBTFRFUiBUQUJMRSBoaV9kZGwgQUREIENPTFVNTiBjOSBpbnQ7CitDUkVBVEUg SU5ERVggaGlfZGRsX2M5IE9OIGhpX2RkbChjOSk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25s eXNjYW4gPSBvZmY7CistLSBMaXZlIGM3IGlzIDcyLiAgVGhlIGM3IGluZGV4IG11c3QgcmV0 dXJuIHRoZSBsaXZlIHJvdyBmb3IgNzIgYW5kIGRyb3AgdGhlCistLSBzdGFsZSBsZWF2ZXMg Zm9yIDcwIGFuZCA3MSAob2Zmc2V0cyBtaXNyZWFkIHdvdWxkIGNvcnJ1cHQgdGhpcykuCitT RUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzIgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MiBB TkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MiAKKy0tLS0tLS0tLS0KKyAgICAg ICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzBfc3RhbGUgRlJP TSBoaV9kZGwgV0hFUkUgYzcgPSA3MCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19l cV83MF9zdGFsZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMAorKDEgcm93 KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzFfc3RhbGUgRlJPTSBoaV9kZGwgV0hF UkUgYzcgPSA3MSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MV9zdGFsZSAK Ky0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBjMiBu ZXZlciBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW46IGl0cyBsZWFmIG11c3QgTk9UIGJlIGp1 ZGdlZCBzdGFsZSBldmVuCistLSB0aG91Z2ggYSBjcm9zc2VkIGhvcCBjaGFuZ2VkIGM3LiAg QSBtaXNyZWFkIGJpdG1hcCBjb3VsZCBzcHVyaW91c2x5IGZsYWcgaXQuCitTRUxFQ1QgY291 bnQoKikgQVMgYzJfZXFfMTBfY3VycmVudCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFO RCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGMyX2VxXzEwX2N1cnJlbnQgCistLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIChjKSBDb250aW51 ZSBjaHVybmluZyBjNyBBRlRFUiB0aGUgQUREIENPTFVNTjogdGhlIG5ldyBob3AncyBiaXRt YXAgaXMgc2l6ZWQKKy0tIGZvciBuYXR0cyA5ICgyIGJ5dGVzKTsgdGhlIG9sZCBob3BzIGFy ZSAxIGJ5dGUuICBBIGNoYWluIHdpdGggbWl4ZWQtc2l6ZQorLS0gYml0bWFwcyBtdXN0IHN0 aWxsIHJlc29sdmUgY29ycmVjdGx5LgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MyBXSEVS RSBjMSA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzMgRlJPTSBoaV9kZGwgV0hF UkUgYzcgPSA3MyBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MyAKKy0tLS0t LS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFf NzJfbm93X3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxvYWQgSVMg Tk9UIE5VTEw7CisgYzdfZXFfNzJfbm93X3N0YWxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gKGQpIENvbGxhcHNlIHRoZSBj aGFpbiB0byBzdHVicyB2aWEgVkFDVVVNLCB0aGVuIHJlYWQgYWdhaW46IHRoZSBzdHViIG11 c3QKKy0tIHByZXNlcnZlIGl0cyB3cml0ZS10aW1lIG5hdHRzIHNvIGl0cyBiaXRtYXAgc3Rh eXMgbG9jYXRhYmxlIHBvc3QtQUREIENPTFVNTi4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0g NzQgV0hFUkUgYzEgPSAxOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfZGRsOwor U0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzc0X2FmdGVyX3ZhY3V1bSBGUk9NIGhpX2RkbCBX SEVSRSBjNyA9IDc0IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3X2VxXzc0X2FmdGVy X3ZhY3V1bSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9lcV8xMF9hZnRlcl92YWN1 dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsK KyBjMl9lcV8xMF9hZnRlcl92YWN1dW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSAoZSkgRFJPUCBDT0xVTU4ga2Vl cHMgdGhlIGF0dG51bSBzbG90IChubyByZW51bWJlciksIHNvIGJpdG1hcHMgc3RheSBhbGln bmVkLgorQUxURVIgVEFCTEUgaGlfZGRsIERST1AgQ09MVU1OIGM0OworU0VMRUNUIGNvdW50 KCopIEFTIGM3X2FmdGVyX2Ryb3AgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3NCBBTkQgcGF5 bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19hZnRlcl9kcm9wIAorLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0ZXJf ZHJvcCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxM OworIGMyX2FmdGVyX2Ryb3AgCistLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxCiso MSByb3cpCisKKy0tIChmKSBEUk9QIElOREVYIG9uIHRoZSBjaHVybmVkIGNvbHVtbjogcmVt YWluaW5nIGluZGV4ZXMgc3RpbGwgcmVzb2x2ZS4KK0RST1AgSU5ERVggaGlfZGRsX2M3Owor U0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3BpZHggRlJPTSBoaV9kZGwgV0hFUkUg YzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjMl9hZnRlcl9kcm9waWR4IAor LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitSRVNF VCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5h YmxlX2luZGV4b25seXNjYW47CistLSBUaGUgc2Vxc2NhbiB0cnV0aCBjb25maXJtcyB0aGUg bGl2ZSByb3c7IHRoZSBjb3VudCBhc3NlcnRpb25zIGFib3ZlIChyZWFkCistLSB0aHJvdWdo IHRoZSBwb3N0LURETCBpbmRleGVzKSBtYXRjaCBpdCwgd2hpY2ggaXMgd2hhdCB3b3VsZCBi cmVhayBpZiBhCistLSBtaXMtc2l6ZWQgYml0bWFwIGNvcnJ1cHRlZCB0aGUgc3RhbGVuZXNz IHZlcmRpY3QuCitTRUxFQ1QgYzEsIGMyLCBjNyBGUk9NIGhpX2RkbCBXSEVSRSBjMSA9IDE7 CisgYzEgfCBjMiB8IGM3IAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEwIHwgNzQKKygxIHJv dykKKworRFJPUCBUQUJMRSBoaV9kZGw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IENsZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElPTiBnZXRf aGlfY291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4dCk7CitE Uk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKaW5kZXggZTI2NmY1MDFkODcuLjViMmNlZmViNTk3IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTgxMCw2ICsxODEwLDggQEAgcGdfc3RhdF9hbGxf aW5kZXhlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRfZ2V0X2xhc3Rz Y2FuKGkub2lkKSBBUyBsYXN0X2lkeF9zY2FuLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19y ZXR1cm5lZChpLm9pZCkgQVMgaWR4X3R1cF9yZWFkLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19mZXRjaGVkKGkub2lkKSBBUyBpZHhfdHVwX2ZldGNoLAorICAgIHBnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX3NraXBwZWQoaS5vaWQpIEFTIG5fdHVwX2hvdF9p bmRleGVkX3VwZF9za2lwcGVkLAorICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhl ZF91cGRhdGVkX21hdGNoZWQoaS5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRj aGVkLAogICAgIHBnX3N0YXRfZ2V0X3N0YXRfcmVzZXRfdGltZShpLm9pZCkgQVMgc3RhdHNf cmVzZXQKICAgIEZST00gKCgocGdfY2xhc3MgYwogICAgICBKT0lOIHBnX2luZGV4IHggT04g KChjLm9pZCA9IHguaW5kcmVsaWQpKSkKQEAgLTE4MjksNiArMTgzMSw3IEBAIHBnX3N0YXRf YWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRfZ2V0X3R1 cGxlc191cGRhdGVkKGMub2lkKSBBUyBuX3R1cF91cGQsCiAgICAgcGdfc3RhdF9nZXRfdHVw bGVzX2RlbGV0ZWQoYy5vaWQpIEFTIG5fdHVwX2RlbCwKICAgICBwZ19zdGF0X2dldF90dXBs ZXNfaG90X3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX2hvdF91cGQsCisgICAgcGdfc3RhdF9n ZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX2hvdF9pbmRl eGVkX3VwZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkKGMub2lk KSBBUyBuX3R1cF9uZXdwYWdlX3VwZCwKICAgICBwZ19zdGF0X2dldF9saXZlX3R1cGxlcyhj Lm9pZCkgQVMgbl9saXZlX3R1cCwKICAgICBwZ19zdGF0X2dldF9kZWFkX3R1cGxlcyhjLm9p ZCkgQVMgbl9kZWFkX3R1cCwKQEAgLTIzMzIsNiArMjMzNSw4IEBAIHBnX3N0YXRfc3lzX2lu ZGV4ZXN8IFNFTEVDVCByZWxpZCwKICAgICBsYXN0X2lkeF9zY2FuLAogICAgIGlkeF90dXBf cmVhZCwKICAgICBpZHhfdHVwX2ZldGNoLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9z a2lwcGVkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgIHN0YXRz X3Jlc2V0CiAgICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKICAgV0hFUkUgKChzY2hlbWFu YW1lID0gQU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hl bWEnOjpuYW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKQEAg LTIzNDgsNiArMjM1Myw3IEBAIHBnX3N0YXRfc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAog ICAgIG5fdHVwX3VwZCwKICAgICBuX3R1cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAg ICBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgbl90dXBfbmV3cGFnZV91cGQsCiAgICAg bl9saXZlX3R1cCwKICAgICBuX2RlYWRfdHVwLApAQCAtMjM4Nyw2ICsyMzkzLDggQEAgcGdf c3RhdF91c2VyX2luZGV4ZXN8IFNFTEVDVCByZWxpZCwKICAgICBsYXN0X2lkeF9zY2FuLAog ICAgIGlkeF90dXBfcmVhZCwKICAgICBpZHhfdHVwX2ZldGNoLAorICAgIG5fdHVwX2hvdF9p bmRleGVkX3VwZF9za2lwcGVkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVk LAogICAgIHN0YXRzX3Jlc2V0CiAgICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKICAgV0hF UkUgKChzY2hlbWFuYW1lIDw+IEFMTCAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5m b3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBBTkQgKHNjaGVtYW5hbWUgIX4gJ15wZ190b2Fz dCc6OnRleHQpKTsKQEAgLTI0MDMsNiArMjQxMSw3IEBAIHBnX3N0YXRfdXNlcl90YWJsZXN8 IFNFTEVDVCByZWxpZCwKICAgICBuX3R1cF91cGQsCiAgICAgbl90dXBfZGVsLAogICAgIG5f dHVwX2hvdF91cGQsCisgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkLAogICAgIG5fdHVwX25l d3BhZ2VfdXBkLAogICAgIG5fbGl2ZV90dXAsCiAgICAgbl9kZWFkX3R1cCwKQEAgLTI0NTgs NiArMjQ2Nyw3IEBAIHBnX3N0YXRfeGFjdF9hbGxfdGFibGVzfCBTRUxFQ1QgYy5vaWQgQVMg cmVsaWQsCiAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChjLm9pZCkgQVMg bl90dXBfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2RlbGV0ZWQoYy5vaWQp IEFTIG5fdHVwX2RlbCwKICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZChjLm9pZCkgQVMgbl90dXBfaG90X3VwZCwKKyAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfaW5kZXhlZF91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQs CiAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3cGFnZV91cGRhdGVkKGMub2lkKSBB UyBuX3R1cF9uZXdwYWdlX3VwZAogICAgRlJPTSAoKHBnX2NsYXNzIGMKICAgICAgTEVGVCBK T0lOIHBnX2luZGV4IGkgT04gKChjLm9pZCA9IGkuaW5kcmVsaWQpKSkKQEAgLTI0NzUsNiAr MjQ4NSw3IEBAIHBnX3N0YXRfeGFjdF9zeXNfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAg bl90dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBuX3R1cF9ob3RfdXBkLAorICAgIG5f dHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9uZXdwYWdlX3VwZAogICAgRlJPTSBw Z19zdGF0X3hhY3RfYWxsX3RhYmxlcwogICBXSEVSRSAoKHNjaGVtYW5hbWUgPSBBTlkgKEFS UkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9uX3NjaGVtYSc6Om5hbWVdKSkg T1IgKHNjaGVtYW5hbWUgfiAnXnBnX3RvYXN0Jzo6dGV4dCkpOwpAQCAtMjQ5OCw2ICsyNTA5 LDcgQEAgcGdfc3RhdF94YWN0X3VzZXJfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgbl90 dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBuX3R1cF9ob3RfdXBkLAorICAgIG5fdHVw X2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9uZXdwYWdlX3VwZAogICAgRlJPTSBwZ19z dGF0X3hhY3RfYWxsX3RhYmxlcwogICBXSEVSRSAoKHNjaGVtYW5hbWUgPD4gQUxMIChBUlJB WVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIEFO RCAoc2NoZW1hbmFtZSAhfiAnXnBnX3RvYXN0Jzo6dGV4dCkpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKaW5kZXggYmQ5NWNjMjQ5NzcuLjRmZGU1YjZiMGM2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTE0Nyw2ICsxNDcsNyBAQCB0ZXN0OiBm YXN0X2RlZmF1bHQKICMgSE9UIHVwZGF0ZXMgdGVzdHMKICMgLS0tLS0tLS0tLQogdGVzdDog aG90X3VwZGF0ZXMKK3Rlc3Q6IGhvdF9pbmRleGVkX3VwZGF0ZXMKIAogIyBydW4gdGFibGVz cGFjZSB0ZXN0IGF0IHRoZSBlbmQgYmVjYXVzZSBpdCBkcm9wcyB0aGUgdGFibGVzcGFjZSBj cmVhdGVkIGR1cmluZwogIyBzZXR1cCB0aGF0IG90aGVyIHRlc3RzIG1heSB1c2UuCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wODNlZWI5ZmMwNwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3Fs CkBAIC0wLDAgKzEsMTE1NCBAQAorLS0KKy0tIEhPVF9JTkRFWEVEX1VQREFURVMKKy0tIFRl c3QgSE9ULWluZGV4ZWQgdXBkYXRlIChob3QtaW5kZXhlZCksIGFrYSBIT1QtaW5kZXhlZCwg YmVoYXZpb3VyCistLQorLS0gRXZlcnkgVVBEQVRFIGluIHRoaXMgZmlsZSBtb2RpZmllcyBh dCBsZWFzdCBvbmUgbm9uLXN1bW1hcml6aW5nCistLSBpbmRleGVkIGF0dHJpYnV0ZS4gIE9u IGEgcHJlLWhvdC1pbmRleGVkIHNlcnZlciBhbGwgb2YgdGhlc2Ugd291bGQgYmUKKy0tIG5v bi1IT1Q7IG9uIHRoZSBob3QtaW5kZXhlZCBicmFuY2ggZWFjaCBlbGlnaWJsZSB1cGRhdGUg c3RheXMgb24tcGFnZSBhbmQKKy0tIGluc2VydHMgaW50byBvbmx5IHRoZSBpbmRleGVzIHdo b3NlIGF0dHJpYnV0ZXMgYWN0dWFsbHkgY2hhbmdlZC4KKy0tCistLSBXZSB2ZXJpZnkgZm91 ciB0aGluZ3M6CistLSAgIChBKSBwZ19zdGF0IGNvdW50ZXJzOiBIT1QgYW5kIGhvdC1pbmRl eGVkIGNvdW50cyBpbmNyZW1lbnQgYXMgZXhwZWN0ZWQKKy0tICAgKEIpIGluZGV4IGxvb2t1 cHMgcmV0dXJuIHRoZSBuZXcgdmFsdWUgYW5kIG5vdCB0aGUgc3RhbGUgdmFsdWUKKy0tICAg ICAgIGZvciBFUVVBTElUWSBxdWVyaWVzICh0aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0 IGRyb3BzIGEKKy0tICAgICAgIGxlYWYgd2hvc2UgY292ZXJlZCBhdHRyaWJ1dGUgY2hhbmdl ZCBvbiB0aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlKQorLS0gICAoQykgcGdfcmVsYXRpb25f aG90X2luZGV4ZWRfc3RhdHMgcmVwb3J0cyB0aGUgSE9ULWluZGV4ZWQgdmVyc2lvbnMgd2Ug ZXhwZWN0CistLSAgIChEKSAqKlJBTkdFL0lORVFVQUxJVFkqKiBxdWVyaWVzIHJldHVybiB0 aGUgY29ycmVjdCBudW1iZXIgb2YKKy0tICAgICAgIHR1cGxlcyAtLSB0aGlzIGlzIHRoZSBj bGFzcyBvZiBidWdzIHdoZXJlIGEgc3RhbGUgYnRyZWUKKy0tICAgICAgIGVudHJ5J3Mga2V5 IGlzIHN0aWxsIHJlYWNoYWJsZSB2aWEgYSBsb29zZXIgc2NhbiBrZXk7IHRoZQorLS0gICAg ICAgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhcnJpdmFsIGJl Y2F1c2UgdGhlIGluZGV4J3MKKy0tICAgICAgIGF0dHJpYnV0ZSBjaGFuZ2VkIGJldHdlZW4g dGhhdCBsZWFmJ3MgdGFyZ2V0IGFuZCB0aGUgbGl2ZSB0dXBsZQorLS0KKworQ1JFQVRFIEVY VEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNwZWN0OworCitDUkVBVEUgT1IgUkVQTEFD RSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxF ICh1cGRhdGVzIEJJR0lOVCwgaG90IEJJR0lOVCkgQVMgJCQKK0RFQ0xBUkUgcmVsX29pZCBv aWQ7CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7Cisg ICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxf b2lkKSwgMCkgKworICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBD T0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaGlfY291bnQocmVsX25hbWUgdGV4dCkK K1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMgQklHSU5ULCBob3QgQklHSU5ULCBob3RfaWR4IEJJ R0lOVCkgQVMgJCQKK0RFQ0xBUkUgcmVsX29pZCBvaWQ7CitCRUdJTgorICAgIHJlbF9vaWQg Oj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShw Z19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAg ICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwg MCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRl ZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90X2lkeCA6PSBDT0FM RVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChyZWxfb2lkKSwg MCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf aW5kZXhlZF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CisKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSAxLiBCYXNpYyBob3QtaW5kZXhlZDogbW9kaWZ5aW5nIGFuIGluZGV4ZWQgY29sdW1uIHN0 YXlzIEhPVCBhbmQgY291bnRzIGFzIGhvdC1pbmRleGVkCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBUQUJMRSBoaV9iYXNpYyAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZ LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2Jhc2ljX2lkeCBPTiBo aV9iYXNpYyhpbmRleGVkX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhpX2Jhc2ljIFZBTFVFUyAo MSwgMTAwLCAnaW5pdGlhbCcpOworCistLSBQcmUtaG90LWluZGV4ZWQgdGhpcyB3b3VsZCBi ZSBub24tSE9ULiAgVW5kZXIgaG90LWluZGV4ZWQgaXQncyBIT1QtaW5kZXhlZDsgYm90aCB0 aGUKKy0tIEhPVCBjb3VudGVyIGFuZCB0aGUgaG90LWluZGV4ZWQgY291bnRlciBhZHZhbmNl LgorVVBEQVRFIGhpX2Jhc2ljIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdl dF9oaV9jb3VudCgnaGlfYmFzaWMnKTsKKworLS0gVGhlIG5ldyB2YWx1ZSBpcyByZWFjaGFi bGUgdmlhIHRoZSBpbmRleC4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhpX2Jhc2ljIFdIRVJF IGluZGV4ZWRfY29sID0gMTUwOworU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhpX2Jh c2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworCistLSBUaGUgb2xkIHZhbHVlIGlzIG5v dCByZWFjaGFibGUgdGhyb3VnaCB0aGlzIGluZGV4OiB0aGUgc3RhbGUgYnRyZWUKKy0tIGVu dHJ5IChpbmRleGVkX2NvbD0xMDApIHdhbGtzIHRvIHRoZSBjdXJyZW50IHR1cGxlIHZpYSB0 aGUgaG90LWluZGV4ZWQgaG9wLAorLS0gbm9kZUluZGV4c2NhbiByZS1ldmFsdWF0ZXMgYGlu ZGV4ZWRfY29sID0gMTAwYCBhZ2FpbnN0IHRoZSBjdXJyZW50CistLSB0dXBsZSAoaW5kZXhl ZF9jb2w9MTUwKSwgYW5kIHRoZSByb3cgaXMgY29ycmVjdGx5IGRyb3BwZWQuICBUaGlzIGlz CistLSB0aGUgZXF1YWxpdHktbG9va3VwIGNhc2UgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJp dG1hcCBoYW5kbGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBoaV9i YXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKK1NFTEVDVCBpZCBGUk9NIGhpX2Jhc2lj IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKy0t IHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHNlZXMgb25lIEhPVC1pbmRleGVkIHZl cnNpb24sIHplcm8gSE9UIHJlZGlyZWN0cyAodGhlCistLSBjaGFpbiBoYXMgbm90IHlldCBi ZWVuIHBydW5lZCBzbyBubyBMUF9SRURJUkVDVCBleGlzdHMpLgorU0VMRUNUIG5faG90X2lu ZGV4ZWQsIG5fY2hhaW5zLCBhdmdfY2hhaW5fbGVuLCBtYXhfY2hhaW5fbGVuCitGUk9NIHBn X3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9iYXNpYycpOworCitEUk9QIFRBQkxF IGhpX2Jhc2ljOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIuIFJBTkdFL0lO RVFVQUxJVFkgY29ycmVjdG5lc3MgYWZ0ZXIgaG90LWluZGV4ZWQgb24gYW4gaW5kZXhlZCBj b2x1bW4KKy0tCistLSBUaGlzIGlzIHRoZSB0ZXN0IGNsYXNzIHRoYXQgY2F0Y2hlcyB0aGUg aG90LWluZGV4ZWQgZmFsc2UtZHVwIGJ1ZzogYSBzdGFsZQorLS0gYnRyZWUgZW50cnkgd2hv c2Uga2V5IHZhbHVlIHN0aWxsIHNhdGlzZmllcyB0aGUgcmFuZ2UgcHJlZGljYXRlLAorLS0g cmVhY2hhYmxlIHZpYSB0aGUgaG90LWluZGV4ZWQgY2hhaW4gaG9wLgorLS0KKy0tIFRvIGV4 ZXJjaXNlIHRoZSBidWcgd2UgbXVzdCBmb3JjZSBhbiBJbmRleFNjYW4gcGxhbiAodGhlCist LSBJbmRleE9ubHlTY2FuIHBhdGggcGVybWlzc2l2ZWx5IGRyb3BzIGV2ZXJ5IGhvdC1pbmRl eGVkLXJlYWNoYWJsZSBpbmRleC1vbmx5CistLSBoaXQ7IHRoZSBCaXRtYXBIZWFwU2NhbiBw YXRoIGRlZHVwcyBieSBUSUQpLiAgV2UgaW5jbHVkZSBhIHBheWxvYWQKKy0tIGNvbHVtbiBu b3QgcHJlc2VudCBpbiB0aGUgUEsgc28gdGhlIHBsYW5uZXIgbXVzdCBoZWFwLWZldGNoLgor LS0KKy0tIFRoZSByZWFkLXNpZGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIG1ha2VzIHRo ZSBJbmRleFNjYW4gcmV0dXJuIHRoZSBjb3JyZWN0CistLSBjb3VudCBvZiAxOiB0aGUgc3Rh bGUgZW50cnkgKCcxJywnNScpIGNoYWluLXdhbGtzIHRvIHRoZSBsaXZlIHR1cGxlIGFjcm9z cworLS0gdGhlIGItY2hhbmdpbmcgaG9wLCBhbmQgYmVjYXVzZSB0aGUgUEsgY292ZXJzIGIg dGhlIG92ZXJsYXAgaXMgbm9uLWVtcHR5LCBzbworLS0gdGhlIHN0YWxlIGxlYWYgaXMgZHJv cHBlZC4gIFRoZSBmcmVzaCBlbnRyeSAoJzEnLCcxNScpIHBvaW50cyBkaXJlY3RseSBhdCB0 aGUKKy0tIGxpdmUgdHVwbGUgKG5vIGhvcCBhZnRlciBpdCkgYW5kIGlzIGtlcHQuICBUaGUg T1JERVIgQlkgbGlrZXdpc2UgcmV0dXJucyB0aGUKKy0tIHNpbmdsZSBsaXZlIHJvdy4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JhbmdlICgKKyAgICBh IGludCwKKyAgICBiIGludCwKKyAgICBwYXlsb2FkIHRleHQsCisgICAgUFJJTUFSWSBLRVkg KGEsIGIpCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKK0lOU0VSVCBJTlRPIGhpX3Jh bmdlIFZBTFVFUyAoMSwgNSwgJ2hpJyk7CisKKy0tIGhvdC1pbmRleGVkIHVwZGF0ZSBvbiB0 aGUgc2Vjb25kIFBLIGNvbHVtbjogc3RhbGUgYnRyZWUgZW50cnkgKCcxJywnNScpCistLSBy ZW1haW5zLCBuZXcgZW50cnkgKCcxJywnMTUnKSBpbnNlcnRlZC4gIFRoZSBzdGFsZSBlbnRy eSBwb2ludHMgYXQKKy0tIHRoZSBjaGFpbiByb290OyB0aGUgZnJlc2ggZW50cnkgcG9pbnRz IGRpcmVjdGx5IGF0IHRoZSBuZXcKKy0tIGhlYXAtb25seSB0dXBsZS4KK1VQREFURSBoaV9y YW5nZSBTRVQgYiA9IDE1IFdIRVJFIGEgPSAxIEFORCBiID0gNTsKKworU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworCistLSBJbmRl eFNjYW46IHBheWxvYWQgSVMgTk9UIE5VTEwgZm9yY2VzIGhlYXAgZmV0Y2gsIG5vIEluZGV4 T25seVNjYW4uCistLSBUaGUgc3RhbGUgKCcxJywnNScpIGxlYWYgaXMgZHJvcHBlZCBieSB0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCBzbyB0aGlzCistLSByZXR1cm5zIDEuCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVS RSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBj b3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwIEFORCBwYXls b2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGEsIGIgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0g MSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTCBPUkRFUiBCWSBiOworCistLSBJbmRleE9ubHlT Y2FuOiB0aGUgcGFnZSBob2xkcyBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXIgc28g aXQgaXMgbmV2ZXIgYWxsLXZpc2libGU7IElPUworLS0gcGVyZm9ybXMgdGhlIGhlYXAgZmV0 Y2ggYW5kIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlICgn MScsJzUnKQorLS0gbGVhZiwgc28gY291bnQgPSAxLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAw OworCistLSBCaXRtYXBIZWFwU2NhbjogVElEIGRlZHVwIGNvbGxhcHNlcyB0aGUgc3RhbGUg YW5kIGZyZXNoIGhpdHMuCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFi bGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBh ID0gMSBBTkQgYiA8IDEwMDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJF IGEgPSAxIEFORCBiIDwgMTAwOworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVu YWJsZV9pbmRleG9ubHlzY2FuOworCistLSBTZXFTY2FuOiByZWFkcyB0aGUgaGVhcCBkaXJl Y3RseSwgc2VlcyBleGFjdGx5IG9uZSBsaXZlIHR1cGxlLgorUkVTRVQgZW5hYmxlX3NlcXNj YW47CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5 c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5E IGIgPCAxMDA7CitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBB TkQgYiA8IDEwMDsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfaW5k ZXhvbmx5c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworCistLSBTYW1lIHNoYXBl IG9uIGEgc2Vjb25kYXJ5IChub24tUEspIGJ0cmVlOiBhbm90aGVyIGhvdC1pbmRleGVkIHVw ZGF0ZSBvbiBiLgorQ1JFQVRFIElOREVYIGhpX3JhbmdlX2JfaWR4IE9OIGhpX3JhbmdlKGIp OworVVBEQVRFIGhpX3JhbmdlIFNFVCBiID0gMjUgV0hFUkUgYSA9IDEgQU5EIGIgPSAxNTsK KworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0g b2ZmOworLS0gSW5kZXhTY2FuIHBhdGggb24gdGhlIHNlY29uZGFyeSBpbmRleDsgc2FtZSBm aXggYXBwbGllcy4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGIgQkVU V0VFTiAwIEFORCAxMDAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitSRVNFVCBlbmFibGVf c2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworCitEUk9QIFRBQkxFIGhpX3Jh bmdlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDMuIEFsbC1vci1ub25lIG9u IGEgbXVsdGktaW5kZXhlZCB0YWJsZTogaG90LWluZGV4ZWQgb25seSB0b3VjaGVzIGluZGV4 ZXMKKy0tICAgIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdlZAorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbXVsdGkgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNvbF9jIGludCwKKyAg ICBub25faW5kZXhlZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUg SU5ERVggaGlfbXVsdGlfYV9pZHggT04gaGlfbXVsdGkoY29sX2EpOworQ1JFQVRFIElOREVY IGhpX211bHRpX2JfaWR4IE9OIGhpX211bHRpKGNvbF9iKTsKK0NSRUFURSBJTkRFWCBoaV9t dWx0aV9jX2lkeCBPTiBoaV9tdWx0aShjb2xfYyk7CisKK0lOU0VSVCBJTlRPIGhpX211bHRp IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRpYWwnKTsKKworLS0gY29sX2Egb25seTog dW5kZXIgaG90LWluZGV4ZWQgdGhpcyBpcyBIT1QtaW5kZXhlZCwgYW5kIG9ubHkgaGlfbXVs dGlfYV9pZHgKKy0tIGdldHMgYSBuZXcgZW50cnkuICBoaV9tdWx0aV9iX2lkeCAvIGhpX211 bHRpX2NfaWR4IGtlZXAgcG9pbnRpbmcKKy0tIGF0IHRoZSBjaGFpbiByb290LgorVVBEQVRF IGhpX211bHRpIFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9t dWx0aScpOworCistLSBMb29rdXBzIG9uIGFsbCB0aHJlZSBpbmRleGVzIHJldHVybiB0aGUg cm93LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlfbXVs dGkgV0hFUkUgY29sX2EgPSAxNTsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNv bF9iID0gMjA7CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYyA9IDMwOwor CistLSBPbGQgY29sX2EgdmFsdWUgaXMgdW5yZWFjaGFibGUgYnkgZXF1YWxpdHkgKHN0YWxl IGVudHJ5IGRyb3BwZWQgYnkgdGhlCistLSByZWFkLXNpZGUgY3Jvc3NlZC1hdHRyaWJ1dGUg Yml0bWFwKS4KK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNvbF9hID0gMTA7CitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBoaV9tdWx0aTsKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBNdWx0aS1jb2x1bW4gYnRyZWU6IGhvdC1pbmRl eGVkIG9uIHBhcnQgb2YgYSBjb21wb3NpdGUga2V5CistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9jb21wb3NpdGUgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGRhdGEgdGV4dAorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2NvbXBvc2l0ZV9hYl9p ZHggT04gaGlfY29tcG9zaXRlKGNvbF9hLCBjb2xfYik7CisKK0lOU0VSVCBJTlRPIGhpX2Nv bXBvc2l0ZSBWQUxVRVMgKDEsIDEwLCAyMCwgJ2RhdGEnKTsKKworLS0gY29sX2EgaXMgcGFy dCBvZiB0aGUgY29tcG9zaXRlIGtleTogaG90LWluZGV4ZWQuCitVUERBVEUgaGlfY29tcG9z aXRlIFNFVCBjb2xfYSA9IDE1OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp OworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBvc2l0ZScpOworCistLSBS ZXNldCBhbmQgdGhlbiB1cGRhdGUgY29sX2IgKGFsc28gcGFydCBvZiB0aGUga2V5KS4KK1VQ REFURSBoaV9jb21wb3NpdGUgU0VUIGNvbF9hID0gMTA7CitVUERBVEUgaGlfY29tcG9zaXRl IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor U0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBvc2l0ZScpOworCitEUk9QIFRB QkxFIGhpX2NvbXBvc2l0ZTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA1LiBQ YXJ0aWFsIGluZGV4OiBzdGF0dXMgdHJhbnNpdGlvbiBvdXQtb2YtcHJlZGljYXRlCistLQor LS0gJ3N0YXR1cycgaXMgYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW4uICBBIGNo YW5nZSB0byBhIHByZWRpY2F0ZQorLS0gY29sdW1uIGNhbiBmbGlwIGEgcm93IGluIG9yIG91 dCBvZiB0aGUgaW5kZXgsIHdoaWNoIHRoZSByZWFkLXNpZGUga2V5CistLSByZWNoZWNrIGNh bm5vdCBkZXRlY3QsIHNvIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgY29uc2VydmF0aXZlbHkg ZGlzcXVhbGlmaWVzCistLSBIT1QtaW5kZXhlZCBmb3IgYW55IHByZWRpY2F0ZS1jb2x1bW4g Y2hhbmdlIChldmVuIHRoaXMgb3V0LW9mLXByZWRpY2F0ZSAtPgorLS0gb3V0LW9mLXByZWRp Y2F0ZSBjYXNlKS4gIFRoZSB1cGRhdGUgaXMgdGhlcmVmb3JlIG5vbi1IT1QsIGFuZCB0aGUg cGFydGlhbAorLS0gaW5kZXggY29ycmVjdGx5IHN0YXlzIGVtcHR5IGZvciB0aGVzZSBub24t J2FjdGl2ZScgcm93cy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX3BhcnRpYWwgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4 dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCBoaV9wYXJ0aWFsX2FjdGl2ZV9pZHggT04gaGlfcGFydGlhbChzdGF0dXMpIFdIRVJF IHN0YXR1cyA9ICdhY3RpdmUnOworCitJTlNFUlQgSU5UTyBoaV9wYXJ0aWFsIFZBTFVFUyAo MSwgJ2FjdGl2ZScsICdkYXRhMScpOworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMg KDIsICdpbmFjdGl2ZScsICdkYXRhMicpOworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxV RVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CisKKy0tIG91dCAtPiBvdXQgdHJhbnNpdGlv biBvbiB0aGUgcHJlZGljYXRlIGNvbHVtbjogSE9ULWluZGV4ZWQga2VlcHMgaXQgb24tcGFn ZSwKKy0tIGFuZCB0aGUgcGFydGlhbCBpbmRleCBnZXRzIG5vIGVudHJ5ICh0aGUgcm93IHNh dGlzZmllcyB0aGUgcHJlZGljYXRlIG5laXRoZXIKKy0tIGJlZm9yZSBub3IgYWZ0ZXIgdGhl IHVwZGF0ZSkuCitVUERBVEUgaGlfcGFydGlhbCBTRVQgc3RhdHVzID0gJ2RlbGV0ZWQnIFdI RVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVD VCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0aWFsJyk7CisKKy0tIFRoZSBwYXJ0aWFs IGluZGV4IHN0aWxsIGNvcnJlY3RseSBhbnN3ZXJzICJhY3RpdmUiIHF1ZXJpZXMuCitTRUxF Q1QgaWQsIHN0YXR1cyBGUk9NIGhpX3BhcnRpYWwgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7 CisKK0RST1AgVEFCTEUgaGlfcGFydGlhbDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA2LiBQYXJ0aXRpb246IGhvdC1pbmRleGVkIGluc2lkZSBvbmUgcGFydGl0aW9uCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0ICgKKyAgICBp ZCBpbnQsCisgICAgcGFydGl0aW9uX2tleSBpbnQsCisgICAgaW5kZXhlZF9jb2wgaW50LAor ICAgIGRhdGEgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAoaWQsIHBhcnRpdGlvbl9rZXkpCisp IFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGl0aW9uX2tleSk7CitDUkVBVEUgVEFCTEUgaGlf cGFydF8xIFBBUlRJVElPTiBPRiBoaV9wYXJ0CisgICAgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRf aWR4IE9OIGhpX3BhcnQoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBoaV9wYXJ0IFZB TFVFUyAoMSwgNTAsIDEwMCwgJ2RhdGEnKTsKKworVVBEQVRFIGhpX3BhcnQgU0VUIGluZGV4 ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0XzEnKTsKKwor U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlfcGFydCBXSEVS RSBpbmRleGVkX2NvbCA9IDE1MDsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5k ZXhlZF9jb2wgPSAxMDA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBo aV9wYXJ0IENBU0NBREU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4gVHJp Z2dlciBtb2RpZmllcyBpbmRleGVkIGNvbHVtbjogaG90LWluZGV4ZWQsIG5vdCBub24tSE9U CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV90cmlnZ2VyICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHJpZ2dlcmVkX2NvbCBpbnQsCisgICAg ZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf dHJpZ2dlcl9pZHggT04gaGlfdHJpZ2dlcih0cmlnZ2VyZWRfY29sKTsKKworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1wKCkKK1JFVFVSTlMgVFJJR0dFUiBB UyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29s ICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKwor Q1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9idW1wCisgICAgQkVGT1JFIFVQREFURSBP TiBoaV90cmlnZ2VyCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBGVU5DVElPTiBo aV90cmlnZ2VyX2J1bXAoKTsKKworSU5TRVJUIElOVE8gaGlfdHJpZ2dlciBWQUxVRVMgKDEs IDEwMCwgJ2luaXRpYWwnKTsKKworLS0gVVBEQVRFJ3MgU0VUIGNsYXVzZSBkb2Vzbid0IHRv dWNoIHRoZSBpbmRleGVkIGNvbHVtbiwgYnV0IHRoZQorLS0gdHJpZ2dlciBtb2RpZmllcyBp dCB2aWEgaGVhcF9tb2RpZnlfdHVwbGUuICBob3QtaW5kZXhlZCBtdXN0IGRldGVjdCB0aGlz CistLSBhbmQga2VlcCB0aGUgdHVwbGUgb24tcGFnZSAoSEVBUF9JTkRFWEVEX1VQREFURUQp IHBsdXMgYSBuZXcgYnRyZWUgZW50cnkuCitVUERBVEUgaGlfdHJpZ2dlciBTRVQgZGF0YSA9 ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfdHJpZ2dlcicpOworU0VM RUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBoaV90cmlnZ2VyIFdIRVJFIGlkID0gMTsKKworLS0g TmV3IHZhbHVlIHJlYWNoYWJsZS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVD VCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgdHJpZ2dlcmVkX2NvbCA9IDEwMTsKK1NFTEVD VCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgdHJpZ2dlcmVkX2NvbCA9IDEwMDsKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhpX3RyaWdnZXIgQ0FTQ0FERTsKK0RS T1AgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1wKCk7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gOC4gSlNPTkIgZXhwcmVzc2lvbiBpbmRleDogSE9ULWluZGV4ZWQgaXMgbm90 IHlldCBzdXBwb3J0ZWQgb24gZXhwcmVzc2lvbgorLS0gICAgaW5kZXhlcywgc28gdGhlIHVw ZGF0ZSBmYWxscyBiYWNrIHRvIGEgbm9uLUhPVCB1cGRhdGUgKGhvdF9pZHggPSAwKS4KKy0t ICAgIFJlYWRzIHN0YXkgY29ycmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JF QVRFIFRBQkxFIGhpX2pzb25iICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0 YSBqc29uYgorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2pz b25iX25hbWVfaWR4IE9OIGhpX2pzb25iICgoZGF0YS0+PiduYW1lJykpOworCitJTlNFUlQg SU5UTyBoaV9qc29uYiBWQUxVRVMgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzB9Jyk7 CisKKy0tIENoYW5naW5nIHRoZSBpbmRleGVkIGV4cHJlc3Npb24ncyB2YWx1ZSAobmFtZSk6 IGV4cHJlc3Npb24gaW5kZXhlcyBhcmUgbm90CistLSB5ZXQgc3VwcG9ydGVkLCBzbyB0aGlz IGlzIGEgbm9uLUhPVCB1cGRhdGUuCitVUERBVEUgaGlfanNvbmIgU0VUIGRhdGEgPSBqc29u Yl9zZXQoZGF0YSwgJ3tuYW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2Nv dW50KCdoaV9qc29uYicpOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1Qg aWQgRlJPTSBoaV9qc29uYiBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7CitTRUxF Q1QgaWQgRlJPTSBoaV9qc29uYiBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlJzsKK1JF U0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhpX2pzb25iOworCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDkuIEdJTiBpbmRleCB3aXRoIGNoYW5nZWQgZXh0cmFj dGVkIGtleXM6IGhvdC1pbmRleGVkCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFU RSBUQUJMRSBoaV9naW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWdzIHRl eHRbXQorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2dpbl90 YWdzX2lkeCBPTiBoaV9naW4gVVNJTkcgZ2luICh0YWdzKTsKKworSU5TRVJUIElOVE8gaGlf Z2luIFZBTFVFUyAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddKTsKKworLS0gQWRkaW5nIGEg dGFnIHlpZWxkcyBhIGRpZmZlcmVudCBleHRyYWN0ZWQta2V5IHNldDogaG90LWluZGV4ZWQu CitVUERBVEUgaGlfZ2luIFNFVCB0YWdzID0gQVJSQVlbJ3RhZzEnLCAndGFnMicsICd0YWc1 J10gV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor U0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2dpbicpOworCitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9naW4gV0hFUkUgdGFncyBAPiBBUlJB WVsndGFnNSddOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfZ2lu OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEwLiBQZXItaW5kZXggSE9ULWlu ZGV4ZWQgY291bnRlcnM6IHNraXBwZWQgdnMgbWF0Y2hlZAorLS0KKy0tIEEgdGFibGUgd2l0 aCB0d28gaW5kZXBlbmRlbnQgc2Vjb25kYXJ5IGluZGV4ZXMuICBBbiBVUERBVEUgdG91Y2hl cyBhCistLSBjb2x1bW4gY292ZXJlZCBieSBvbmx5IG9uZSBvZiB0aGVtOyB0aGUgSE9ULWlu ZGV4ZWQgcGF0aCBtdXN0IGluc2VydAorLS0gaW50byB0aGF0IG9uZSBpbmRleCBhbmQgc2tp cCB0aGUgb3RoZXIuICBwZ19zdGF0X2FsbF9pbmRleGVzIHJlcG9ydHMKKy0tIG1hdGNoZWQ+ MCBvbiB0aGUgdXBkYXRlZCBpbmRleCBhbmQgc2tpcHBlZD4wIG9uIHRoZSB1bnRvdWNoZWQg aW5kZXguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBob3RpZHhf cGVyaW5kZXggKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludCwKKyAgICBi IGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdGlkeF9w ZXJpbmRleF9hIE9OIGhvdGlkeF9wZXJpbmRleChhKTsKK0NSRUFURSBJTkRFWCBob3RpZHhf cGVyaW5kZXhfYiBPTiBob3RpZHhfcGVyaW5kZXgoYik7CisKK0lOU0VSVCBJTlRPIGhvdGlk eF9wZXJpbmRleCBWQUxVRVMgKDEsIDEwMCwgMjAwKTsKKworLS0gTW9kaWZ5IG9ubHkgY29s dW1uIGEuICBIT1QtaW5kZXhlZCBpbnNlcnRzIGludG8gaG90aWR4X3BlcmluZGV4X2EgYW5k CistLSBza2lwcyBob3RpZHhfcGVyaW5kZXhfYiAocHJpbWFyeSBrZXkgaW5kcmVsaWQgaXMg dGhlIHRhYmxlIGl0c2VsZiBhbmQKKy0tIGFsc28gdW5jaGFuZ2VkLCBzbyBpdCBjb3VudHMg YXMgc2tpcHBlZCB0b28pLgorVVBEQVRFIGhvdGlkeF9wZXJpbmRleCBTRVQgYSA9IDEwMSBX SEVSRSBpZCA9IDE7CisKKy0tIEZvcmNlIGZsdXNoIG9mIHBlbmRpbmcgc3RhdHMgdG8gdGhl IHNoYXJlZCBlbnRyeS4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKwor U0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0 Y2hlZCBBUyBtYXRjaGVkLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVk IEFTIHNraXBwZWQKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFt ZSA9ICdob3RpZHhfcGVyaW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworCistLSBB IHNlY29uZCBVUERBVEUgdG91Y2hpbmcgb25seSBiIGludmVydHMgdGhlIGFzc2lnbm1lbnQu CitVUERBVEUgaG90aWR4X3BlcmluZGV4IFNFVCBiID0gMjAxIFdIRVJFIGlkID0gMTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKworU0VMRUNUIGluZGV4cmVsbmFt ZSwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCBBUyBtYXRjaGVkLAor ICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIEFTIHNraXBwZWQKKyAgRlJP TSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5k ZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworCistLSBJbnZhcmlhbnQ6IG1hdGNoZWQg KyBza2lwcGVkID09IG93bmluZyB0YWJsZSdzIG5fdHVwX2hvdF9pbmRleGVkX3VwZC4KK1NF TEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNo ZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyB0b3RhbCwKKyAgICAgICAo U0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcwor ICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnKSBBUyB0YWJsZV9o b3RfaWR4X3VwZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1l ID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5hbWU7CisKKy0tIEJv b2xlYW4gYXNzZXJ0aW9uIG9mIHRoZSBzYW1lIGludmFyaWFudC4gIFRoaXMgaXMgdGhlIGNh bm9uaWNhbCBmb3JtCistLSByZXZpZXdlcnMgYXNrZWQgZm9yOiBldmVyeSBpbmRleCBlbnRy eSBpcyBlaXRoZXIgbWF0Y2hlZCAodGhlIGluZGV4CistLSBnb3QgYSBmcmVzaCBpbnNlcnQg dGhpcyBVUERBVEUpIG9yIHNraXBwZWQgKEhPVC1pbmRleGVkIGNvcnJlY3RseQorLS0gYXZv aWRlZCBhbiBpbnNlcnQgYmVjYXVzZSB0aGUgaW5kZXgncyBhdHRycyBkaWQgbm90IGNoYW5n ZSkuICBJZiB0aGUKKy0tIHR3byBjb3VudGVycyBkcmlmdCBhcGFydCBmcm9tIHRoZSB0YWJs ZS1sZXZlbCBuX3R1cF9ob3RfaW5kZXhlZF91cGQgd2UKKy0tIGhhdmUgZWl0aGVyIGxvc3Qg YSBwZXItaW5kZXggaW5jcmVtZW50IG9yIGRvdWJsZS1jb3VudGVkIG9uZS4KK1NFTEVDVCBi b29sX2FuZCgobl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKyBuX3R1cF9ob3RfaW5k ZXhlZF91cGRfc2tpcHBlZCkgPQorICAgICAgICAgICAgICAgIChTRUxFQ1Qgbl90dXBfaG90 X2luZGV4ZWRfdXBkIEZST00gcGdfc3RhdF9hbGxfdGFibGVzCisgICAgICAgICAgICAgICAg ICBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcpKQorICAgICAgICAgQVMgcGVy aW5kZXhfaW52YXJpYW50X2hvbGRzCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdI RVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JzsKKworRFJPUCBUQUJMRSBob3RpZHhf cGVyaW5kZXg7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTEuIExvbmcgaG90 LWxvb3AgVVBEQVRFIHN0YXlzIGNvbXBhY3QgYW5kIEhPVC1pbmRleGVkCistLQorLS0gQSBs b25nIHJ1biBvZiBIT1QtaW5kZXhlZCBVUERBVEVzIHRvIGEgc2luZ2xlIHJvdyBzdGF5cyBj b21wYWN0OiBwcnVuZQorLS0gY29sbGFwc2VzIGVhY2ggZGVhZCB2ZXJzaW9uIHRvIGEgcmVk aXJlY3QgdG8gdGhlIGxpdmUgdHVwbGUgYW5kIHJldXNlcyBpdHMKKy0tIHNsb3QsIHNvIHRo ZSByb3cgbmV2ZXIgbGVhdmVzIGl0cyBvcmlnaW5hbCBwYWdlIGFuZCB0aGUgY2hhaW4gZG9l cyBub3QgZ3JvdworLS0gdW5ib3VuZGVkLiAgRXZlcnkgVVBEQVRFIHRoYXQgY2hhbmdlcyB0 aGUgaW5kZXhlZCBjb2x1bW4gKGFuZCBsZWF2ZXMgYW5vdGhlcgorLS0gaW5kZXgsIGhlcmUg dGhlIFBLLCB1bmNoYW5nZWQpIHRha2VzIHRoZSBIT1QtaW5kZXhlZCBwYXRoLgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfY2hhaW5jYXAgKAorICAgIGlk IGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gMTAp OworQ1JFQVRFIElOREVYIGhpX2NoYWluY2FwX2FfaWR4IE9OIGhpX2NoYWluY2FwKGEpOwor CitJTlNFUlQgSU5UTyBoaV9jaGFpbmNhcCBWQUxVRVMgKDEsIDApOworCitETyAkJAorREVD TEFSRQorICAgIGkgaW50OworQkVHSU4KKyAgICBGT1IgaSBJTiAxIC4uIDIwMCBMT09QCisg ICAgICAgIFVQREFURSBoaV9jaGFpbmNhcCBTRVQgYSA9IGkgV0hFUkUgaWQgPSAxOworICAg IEVORCBMT09QOworRU5EICQkOworCistLSBBZnRlciAyMDAgVVBEQVRFcyB0aGUgcm93J3Mg dmFsdWUgaXMgMjAwLgorU0VMRUNUIGEgRlJPTSBoaV9jaGFpbmNhcCBXSEVSRSBpZCA9IDE7 CisKKy0tIEV2ZXJ5IFVQREFURSB0b29rIHRoZSBIT1QtaW5kZXhlZCBwYXRoICh0aGUgUEsg aW5kZXggaXMgdW5jaGFuZ2VkLCBzbyBpdCBpcworLS0gc2tpcHBlZCksIHNvIG5fdHVwX2hv dF9pbmRleGVkX3VwZCBhZHZhbmNlZC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBob3RfaW5kZXhlZF9maXJlZAorICBGUk9N IGdldF9oaV9jb3VudCgnaGlfY2hhaW5jYXAnKTsKKworLS0gVGhlIGhlYXAgc3RheWVkIGNv bXBhY3Q6IHBydW5lK2NvbGxhcHNlIHJlY2xhaW1lZCB0aGUgZGVhZCB2ZXJzaW9ucywgc28g dGhlCistLSBzaW5nbGUgbGl2ZSByb3cgc3RpbGwgb2NjdXBpZXMganVzdCBvbmUgcGFnZS4K K1NFTEVDVCByZWxwYWdlcyA8PSAxIEFTIGhlYXBfc3RheWVkX2NvbXBhY3QKKyAgRlJPTSBw Z19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2hpX2NoYWluY2FwJzsKKworRFJPUCBUQUJMRSBo aV9jaGFpbmNhcDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMi4gUmVjbGFt YXRpb24gb2YgYSBjb2xsYXBzZWQgSE9ULWluZGV4ZWQgY2hhaW4gYnkgcHJ1bmUKKy0tCist LSBBIGRlYWQgSE9ULWluZGV4ZWQgY2hhaW4gbWVtYmVyIGlzIHByZXNlcnZlZCBhdCBwcnVu ZSB0aW1lIChpdHMgc3RhbGUgbGVhZgorLS0gbWF5IHN0aWxsIGV4aXN0KSBhbmQgdGhlIGNo YWluIGNvbGxhcHNlcyB0byBhbiBMUF9SRURJUkVDVCBmb3J3YXJkZXI7IHRoZQorLS0gaW5k ZXggY2xlYW51cCBwYXNzIHRoZW4gc3dlZXBzIHRoZSBzdGFsZSBsZWFmLCBhbmQgYSBzZWNv bmQgVkFDVVVNIHJlY2xhaW1zCistLSB0aGUgbm93LXVucmVmZXJlbmNlZCBtZW1iZXIgYW5k IHJlLXBvaW50cyB0aGUgcmVkaXJlY3QuICBTbyB0aGUgY2hhaW4gaXMKKy0tIGZ1bGx5IHJl Y2xhaW1lZCBhZnRlciB0aGUgc2Vjb25kIFZBQ1VVTSwgbm90IHRoZSBmaXJzdC4KKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JlY2xhaW0gKAorICAgIGlk IGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhpX3JlY2xhaW1fYV9pZHggT04gaGlfcmVjbGFpbShhKTsKKwor SU5TRVJUIElOVE8gaGlfcmVjbGFpbSBWQUxVRVMgKDEsIDEwMCk7CistLSBHZW5lcmF0ZSBh IGNvbGxhcHNlZCBjaGFpbiB2aWEgYSBIT1QtaW5kZXhlZCB1cGRhdGUuCitVUERBVEUgaGlf cmVjbGFpbSBTRVQgYSA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qgbl9ob3RfaW5kZXhl ZCA+PSAxIEFTIGhvdF9pbmRleGVkX3ByZXNlbnRfYmVmb3JlX3JlY2xhaW0KKyAgRlJPTSBw Z19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjbGFpbScpOworCistLSBEZWxl dGUgdGhlIGxpdmUgdHVwbGUuICBUaGUgZmlyc3QgVkFDVVVNIGNvbGxhcHNlcyB0aGUgZGVh ZCBjaGFpbiBhbmQgc3dlZXBzCistLSB0aGUgc3RhbGUgbGVhZjsgdGhlIHNlY29uZCByZWNs YWltcyB0aGUgbm93LXVucmVmZXJlbmNlZCBtZW1iZXJzLgorREVMRVRFIEZST00gaGlfcmVj bGFpbSBXSEVSRSBpZCA9IDE7CitWQUNVVU0gaGlfcmVjbGFpbTsKK1ZBQ1VVTSBoaV9yZWNs YWltOworCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCBBUyBob3RfaW5kZXhlZF9hZnRlcl9yZWNs YWltLAorICAgICAgIG5fY2hhaW5zIEFTIGNoYWluc19hZnRlcl9yZWNsYWltCisgIEZST00g cGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKworRFJPUCBU QUJMRSBoaV9yZWNsYWltOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEzLiBQ YWdlIHdpdGggYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIGlzIG5ldmVyIG1hcmtl ZCBhbGwtdmlzaWJsZQorLS0KKy0tIHBydW5laGVhcCBkZWxpYmVyYXRlbHkgbGVhdmVzIFBE X0FMTF9WSVNJQkxFIGNsZWFyIG9uIGFueSBwYWdlIHRoYXQgc3RpbGwKKy0tIGNhcnJpZXMg YSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyOiBhbiBpbmRleC1vbmx5IHNjYW4gbXVz dCBoZWFwLWZldGNoCistLSB0aHJvdWdoIHRoZSBjaGFpbiBzbyB0aGUgcmVhZC1zaWRlIGNy b3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyIHN0YWxlIGJ0cmVlCistLSBlbnRy aWVzLgorLS0KKy0tIFdlIGZvcmNlIHRoZSBmcmVlemUgcGF0aCB3aXRoIFZBQ1VVTSAoRlJF RVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGFuZAorLS0gdGhlbiByZWFkIHBkX2ZsYWdz IHZpYSBwYWdlaW5zcGVjdC5wYWdlX2hlYWRlci4gIFRoZSBwYWdlIG11c3Qgc3RpbGwgY2Fy cnkKKy0tIGEgSE9ULWluZGV4ZWQgbWVtYmVyIChuX2hvdF9pbmRleGVkID4gMCkgQU5EIG11 c3Qgbm90IGhhdmUgUERfQUxMX1ZJU0lCTEUKKy0tICgweDAwMDQpLgorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdm0gKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElO REVYIGhpX3ZtX2FfaWR4IE9OIGhpX3ZtKGEpOworCitJTlNFUlQgSU5UTyBoaV92bSBWQUxV RVMgKDEsIDEpOworLS0gVHdvIEhPVC1pbmRleGVkIHVwZGF0ZXMgbGVhdmUgYSBtdWx0aS1o b3AgY2hhaW4sIHNvIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkCistLSBtZW1iZXIgcmVtYWlu cyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuZSwgd2hpY2ggaXMgd2hhdCB0aGlzIHRlc3QgbmVl ZHMuCitVUERBVEUgaGlfdm0gU0VUIGEgPSAyIFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV92 bSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworCistLSBGb3JjZSB0aGUgYWxsLXZpc2libGUg Yml0IGRlY2lzaW9uOiBWQUNVVU0gd2l0aCBESVNBQkxFX1BBR0VfU0tJUFBJTkcKKy0tIGNv bnNpZGVycyBldmVyeSBwYWdlOyBGUkVFWkUgcHVzaGVzIGhpbnQgYml0cyBoYXJkLiAgQWZ0 ZXIgdGhpcywgYW55CistLSBwYWdlIGJlYXJpbmcgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQg bWVtYmVyIG11c3Qgc3RpbGwgcmVwb3J0IGFsbF92aXNpYmxlID0gMC4KK1ZBQ1VVTSAoRlJF RVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3ZtOworCitTRUxFQ1Qgbl9ob3RfaW5k ZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVkX3ByZXNlbnQKKyAgRlJPTSBwZ19yZWxhdGlvbl9o b3RfaW5kZXhlZF9zdGF0cygnaGlfdm0nKTsKKworLS0gUERfQUxMX1ZJU0lCTEUgPSAweDAw MDQuICBNdXN0IGJlIDAgb24gYSBwYWdlIHdpdGggYSBwcmVzZXJ2ZWQgbWVtYmVyLgorU0VM RUNUIChmbGFncyAmIDQpID0gMCBBUyBub3RfbWFya2VkX2FsbF92aXNpYmxlCisgIEZST00g cGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCdoaV92bScsIDApKTsKKworRFJPUCBUQUJMRSBo aV92bTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNC4gQ3ljbGUta2V5IGRl ZHVwOiBjb2x1bW4gcmVuYW1lIGEgLT4gYiAtPiBhIHN0YXlzIGNvcnJlY3QKKy0tCistLSBB IHJlbmFtZSBkb2VzIG5vdCByZXdyaXRlIGhlYXAgb3IgaW5kZXggZW50cmllczsgaXQgb25s eSB1cGRhdGVzIHRoZQorLS0gY2F0YWxvZy4gIFRoZSByZWxjYWNoZSBpbnZhbGlkYXRpb24g bXVzdCB0cmlnZ2VyIGEgZnJlc2ggYXR0cmlidXRlCistLSBiaXRtYXAgYW5kIHRoZSBIT1Qt aW5kZXhlZCBwcmVkaWNhdGUgbXVzdCBjb21wYXJlIGF0dHJpYnV0ZSAqbnVtYmVycyosCist LSBub3QgYXR0cmlidXRlICpuYW1lcyouICBBZnRlciB0d28gcmVuYW1lcyB0aGF0IG5ldCB0 byBpZGVudGl0eSwgZXZlcnkKKy0tIHN1YnNlcXVlbnQgVVBEQVRFIG11c3QgY29udGludWUg dG8gZHJpdmUgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9jeWNsZSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf Y3ljbGVfYV9pZHggT04gaGlfY3ljbGUoYSk7CisKK0lOU0VSVCBJTlRPIGhpX2N5Y2xlIFZB TFVFUyAoMSwgMTAwKTsKKworLS0gQ3ljbGUgdGhlIGNvbHVtbiBuYW1lIGFuZCBjb25maXJt IGJvdGggaW50ZXJtZWRpYXRlIGZvcm1zIGRyaXZlIEhPVC1pbmRleGVkLgorQUxURVIgVEFC TEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBhIFRPIGI7CitVUERBVEUgaGlfY3ljbGUgU0VU IGIgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRleGVkX2FmdGVyX2ZpcnN0X3Jl bmFtZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfY3ljbGUnKTsKKworQUxURVIgVEFCTEUg aGlfY3ljbGUgUkVOQU1FIENPTFVNTiBiIFRPIGE7CitVUERBVEUgaGlfY3ljbGUgU0VUIGEg PSAzMDAgV0hFUkUgaWQgPSAxOworLS0gTG9va3VwIHZpYSB0aGUgaW5kZXggcmV0dXJucyB0 aGUgY3VycmVudCB2YWx1ZSwgbm90IGFueSBvZiB0aGUKKy0tIHByZS1yZW5hbWUgdmFsdWVz LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZST00gaGlfY3lj bGUgV0hFUkUgYSA9IDMwMDsKK1NFTEVDVCBpZCBGUk9NIGhpX2N5Y2xlIFdIRVJFIGEgPSAx MDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0gMjAwOworUkVTRVQgZW5h YmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfY3ljbGU7CisKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkgY29sdW1uIFVQREFURSBwcm9k dWNlcyBDTEFTU0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhlYXBVcGRhdGVIb3RBbGxvd2Fi bGUgcmV0dXJucyBIRUFQX0hFQVBfT05MWV9VUERBVEUgd2hlbiBldmVyeQorLS0gbW9kaWZp ZWQgaW5kZXhlZCBhdHRyaWJ1dGUgaXMgY292ZXJlZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGlu ZGV4ZXMuCistLSBBIEJSSU4tb25seSBjb2x1bW4gaXMgdGhlIGNhbm9uaWNhbCBjYXNlOiB0 aGUgQlJJTiBpbmRleCBnZXRzIGEKKy0tIG5ldyBzdW1tYXJ5IGVudHJ5IHZpYSBhbWluc2Vy dCwgYnV0IG5vIHBlci11cGRhdGUgYnRyZWUgZW50cnkgaXMKKy0tIG5lZWRlZCBhbmQgSE9U LWluZGV4ZWQgZG9lcyBub3QgZmlyZS4gIFRoZSBzaWduYWwgaXMKKy0tIG5fdHVwX2hvdF91 cGQgPiAwIHdpdGggbl90dXBfaG90X2luZGV4ZWRfdXBkIHVuY2hhbmdlZC4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2JyaW4gKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICBiY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX2JyaW5faWR4IE9OIGhpX2JyaW4gVVNJTkcgYnJpbihiY29sKTsK KworSU5TRVJUIElOVE8gaGlfYnJpbiBWQUxVRVMgKDEsIDEwMCk7CisKKy0tIENhcHR1cmUg dGhlIEhPVC1pbmRleGVkIGNvdW50ZXIgYmVmb3JlLCBkcml2ZSBhIEJSSU4tb25seSB1cGRh dGUsCistLSBhbmQgYXNzZXJ0IHRoYXQgY2xhc3NpYyBIT1QgYWR2YW5jZWQgd2hpbGUgSE9U LWluZGV4ZWQgZGlkIG5vdC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK K1NFTEVDVCBob3RfaWR4IEFTIGhvdF9pZHhfYmVmb3JlIEZST00gZ2V0X2hpX2NvdW50KCdo aV9icmluJykgXGdzZXQKK1VQREFURSBoaV9icmluIFNFVCBiY29sID0gMjAwIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAoaG90 IC0gMCkgPiAwIEFTIGNsYXNzaWNfaG90X2ZpcmVkLAorICAgICAgIGhvdF9pZHggPSA6aG90 X2lkeF9iZWZvcmUgQVMgaG90X2luZGV4ZWRfZGlkX25vdF9maXJlCisgIEZST00gZ2V0X2hp X2NvdW50KCdoaV9icmluJyk7CisKKy0tIFRoZSBCUklOIGluZGV4IHNlZXMgdGhlIG5ldyB2 YWx1ZSB2aWEgYW1pbnNlcnQuCitTRUxFQ1QgYmNvbCBGUk9NIGhpX2JyaW4gV0hFUkUgaWQg PSAxOworCitEUk9QIFRBQkxFIGhpX2JyaW47CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gMTYuIFVOSVFVRSBpbmRleCBvbiBhIHR5cGUgd2hlcmUgaW1hZ2UgZXF1YWxpdHkg IT0gb3BlcmF0b3IgZXF1YWxpdHkKKy0tCistLSBudW1lcmljIDEuMCBhbmQgMS4wMCBhcmUg ZXF1YWwgdW5kZXIgdGhlIGJ0cmVlIG9wY2xhc3MgYnV0IGhhdmUKKy0tIGRpZmZlcmVudCBv bi1kaXNrIGltYWdlcy4gIEEgSE9ULWluZGV4ZWQgdXBkYXRlIDEuMCAtPiAxLjAwIGluc2Vy dHMgYQorLS0gZnJlc2ggbGVhZiBjYXJyeWluZyB0aGUgbGl2ZSBpbWFnZSBhbmQgbGVhdmVz IGEgc3RhbGUgbGVhZiBmb3IgMS4wCistLSAodGhlIGhvcCdzIG1vZGlmaWVkLWF0dHJzIGJp dG1hcCBtYXJrcyBrIGNoYW5nZWQsIHNpbmNlIG1vZGlmaWVkLWNvbHVtbgorLS0gZGV0ZWN0 aW9uIGlzIGltYWdlLWJhc2VkKS4gIEEgbGF0ZXIgSU5TRVJUIG9mIGEgdmFsdWUgZXF1YWwg dW5kZXIgdGhlCistLSBvcGNsYXNzIG11c3Qgc3RpbGwgYmUgZGV0ZWN0ZWQgYXMgYSBkdXBs aWNhdGU6IHRoZSB1bmlxdWUgY2hlY2sgcmVhY2hlcworLS0gdGhlIGxpdmUgdHVwbGUgdGhy b3VnaCB0aGUgZnJlc2ggbGVhZiwgd2hpY2ggcG9pbnRzIGRpcmVjdGx5IGF0IGl0IChubyBo b3AKKy0tIGFmdGVyIGl0LCBzbyB0aGUgb3ZlcmxhcCBpcyBlbXB0eSBhbmQgdGhlIGxlYWYg aXMgYSBnZW51aW5lIGNvbmZsaWN0KTsgdGhlCistLSBzdGFsZSAxLjAgbGVhZiBpcyBza2lw cGVkIGJlY2F1c2UgdGhlIGstY2hhbmdpbmcgaG9wIG92ZXJsYXBzIHRoZSB1bmlxdWUKKy0t IGluZGV4J3MgYXR0cmlidXRlLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUg VEFCTEUgaGlfdW51bSAoayBudW1lcmljIFVOSVFVRSwgaiBpbnQpIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfdW51bV9qIE9OIGhpX3VudW0oaik7ICAgICAg ICAgICAgIC0tIDJuZCBpbmRleGVkIGF0dHIsIGtlcHQgZml4ZWQKK0lOU0VSVCBJTlRPIGhp X3VudW0gVkFMVUVTICgxLjAsIDEwMCk7CitVUERBVEUgaGlfdW51bSBTRVQgayA9IDEuMDAg V0hFUkUgaiA9IDEwMDsgICAgICAgIC0tIEhPVC1pbmRleGVkOiAxLjAgLT4gMS4wMAorU0VM RUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19y ZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdW51bScpOworLS0gQSBudW1lcmljYWxs eS1lcXVhbCBpbnNlcnQgbXVzdCBjb25mbGljdCAodGhlIGZyZXNoIGxlYWYgY2F0Y2hlcyBp dCk6CitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMS4wLCAxKTsgICAgICAgICAgICAg IC0tIGV4cGVjdCBkdXBsaWNhdGUga2V5IGVycm9yCistLSBBIGdlbnVpbmVseSBkaWZmZXJl bnQgdmFsdWUgaXMgYWNjZXB0ZWQ6CitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMi4w LCAyKTsKK1NFTEVDVCBrLCBqIEZST00gaGlfdW51bSBPUkRFUiBCWSBqOworRFJPUCBUQUJM RSBoaV91bnVtOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE3LiBDUkVBVEUg SU5ERVggYW5kIFJFSU5ERVggb3ZlciBsaXZlIEhPVC1pbmRleGVkIGNoYWlucworLS0KKy0t IEEgZnJlc2hseSBidWlsdCBvciByZWJ1aWx0IGluZGV4IG11c3QgcmVmbGVjdCBjdXJyZW50 IHZhbHVlcywgbmV2ZXIgYQorLS0gc3RhbGUgY2hhaW4gbWVtYmVyOiB0aGUgYnVpbGQgc2Nh bnMgbGl2ZSB0dXBsZXMgb25seSBhbmQgcG9pbnRzIGVhY2gKKy0tIEhPVC1pbmRleGVkIGxp dmUgdHVwbGUncyBlbnRyeSBhdCBpdHMgb3duIFRJRCwgc28gdGhlIG5ldyBlbnRyaWVzIGhh dmUgbm8KKy0tIGhvcCBhZnRlciB0aGVtIGFuZCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwIGtlZXBzIHRoZW0uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9yZWluZGV4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9yZWluZGV4X2EgT04gaGlfcmVp bmRleChhKTsKK0lOU0VSVCBJTlRPIGhpX3JlaW5kZXggU0VMRUNUIGcsIGcsIGcgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0gYSAr IDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQgb24gYQorVVBEQVRFIGhpX3Jl aW5kZXggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAtLSBhZ2FpbiAtPiBsb25n ZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5kZXhl ZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWluZGV4Jyk7 CistLSBCdWlsZCBhIE5FVyBpbmRleCBhbmQgUkVJTkRFWCB0aGUgZXhpc3Rpbmcgb25lIG92 ZXIgdGhlIGxpdmUgY2hhaW5zLgorQ1JFQVRFIElOREVYIGhpX3JlaW5kZXhfYiBPTiBoaV9y ZWluZGV4KGIpOworUkVJTkRFWCBJTkRFWCBoaV9yZWluZGV4X2E7CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWluZGV4IFdIRVJFIGEgPSAy MDQ7ICAgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gaWQgNAorU0VMRUNUIGNvdW50KCopIEZS T00gaGlfcmVpbmRleCBXSEVSRSBhID0gNDsgICAgICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAw CitTRUxFQ1QgaWQgRlJPTSBoaV9yZWluZGV4IFdIRVJFIGIgPSAyOyAgICAgICAgICAgIC0t IHZpYSBmcmVzaGx5IGJ1aWx0IGluZGV4IC0+IDIKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor RFJPUCBUQUJMRSBoaV9yZWluZGV4OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMsIHRo ZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIgYWxsIGluZGV4ZXMgYXJlIGRyb3BwZWQsIGhlYXAg cGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHByZXNlcnZlZAorLS0gSE9ULWluZGV4ZWQgbWVtYmVy cyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRlcy4gIFZBQ1VVTSBvZiBzdWNoIGEgbm8taW5kZXgK Ky0tIHJlbGF0aW9uIG11c3QgY29tcGxldGUgd2l0aG91dCBlcnJvciwgYW5kIHJlYWRzIG11 c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUKKy0tIHJlZGlyZWN0IGZvcndhcmRlcnMuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9kcm9waWR4IChpZCBpbnQg UFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElO REVYIGhpX2Ryb3BpZHhfYSBPTiBoaV9kcm9waWR4KGEpOworSU5TRVJUIElOVE8gaGlfZHJv cGlkeCBTRUxFQ1QgZywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2KSBnOworVVBEQVRF IGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAtLSBIT1QtaW5k ZXhlZCBvbiBhCitVUERBVEUgaGlfZHJvcGlkeCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAg ICAgICAgIC0tIGFnYWluIC0+IGxvbmdlciBjaGFpbnMKK1NFTEVDVCBuX2hvdF9pbmRleGVk ID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4 ZWRfc3RhdHMoJ2hpX2Ryb3BpZHgnKTsKKy0tIERyb3AgZXZlcnkgaW5kZXgsIGxlYXZpbmcg cHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlcnMgd2l0aCBubyBpbmRleCB0byBzd2VlcC4K K0RST1AgSU5ERVggaGlfZHJvcGlkeF9hOworQUxURVIgVEFCTEUgaGlfZHJvcGlkeCBEUk9Q IENPTlNUUkFJTlQgaGlfZHJvcGlkeF9wa2V5OworLS0gTXVzdCBub3QgY3Jhc2ggb24gdGhl IG5vLWluZGV4IHBhdGg7IHR3byBwYXNzZXMgZXhlcmNpc2UgdGhlIHNlY29uZC1wYXNzCist LSByZWNsYWltIGd1YXJkIGFzIHdlbGwuCitWQUNVVU0gaGlfZHJvcGlkeDsKK1ZBQ1VVTSBo aV9kcm9waWR4OworLS0gUmVhZHMgcmVtYWluIGNvcnJlY3QgYWZ0ZXIgdGhlIGluZGV4ZXMg YXJlIGdvbmUuCitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9kcm9waWR4IE9SREVSIEJZIGlkOwor RFJPUCBUQUJMRSBoaV9kcm9waWR4OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDE5LiBSZS1jb2xsYXBzZSBvZiBhIGRhdGEtcmVkaXJlY3QgY2hhaW4gYWNyb3NzIHBhcnRp YWwgVkFDVVVNcworLS0KKy0tIEEgY2hhaW4gdGhhdCBjb2xsYXBzZXMgdG8gYSBIT1QtaW5k ZXhlZCBkYXRhIHJlZGlyZWN0LCBpcyB2YWN1dW1lZCB3aXRoCistLSBJTkRFWF9DTEVBTlVQ IG9mZiAoc28gdGhlIHN0YWxlIGxlYXZlcyBhbmQgdGhlIHJlZGlyZWN0IHN1cnZpdmUpLCB0 aGVuCistLSByZWNlaXZlcyBmdXJ0aGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMgdGhhdCByZS1j b2xsYXBzZSB0aGUgY2hhaW4gYW5kCistLSByZS1wb2ludCB0aGUgcmVkaXJlY3QgYXQgYSBu ZXcgbGl2ZSB0dXBsZSwgbXVzdCBub3QgbGVhdmUgdGhlIHJlZGlyZWN0CistLSBkYW5nbGlu Zy4gIEEgc3Vic2VxdWVudCBmdWxsIFZBQ1VVTSBtdXN0IGNvbXBsZXRlIHdpdGhvdXQgZXJy b3IsIGxlYXZlIHRoZQorLS0gaGVhcCBjb25zaXN0ZW50ICh2ZXJpZnlfaGVhcGFtIHJlcG9y dHMgbm90aGluZyksIGFuZCByZWFkcyBtdXN0IHN0YXkKKy0tIGNvcnJlY3QuICAoUmVncmVz c2lvbjogYW4gZWFybGllciByZXZpc2lvbiBjcmFzaGVkIHJlY2xhaW1pbmcgYSBtaWQtY2hh aW4KKy0tIG1lbWJlciB3aGlsZSBhIGRhdGEgcmVkaXJlY3Qgc3RpbGwgcG9pbnRlZCBwYXN0 IGl0LikKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIEVYVEVOU0lPTiBJRiBO T1QgRVhJU1RTIGFtY2hlY2s7CitDUkVBVEUgVEFCTEUgaGlfcmVjb2xsYXBzZSAoaWQgaW50 IFBSSU1BUlkgS0VZLCBhIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCBoaV9yZWNvbGxhcHNlX2EgT04gaGlfcmVjb2xsYXBzZShhKTsKK0lOU0VSVCBJTlRP IGhpX3JlY29sbGFwc2UgVkFMVUVTICgxLCAxKTsKKy0tIEZpcnN0IGNoYWluOiB0d28gSE9U LWluZGV4ZWQgdXBkYXRlcywgdGhlbiBwcnVuZSB0byBhIGRhdGEgcmVkaXJlY3Qgd2hpbGUK Ky0tIGxlYXZpbmcgdGhlIHN0YWxlIGJ0cmVlIGxlYXZlcyBpbiBwbGFjZSAoSU5ERVhfQ0xF QU5VUCBvZmYpLgorVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSAyIFdIRVJFIGlkID0g MTsKK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gMyBXSEVSRSBpZCA9IDE7CitWQUNV VU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9yZWNvbGxhcHNlOworLS0gUmUtY29sbGFwc2U6 IG1vcmUgSE9ULWluZGV4ZWQgdXBkYXRlcyBleHRlbmQgdGhlIGNoYWluIHBhc3QgdGhlIHJl ZGlyZWN0CistLSB0YXJnZXQ7IHRoZSBuZXh0IHBydW5lIHJlLXBvaW50cyB0aGUgZGF0YSBy ZWRpcmVjdCBhdCB0aGUgbmV3IGZpcnN0IGxpdmUKKy0tIHR1cGxlIGFuZCBleHRlbmRzIGl0 cyB1bmlvbi4KK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gNCBXSEVSRSBpZCA9IDE7 CitVUERBVEUgaGlfcmVjb2xsYXBzZSBTRVQgYSA9IDUgV0hFUkUgaWQgPSAxOworVkFDVVVN IChJTkRFWF9DTEVBTlVQIG9mZikgaGlfcmVjb2xsYXBzZTsKKy0tIEZ1bGwgdmFjdXVtIG5v dyByZWNsYWltcyB0aGUgZGVhZCBjaGFpbjsgdGhlIHJlLXBvaW50ZWQgcmVkaXJlY3QgbXVz dCBub3QKKy0tIGRhbmdsZS4gIFR3byBwYXNzZXMgYWxzbyBleGVyY2lzZSB0aGUgcmVkaXJl Y3QgcmUtcG9pbnQgc2Vjb25kIHBhc3MuCitWQUNVVU0gaGlfcmVjb2xsYXBzZTsKK1ZBQ1VV TSBoaV9yZWNvbGxhcHNlOworLS0gSGVhcCBtdXN0IGJlIHN0cnVjdHVyYWxseSBjb25zaXN0 ZW50IChubyByb3dzID09IG5vIGNvcnJ1cHRpb24pLgorU0VMRUNUICogRlJPTSB2ZXJpZnlf aGVhcGFtKCdoaV9yZWNvbGxhcHNlJyk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitT RUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWNvbGxhcHNlIFdIRVJFIGEgPSA1OyAgICAgLS0gY3Vy cmVudCB2YWx1ZSAtPiBpZCAxCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yZWNvbGxhcHNl IFdIRVJFIGEgPSAzOyAgLS0gb2Jzb2xldGUgdmFsdWUgLT4gMAorUkVTRVQgZW5hYmxlX3Nl cXNjYW47CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWNvbGxhcHNlIE9SREVSIEJZIGlkOwor RFJPUCBUQUJMRSBoaV9yZWNvbGxhcHNlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDIwLiBJbmRleCBkZWxldGlvbiBvdmVyIGFuIGVudHJ5IHRoYXQgcG9pbnRzIGF0IGEg ZGF0YS1yZWRpcmVjdCByb290CistLQorLS0gQSBkYXRhIHJlZGlyZWN0IGlzIGFuIExQX1JF RElSRUNUIHRoYXQgY2FycmllcyBhIGJpdG1hcCwgc28gaXQgcmVwb3J0cworLS0gbHBfbGVu ID4gMCAoSXRlbUlkSGFzU3RvcmFnZSB0cnVlKSBldmVuIHRob3VnaCBpdCBpcyBub3QgYSBu b3JtYWwgdHVwbGUuCistLSBpbmRleF9kZWxldGVfY2hlY2tfaHRpZCBtdXN0IHRyZWF0IGl0 IGFzIGEgcmVkaXJlY3QsIG5vdCByZWFkIGl0cyBibG9iIGFzIGEKKy0tIEhlYXBUdXBsZUhl YWRlci4gIFJlcHJvZHVjZTogY29sbGFwc2UgYSBjaGFpbiByb290IHRvIGEgZGF0YSByZWRp cmVjdCB3aGlsZQorLS0ga2VlcGluZyB0aGUgc3RhbGUgbGVhZiB0aGF0IHBvaW50cyBhdCBp dCAoSU5ERVhfQ0xFQU5VUCBvZmYpLCB0aGVuIGluc2VydAorLS0gbWFueSBkdXBsaWNhdGVz IG9mIHRoZSBzdGFsZSBrZXkgc28gYnRyZWUgYm90dG9tLXVwIGRlbGV0aW9uIHJ1bnMKKy0t IGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyBvdmVyIHRoYXQgc3RhbGUgZW50cnkuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9pZGRlbCAoaWQgaW50LCBh IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9pZGRlbF9h IE9OIGhpX2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgxLCAxKTsK K1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAgICAgICAg LS0gSE9ULWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlk ID0gMTsgICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVYX0NMRUFO VVAgb2ZmKSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0YSByZWRp cmVjdCwga2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9mIHRoZSBz dGFsZSBrZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0tIGRlbGV0 aW9uLCB3aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRoZSBkYXRh LXJlZGlyZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMuICBNdXN0 IG5vdCBjcmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlfaWRkZWwg U0VMRUNUIGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZBQ1VVTSBo aV9pZGRlbDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwnKTsKK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2lkZGVsIFdI RVJFIGlkID0gMTsgICAgICAgICAgICAgLS0gY3VycmVudCB2YWx1ZSAtPiBhID0gMworUkVT RVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2lkZGVsOworCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDIxLiBBIGNoYW5nZSB0byBhIGNvbHVtbiBjb3ZlcmVkIGJ5 IGEgbm9uLWJ0cmVlIGluZGV4IEFNIGlzIEhPVC1pbmRleGVkCistLQorLS0gQSBIT1QtaW5k ZXhlZCB1cGRhdGUgbGVhdmVzIGEgc3RhbGUgcHJlLXVwZGF0ZSBsZWFmIHRoYXQgdGhlIHJl YWQgc2lkZQorLS0gZmlsdGVycyB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwg d2hpY2ggaXMgYWNjZXNzLW1ldGhvZCBhZ25vc3RpYy4KKy0tIEEgY29sdW1uIGNvdmVyZWQg YnkgYSBub24tYnRyZWUgaW5kZXggKGhlcmUgYSBHaVNUIGluZGV4IG9uIGEgcG9pbnQgY29s dW1uKQorLS0gaXMgdGhlcmVmb3JlIEhPVC1pbmRleGVkIGxpa2UgYW55IG90aGVyLCBhbmQg dGhlIEdpU1QgaW5kZXggc3RpbGwgcmV0dXJucworLS0gY29ycmVjdCByZXN1bHRzIGFjcm9z cyB0aGUgY2hhaW4uICBBIGNoYW5nZSB0byBhIGJ0cmVlLW9ubHkgY29sdW1uIG9uIHRoZQor LS0gc2FtZSB0YWJsZSBpcyBsaWtld2lzZSBIT1QtaW5kZXhlZC4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX25vbmJ0cmVlIChpZCBpbnQgUFJJTUFSWSBL RVksIHRhZyBpbnQsIHAgcG9pbnQpCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NS RUFURSBJTkRFWCBoaV9ub25idHJlZV90YWcgT04gaGlfbm9uYnRyZWUgKHRhZyk7ICAgICAg ICAgIC0tIGJ0cmVlIGluZGV4CitDUkVBVEUgSU5ERVggaGlfbm9uYnRyZWVfcCBPTiBoaV9u b25idHJlZSBVU0lORyBnaXN0IChwKTsgICAtLSBHaVNULCBub24tYnRyZWUKK0lOU0VSVCBJ TlRPIGhpX25vbmJ0cmVlIFNFTEVDVCBnLCBnLCBwb2ludChnLCBnKQorICAgIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwMCkgZzsKKworLS0gQ2hhbmdlIHRoZSBHaVNULWNvdmVyZWQg Y29sdW1uIGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCkuCitVUERBVEUgaGlf bm9uYnRyZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSArIDEwMDApOworU0VM RUNUIGhvdF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQo J2hpX25vbmJ0cmVlJyk7CisKKy0tIFRoZSBHaVNUIGluZGV4IG11c3QgcmV0dXJuIGNvcnJl Y3QgcmVzdWx0czogdGhlIG9sZCBwb3NpdGlvbnMgYXJlIGdvbmUgYW5kCistLSBldmVyeSBy b3cgaXMgZm91bmQgYXQgaXRzIG5ldyBwb3NpdGlvbiAobm8gc3RhbGUgbGVhZiBzdXJmYWNl cyBhbiBvbGQga2V5KS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBhdF9vbGRfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBw IDxAIGJveChwb2ludCgwLCAwKSwgcG9pbnQoMzAwLCAzMDApKTsKK1NFTEVDVCBjb3VudCgq KSBBUyBhdF9uZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxA IGJveChwb2ludCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworUkVTRVQgZW5h YmxlX3NlcXNjYW47CisKKy0tIENoYW5naW5nIHRoZSBidHJlZS1vbmx5IGNvbHVtbiAocCB1 bmNoYW5nZWQpIHN0YXlzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCB0 YWcgPSB0YWcgKyAxMDAwOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGJ0cmVlX2NvbF9pc19o b3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfbm9uYnRyZWUnKTsKK0RST1AgVEFC TEUgaGlfbm9uYnRyZWU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjIuIEFC QSBvbiBhIHVuaXF1ZSBrZXkgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M6IGEga2V5 IGN5Y2xlZCBhd2F5CistLSBhbmQgYmFjayBtdXN0IHN0aWxsIGNvbGxpZGUgd2l0aCBhbm90 aGVyIHJvdyB0aGF0IGhvbGRzIGl0LiAgVGhlIHN0YWxlCistLSBsZWF2ZXMgbGVmdCBieSB0 aGUgY3ljbGUgbXVzdCBub3QgbGV0IGEgZ2VudWluZSBkdXBsaWNhdGUgc2xpcCBwYXN0IHRo ZQorLS0gdW5pcXVlbmVzcyBjaGVjayAtLSB0aGUgcmVhZC1zaWRlIHJlY2hlY2sgY29tcGFy ZXMgdGhlIGxpdmUga2V5LCBub3QganVzdAorLS0gYSBjaGFuZ2VkLWF0dHJpYnV0ZSBiaXRt YXAuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGsg aW50LCB2IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBVTklRVUUgSU5E RVggaGlfYWJhX2sgT04gaGlfYWJhIChrKTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfdiBPTiBo aV9hYmEgKHYpOworSU5TRVJUIElOVE8gaGlfYWJhIFZBTFVFUyAoMSwgMTApLCAoMiwgMjAp OworCistLSBDeWNsZSByb3cxJ3MgdW5pcXVlIGtleSAxIC0+IDMgLT4gMSAodiB1bmNoYW5n ZWQsIHNvIGVhY2ggc3RlcCBpcworLS0gSE9ULWluZGV4ZWQgYW5kIGxlYXZlcyBzdGFsZSBl bnRyaWVzIGluIGhpX2FiYV9rKS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAzIFdIRVJFIHYg PSAxMDsKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIHYgPSAxMDsKK1NFTEVDVCBo b3RfaWR4ID4gMCBBUyBjeWNsZWRfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hp X2FiYScpOworCistLSByb3cxIGlzIGxpdmUgYXQgayA9IDEgYWdhaW4uICBNb3Zpbmcgcm93 MiBvbnRvIGsgPSAxIG11c3QgcmFpc2UgYSB1bmlxdWUKKy0tIHZpb2xhdGlvbiBkZXNwaXRl IHRoZSBzdGFsZSAnMScgbGVhdmVzIGZyb20gdGhlIGN5Y2xlLgorVVBEQVRFIGhpX2FiYSBT RVQgayA9IDEgV0hFUkUgdiA9IDIwOworRFJPUCBUQUJMRSBoaV9hYmE7CisKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gMjMuIFBhcnRpYWwgaW5kZXggd2hvc2UgcHJlZGljYXRl IHJlZmVyZW5jZXMgYSBub24ta2V5IGNvbHVtbi4gIEZsaXBwaW5nIHRoZQorLS0gcm93IG91 dCBvZiB0aGUgcHJlZGljYXRlIHdoaWxlIGxlYXZpbmcgdGhlIGluZGV4ZWQga2V5IHVuY2hh bmdlZCBpcworLS0gSE9ULWluZGV4ZWQ6IHRoZSBwcmVkaWNhdGUgY29sdW1uIGlzIHBhcnQg b2YgdGhlIGluZGV4J3MgYXR0cmlidXRlIHNldCwgc28KKy0tIHRoZSBjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXAgZHJvcHMgdGhlIG5vdy1zdGFsZSBwYXJ0aWFsLWluZGV4IGVudHJ5IG9u IHJlYWQKKy0tIChubyB2YWx1ZSByZWNoZWNrIGlzIGludm9sdmVkKS4KKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRwcmVkIChpZCBpbnQgUFJJTUFS WSBLRVksIGsgaW50LCBhY3RpdmUgYm9vbGVhbikKKyAgICBXSVRIIChmaWxsZmFjdG9yID0g NTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRwcmVkX2sgT04gaGlfcGFydHByZWQgKGspIFdI RVJFIGFjdGl2ZTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRwcmVkIFZBTFVFUyAoMSwgMTAwLCB0 cnVlKTsKKworLS0gRmxpcCB0aGUgcHJlZGljYXRlIGNvbHVtbiAnYWN0aXZlJyB0cnVlIC0+ IGZhbHNlOyB0aGUgaW5kZXgga2V5IGsgaXMKKy0tIHVuY2hhbmdlZC4gIFRoZSByb3cgbm8g bG9uZ2VyIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBzbyBpdHMgcGFydGlhbC1pbmRleAor LS0gZW50cnkgbXVzdCBiZSByZW1vdmVkLCBub3QgbGVmdCBwb2ludGluZyBpbnRvIHRoZSBj aGFpbi4KK1VQREFURSBoaV9wYXJ0cHJlZCBTRVQgYWN0aXZlID0gZmFsc2UgV0hFUkUgaWQg PSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdCwg aG90X2lkeCBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydHByZWQnKTsKKworLS0gVGhlIHBh cnRpYWwgaW5kZXggbXVzdCBub3Qgc3VyZmFjZSB0aGUgcm93IG5vdyB0aGF0IGFjdGl2ZSA9 IGZhbHNlLgorLS0gQSBxdWVyeSB3aG9zZSBxdWFsIGV4YWN0bHkgbWF0Y2hlcyB0aGUgcGFy dGlhbCBwcmVkaWNhdGUgdXNlcyB0aGUgaW5kZXgKKy0tIHdpdGhvdXQgcmUtZmlsdGVyaW5n ICdhY3RpdmUnIG9uIHRoZSBoZWFwLCBzbyBhIHN0YWxlIGVudHJ5IHdvdWxkIHN1cmZhY2Uu CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBv ZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdI RVJFIGFjdGl2ZTsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGsgPSAxMDAg QU5EIGFjdGl2ZTsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFjdGl2ZTsK K1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9Q IFRBQkxFIGhpX3BhcnRwcmVkOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI0 LiBSZWNsYWltICsgc3R1YiBtaXguICBSZXBlYXRlZCB1cGRhdGVzIG9mIGNvbHVtbiBhIGZv bGxvd2VkIGJ5IGFuIHVwZGF0ZQorLS0gb2YgY29sdW1uIGIgYnVpbGQgYSBjaGFpbiB3aG9z ZSBwcnVuZSByZWNsYWltcyB0aGUgbWVtYmVycyB3aG9zZSBjaGFuZ2Ugd2FzCistLSBzdXBl cnNlZGVkIChhIGNoYW5nZWQgYWdhaW4pIGFuZCBrZWVwcyBzdHVicyBmb3IgdGhvc2UgdGhh dCB3ZXJlIG5vdCwgc28gYQorLS0gcm9vdCByZWRpcmVjdCBlbmRzIHVwIHBvaW50aW5nIGF0 IGEgc3R1YiBhbmQgYSBsYXRlciB3YWxrIGNyb3NzZXMgbWlkLWNoYWluCistLSBzdHVicy4g IFJlYWRzIHRocm91Z2ggZWFjaCBpbmRleCBhbmQgYW1jaGVjayBtdXN0IHN0YXkgY29ycmVj dCBhY3Jvc3MgdGhlCistLSBjb2xsYXBzZSwgYW5kIGEgc2Vjb25kIHJvdW5kIG11c3Qgd2Fs ayB0aGUgZXhpc3Rpbmcgc3R1YnMgd2l0aG91dCBzZXZlcmluZworLS0gdGhlIGNoYWluLgor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfc3R1Ym1peCAoaWQg aW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaGlfc3R1Ym1peF9hIE9OIGhpX3N0dWJtaXggKGEpOworQ1JFQVRF IElOREVYIGhpX3N0dWJtaXhfYiBPTiBoaV9zdHVibWl4IChiKTsKK0lOU0VSVCBJTlRPIGhp X3N0dWJtaXggVkFMVUVTICgxLCAxMCwgMTAwKTsKK1VQREFURSBoaV9zdHVibWl4IFNFVCBh ID0gMTEgV0hFUkUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYQorVVBEQVRFIGhpX3N0dWJtaXgg U0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7ICAgLS0gY2hhbmdlcyBhIGFnYWluIChzdXBlcnNl ZGVzKQorVVBEQVRFIGhpX3N0dWJtaXggU0VUIGIgPSAxMDEgV0hFUkUgaWQgPSAxOyAgLS0g Y2hhbmdlcyBiCitWQUNVVU0gaGlfc3R1Ym1peDsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9m ZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSwgYiBGUk9N IGhpX3N0dWJtaXggV0hFUkUgYSA9IDEyOyAgIC0tIGN1cnJlbnQgYQorU0VMRUNUIGlkLCBh LCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBiID0gMTAxOyAgLS0gY3VycmVudCBiCitTRUxF Q1QgaWQgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGEgPSAxMDsgICAgICAgICAtLSBzdGFsZSBh OiAwIHJvd3MKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNj YW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3N0dWJtaXgnKTsgICAgICAt LSBubyBjb3JydXB0aW9uIGFjcm9zcyBzdHVicworLS0gQSBzZWNvbmQgcm91bmQgbXVzdCB3 YWxrIHRoZSBleGlzdGluZyBzdHVicyAobm8gcHJpb3JYbWF4IHNldmVyKS4KK1VQREFURSBo aV9zdHVibWl4IFNFVCBhID0gMTMgV0hFUkUgaWQgPSAxOworVkFDVVVNIGhpX3N0dWJtaXg7 CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGEgPSAxMzsKK1NFTEVD VCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfc3R1Ym1peCcpOworRFJPUCBUQUJMRSBoaV9z dHVibWl4OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBFeGNsdXNpb24t Y29uc3RyYWludCB0YWJsZXMgYXJlIEhPVC1pbmRleGVkLWVsaWdpYmxlLgorLS0KKy0tIEFu IGV4Y2x1c2lvbiBjb25zdHJhaW50IGlzIGVuZm9yY2VkIGJ5IGNoZWNrX2V4Y2x1c2lvbl9v cl91bmlxdWVfY29uc3RyYWludCwKKy0tIHdoaWNoIHJlY2hlY2tzIGVhY2ggY2FuZGlkYXRl IGFnYWluc3QgdGhlIGxpdmUgdHVwbGUncyBjdXJyZW50IGluZGV4LWZvcm0KKy0tIHdpdGgg dGhlIGNvbnN0cmFpbnQncyBvd24gb3BlcmF0b3JzLCBzbyBhIHN0YWxlIGVudHJ5IGxlZnQg YnkgYSBIT1QtaW5kZXhlZAorLS0gdXBkYXRlIGlzIHNraXBwZWQgd2hpbGUgdGhlIGxpdmUg a2V5IGFsd2F5cyBoYXMgaXRzIG93biBlbnRyeS4gIFVwZGF0aW5nIGEKKy0tIG5vbi1jb25z dHJhaW5lZCBpbmRleGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCAodGhlIEdpU1QgZXhjbHVz aW9uIGluZGV4IGlzCistLSBza2lwcGVkKSwgYW5kIHRoZSBjb25zdHJhaW50IHN0YXlzIGNv cnJlY3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9leGNs ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdGFnIGludCwKKyAgICBkdXJpbmcg aW50NHJhbmdlLAorICAgIEVYQ0xVREUgVVNJTkcgZ2lzdCAoZHVyaW5nIFdJVEggJiYpCisp IFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfZXhjbF90YWcgT04g aGlfZXhjbCh0YWcpOworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDEsIDEwMCwgaW50 NHJhbmdlKDEsIDEwKSksICgyLCAyMDAsIGludDRyYW5nZSgyMCwgMzApKTsKKworLS0gVXBk YXRlIGEgbm9uLWNvbnN0cmFpbmVkIGluZGV4ZWQgY29sdW1uOiBIT1QtaW5kZXhlZCAoR2lT VCBleGNsdXNpb24gaW5kZXgKKy0tIGFuZCBQSyBza2lwcGVkKSwgYW5kIHRoZSBleGNsdXNp b24gY29uc3RyYWludCBpcyBzdGlsbCBlbmZvcmNlZC4KK1VQREFURSBoaV9leGNsIFNFVCB0 YWcgPSB0YWcgKyAxIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0YWdf dXBkYXRlX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9leGNsJyk7CitJTlNF UlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoMywgMzAwLCBpbnQ0cmFuZ2UoNSwgMTUpKTsgIC0t IG92ZXJsYXBzIGlkPTEncyAoMSwxMCkKKworLS0gTW92ZSBpZD0xJ3MgcmFuZ2UgYXdheSAo dGhpcyB1cGRhdGVzIHRoZSBHaVNUIGluZGV4LCBsZWF2aW5nIGEgc3RhbGUgZW50cnkKKy0t IGZvciB0aGUgb2xkICgxLDEwKSByYW5nZSkuICBBIHJhbmdlIG92ZXJsYXBwaW5nIG9ubHkg dGhlIE9MRCByYW5nZSBub3cKKy0tIGluc2VydHMgY2xlYW5seSAodGhlIHN0YWxlIGVudHJ5 IGlzIHNraXBwZWQpOyBvbmUgb3ZlcmxhcHBpbmcgdGhlIE5FVyByYW5nZQorLS0gc3RpbGwg Y29uZmxpY3RzLgorVVBEQVRFIGhpX2V4Y2wgU0VUIGR1cmluZyA9IGludDRyYW5nZSgxMDAs IDExMCkgV0hFUkUgaWQgPSAxOworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDQsIDQw MCwgaW50NHJhbmdlKDUsIDE1KSk7ICAgLS0gb25seSBvdmVybGFwcGVkIG9sZCByYW5nZTog T0sKK0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVTICg1LCA1MDAsIGludDRyYW5nZSgxMDUs IDExNSkpOy0tIG92ZXJsYXBzIG5ldyAoMTAwLDExMCk6IGNvbmZsaWN0CitEUk9QIFRBQkxF IGhpX2V4Y2w7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjUuIFRPQVNUIGlu dGVyYWN0aW9uLiAgQW4gaW5kZXhlZCBjb2x1bW4gc3RvcmVkIG91dC1vZi1saW5lIG11c3Qg YmVoYXZlCistLSBjb3JyZWN0bHkgYWNyb3NzIEhPVC1pbmRleGVkIHVwZGF0ZXM6IGFuIGVu dHJ5IGtlcHQgYWNyb3NzIGFuIHVwZGF0ZSBvZiBhCistLSBkaWZmZXJlbnQgY29sdW1uIHN0 aWxsIHJlc29sdmVzIHRvIHRoZSAodW5jaGFuZ2VkKSB0b2FzdGVkIHZhbHVlLCBhbmQgYWZ0 ZXIKKy0tIHRoZSB0b2FzdGVkIGNvbHVtbiBpdHNlbGYgaXMgY2hhbmdlZCB0aGUgc3RhbGUg ZW50cnkgaXMgZHJvcHBlZCBieSB0aGUKKy0tIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAo bm8gdmFsdWUgY29tcGFyaXNvbiBvciBkZXRvYXN0aW5nIGlzIG5lZWRlZCkuCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV90b2FzdCAoaWQgaW50IFBSSU1B UlkgS0VZLCBiaWcgdGV4dCwgdGFnIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0FM VEVSIFRBQkxFIGhpX3RvYXN0IEFMVEVSIENPTFVNTiBiaWcgU0VUIFNUT1JBR0UgRVhURVJO QUw7ICAtLSBubyBjb21wcmVzc2lvbgorQ1JFQVRFIElOREVYIGhpX3RvYXN0X2JpZyBPTiBo aV90b2FzdCAoYmlnKTsKK0NSRUFURSBJTkRFWCBoaV90b2FzdF90YWcgT04gaGlfdG9hc3Qg KHRhZyk7CitJTlNFUlQgSU5UTyBoaV90b2FzdCBWQUxVRVMgKDEsIHJlcGVhdCgnQScsIDIw MDApLCAxMCk7CistLSBUaGUgYmlnIHZhbHVlIGlzIHN0b3JlZCBvdXQtb2YtbGluZS4KK1NF TEVDVCBwZ19jb2x1bW5fc2l6ZShiaWcpID4gMTUwMCBBUyBiaWdfaXNfZXh0ZXJuYWwgRlJP TSBoaV90b2FzdCBXSEVSRSBpZCA9IDE7CistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGFn IGxlYXZlcyBiaWcgKGFuZCBpdHMgaW5kZXggZW50cnkpIHVuY2hhbmdlZC4KK1VQREFURSBo aV90b2FzdCBTRVQgdGFnID0gMTEgV0hFUkUgaWQgPSAxOworU0VMRUNUIGhvdF9pZHggPiAw IEFTIHRhZ191cGRhdGVfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RvYXN0 Jyk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvZmY7CitTRUxFQ1QgaWQsIHRhZywgbGVuZ3RoKGJpZykgRlJPTSBoaV90b2FzdCBXSEVS RSBiaWcgPSByZXBlYXQoJ0EnLCAyMDAwKTsKKy0tIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiB0 aGUgdG9hc3RlZCBpbmRleGVkIGNvbHVtbiBpdHNlbGY6IHRoZSBvbGQgZW50cnkgaXMKKy0t IG5vdyBzdGFsZSBiZWNhdXNlIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgc2hvd3Mg YmlnIGNoYW5nZWQuCitVUERBVEUgaGlfdG9hc3QgU0VUIGJpZyA9IHJlcGVhdCgnQicsIDIw MDApIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBpZCBGUk9NIGhpX3RvYXN0IFdIRVJFIGJpZyA9 IHJlcGVhdCgnQScsIDIwMDApOyAgIC0tIHN0YWxlOiAwIHJvd3MKK1NFTEVDVCBpZCwgbGVu Z3RoKGJpZykgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKTsg IC0tIGN1cnJlbnQKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3RvYXN0Jyk7CitEUk9Q IFRBQkxFIGhpX3RvYXN0OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI2LiBB QkEgb24gYW4gaW5kZXhlZCBjb2x1bW4uICBBIEhPVC1pbmRleGVkIHVwZGF0ZSB0aGF0IHNl dHMgYW4gaW5kZXhlZAorLS0gY29sdW1uIHRvIGEgdmFsdWUgYW4gZWFybGllciBjaGFpbiBt ZW1iZXIgYWxyZWFkeSBoZWxkIGxlYXZlcyB0d28gbGVhdmVzCistLSB3aXRoIHRoYXQgc2Ft ZSBrZXksIGJvdGggY2hhaW4tcmVzb2x2aW5nIHRvIHRoZSBsaXZlIHR1cGxlLiAgQSB2YWx1 ZS1iYXNlZAorLS0gcmVjaGVjayBjYW5ub3QgdGVsbCB0aGVtIGFwYXJ0IGFuZCB3b3VsZCBy ZXR1cm4gdGhlIHJvdyB0d2ljZTsgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAg ZHJvcHMgdGhlIHN0YWxlIGFuY2VzdG9yIGxlYWYgKGl0cyB3YWxrIGNyb3NzZXMgdGhlCist LSBrZXktY2hhbmdpbmcgaG9wcykgYW5kIGtlZXBzIG9ubHkgdGhlIGZyZXNoIGVudHJ5LCBz byBhIGZvcmNlZCBpbmRleCBzY2FuCistLSByZXR1cm5zIHRoZSByb3cgZXhhY3RseSBvbmNl LiAgUkVJTkRFWCBtdXN0IG5vdCBjaGFuZ2UgdGhhdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX2FiYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwg diBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYWJhX2sg T04gaGlfYWJhIChrKTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfdiBPTiBoaV9hYmEgKHYpOwor SU5TRVJUIElOVE8gaGlfYWJhIFZBTFVFUyAoMSwgMSwgMTAwKTsKK1VQREFURSBoaV9hYmEg U0VUIGsgPSAzIFdIRVJFIGlkID0gMTsgICAtLSBIT1QtaW5kZXhlZDogayBjaGFuZ2VkLCB2 IGtlcHQKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIGlkID0gMTsgICAtLSBIT1Qt aW5kZXhlZDogayBjeWNsZWQgYmFjayAoQUJBKQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGsx X29uY2UgRlJPTSBoaV9hYmEgV0hFUkUgayA9IDE7ICAgICAtLSBleGFjdGx5IDEKK1NFTEVD VCBjb3VudCgqKSBBUyBrM19nb25lIEZST00gaGlfYWJhIFdIRVJFIGsgPSAzOyAgICAgLS0g MCAoc3RhbGUgZHJvcHBlZCkKK1JFSU5ERVggSU5ERVggaGlfYWJhX2s7CitTRUxFQ1QgY291 bnQoKikgQVMgazFfYWZ0ZXJfcmVpbmRleCBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMTsgIC0t IHN0aWxsIDEKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNj YW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX2FiYScpOworRFJPUCBUQUJM RSBoaV9hYmE7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjcuIFBhcnRpYWwg aW5kZXgsIHByZWRpY2F0ZSBjb2x1bW4gY2hhbmdlZCBidXQgdGhlIHJvdyBTVEFZUyBpbiB0 aGUgaW5kZXgKKy0tIChwcmVkaWNhdGUgc3RpbGwgdHJ1ZSwga2V5IHVuY2hhbmdlZCkuICBU aGUgdXBkYXRlIGlzIEhPVC1pbmRleGVkOyBzZWxlY3RpdmUKKy0tIG1haW50ZW5hbmNlIHJl LWluc2VydHMgYSBmcmVzaCBlbnRyeSAodGhlIHByZWRpY2F0ZSBjb2x1bW4gY2hhbmdlZCBh bmQgc3RpbGwKKy0tIGhvbGRzKSwgc28gdGhlIHJvdyBpcyBzdGlsbCByZXR1cm5lZCAtLSB0 aGUgYml0bWFwIGRyb3BzIHRoZSBvbGRlciBlbnRyeSBhbmQKKy0tIHRoZSBmcmVzaCBvbmUg cmUtc3VwcGxpZXMgaXQuICBHdWFyZHMgYWdhaW5zdCBhICJsb3N0IHJvdyIgZnJvbSBvdmVy LWVhZ2VyCistLSBkcm9wcGluZy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX3BhcnRzdGF5IChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCBuIGludCkg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0c3RheV9rIE9O IGhpX3BhcnRzdGF5IChrKSBXSEVSRSBuID4gMDsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0c3Rh eV9pZDIgT04gaGlfcGFydHN0YXkgKGlkKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRzdGF5IFZB TFVFUyAoMSwgNSwgMyk7CitVUERBVEUgaGlfcGFydHN0YXkgU0VUIG4gPSA3IFdIRVJFIGlk ID0gMTsgICAtLSBuIDMtPjcsIHN0aWxsID4gMCwgayB1bmNoYW5nZWQKK1NFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBzdGF5X2lz X2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0c3RheScpOworU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VM RUNUIGNvdW50KCopIEFTIHN0YXlfcm93cyBGUk9NIGhpX3BhcnRzdGF5IFdIRVJFIGsgPSA1 IEFORCBuID4gMDsgICAtLSB3YW50IDEKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3BhcnRzdGF5OworCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI4LiBQYXJ0aXRpb25lZCB0YWJsZS4gIEEgd2l0aGlu LXBhcnRpdGlvbiBVUERBVEUgb2Ygb25lIGluZGV4ZWQgY29sdW1uIGlzCistLSBIT1QtaW5k ZXhlZCBvbiB0aGUgbGVhZiBwYXJ0aXRpb24ncyBoZWFwIGV4YWN0bHkgYXMgZm9yIGEgbm9u LXBhcnRpdGlvbmVkCistLSB0YWJsZTsgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIGlzIGEg ZGVsZXRlK2luc2VydCBhbmQgbmV2ZXIgSE9ULgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfcGFydCAoaWQgaW50LCBhIGludCwgYiBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaWQpOworQ1JFQVRFIFRBQkxFIGhpX3BhcnQxIFBBUlRJVElPTiBPRiBo aV9wYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCkKKyAgICBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRfYSBPTiBoaV9wYXJ0IChhKTsKK0NS RUFURSBJTkRFWCBoaV9wYXJ0X2IgT04gaGlfcGFydCAoYik7CitJTlNFUlQgSU5UTyBoaV9w YXJ0IFZBTFVFUyAoMSwgMTAsIDIwKTsKK1VQREFURSBoaV9wYXJ0IFNFVCBhID0gMTEgV0hF UkUgaWQgPSAxOyAgIC0tIG9uZSBpbmRleGVkIGNvbCwgd2l0aGluIHBhcnRpdGlvbgorU0VM RUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFT IHBhcnRfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnQxJyk7CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 CitTRUxFQ1QgY291bnQoKikgQVMgYTExIEZST00gaGlfcGFydCBXSEVSRSBhID0gMTE7ICAg LS0gd2FudCAxCitTRUxFQ1QgY291bnQoKikgQVMgYTEwIEZST00gaGlfcGFydCBXSEVSRSBh ID0gMTA7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorUkVTRVQgZW5hYmxlX2JpdG1h cHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hl YXBhbSgnaGlfcGFydDEnKTsKK0RST1AgVEFCTEUgaGlfcGFydDsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAyOS4gTm9uLWJ0cmVlIGFjY2VzcyBtZXRob2QgKGhhc2gpLiAg UmVhZC1zaWRlIHN0YWxlbmVzcyBpcyBhY2Nlc3MtbWV0aG9kCistLSBhZ25vc3RpYyAodGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCksIHNvIGFueSBpbmRleCBBTSdzIGNvbHVtbiBp cworLS0gSE9ULWluZGV4ZWQuICBIYXNoIGlzIHRoZSBzaGFycGVzdCBjYXNlOiBpdHMgc2Nh bnMgcmVjaGVjayB0aGUgaGVhcCB2YWx1ZSwKKy0tIHdoaWNoIGFsb25lIGNhbm5vdCBkaXNh bWJpZ3VhdGUgYSB2YWx1ZSBjeWNsZWQgYXdheSBhbmQgYmFjayAoQUJBKSAtLSB0aGUKKy0t IGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgYW5jZXN0b3Igc28gdGhlIHJvdyBpcyByZXR1cm5l ZCBleGFjdGx5IG9uY2UuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9oYXNoIChpZCBpbnQgUFJJTUFSWSBLRVksIHYgaW50LCB3IGludCkgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9oYXNoX3YgT04gaGlfaGFzaCBVU0lO RyBoYXNoICh2KTsKK0NSRUFURSBJTkRFWCBoaV9oYXNoX3cgT04gaGlfaGFzaCAodyk7CitJ TlNFUlQgSU5UTyBoaV9oYXNoIFZBTFVFUyAoMSwgMTAsIDEwMCk7CitVUERBVEUgaGlfaGFz aCBTRVQgdiA9IDk5IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9oYXNoIFNFVCB2ID0gMTAg V0hFUkUgaWQgPSAxOyAgIC0tIEFCQTogMTAgLT4gOTkgLT4gMTAsIHcgdW5jaGFuZ2VkCitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lkeCA+IDAg QVMgaGFzaF9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfaGFzaCcpOwor U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2Zm OworU0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjEwIEZST00gaGlfaGFzaCBXSEVSRSB2ID0g MTA7ICAgLS0gd2FudCAxIChubyBkdXBsaWNhdGUpCitTRUxFQ1QgY291bnQoKikgQVMgaGFz aF92OTkgRlJPTSBoaV9oYXNoIFdIRVJFIHYgPSA5OTsgICAtLSB3YW50IDAgKHN0YWxlIGRy b3BwZWQpCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2Fu OworRFJPUCBUQUJMRSBoaV9oYXNoOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDMwLiBEREwgYWZ0ZXIgYSBIT1QtaW5kZXhlZCBjaGFpbiBleGlzdHMuICBUaGUgcGVyLWhv cCBtb2RpZmllZC1hdHRycworLS0gYml0bWFwIG9uIHRoZSBwYWdlIGlzIGtleWVkIGJ5IHBo eXNpY2FsIGF0dHJpYnV0ZSBudW1iZXIgYW5kIHNpemVkIGJ5IHRoZQorLS0gcmVsYXRpb24n cyBuYXR0cyBBVCBXUklURSBUSU1FLiAgSW5kZXhlcyBhZGRlZC9kcm9wcGVkIGFmdGVyIHRo ZSBjaGFpbgorLS0gZm9ybXMsIGFuZCBBREQvRFJPUCBDT0xVTU4sIG11c3Qgbm90IGNvcnJ1 cHQgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdC4KKy0tIFRoZSBzaGFycCBjYXNlIGlz IEFERCBDT0xVTU4gY3Jvc3NpbmcgYW4gOC1hdHRyaWJ1dGUgYm91bmRhcnksIHdoaWNoIGdy b3dzCistLSBjZWlsKG5hdHRzLzgpOiByZWFkZXJzIG11c3QgbG9jYXRlIGVhY2ggaG9wJ3Mg Yml0bWFwIGZyb20gdGhhdCBob3AncyBvd24KKy0tIHdyaXRlLXRpbWUgbmF0dHMgKEhlYXBU dXBsZUhlYWRlckdldE5hdHRzIC8gdGhlIHN0dWIncyBzdGFzaGVkIG5hdHRzKSwgbm90Cist LSB0aGUgcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSBFeGFjdGx5IDggYXR0cmlidXRlcyAoYzEuLmM3ICsgcGF5bG9hZCkgc28gYWRk aW5nIHRoZSA5dGggZmxpcHMgdGhlIGJpdG1hcAorLS0gZnJvbSAxIGJ5dGUgdG8gMi4gIGM3 IGlzIHRoZSBjb2x1bW4gd2UgY2h1cm47IGMyIGlzIGFuIHVuY2hhbmdlZCBpbmRleGVkCist LSBjb2x1bW4gd2hvc2UgbGVhZiBtdXN0IHN0YXkgY3VycmVudC4KK0NSRUFURSBUQUJMRSBo aV9kZGwgKAorICAgIGMxIGludCBQUklNQVJZIEtFWSwgYzIgaW50LCBjMyBpbnQsIGM0IGlu dCwKKyAgICBjNSBpbnQsIGM2IGludCwgYzcgaW50LCBwYXlsb2FkIHRleHQKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzIgT04gaGlfZGRsKGMy KTsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzcgT04gaGlfZGRsKGM3KTsKK0lOU0VSVCBJTlRP IGhpX2RkbCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsIDQwLCA1MCwgNzAsICdwJyk7CisKKy0t IEZvcm0gYSBIT1QtaW5kZXhlZCBjaGFpbiBvbiBjNyBCRUZPUkUgYW55IGZ1cnRoZXIgRERM LgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MSBXSEVSRSBjMSA9IDE7CitVUERBVEUgaGlf ZGRsIFNFVCBjNyA9IDcyIFdIRVJFIGMxID0gMTsKKworLS0gKGEpIENSRUFURSBJTkRFWCBh ZnRlciB0aGUgY2hhaW4gZXhpc3RzOiB0aGUgbmV3IGluZGV4IGlzIGJ1aWx0IGFnYWluc3Qg dGhlCistLSBsaXZlIHR1cGxlIHVuZGVyIGl0cyBvd24gVElELCBzbyBpdHMgZW50cnkgaXMg bmV2ZXIgc3RhbGUuCitDUkVBVEUgSU5ERVggaGlfZGRsX2MzIE9OIGhpX2RkbChjMyk7CisK Ky0tIChiKSBBREQgQ09MVU1OIGNyb3NzaW5nIHRoZSA4LWF0dHJpYnV0ZSBib3VuZGFyeSAo bmF0dHMgOCAtPiA5KS4gIEV4aXN0aW5nCistLSBob3BzIGtlZXAgdGhlaXIgMS1ieXRlIGJp dG1hcHM7IHRoZSByZWxhdGlvbiBub3cgd2FudHMgMi4gIFJlYWRzIHRocm91Z2ggdGhlCist LSBvbGQgY2hhaW4gbXVzdCBzdGlsbCBiZSBjb3JyZWN0LgorQUxURVIgVEFCTEUgaGlfZGRs IEFERCBDT0xVTU4gYzkgaW50OworQ1JFQVRFIElOREVYIGhpX2RkbF9jOSBPTiBoaV9kZGwo YzkpOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNj YW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBvZmY7CisKKy0tIExpdmUg YzcgaXMgNzIuICBUaGUgYzcgaW5kZXggbXVzdCByZXR1cm4gdGhlIGxpdmUgcm93IGZvciA3 MiBhbmQgZHJvcCB0aGUKKy0tIHN0YWxlIGxlYXZlcyBmb3IgNzAgYW5kIDcxIChvZmZzZXRz IG1pc3JlYWQgd291bGQgY29ycnVwdCB0aGlzKS4KK1NFTEVDVCBjb3VudCgqKSBBUyBjN19l cV83MiBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcyIEFORCBwYXlsb2FkIElTIE5PVCBOVUxM OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcwX3N0YWxlIEZST00gaGlfZGRsIFdIRVJF IGM3ID0gNzAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQoKikgQVMg YzdfZXFfNzFfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MSBBTkQgcGF5bG9hZCBJ UyBOT1QgTlVMTDsKKworLS0gYzIgbmV2ZXIgY2hhbmdlZCBhY3Jvc3MgdGhlIGNoYWluOiBp dHMgbGVhZiBtdXN0IE5PVCBiZSBqdWRnZWQgc3RhbGUgZXZlbgorLS0gdGhvdWdoIGEgY3Jv c3NlZCBob3AgY2hhbmdlZCBjNy4gIEEgbWlzcmVhZCBiaXRtYXAgY291bGQgc3B1cmlvdXNs eSBmbGFnIGl0LgorU0VMRUNUIGNvdW50KCopIEFTIGMyX2VxXzEwX2N1cnJlbnQgRlJPTSBo aV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKworLS0gKGMp IENvbnRpbnVlIGNodXJuaW5nIGM3IEFGVEVSIHRoZSBBREQgQ09MVU1OOiB0aGUgbmV3IGhv cCdzIGJpdG1hcCBpcyBzaXplZAorLS0gZm9yIG5hdHRzIDkgKDIgYnl0ZXMpOyB0aGUgb2xk IGhvcHMgYXJlIDEgYnl0ZS4gIEEgY2hhaW4gd2l0aCBtaXhlZC1zaXplCistLSBiaXRtYXBz IG11c3Qgc3RpbGwgcmVzb2x2ZSBjb3JyZWN0bHkuCitVUERBVEUgaGlfZGRsIFNFVCBjNyA9 IDczIFdIRVJFIGMxID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19lcV83MyBGUk9NIGhp X2RkbCBXSEVSRSBjNyA9IDczIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNv dW50KCopIEFTIGM3X2VxXzcyX25vd19zdGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcy IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCistLSAoZCkgQ29sbGFwc2UgdGhlIGNoYWlu IHRvIHN0dWJzIHZpYSBWQUNVVU0sIHRoZW4gcmVhZCBhZ2FpbjogdGhlIHN0dWIgbXVzdAor LS0gcHJlc2VydmUgaXRzIHdyaXRlLXRpbWUgbmF0dHMgc28gaXRzIGJpdG1hcCBzdGF5cyBs b2NhdGFibGUgcG9zdC1BREQgQ09MVU1OLgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3NCBX SEVSRSBjMSA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9kZGw7CitTRUxF Q1QgY291bnQoKikgQVMgYzdfZXFfNzRfYWZ0ZXJfdmFjdXVtIEZST00gaGlfZGRsIFdIRVJF IGM3ID0gNzQgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQoKikgQVMg YzJfZXFfMTBfYWZ0ZXJfdmFjdXVtIEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAgQU5EIHBh eWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChlKSBEUk9QIENPTFVNTiBrZWVwcyB0aGUgYXR0 bnVtIHNsb3QgKG5vIHJlbnVtYmVyKSwgc28gYml0bWFwcyBzdGF5IGFsaWduZWQuCitBTFRF UiBUQUJMRSBoaV9kZGwgRFJPUCBDT0xVTU4gYzQ7CitTRUxFQ1QgY291bnQoKikgQVMgYzdf YWZ0ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDc0IEFORCBwYXlsb2FkIElTIE5P VCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3AgRlJPTSBoaV9kZGwg V0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKworLS0gKGYpIERST1Ag SU5ERVggb24gdGhlIGNodXJuZWQgY29sdW1uOiByZW1haW5pbmcgaW5kZXhlcyBzdGlsbCBy ZXNvbHZlLgorRFJPUCBJTkRFWCBoaV9kZGxfYzc7CitTRUxFQ1QgY291bnQoKikgQVMgYzJf YWZ0ZXJfZHJvcGlkeCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElT IE5PVCBOVUxMOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRt YXBzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNjYW47CisKKy0tIFRoZSBzZXFzY2Fu IHRydXRoIGNvbmZpcm1zIHRoZSBsaXZlIHJvdzsgdGhlIGNvdW50IGFzc2VydGlvbnMgYWJv dmUgKHJlYWQKKy0tIHRocm91Z2ggdGhlIHBvc3QtRERMIGluZGV4ZXMpIG1hdGNoIGl0LCB3 aGljaCBpcyB3aGF0IHdvdWxkIGJyZWFrIGlmIGEKKy0tIG1pcy1zaXplZCBiaXRtYXAgY29y cnVwdGVkIHRoZSBzdGFsZW5lc3MgdmVyZGljdC4KK1NFTEVDVCBjMSwgYzIsIGM3IEZST00g aGlfZGRsIFdIRVJFIGMxID0gMTsKKworRFJPUCBUQUJMRSBoaV9kZGw7CisKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gQ2xlYW51cAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitEUk9QIEZVTkNUSU9OIGdldF9oaV9jb3VudCh0ZXh0KTsKK0RST1AgRlVOQ1RJT04gZ2V0 X2hvdF9jb3VudCh0ZXh0KTsKK0RST1AgRVhURU5TSU9OIHBhZ2VpbnNwZWN0OwotLSAKMi41 MC4xCgo= --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBiOTRmMDM1MDU5OTk2Mzc0ZjYzZGNmMTAyNTIxMzhkNDViMDdjN2RlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTo0Mzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDgv OV0gR2F0ZSBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9u CiBhcHBseSBwYXRoCgpBIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxpY2EtaWRlbnRp dHkgYXR0cmlidXRlIG9uIGEgc3Vic2NyaWJlciBsZWF2ZXMgYQpzdGFsZSBpbmRleCBsZWFm IHRoYXQgdGhlIGFwcGx5IHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyBtdXN0 IHRvbGVyYXRlCi0tIHdoaWNoIHRoZXkgZG8sIGJ1dCBvbmx5IHdoZW4gdGhlIHN1YnNjcmli ZXIncyBpbmRleGVkIGF0dHJpYnV0ZXMgZG8gbm90CmV4dGVuZCBwYXN0IHRoZSBjb2x1bW5z IHRob3NlIGxvb2t1cHMga2V5IG9uLiAgQWRkIHRoZSBwZXItc3Vic2NyaXB0aW9uCmhvdF9p bmRleGVkX29uX2FwcGx5IG9wdGlvbiAoc3ViaG90aW5kZXhlZG9uYXBwbHk6IG9mZiAvIHN1 YnNldF9vbmx5IChkZWZhdWx0KQovIGFsd2F5cykgYW5kIGhhdmUgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSBjb25zdWx0IGl0IHdoZW4gcnVubmluZyBpbiBhbiBhcHBseQp3b3JrZXIsIGNv bXBhcmluZyB0aGUgcmVsYXRpb24ncyBpbmRleGVkLWF0dHJpYnV0ZSBzZXQgYWdhaW5zdCBp dHMgcHJpbWFyeS1rZXkKYXR0cmlidXRlczogIm9mZiIgZGlzcXVhbGlmaWVzIEhPVC1pbmRl eGVkIHdoZW5ldmVyIGFueSBpbmRleGVkIGF0dHJpYnV0ZSBsaWVzCm91dHNpZGUgdGhlIHBy aW1hcnkga2V5LCAic3Vic2V0X29ubHkiIHJlcXVpcmVzIHRoZSBpbmRleGVkIGF0dHJpYnV0 ZXMgdG8gYmUgYQpzdWJzZXQgb2YgdGhlIHByaW1hcnkga2V5LCBhbmQgImFsd2F5cyIgYXBw bGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KCldpcmUgdGhlIG9wdGlvbiB0aHJvdWdoIENS RUFURS9BTFRFUiBTVUJTQ1JJUFRJT04sIHBnX3N1YnNjcmlwdGlvbiwgcGdfZHVtcCwKYW5k IHBzcWwncyBcZFJzKywgYW5kIGRvY3VtZW50IGl0IChjcmVhdGVfc3Vic2NyaXB0aW9uLCBh bHRlcl9zdWJzY3JpcHRpb24sCmNhdGFsb2dzKS4gIENvdmVyIGFwcGx5IHVuZGVyIGVhY2gg bW9kZSAoMDM5KSwgYXBwbHkgdW5kZXIgUkVQTElDQSBJREVOVElUWQpGVUxMIGFuZCBhIG5v bi1QSyBVU0lORyBJTkRFWCB3aG9zZSBrZXkgaXMgY3ljbGVkICgwNDApLCBhbmQgZGVjb2Rp bmcgb2YKSE9ULWluZGV4ZWQgdXBkYXRlIGNoYWlucyAodGVzdF9kZWNvZGluZykuCgpBdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogY29udHJpYi90ZXN0X2Rl Y29kaW5nL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vdGVzdF9kZWNv ZGluZy9leHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQgICAgfCAgNTkgKysrCiBjb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi90 ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgICAgIHwgIDI5ICsrCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgICA3ICstCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgNTUgKysrCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICAgfCAgMzQgKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzMCAr Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAg NDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 ICAzMyArKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAg IHwgIDE3ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAg ICAgICAgIHwgIDI3ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2Vy LmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0ICAgIHwgMTc2ICsrKystLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24u YnVpbGQgICAgICAgICAgICAgfCAgIDIgKwogLi4uL3N1YnNjcmlwdGlvbi90LzAzOV9ob3Rf aW5kZXhlZF9hcHBseS5wbCAgIHwgNDE2ICsrKysrKysrKysrKysrKysrKwogLi4uL3QvMDQw X2hvdF9pbmRleGVkX3JlcGxpY2FfaWRlbnRpdHkucGwgICAgIHwgMTEwICsrKysrCiAyMyBm aWxlcyBjaGFuZ2VkLCA5ODEgaW5zZXJ0aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2hvdF9pbmRl eGVkLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwv aG90X2luZGV4ZWQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM5X2hvdF9pbmRleGVkX2FwcGx5LnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2FfaWRlbnRpdHku cGwKCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUgYi9jb250 cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKaW5kZXggMDExMTEyNDM5OWEuLjgwMDIxNmIy YWU0IDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKKysrIGIv Y29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCkBAIC01LDcgKzUsNyBAQCBQR0ZJTEVE RVNDID0gInRlc3RfZGVjb2RpbmcgLSBleGFtcGxlIG9mIGEgbG9naWNhbCBkZWNvZGluZyBv dXRwdXQgcGx1Z2luIgogCiBSRUdSRVNTID0gZGRsIHhhY3QgcmV3cml0ZSB0b2FzdCBwZXJt aXNzaW9ucyBkZWNvZGluZ19pbl94YWN0IFwKIAlkZWNvZGluZ19pbnRvX3JlbCBiaW5hcnkg cHJlcGFyZWQgcmVwbG9yaWdpbiB0aW1lIG1lc3NhZ2VzIFwKLQlyZXBhY2sgc3BpbGwgc2xv dCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vfc3RyZWFtCisJcmVw YWNrIHNwaWxsIHNsb3QgdHJ1bmNhdGUgc3RyZWFtIHN0YXRzIHR3b3BoYXNlIHR3b3BoYXNl X3N0cmVhbSBob3RfaW5kZXhlZAogSVNPTEFUSU9OID0gbXhhY3QgZGVsYXllZF9zdGFydHVw IG9uZGlza19zdGFydHVwIGNvbmN1cnJlbnRfZGRsX2RtbCBcCiAJb2xkZXN0X3htaW4gc25h cHNob3RfdHJhbnNmZXIgc3VieGFjdF93aXRob3V0X3RvcCBjb25jdXJyZW50X3N0cmVhbSBc CiAJdHdvcGhhc2Vfc25hcHNob3Qgc2xvdF9jcmVhdGlvbl9lcnJvciBjYXRhbG9nX2NoYW5n ZV9zbmFwc2hvdCBcCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0 ZWQvaG90X2luZGV4ZWQub3V0IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2hv dF9pbmRleGVkLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MWUyMTg2ZmRhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcv ZXhwZWN0ZWQvaG90X2luZGV4ZWQub3V0CkBAIC0wLDAgKzEsNTkgQEAKKy0tIExvZ2ljYWwg ZGVjb2Rpbmcgb2YgSE9ULWluZGV4ZWQgVVBEQVRFcy4gIEEgSE9ULWluZGV4ZWQgdXBkYXRl IGlzIGFuCistLSBvcmRpbmFyeSBoZWFwIHVwZGF0ZSBhdCB0aGUgV0FMIGxldmVsICh0aGUg bmV3IHZlcnNpb24gaXMgbG9nZ2VkIGluIGZ1bGwpLAorLS0gc28gaXQgbXVzdCBkZWNvZGUg ZXhhY3RseSBsaWtlIGFueSBvdGhlciB1cGRhdGUuICBFeGVyY2lzZSBhIGNoYWluIG9mCist LSBIT1QtaW5kZXhlZCB1cGRhdGVzIHVuZGVyIFJFUExJQ0EgSURFTlRJVFkgRlVMTCBzbyB0 aGUgZGVjb2RlZCBvbGQgdHVwbGUgYW5kCistLSBuZXcgdHVwbGUgY2FuIGJvdGggYmUgY2hl Y2tlZC4KK1NFVCBzeW5jaHJvbm91c19jb21taXQgPSBvbjsKK1NFTEVDVCAnaW5pdCcgRlJP TSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3Qn LCAndGVzdF9kZWNvZGluZycpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluaXQKKygx IHJvdykKKworQ1JFQVRFIFRBQkxFIGhpX2RlY29kZSAoaWQgaW50IFBSSU1BUlkgS0VZLCBh IGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf ZGVjb2RlX2EgT04gaGlfZGVjb2RlIChhKTsKK0NSRUFURSBJTkRFWCBoaV9kZWNvZGVfYiBP TiBoaV9kZWNvZGUgKGIpOworQUxURVIgVEFCTEUgaGlfZGVjb2RlIFJFUExJQ0EgSURFTlRJ VFkgRlVMTDsKK0lOU0VSVCBJTlRPIGhpX2RlY29kZSBWQUxVRVMgKDEsIDEwLCAxMDApOwor LS0gZWFjaCB1cGRhdGUgY2hhbmdlcyBvbmUgaW5kZXhlZCBjb2x1bW4sIHNvIGVhY2ggc3Rh eXMgSE9ULWluZGV4ZWQKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEgPSAxMSBXSEVSRSBpZCA9 IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBiID0gMTAxIFdIRVJFIGlkID0gMTsKK1VQREFU RSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7CistLSBjeWNsZSBhIGF3YXkg YW5kIGJhY2sgKEFCQSkgYW5kIHRoZW4gZGVsZXRlCitVUERBVEUgaGlfZGVjb2RlIFNFVCBh ID0gOTkgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDEyIFdIRVJF IGlkID0gMTsKK0RFTEVURSBGUk9NIGhpX2RlY29kZSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg ZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90 JywgTlVMTCwgTlVMTCwKKyAgICAgICAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0 eS14YWN0cycsICcxJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlf ZGVjb2RlOiBJTlNFUlQ6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMCBiW2ludGVnZXJd OjEwMAorIENPTU1JVAorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRF OiBvbGQta2V5OiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTAgYltpbnRlZ2VyXToxMDAg bmV3LXR1cGxlOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDAK KyBDT01NSVQKKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xk LWtleTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAwIG5ldy10 dXBsZTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAxCisgQ09N TUlUCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1rZXk6 IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMSBuZXctdHVwbGU6 IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMiBiW2ludGVnZXJdOjEwMQorIENPTU1JVAor IEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQta2V5OiBpZFtp bnRlZ2VyXToxIGFbaW50ZWdlcl06MTIgYltpbnRlZ2VyXToxMDEgbmV3LXR1cGxlOiBpZFtp bnRlZ2VyXToxIGFbaW50ZWdlcl06OTkgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKyBCRUdJ TgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xkLWtleTogaWRbaW50ZWdl cl06MSBhW2ludGVnZXJdOjk5IGJbaW50ZWdlcl06MTAxIG5ldy10dXBsZTogaWRbaW50ZWdl cl06MSBhW2ludGVnZXJdOjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisgQkVHSU4KKyB0 YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBERUxFVEU6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2Vy XToxMiBiW2ludGVnZXJdOjEwMQorIENPTU1JVAorKDIxIHJvd3MpCisKK1NFTEVDVCBwZ19k cm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOworIHBnX2Ryb3BfcmVw bGljYXRpb25fc2xvdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK0RST1AgVEFCTEUgaGlfZGVjb2RlOwpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2Rl Y29kaW5nL21lc29uLmJ1aWxkIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL21lc29uLmJ1aWxk CmluZGV4IGFjNjU1ODUzZDI2Li45MTc2NWNhMGU3MiAxMDA2NDQKLS0tIGEvY29udHJpYi90 ZXN0X2RlY29kaW5nL21lc29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9t ZXNvbi5idWlsZApAQCAtNDIsNiArNDIsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAnc3RhdHMn LAogICAgICAgJ3R3b3BoYXNlJywKICAgICAgICd0d29waGFzZV9zdHJlYW0nLAorICAgICAg J2hvdF9pbmRleGVkJywKICAgICBdLAogICAgICdyZWdyZXNzX2FyZ3MnOiBbCiAgICAgICAn LS10ZW1wLWNvbmZpZycsIGZpbGVzKCdsb2dpY2FsLmNvbmYnKSwKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvaG90X2luZGV4ZWQuc3FsIGIvY29udHJpYi90ZXN0 X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjA1ZDdkMDkxYjYyCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJp Yi90ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwKQEAgLTAsMCArMSwyOSBAQAor LS0gTG9naWNhbCBkZWNvZGluZyBvZiBIT1QtaW5kZXhlZCBVUERBVEVzLiAgQSBIT1QtaW5k ZXhlZCB1cGRhdGUgaXMgYW4KKy0tIG9yZGluYXJ5IGhlYXAgdXBkYXRlIGF0IHRoZSBXQUwg bGV2ZWwgKHRoZSBuZXcgdmVyc2lvbiBpcyBsb2dnZWQgaW4gZnVsbCksCistLSBzbyBpdCBt dXN0IGRlY29kZSBleGFjdGx5IGxpa2UgYW55IG90aGVyIHVwZGF0ZS4gIEV4ZXJjaXNlIGEg Y2hhaW4gb2YKKy0tIEhPVC1pbmRleGVkIHVwZGF0ZXMgdW5kZXIgUkVQTElDQSBJREVOVElU WSBGVUxMIHNvIHRoZSBkZWNvZGVkIG9sZCB0dXBsZSBhbmQKKy0tIG5ldyB0dXBsZSBjYW4g Ym90aCBiZSBjaGVja2VkLgorU0VUIHN5bmNocm9ub3VzX2NvbW1pdCA9IG9uOworCitTRUxF Q1QgJ2luaXQnIEZST00gcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVn cmVzc2lvbl9zbG90JywgJ3Rlc3RfZGVjb2RpbmcnKTsKKworQ1JFQVRFIFRBQkxFIGhpX2Rl Y29kZSAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfZGVjb2RlX2EgT04gaGlfZGVjb2RlIChhKTsK K0NSRUFURSBJTkRFWCBoaV9kZWNvZGVfYiBPTiBoaV9kZWNvZGUgKGIpOworQUxURVIgVEFC TEUgaGlfZGVjb2RlIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKKworSU5TRVJUIElOVE8gaGlf ZGVjb2RlIFZBTFVFUyAoMSwgMTAsIDEwMCk7CistLSBlYWNoIHVwZGF0ZSBjaGFuZ2VzIG9u ZSBpbmRleGVkIGNvbHVtbiwgc28gZWFjaCBzdGF5cyBIT1QtaW5kZXhlZAorVVBEQVRFIGhp X2RlY29kZSBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9kZWNvZGUgU0VU IGIgPSAxMDEgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDEyIFdI RVJFIGlkID0gMTsKKy0tIGN5Y2xlIGEgYXdheSBhbmQgYmFjayAoQUJBKSBhbmQgdGhlbiBk ZWxldGUKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEgPSA5OSBXSEVSRSBpZCA9IDE7CitVUERB VEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hFUkUgaWQgPSAxOworREVMRVRFIEZST00gaGlf ZGVjb2RlIFdIRVJFIGlkID0gMTsKKworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsCisgICAgICAg J2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpOworCitTRUxF Q1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnKTsKK0RST1Ag VEFCTEUgaGlfZGVjb2RlOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA0YjQ3NGMxMzkxNy4uNGM5 YWJhNzJiYTcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC04NzI3LDYgKzg3MjcsMjIgQEAgU0NS QU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxh Y2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8 L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+c3ViaG90aW5kZXhlZG9uYXBwbHk8L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFyPC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgR2F0aW5nIG1vZGUg Zm9yIHRoZSBIT1QtaW5kZXhlZCBhcHBseSBwYXRoLiAgQ29ycmVzcG9uZHMgdG8gdGhlCisg ICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0 aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+PGxpdGVyYWw+aG90X2luZGV4ZWRfb25fYXBwbHk8 L2xpdGVyYWw+PC9saW5rPgorICAgICAgIHN1YnNjcmlwdGlvbiBvcHRpb246CisgICAgICAg PGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaXRlcmFsPm88L2xp dGVyYWw+ID0gb2ZmPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFy YT48bGl0ZXJhbD5zPC9saXRlcmFsPiA9IHN1YnNldF9vbmx5IChkZWZhdWx0KTwvcGFyYT48 L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpdGVyYWw+YTwvbGl0ZXJh bD4gPSBhbHdheXM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICA8L2l0ZW1pemVkbGlzdD4K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3Vic2VydmVyPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+b2lkPC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2Ny aXB0aW9uLnNnbWwKaW5kZXggZmFkMWY5MDk1NmEuLjdiYTE5MTgwOTQ3IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI5NCw4ICsyOTQsMTEg QEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgIDxsaW5rIGxpbmtlbmQ9InNx bC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtdHdvLXBoYXNlIj48bGl0ZXJhbD50 d29fcGhhc2U8L2xpdGVyYWw+PC9saW5rPiwKICAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1j cmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtcmV0YWluLWRlYWQtdHVwbGVzIj48bGl0 ZXJhbD5yZXRhaW5fZGVhZF90dXBsZXM8L2xpdGVyYWw+PC9saW5rPiwKICAgICAgIDxsaW5r IGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtbWF4LXJldGVu dGlvbi1kdXJhdGlvbiI+PGxpdGVyYWw+bWF4X3JldGVudGlvbl9kdXJhdGlvbjwvbGl0ZXJh bD48L2xpbms+LAotICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlv bi1wYXJhbXMtd2l0aC13YWwtcmVjZWl2ZXItdGltZW91dCI+PGxpdGVyYWw+d2FsX3JlY2Vp dmVyX3RpbWVvdXQ8L2xpdGVyYWw+PC9saW5rPiwgYW5kCi0gICAgICA8bGluayBsaW5rZW5k PSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0 aW5hdGlvbiI+PGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRlcmFsPjwv bGluaz4uCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBh cmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2ZXJf dGltZW91dDwvbGl0ZXJhbD48L2xpbms+LAorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1jb25mbGljdC1sb2ctZGVzdGluYXRpb24i PjxsaXRlcmFsPmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbjwvbGl0ZXJhbD48L2xpbms+LCBh bmQKKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1z LXdpdGgtaG90LWluZGV4ZWQtb24tYXBwbHkiPjxsaXRlcmFsPmhvdF9pbmRleGVkX29uX2Fw cGx5PC9saXRlcmFsPjwvbGluaz4uCisgICAgICBGb3IgPGxpdGVyYWw+aG90X2luZGV4ZWRf b25fYXBwbHk8L2xpdGVyYWw+LCB0aGUgbmV3IHZhbHVlIHRha2VzIGVmZmVjdAorICAgICAg YXQgdGhlIGFwcGx5IHdvcmtlcidzIG5leHQgY2F0YWxvZyByZWxvYWQuCiAgICAgICBPbmx5 IGEgc3VwZXJ1c2VyIGNhbiBzZXQgPGxpdGVyYWw+cGFzc3dvcmRfcmVxdWlyZWQgPSBmYWxz ZTwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA4MWZiZjM0ODdhNC4uMGQ1OWY4NTdiYjMgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC02NTEs NiArNjUxLDYxIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICA8L3Bh cmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAg ICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdp dGgtaG90LWluZGV4ZWQtb24tYXBwbHkiPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5ob3Rf aW5kZXhlZF9vbl9hcHBseTwvbGl0ZXJhbD4gKDx0eXBlPnRleHQ8L3R5cGU+KTwvdGVybT4K KyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgQ29udHJv bHMgd2hldGhlciB0aGUgc3Vic2NyaXB0aW9uJ3MgYXBwbHkgd29ya2VyIG1heSB0YWtlIHRo ZQorICAgICAgICAgIEhPVC1pbmRleGVkIHVwZGF0ZSBwYXRoIHdoZW4gYW4gPGNvbW1hbmQ+ VVBEQVRFPC9jb21tYW5kPiByZXBsaWNhdGVkCisgICAgICAgICAgZnJvbSB0aGUgcHVibGlz aGVyIHRvdWNoZXMgYW4gaW5kZXhlZCBhdHRyaWJ1dGUuICBCZWNhdXNlIHRoZQorICAgICAg ICAgIHN1YnNjcmliZXIncyBpbmRleCBzZXQgbWF5IGRpZmZlciBmcm9tIHRoZSBwdWJsaXNo ZXIncywgYW4KKyAgICAgICAgICB1bmNvbnN0cmFpbmVkIEhPVC1pbmRleGVkIGRlY2lzaW9u IG9uIHRoZSBhcHBseSBwYXRoIGNhbiBwcm9kdWNlIGEKKyAgICAgICAgICBoZWFwIGNoYWlu IHdob3NlIGluZGV4IHN0YXRlIGRpc2FncmVlcyB3aXRoIHRoZSB1cHN0cmVhbSByb3cuICBU aGUKKyAgICAgICAgICBvcHRpb24gcmVzdHJpY3RzIHdoZW4gdGhlIGFwcGx5IHdvcmtlciBp cyBhbGxvd2VkIHRvIHRha2UgdGhhdCBwYXRoLgorICAgICAgICAgPC9wYXJhPgorICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgQWNjZXB0ZWQgdmFsdWVzIGFyZToKKyAgICAgICAgICA8 dmFyaWFibGVsaXN0PgorICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAg PHRlcm0+PGxpdGVyYWw+b2ZmPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgRm9yY2Ugbm9uLUhP VCBvbiBhcHBseSB3aGVuZXZlciB0aGUgc3Vic2NyaWJlciBoYXMgYW55IGluZGV4ZWQKKyAg ICAgICAgICAgICAgYXR0cmlidXRlIGJleW9uZCB0aGUgcHJpbWFyeSBrZXkuICBUaGlzIG1h dGNoZXMgdGhlIGNvbnNlcnZhdGl2ZQorICAgICAgICAgICAgICBwcmUtZXhpc3RpbmcgYmVo YXZpb3VyLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3Vic2V0X29ubHk8L2xpdGVyYWw+PC90 ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAg ICAgICAgICAgICBBbGxvdyB0aGUgSE9ULWluZGV4ZWQgYXBwbHkgcGF0aCB3aGVuIHRoZSBz dWJzY3JpYmVyJ3MKKyAgICAgICAgICAgICAgaW5kZXhlZC1hdHRyIHNldCBpcyBhIHN1YnNl dCBvZiBpdHMgcHJpbWFyeS1rZXkgYXR0cnMgKHdoaWNoCisgICAgICAgICAgICAgIGluY2x1 ZGVzIHRoZSBuby1zZWNvbmRhcnktaW5kZXggY2FzZSkuICBUaGlzIGlzIHRoZSBkZWZhdWx0 IGFuZAorICAgICAgICAgICAgICBjYXB0dXJlcyB0aGUgY29tbW9uIHJlcGxpY2F0aW9uLXJl YWR5IHNjaGVtYSBzaGFwZSB3aGlsZSBzdGF5aW5nCisgICAgICAgICAgICAgIHNhZmUgd2hl biB0aGUgc3Vic2NyaWJlciBhZGRzIGluZGV4ZXMgdGhlIHB1Ymxpc2hlciBkb2VzIG5vdAor ICAgICAgICAgICAgICBoYXZlLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICA8 dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+YWx3YXlzPC9saXRl cmFsPjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICA8cGFy YT4KKyAgICAgICAgICAgICAgVW5jb25kaXRpb25hbCBIT1QtaW5kZXhlZCBlbGlnaWJpbGl0 eSBvbiBhcHBseS4gIFRoZSBvcGVyYXRvcgorICAgICAgICAgICAgICB0YWtlcyByZXNwb25z aWJpbGl0eSBmb3Iga2VlcGluZyB0aGUgc3Vic2NyaWJlcidzIGluZGV4ZWQtYXR0cgorICAg ICAgICAgICAgICBzZXQgY29tcGF0aWJsZSB3aXRoIHRoZSBwdWJsaXNoZXInczsgZGl2ZXJn ZW50IHNjaGVtYXMgY2FuCisgICAgICAgICAgICAgIHByb2R1Y2Ugc3B1cmlvdXMgZHVwbGlj YXRlLWtleSBjb25mbGljdHMgZm9yIHN1YnNlcXVlbnQKKyAgICAgICAgICAgICAgaW5zZXJ0 cyBvbiB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8 L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgIDwvdmFyaWFibGVsaXN0PjwvcGFyYT4K ICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKaW5kZXggMmU1ZTVmNGEwODEuLjU1NjE0 OThkOTVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U LUlOREVYRUQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRF WEVECkBAIC0yNTcsNiArMjU3LDQwIEBAIHBlci1pbmRleCByZWNoZWNrIG91dGNvbWVzOyBh bmQgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoKSByZXBvcnRzCiBwZXItcmVsYXRp b24gSE9ULWluZGV4ZWQgY2hhaW4gY291bnRzLgogCiAKK0xvZ2ljYWwgcmVwbGljYXRpb24K Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgYSByZXBs aWNhLWlkZW50aXR5IGF0dHJpYnV0ZSBvbiBhIHN1YnNjcmliZXIgbGVhdmVzIGEKK3N0YWxl IGluZGV4IGxlYWY7IHRoZSBhcHBseSB3b3JrZXIncyByZXBsaWNhLWlkZW50aXR5IGxvb2t1 cHMgdG9sZXJhdGUgdGhhdAorb25seSB3aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgYXJl IGNvdmVyZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkuICBUaGUKK3Blci1zdWJzY3JpcHRp b24gaG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uIChwZ19zdWJzY3JpcHRpb24uc3ViaG90 aW5kZXhlZG9uYXBwbHksCitvZmYgLyBzdWJzZXRfb25seSAvIGFsd2F5czsgc3Vic2V0X29u bHkgaXMgdGhlIGRlZmF1bHQpIGNvbnRyb2xzIHRoaXM6CitIZWFwVXBkYXRlSG90QWxsb3dh YmxlIGNvbnN1bHRzIEdldEhvdEluZGV4ZWRBcHBseU1vZGUgb24gdGhlIGFwcGx5IHBhdGgg YW5kCitmYWxscyBiYWNrIHRvIG5vbi1IT1Qgd2hlbiB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVz IGFyZSBub3QgZXhhY3RseSB0aGUgcHJpbWFyeQora2V5IChvZmYpIG9yIG5vdCBhIHN1YnNl dCBvZiBpdCAoc3Vic2V0X29ubHkpLgorCisKK1JlY292ZXJ5CistLS0tLS0tLQorCitIT1Qt aW5kZXhlZCB1cGRhdGVzIGFuZCB0aGUgcHJ1bmUvY29sbGFwc2UgdXNlIHRoZSBleGlzdGlu ZyBoZWFwIFVQREFURSBhbmQKK3BydW5lL2ZyZWV6ZSBXQUwgcmVjb3Jkcywgc28gY3Jhc2gg cmVjb3ZlcnkgcmVwbGF5cyB0aGVtIHdpdGggbm8gbmV3IHJlY29yZAordHlwZXMuICBzcmMv dGVzdC9yZWNvdmVyeS90LzA1NF9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbCBidWlsZHMgYSBj aGFpbiwKK2NyYXNoZXMgd2l0aG91dCBhIGNoZWNrcG9pbnQgKGZvcmNpbmcgV0FMIHJlZG8p LCBhbmQgdmVyaWZpZXMgdGhlIGNoYWluIHdhbGssCit2ZXJpZnlfaGVhcGFtLCBhbmQgdmFj dXVtIHJlY2xhbWF0aW9uIGFmdGVyIHJlc3RhcnQsIHdpdGgKK3dhbF9jb25zaXN0ZW5jeV9j aGVja2luZyA9ICdhbGwnIGNvbXBhcmluZyBlYWNoIHJlcGxheWVkIHBhZ2UgdG8gaXRzIEZQ SS4KKworCitBZHZlcnNhcmlhbCB0ZXN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMgZXhlcmNp c2VzIHRoZSBjYXNlcyB0aGUKK2ludmFyaWFudCBtdXN0IHNhdGlzZnkgdW5kZXIgY29uY3Vy cmVuY3k6IGtleSBjeWNsaW5nIChYLT5ZLT5YKSwgYWJvcnRlZAorSE9ULWluZGV4ZWQgdXBk YXRlcywgY29uY3VycmVudCB1bmlxdWUgaW5zZXJ0cyBhZ2FpbnN0IGEgZnJlZWQvdGFrZW4g a2V5LAorc25hcHNob3Qtc2FmZSByZWNsYWltIG9mIHN0YWxlIGxlYXZlcywgYW5kIHJlYWRl ciBjb25zaXN0ZW5jeSBhY3Jvc3MgYQorY29uY3VycmVudCBwcnVuZS9jb2xsYXBzZS4KKwor CiBBcHBlbmRpY2VzCiAtLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMK aW5kZXggOTBhNWFhYTUxYjMuLjc2NmY0M2U0NWE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNDUwMSw2ICs0NTAxLDM2IEBAIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz KQogCWFsbF9pZHhfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShy ZWxhdGlvbiwKIAkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CiAK KwkvKgorCSAqIFRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFwcGx5IHBhdGggZ2F0ZXMgSE9U LWluZGV4ZWQgdXBkYXRlcyBvbiB0aGUKKwkgKiBwZXItc3Vic2NyaXB0aW9uIGhvdF9pbmRl eGVkX29uX2FwcGx5IG9wdGlvbi4gIEEgSE9ULWluZGV4ZWQgdXBkYXRlIG9mCisJICogYSBy ZXBsaWNhLWlkZW50aXR5IGF0dHJpYnV0ZSBsZWF2ZXMgYSBzdGFsZSBpbmRleCBsZWFmOyB0 aGUgYXBwbHkKKwkgKiB3b3JrZXIncyByZXBsaWNhLWlkZW50aXR5IGxvb2t1cHMgY29wZSB3 aXRoIHRoYXQgKHNlZQorCSAqIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgpLCBidXQg b25seSB3aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgYXJlCisJICogYSBzdWJzZXQgb2Yg dGhlIHJlcGxpY2EgaWRlbnRpdHkuICAib2ZmIiBkaXNxdWFsaWZpZXMgd2hlbmV2ZXIgdGhl CisJICogc3Vic2NyaWJlciBoYXMgYW55IGluZGV4ZWQgYXR0cmlidXRlIGJleW9uZCBpdHMg UEs7ICJzdWJzZXRfb25seSIgKHRoZQorCSAqIGRlZmF1bHQpIHJlcXVpcmVzIHRoZSBpbmRl eGVkIGF0dHJpYnV0ZXMgdG8gYmUgYSBzdWJzZXQgb2YgdGhlIFBLOworCSAqICJhbHdheXMi IGFwcGxpZXMgbm8gYXBwbHktcGF0aCBnYXRpbmcuCisJICovCisJaWYgKElzTG9naWNhbFdv cmtlcigpKQorCXsKKwkJY2hhcgkJbW9kZSA9IEdldEhvdEluZGV4ZWRBcHBseU1vZGUoKTsK KwkJY29uc3QgQml0bWFwc2V0ICAqcGtfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJp dG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9Q UklNQVJZX0tFWSk7CisKKwkJaWYgKG1vZGUgPT0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9P RkYpCisJCXsKKwkJCWlmICghYm1zX2VxdWFsKGFsbF9pZHhfYXR0cnMsIHBrX2F0dHJzKSkK KwkJCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CisJCX0KKwkJZWxzZSBpZiAo bW9kZSA9PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZKQorCQl7CisJCQlp ZiAoIWJtc19pc19zdWJzZXQoYWxsX2lkeF9hdHRycywgcGtfYXR0cnMpKQorCQkJCXJldHVy biBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKwkJfQorCQkvKiBMT0dJQ0FMUkVQX0hPVF9J TkRFWEVEX0FMV0FZUzogbm8gYXBwbHktcGF0aCBnYXRpbmcuICovCisJfQorCiAJLyoKIAkg KiBTeXN0ZW0gY2F0YWxvZ3Mga2VlcCBjbGFzc2ljIEhPVCAoYW4gVVBEQVRFIHRvdWNoaW5n IG5vIG5vbi1zdW1tYXJpemluZwogCSAqIGluZGV4ZWQgYXR0cmlidXRlIGFscmVhZHkgcmV0 dXJuZWQgSEVBUF9IRUFQX09OTFlfVVBEQVRFIGFib3ZlKSwgYnV0IGRvCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCAyMDY4ZTAzYzU3MS4uZWZjOGI1ZGNk OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtMTMzLDYg KzEzMyw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaywg Ym9vbCBjb25uaW5mb19uZWVkZWQsCiAJc3ViLT5tYXhyZXRlbnRpb24gPSBzdWJmb3JtLT5z dWJtYXhyZXRlbnRpb247CiAJc3ViLT5yZXRlbnRpb25hY3RpdmUgPSBzdWJmb3JtLT5zdWJy ZXRlbnRpb25hY3RpdmU7CiAJc3ViLT5jb25mbGljdGxvZ3JlbGlkID0gc3ViZm9ybS0+c3Vi Y29uZmxpY3Rsb2dyZWxpZDsKKwlzdWItPmhvdGluZGV4ZWRtb2RlID0gc3ViZm9ybS0+c3Vi aG90aW5kZXhlZG9uYXBwbHk7CiAKIAlpZiAoY29ubmluZm9fbmVlZGVkKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAwMmM4YTA0OWEzMi4uOWY1NDVm ZDI2NDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTE1NDIs NiArMTU0Miw3IEBAIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBz dWJuYW1lLCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5 LCBzdWJzdHJlYW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKIAkJCSAg c3VicGFzc3dvcmRyZXF1aXJlZCwgc3VicnVuYXNvd25lciwgc3ViZmFpbG92ZXIsCiAgICAg ICAgICAgICAgIHN1YnJldGFpbmRlYWR0dXBsZXMsIHN1Ym1heHJldGVudGlvbiwgc3VicmV0 ZW50aW9uYWN0aXZlLAorICAgICAgICAgICAgICBzdWJob3RpbmRleGVkb25hcHBseSwKICAg ICAgICAgICAgICAgc3Vic2VydmVyLCBzdWJjb25mbGljdGxvZ3JlbGlkLCBzdWJjb25mbGlj dGxvZ2Rlc3QsIHN1YnNsb3RuYW1lLAogICAgICAgICAgICAgICBzdWJzeW5jY29tbWl0LCBz dWJ3YWxyY3Z0aW1lb3V0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKICAgICBPTiBw Z19zdWJzY3JpcHRpb24gVE8gcHVibGljOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5jCmluZGV4IDQyOTJlN2ZiOGY0Li4xNGZiMDI0Mjc4OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODIsNiArODIsNyBAQAog I2RlZmluZSBTVUJPUFRfTFNOCQkJCQkweDAwMDIwMDAwCiAjZGVmaW5lIFNVQk9QVF9PUklH SU4JCQkJMHgwMDA0MDAwMAogI2RlZmluZSBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QJMHgw MDA4MDAwMAorI2RlZmluZSBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkJMHgwMDEwMDAw MAogCiAvKiBjaGVjayBpZiB0aGUgJ3ZhbCcgaGFzICdiaXRzJyBzZXQgKi8KICNkZWZpbmUg SXNTZXQodmFsLCBiaXRzKSAgKCgodmFsKSAmIChiaXRzKSkgPT0gKGJpdHMpKQpAQCAtMTEz LDYgKzExNCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlDb25mbGljdExvZ0Rlc3Qg Y29uZmxpY3Rsb2dkZXN0OwogCVhMb2dSZWNQdHIJbHNuOwogCWNoYXIJICAgKndhbF9yZWNl aXZlcl90aW1lb3V0OworCWNoYXIJCWhvdGluZGV4ZWRtb2RlOwogfSBTdWJPcHRzOwogCiAv KgpAQCAtMjA3LDYgKzIwOSw4IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQlvcHRzLT5vcmlnaW4gPSBw c3RyZHVwKExPR0lDQUxSRVBfT1JJR0lOX0FOWSk7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9v cHRzLCBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QpKQogCQlvcHRzLT5jb25mbGljdGxvZ2Rl c3QgPSBDT05GTElDVF9MT0dfREVTVF9MT0c7CisJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRz LCBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkpKQorCQlvcHRzLT5ob3RpbmRleGVkbW9k ZSA9IExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFk7CiAKIAkvKiBQYXJzZSBv cHRpb25zICovCiAJZm9yZWFjaChsYywgc3RtdF9vcHRpb25zKQpAQCAtNDU5LDYgKzQ2Mywz MCBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExp c3QgKnN0bXRfb3B0aW9ucywKIAkJCW9wdHMtPmNvbmZsaWN0bG9nZGVzdCA9IEdldENvbmZs aWN0TG9nRGVzdCh2YWwpOwogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX0NP TkZMSUNUX0xPR19ERVNUOwogCQl9CisJCWVsc2UgaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRz LCBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkpICYmCisJCQkJIHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgImhvdF9pbmRleGVkX29uX2FwcGx5IikgPT0gMCkKKwkJeworCQkJY2hhcgkg ICAqdmFsOworCisJCQlpZiAoSXNTZXQob3B0cy0+c3BlY2lmaWVkX29wdHMsIFNVQk9QVF9I T1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVm ZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9IT1Rf SU5ERVhFRF9PTl9BUFBMWTsKKwkJCXZhbCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CisKKwkJ CWlmIChwZ19zdHJjYXNlY21wKHZhbCwgIm9mZiIpID09IDApCisJCQkJb3B0cy0+aG90aW5k ZXhlZG1vZGUgPSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRjsKKwkJCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAodmFsLCAic3Vic2V0X29ubHkiKSA9PSAwKQorCQkJCW9wdHMtPmhvdGlu ZGV4ZWRtb2RlID0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05MWTsKKwkJCWVs c2UgaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAiYWx3YXlzIikgPT0gMCkKKwkJCQlvcHRzLT5o b3RpbmRleGVkbW9kZSA9IExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTOworCQkJZWxz ZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coInVucmVjb2duaXplZCB2YWx1ZSBm b3Igc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBcIiVzXCI6IFwiJXNcIiIsCisJCQkJCQkJCSJo b3RfaW5kZXhlZF9vbl9hcHBseSIsIHZhbCksCisJCQkJCQkgZXJyaGludCgiVmFsaWQgdmFs dWVzIGFyZSBcIm9mZlwiLCBcInN1YnNldF9vbmx5XCIsIGFuZCBcImFsd2F5c1wiLiIpKSk7 CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLApAQCAtNjk5LDcgKzcyNyw4IEBAIENyZWF0ZVN1YnNjcmlwdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJ CQkJCSAgU1VCT1BUX1JFVEFJTl9ERUFEX1RVUExFUyB8CiAJCQkJCSAgU1VCT1BUX01BWF9S RVRFTlRJT05fRFVSQVRJT04gfAogCQkJCQkgIFNVQk9QVF9XQUxfUkVDRUlWRVJfVElNRU9V VCB8IFNVQk9QVF9PUklHSU4gfAotCQkJCQkgIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCk7 CisJCQkJCSAgU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUIHwKKwkJCQkJICBTVUJPUFRfSE9U X0lOREVYRURfT05fQVBQTFkpOwogCXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0 ZSwgc3RtdC0+b3B0aW9ucywgc3VwcG9ydGVkX29wdHMsICZvcHRzKTsKIAogCS8qCkBAIC04 NTMsNiArODgyLDggQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJSW50MzJHZXREYXR1bShvcHRzLm1h eHJldGVudGlvbik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldGVudGlv bmFjdGl2ZSAtIDFdID0KIAkJQm9vbEdldERhdHVtKG9wdHMucmV0YWluZGVhZHR1cGxlcyk7 CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmhvdGluZGV4ZWRvbmFwcGx5IC0g MV0gPQorCQlDaGFyR2V0RGF0dW0ob3B0cy5ob3RpbmRleGVkbW9kZSk7CiAJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShz ZXJ2ZXJpZCk7CiAJaWYgKCFPaWRJc1ZhbGlkKHNlcnZlcmlkKSkKIAkJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQpAQCAtMTYyNCw3ICsxNjU1LDgg QEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlw dGlvblN0bXQgKnN0bXQsCiAJCQkJCQkJICBTVUJPUFRfTUFYX1JFVEVOVElPTl9EVVJBVElP TiB8CiAJCQkJCQkJICBTVUJPUFRfV0FMX1JFQ0VJVkVSX1RJTUVPVVQgfAogCQkJCQkJCSAg U1VCT1BUX09SSUdJTiB8Ci0JCQkJCQkJICBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QpOwor CQkJCQkJCSAgU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUIHwKKwkJCQkJCQkgIFNVQk9QVF9I T1RfSU5ERVhFRF9PTl9BUFBMWSk7CiAJCQlicmVhazsKIAogCQljYXNlIEFMVEVSX1NVQlND UklQVElPTl9FTkFCTEVEOgpAQCAtMjAxMSw2ICsyMDQzLDEzIEBAIEFsdGVyU3Vic2NyaXB0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAog CQkJCQl9CiAJCQkJfQogCisJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNV Qk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCQkJeworCQkJCQl2YWx1ZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3ViaG90aW5kZXhlZG9uYXBwbHkgLSAxXSA9CisJCQkJCQlDaGFy R2V0RGF0dW0ob3B0cy5ob3RpbmRleGVkbW9kZSk7CisJCQkJCXJlcGxhY2VzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YmhvdGluZGV4ZWRvbmFwcGx5IC0gMV0gPSB0cnVlOworCQkJCX0K KwogCQkJCXVwZGF0ZV90dXBsZSA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA3Nzk5MjY2YzYxNC4u MDNmNjA1OGM2N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwpAQCAtNDg0LDYgKzQ4NCwxNCBAQCBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtl cldhbFJjdkNvbm4gPSBOVUxMOwogU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlwdGlvbiA9IE5V TEw7CiBzdGF0aWMgYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7CiAKKy8qCisg KiBDYWNoZSBvZiB0aGUgcGVyLXN1YnNjcmlwdGlvbiBob3RfaW5kZXhlZF9vbl9hcHBseSBt b2RlLiAgVGhlIGFwcGx5IHdvcmtlcgorICogcmVmcmVzaGVzIHRoaXMgYWZ0ZXIgZXZlcnkg c3VjY2Vzc2Z1bCBsb2FkIG9mIE15U3Vic2NyaXB0aW9uOyByZWFkZXJzCisgKiBvdXRzaWRl IHdvcmtlci5jIGdvIHRocm91Z2ggR2V0SG90SW5kZXhlZEFwcGx5TW9kZSgpIHNvIHRoZXkg ZG9uJ3QgbmVlZAorICogdmlzaWJpbGl0eSBpbnRvIHRoZSBTdWJzY3JpcHRpb24gc3RydWN0 IG9yIHRoZSBhcHBseSB3b3JrZXIncyBnbG9iYWxzLgorICovCitzdGF0aWMgY2hhciBob3Rf aW5kZXhlZF9hcHBseV9tb2RlID0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkY7CisKIHN0 YXRpYyBMaXN0ICpvbl9jb21taXRfd2FrZXVwX3dvcmtlcnNfc3ViaWRzID0gTklMOwogCiBi b29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKQEAgLTUxNzEsNiArNTE3OSw5 IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlNZW1vcnlDb250ZXh0RGVs ZXRlKE15U3Vic2NyaXB0aW9uLT5jeHQpOwogCU15U3Vic2NyaXB0aW9uID0gbmV3c3ViOwog CisJLyogUmVmcmVzaCB0aGUgY2FjaGVkIEhPVC1pbmRleGVkIGFwcGx5IG1vZGUgZnJvbSB0 aGUgbmV3IHR1cGxlLiAqLworCWhvdF9pbmRleGVkX2FwcGx5X21vZGUgPSBNeVN1YnNjcmlw dGlvbi0+aG90aW5kZXhlZG1vZGU7CisKIAkvKiBDaGFuZ2Ugc3luY2hyb25vdXMgY29tbWl0 IGFjY29yZGluZyB0byB0aGUgdXNlcidzIHdpc2hlcyAqLwogCVNldENvbmZpZ09wdGlvbigi c3luY2hyb25vdXNfY29tbWl0IiwgTXlTdWJzY3JpcHRpb24tPnN5bmNjb21taXQsCiAJCQkJ CVBHQ19CQUNLRU5ELCBQR0NfU19PVkVSUklERSk7CkBAIC01ODQ0LDYgKzU4NTUsMTIgQEAg SW5pdGlhbGl6ZUxvZ1JlcFdvcmtlcih2b2lkKQogCiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9 IHRydWU7CiAKKwkvKgorCSAqIENhY2hlIHRoZSBzdWJzY3JpcHRpb24ncyBIT1QtaW5kZXhl ZCBhcHBseSBtb2RlIHNvIGl0IGlzIGNoZWFwIHRvCisJICogY29uc3VsdCBmcm9tIHRoZSBo ZWFwIGFjY2VzcyBtZXRob2QgKHZpYSBHZXRIb3RJbmRleGVkQXBwbHlNb2RlKCkpLgorCSAq LworCWhvdF9pbmRleGVkX2FwcGx5X21vZGUgPSBNeVN1YnNjcmlwdGlvbi0+aG90aW5kZXhl ZG1vZGU7CisKIAlpZiAoIU15U3Vic2NyaXB0aW9uLT5lbmFibGVkKQogCXsKIAkJZXJlcG9y dChMT0csCkBAIC02MDgzLDYgKzYxMDAsMjIgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiAJ cmV0dXJuIE15TG9naWNhbFJlcFdvcmtlciAhPSBOVUxMOwogfQogCisvKgorICogUmV0dXJu IHRoZSBjYWNoZWQgSE9ULWluZGV4ZWQgYXBwbHkgbW9kZSBvZiB0aGUgY3VycmVudCBsb2dp Y2FsIHJlcGxpY2F0aW9uCisgKiB3b3JrZXIncyBzdWJzY3JpcHRpb24uCisgKgorICogQ2Fs bGVycyBvdXRzaWRlIHdvcmtlci5jIChub3RhYmx5IGhlYXBhbS5jJ3MgSGVhcFVwZGF0ZUhv dEFsbG93YWJsZSkgdXNlCisgKiB0aGlzIGFjY2Vzc29yIHRvIGF2b2lkIHB1bGxpbmcgaW4g d29ya2VyX2ludGVybmFsLmggb3IgdGhlIFN1YnNjcmlwdGlvbgorICogc3RydWN0LiAgTm9u LWFwcGx5IHByb2Nlc3NlcyBnZXQgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkYsIHdoaWNo IGlzIHRoZQorICogY29uc2VydmF0aXZlIHZhbHVlOyBjYWxsZXJzIGFyZSBleHBlY3RlZCB0 byBndWFyZCB3aXRoIElzTG9naWNhbFdvcmtlcigpCisgKiBmaXJzdCBmb3IgY2xhcml0eSwg YnV0IHRoZSBhY2Nlc3NvciBpcyBzYWZlIGVpdGhlciB3YXkuCisgKi8KK2NoYXIKK0dldEhv dEluZGV4ZWRBcHBseU1vZGUodm9pZCkKK3sKKwlyZXR1cm4gaG90X2luZGV4ZWRfYXBwbHlf bW9kZTsKK30KKwogLyoKICAqIElzIGN1cnJlbnQgcHJvY2VzcyBhIGxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyPwogICovCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAy NWY2NmI1NmQ0MC4uNzlhMjVkZGVjOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNTE4NCw2ICs1 MTg0LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWludAkJCWlfc3Vi ZmFpbG92ZXI7CiAJaW50CQkJaV9zdWJyZXRhaW5kZWFkdHVwbGVzOwogCWludAkJCWlfc3Vi bWF4cmV0ZW50aW9uOworCWludAkJCWlfc3ViaG90aW5kZXhlZG9uYXBwbHk7CiAJaW50CQkJ aSwKIAkJCQludHVwczsKIApAQCAtNTI4MSw2ICs1MjgyLDE0IEBAIGdldFN1YnNjcmlwdGlv bnMoQXJjaGl2ZSAqZm91dCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJ CQkJICIgJy0xJyBBUyBzdWJ3YWxyY3Z0aW1lb3V0LFxuIik7CiAKKwlpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxOTAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAor CQkJCQkJCSAiIHMuc3ViaG90aW5kZXhlZG9uYXBwbHksXG4iKTsKKwllbHNlCisJCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJICAiICclYycgQVMgc3ViaG90aW5kZXhlZG9u YXBwbHksXG4iLAorCQkJCQkJICBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZ KTsKKwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIgZnMuc3J2bmFtZSBBUyBzdWJzZXJ2ZXJuYW1lXG4iKTsK IAllbHNlCkBAIC01MzI1LDYgKzUzMzQsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUg KmZvdXQpCiAJaV9zdWJmYWlsb3ZlciA9IFBRZm51bWJlcihyZXMsICJzdWJmYWlsb3ZlciIp OwogCWlfc3VicmV0YWluZGVhZHR1cGxlcyA9IFBRZm51bWJlcihyZXMsICJzdWJyZXRhaW5k ZWFkdHVwbGVzIik7CiAJaV9zdWJtYXhyZXRlbnRpb24gPSBQUWZudW1iZXIocmVzLCAic3Vi bWF4cmV0ZW50aW9uIik7CisJaV9zdWJob3RpbmRleGVkb25hcHBseSA9IFBRZm51bWJlcihy ZXMsICJzdWJob3RpbmRleGVkb25hcHBseSIpOwogCWlfc3Vic2VydmVybmFtZSA9IFBRZm51 bWJlcihyZXMsICJzdWJzZXJ2ZXJuYW1lIik7CiAJaV9zdWJjb25uaW5mbyA9IFBRZm51bWJl cihyZXMsICJzdWJjb25uaW5mbyIpOwogCWlfc3Vic2xvdG5hbWUgPSBQUWZudW1iZXIocmVz LCAic3Vic2xvdG5hbWUiKTsKQEAgLTUzNjgsNiArNTM3OCw4IEBAIGdldFN1YnNjcmlwdGlv bnMoQXJjaGl2ZSAqZm91dCkKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3Vi cmV0YWluZGVhZHR1cGxlcyksICJ0IikgPT0gMCk7CiAJCXN1YmluZm9baV0uc3VibWF4cmV0 ZW50aW9uID0KIAkJCWF0b2koUFFnZXR2YWx1ZShyZXMsIGksIGlfc3VibWF4cmV0ZW50aW9u KSk7CisJCXN1YmluZm9baV0uc3ViaG90aW5kZXhlZG9uYXBwbHkgPQorCQkJKihQUWdldHZh bHVlKHJlcywgaSwgaV9zdWJob3RpbmRleGVkb25hcHBseSkpOwogCQlpZiAoUFFnZXRpc251 bGwocmVzLCBpLCBpX3N1YmNvbm5pbmZvKSkKIAkJCXN1YmluZm9baV0uc3ViY29ubmluZm8g PSBOVUxMOwogCQllbHNlCkBAIC01NjQ1LDYgKzU2NTcsMTEgQEAgZHVtcFN1YnNjcmlwdGlv bihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlm IChzdWJpbmZvLT5zdWJtYXhyZXRlbnRpb24pCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5 LCAiLCBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uID0gJWQiLCBzdWJpbmZvLT5zdWJtYXhyZXRl bnRpb24pOwogCisJaWYgKHN1YmluZm8tPnN1YmhvdGluZGV4ZWRvbmFwcGx5ID09IExPR0lD QUxSRVBfSE9UX0lOREVYRURfT0ZGKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IiwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBvZmYiKTsKKwllbHNlIGlmIChzdWJpbmZvLT5z dWJob3RpbmRleGVkb25hcHBseSA9PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX0FMV0FZUykK KwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGhvdF9pbmRleGVkX29uX2FwcGx5 ID0gYWx3YXlzIik7CisKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN5bmNjb21taXQsICJv ZmYiKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgc3luY2hyb25vdXNf Y29tbWl0ID0gJXMiLCBmbXRJZChzdWJpbmZvLT5zdWJzeW5jY29tbWl0KSk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCmluZGV4IDVhNjcyNmQ4YjEyLi5lM2U3NDAxZGYwOCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o CkBAIC03MjIsNiArNzIyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8K IAlib29sCQlzdWJmYWlsb3ZlcjsKIAlib29sCQlzdWJyZXRhaW5kZWFkdHVwbGVzOwogCWlu dAkJCXN1Ym1heHJldGVudGlvbjsKKwljaGFyCQlzdWJob3RpbmRleGVkb25hcHBseTsKIAlj aGFyCSAgICpzdWJzZXJ2ZXJuYW1lOwogCWNoYXIJICAgKnN1YmNvbm5pbmZvOwogCWNoYXIJ ICAgKnN1YnNsb3RuYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBhMWE0NDBhNjQ2OS4uZTJjMjk5MDY3 MzcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCkBAIC03MDkzLDcgKzcwOTMsNyBAQCBkZXNjcmliZVN1YnNjcmlw dGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXByaW50UXVlcnlP cHQgbXlvcHQgPSBwc2V0LnBvcHQ7CiAJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2Nv bHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKIAkJZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UsCi0JZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9 OworCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZX07CiAKIAlpZiAocHNldC5zdmVyc2lvbiA8IDEwMDAwMCkKIAl7CkBAIC03MTc2LDYg KzcxNzYsMTAgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgdmVyYm9zZSkKIAkJCQkJCQkgICIsIHN1Ym1heHJldGVudGlvbiBBUyBcIiVzXCJc biIsCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoIk1heCByZXRlbnRpb24gZHVyYXRpb24iKSk7 CiAKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiLCBzdWJob3RpbmRl eGVkb25hcHBseSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIkhPVC1p bmRleGVkIG9uIGFwcGx5IikpOworCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJ CQkJCSAgIiwgc3VicmV0ZW50aW9uYWN0aXZlIEFTIFwiJXNcIlxuIiwKIAkJCQkJCQkgIGdl dHRleHRfbm9vcCgiUmV0ZW50aW9uIGFjdGl2ZSIpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJz aW9uLmgKaW5kZXggNzNlZDZhMGZhNGIuLjNhYmZhMWVmMzYzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXlt bWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNjA3MDIyCisjZGVmaW5l IENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDcwMjMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCA2NWNlOGUxNDVmYi4uY2E5YWZiOWU5MTkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAtOTIsNiArOTIs MTAgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlv bklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAkJCQkJCQkJCSAqIGV4Y2VlZGVk IG1heF9yZXRlbnRpb25fZHVyYXRpb24sIHdoZW4KIAkJCQkJCQkJCSAqIGRlZmluZWQgKi8K IAorCWNoYXIJCXN1YmhvdGluZGV4ZWRvbmFwcGx5OwkvKiBQZXItc3Vic2NyaXB0aW9uIGdh dGluZyBvZiB0aGUgSE9ULQorCQkJCQkJCQkJCSAqIGluZGV4ZWQgYXBwbHkgcGF0aC4gIFNl ZQorCQkJCQkJCQkJCSAqIExPR0lDQUxSRVBfSE9UX0lOREVYRURfKiBjb25zdGFudHMuICov CisKIAlPaWQJCQlzdWJzZXJ2ZXIgQktJX0xPT0tVUF9PUFQocGdfZm9yZWlnbl9zZXJ2ZXIp OwkvKiBJZiBjb25uZWN0aW9uIHVzZXMKIAkJCQkJCQkJCQkJCQkJCQkgKiBzZXJ2ZXIgKi8K IApAQCAtMTczLDYgKzE3Nyw5IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJ CQkJCQkJICogZXhjZWVkZWQgbWF4X3JldGVudGlvbl9kdXJhdGlvbiwgd2hlbgogCQkJCQkJ CQkJICogZGVmaW5lZCAqLwogCU9pZAkJCWNvbmZsaWN0bG9ncmVsaWQ7CS8qIGNvbmZsaWN0 IGxvZyB0YWJsZSBPaWQgKi8KKwljaGFyCQlob3RpbmRleGVkbW9kZTsgLyogUGVyLXN1YnNj cmlwdGlvbiBnYXRpbmcgb2YgdGhlIEhPVC0gaW5kZXhlZAorCQkJCQkJCQkgKiBhcHBseSBw YXRoLiAgU2VlIExPR0lDQUxSRVBfSE9UX0lOREVYRURfKgorCQkJCQkJCQkgKiBjb25zdGFu dHMuICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0 aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSBy ZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9u b3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KQEAgLTIyMCw2ICsyMjcsMjYgQEAg dHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9T VFJFQU1fUEFSQUxMRUwgJ3AnCiAKKy8qCisgKiBQZXItc3Vic2NyaXB0aW9uIGdhdGluZyBv ZiB0aGUgSE9ULWluZGV4ZWQgYXBwbHkgcGF0aC4gIFJlY29yZGVkIGFzIGEKKyAqIHNpbmds ZS1jaGFyYWN0ZXIgY29kZSBpbiBwZ19zdWJzY3JpcHRpb24uc3ViaG90aW5kZXhlZG9uYXBw bHkuCisgKgorICogICAnbycgLS0gT0ZGOiBmb3JjZSBub24tSE9UIG9uIGFwcGx5IHdoZW5l dmVyIHRoZSBzdWJzY3JpYmVyIGNhcnJpZXMgYW55CisgKgkJICBpbmRleGVkIGF0dHJpYnV0 ZSBiZXlvbmQgdGhlIHByaW1hcnkga2V5LiAgTWF0Y2hlcyB0aGUgY29uc2VydmF0aXZlCisg KgkJICBiZWhhdmlvdXIgYmVmb3JlIHRoaXMgb3B0aW9uIHdhcyBpbnRyb2R1Y2VkLgorICog ICAncycgLS0gU1VCU0VUX09OTFkgKGRlZmF1bHQgZm9yIGZyZXNobHkgY3JlYXRlZCBzdWJz Y3JpcHRpb25zKTogYWxsb3cgdGhlCisgKgkJICBIT1QtaW5kZXhlZCBhcHBseSBwYXRoIHdo ZW4gdGhlIHN1YnNjcmliZXIncyBmdWxsIGluZGV4ZWQtYXR0ciBzZXQgaXMKKyAqCQkgIGEg c3Vic2V0IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAod2hpY2ggY292ZXJzIHRoZSBuby1z ZWNvbmRhcnktCisgKgkJICBpbmRleCBjYXNlIGFzIHdlbGwpLiAgU2FmZSBvbiBtYXRjaGlu ZyBzY2hlbWFzOyBmYWxscyBiYWNrIHRvIG5vbi1IT1QKKyAqCQkgIHdoZW4gdGhlIHN1YnNj cmliZXIgYWRkcyBpbmRleGVzIGJleW9uZCB0aGUgcHJpbWFyeSBrZXkuCisgKiAgICdhJyAt LSBBTFdBWVM6IHVuY29uZGl0aW9uYWwgSE9ULWluZGV4ZWQgZWxpZ2liaWxpdHkgb24gYXBw bHkuICBUaGUKKyAqCQkgIG9wZXJhdG9yIGFjY2VwdHMgcmVzcG9uc2liaWxpdHkgZm9yIGtl ZXBpbmcgc3Vic2NyaWJlciBhbmQgcHVibGlzaGVyCisgKgkJICBpbmRleGVkLWF0dHIgc2V0 cyBjb21wYXRpYmxlLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfT0ZG CQkJJ28nCisjZGVmaW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkJJ3Mn CisjZGVmaW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTCQknYScKKwogI2VuZGlm CQkJCQkJCS8qIEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwogCiBleHRlcm4gU3Vic2NyaXB0 aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2ssCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggN2Q3NDhhMjhkYTgu LmM5ZGY3ZDMyZjJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oCkBAIC0yNCw2ICsyNCwxNCBAQCBleHRlcm4gdm9pZCBTZXF1ZW5jZVN5bmNXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKTsKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lk KTsKIGV4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCk7CiAK Ky8qCisgKiBBY2Nlc3NvciBmb3IgdGhlIGNhY2hlZCBob3RfaW5kZXhlZF9vbl9hcHBseSBt b2RlIG9mIHRoZSBjdXJyZW50IGFwcGx5CisgKiB3b3JrZXIncyBzdWJzY3JpcHRpb24uICBS ZXR1cm5zIGEgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvZGUgKHNlZQorICogY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaCkuICBOb24tYXBwbHkgcHJvY2Vzc2VzIGFsd2F5cyBzZWUK KyAqIExPR0lDQUxSRVBfSE9UX0lOREVYRURfT0ZGLgorICovCitleHRlcm4gY2hhciBHZXRI b3RJbmRleGVkQXBwbHlNb2RlKHZvaWQpOworCiBleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NQYXJh bGxlbEFwcGx5TWVzc2FnZXModm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCBkMjAxYWQ3NjRmMC4uNDc3NTI0MTgxYTIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTEz OSwxOCArMTM5LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBD T05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVCiBXQVJOSU5HOiAg c3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDog IFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIg dGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrIHJlZ3Jl c3NfdGVzdHN1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlv biBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAg ICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucworICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1 aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFk IHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBs eSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERl c2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAw MCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBT RVQgKG9yaWdpbiA9IGFueSk7CiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24g YWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAg IHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg MCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg RmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9u IGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVj ZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogRFJPUCBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViMzsKQEAgLTIzNywxMCArMjM3LDEwIEBAIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZm9vYmFyJzsK IEVSUk9SOiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3NpbmcgIj0i IGFmdGVyICJmb29iYXIiIGluIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcKIAogXGRScysKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBT ZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwg UmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVz Y3JpcHRpb24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAg ICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZl ciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1Qt aW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwg IFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEg ICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgogKDEgcm93 KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElP TiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTI0OSwx MCArMjQ5LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz bG90X25hbWUgPSAnbmV3bmFtZScpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKHBhc3N3b3JkX3JlcXVpcmVkID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHJ1bl9hc19vd25lciA9IHRydWUpOwogXGRScysK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9u ICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/ IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50 aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNr aXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgZiAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRl c3Qgc3Vic2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVk IG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlw dGlvbgogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNF VCAocGFzc3dvcmRfcmVxdWlyZWQgPSB0cnVlKTsKQEAgLTI2OCwxMCArMjY4LDEwIEBAIEVS Uk9SOiAgdW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJjcmVhdGVfc2xv dCIKIC0tIG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxz biA9ICcwLzEyMzQ1Jyk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZl IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCi0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAg ICAgICAgfCAwLzAwMDEyMzQ1IHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAg ICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg RmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9u IGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJl Y2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8w MDAxMjM0NSB8IHRlc3Qgc3Vic2NyaXB0aW9uCiAoMSByb3cpCiAKIC0tIG9rIC0gd2l0aCBs c24gPSBOT05FCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9IE5PTkUpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8wJyk7CiBFUlJPUjogIGludmFsaWQgV0FM IGxvY2F0aW9uIChMU04pOiAwLzAKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRp b24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRl bnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3Rp dmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAg ICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAg ICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJvdykKIAogQkVHSU47CkBA IC0zMTksMTAgKzMxOSwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi X2ZvbyBTRVQgKHdhbF9yZWNlaXZlcl90aW1lb3V0ID0gJzgwcycpOwogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUICh3YWxfcmVjZWl2ZXJfdGltZW91dCA9 ICdmb29iYXInKTsKIEVSUk9SOiAgaW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICJ3YWxf cmVjZWl2ZXJfdGltZW91dCI6ICJmb29iYXIiCiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8 IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24g fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAg RGVzY3JpcHRpb24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYg ICAgICAgICAgICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QyIHwgODBzICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1 YnNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhl ZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lw IExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdy ZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QyIHwgODBzICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0 IHN1YnNjcmlwdGlvbgogKDEgcm93KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSBy ZXN0IHNpbXBsZQpAQCAtMzUxLDE5ICszNTEsMTkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3Qg Y29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1h bnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3Jp cHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRp b25zLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg RmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9u IGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBM U04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAg ICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBS ZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAo MSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5h cnkgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1 biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8 IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGlt ZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg LTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhl ZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFs bGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAg fCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAv MDAwMDAwMDAgfCAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViOwpAQCAtMzc1LDI3ICszNzUsMjcgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIK IFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVj dGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24s IGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgog XGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwg RGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAw LzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cp CiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcg PSBwYXJhbGxlbCk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCBy ZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8 ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBh cHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBS ZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAg IHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAg ICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwg U2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8 IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAg ICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg IDAgfCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAg ICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRp b24gYWxyZWFkeSBleGlzdHMKQEAgLTQxMCwxMCArNDEwLDEwIEBAIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHVi MiBXSVRIIChyZWZyCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQ VUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsK IEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlw dGlvbiAicmVncmVzc190ZXN0c3ViIgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBT ZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwg UmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3Jp cHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAg ICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlv biAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCBy ZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8 ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAg fCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAg ICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24g dXNlZCBtb3JlIHRoYW4gb25jZQpAQCAtNDI4LDEwICs0MjgsMTAgQEAgRVJST1I6ICBwdWJs aWNhdGlvbiAidGVzdHB1YjMiIGlzIG5vdCBpbiBzdWJzY3JpcHRpb24gInJlZ3Jlc3NfdGVz dHN1YiIKIC0tIG9rIC0gZGVsZXRlIHB1YmxpY2F0aW9ucwogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBX SVRIIChyZWZyZXNoID0gZmFsc2UpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWlu ZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv ZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMg ICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YjsKQEAgLTQ2NywxOSArNDY3LDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcg UFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNv bm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51 YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0 aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9u cy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZh aWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBk dXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNO ICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBwICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAg IHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVz IHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0 ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgcCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEg cm93KQogCiAtLSB3ZSBjYW4gYWx0ZXIgc3RyZWFtaW5nIHdoZW4gdHdvX3BoYXNlIGVuYWJs ZWQKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcg PSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVy PyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVu dGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNr aXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAg ICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVp cmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQg dHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5 IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8 IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CkBAIC00ODksMTAgKzQ4OSwxMCBAQCBDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0 IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91 IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhl IHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBw dWJsaWNhdGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCBy ZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8 ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBh cHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8 IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtNTA1LDE4ICs1MDUsMTggQEAgQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQs IGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxl IHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJl c2ggcHVibGljYXRpb25zLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRh aW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQg b24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExT TiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAw MDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29y ZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFp biBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0 aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg cGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBm ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3Zl ciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRp b24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0 aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtNTI5LDEw ICs1MjksMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVD VElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJz Y3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8g aW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVw bGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUg c3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBS ZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2 ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTU0 OSwxMCArNTQ5LDEwIEBAIE5PVElDRTogIG1heF9yZXRlbnRpb25fZHVyYXRpb24gaXMgaW5l ZmZlY3RpdmUgd2hlbiByZXRhaW5fZGVhZF90dXBsZXMgaXMgZGlzYWJsCiBXQVJOSU5HOiAg c3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDog IFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIg dGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVy IHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVu dGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9u IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg MTAwMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8 IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlv biBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJl Y2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgIDEwMDAgfCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWls IC0gbWF4X3JldGVudGlvbl9kdXJhdGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZQpAQCAtNTYx LDEwICs1NjEsMTAgQEAgRVJST1I6ICBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIGNhbm5vdCBi ZSBuZWdhdGl2ZQogLS0gb2sKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChtYXhfcmV0ZW50aW9uX2R1cmF0aW9uID0gMCk7CiBcZFJzKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29y ZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFp biBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0 aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg cGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBm ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3Zl ciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRp b24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0 aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IGU3MWU5NWM2Mjk3Li5mN2VlNWI4NDQ5YSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNDgsNiArNDgsOCBAQCB0ZXN0cyAr PSB7CiAgICAgICAndC8wMzZfc2VxdWVuY2VzLnBsJywKICAgICAgICd0LzAzN19leGNlcHQu cGwnLAogICAgICAgJ3QvMDM4X3dhbHNuZF9zaHV0ZG93bl90aW1lb3V0LnBsJywKKyAgICAg ICd0LzAzOV9ob3RfaW5kZXhlZF9hcHBseS5wbCcsCisgICAgICAndC8wNDBfaG90X2luZGV4 ZWRfcmVwbGljYV9pZGVudGl0eS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAg XSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV9ob3Rf aW5kZXhlZF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV9ob3RfaW5k ZXhlZF9hcHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZmUxMDhlNmYwODEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzlfaG90X2luZGV4ZWRfYXBwbHkucGwKQEAgLTAsMCArMSw0MTYgQEAKKworIyBDb3B5 cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisK KyMgUGVyLXN1YnNjcmlwdGlvbiBob3RfaW5kZXhlZF9vbl9hcHBseSBvcHRpb246IHBhcnNl ciwgY2F0YWxvZyByb3VuZC10cmlwLAorIyBBTFRFUiBiZWhhdmlvdXIsIGFuZCBhcHBseS1w YXRoIGdhdGluZyB1bmRlciBlYWNoIG9mIHRoZSB0aHJlZSBtb2Rlcy4KK3VzZSBzdHJpY3Q7 Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3Jl OwordXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CisKK215ICRwdWJsaXNoZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJHB1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CiskcHVibGlzaGVyLT5zdGFy dDsKKworbXkgJHN1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3N1YnNjcmliZXInKTsKKyRzdWJzY3JpYmVyLT5pbml0OworJHN1YnNjcmliZXItPnN0YXJ0 OworCitteSAkcHViX2Nvbm5pbmZvID0gJHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1l PXBvc3RncmVzJzsKKworIyAtLS0gU2NoZW1hIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgdGFiX2V4dHJhIGhh cyBhbiBleHRyYSBidHJlZSBpbmRleCBiZXlvbmQgdGhlIHByaW1hcnkga2V5IG9uIHRoZQor IyBzdWJzY3JpYmVyIHNpZGU7IHRoYXQgaXMgdGhlIHNjaGVtYSBzaGFwZSB0aGF0IHN1YnNl dF9vbmx5IG11c3QgZGVtb3RlCisjIHRvIG5vbi1IT1Qgb24gYXBwbHkgYnV0IGFsd2F5cyBt dXN0IGxldCB0aHJvdWdoLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ cXtDUkVBVEUgVEFCTEUgdGFiX2V4dHJhIChpZCBpbnQgUFJJTUFSWSBLRVksIHBheWxvYWQg aW50LCB0YWcgdGV4dCl9KTsKKworIyB0YWJfcGsgaGFzIG9ubHkgdGhlIHByaW1hcnkga2V5 OyBpbmRleGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0IG9mIHRoZSBQSworIyBhdHRycywgc28g c3Vic2V0X29ubHkgYW5kIGFsd2F5cyBzaG91bGQgYm90aCBhbGxvdyBIT1QtaW5kZXhlZCBv biBhcHBseS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRF IFRBQkxFIHRhYl9wayAoaWQgaW50IFBSSU1BUlkgS0VZLCBwYXlsb2FkIGludCl9KTsKKwor JHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgUFVCTElDQVRJ T04gcHViIEZPUiBUQUJMRSB0YWJfZXh0cmEsIHRhYl9wa30pOworCisjIFN1YnNjcmliZXIg bWlycm9ycyBib3RoIHRhYmxlcy4gIHRhYl9leHRyYSBoYXMgdGhlIGV4dHJhIHNlY29uZGFy eSBpbmRleAorIyBvbmx5IG9uIHRoZSBzdWJzY3JpYmVyLCB3aGljaCBpcyB0aGUgc2NoZW1h LWRpdmVyZ2VuY2UgY2FzZSB0aGUgb3B0aW9uCisjIGdhdGVzLgorJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl9leHRyYSAoaWQgaW50 IFBSSU1BUlkgS0VZLCBwYXlsb2FkIGludCwgdGFnIHRleHQpfSk7Ciskc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgSU5ERVggdGFiX2V4dHJhX3BheWxv YWRfaWR4IE9OIHRhYl9leHRyYShwYXlsb2FkKX0pOworJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl9wayAoaWQgaW50IFBSSU1BUlkg S0VZLCBwYXlsb2FkIGludCl9KTsKKworIyAtLS0gUGFyc2VyIC8gY2F0YWxvZyBjaGVja3Mg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZh dWx0IG9uIGZyZXNoIHN1YnNjcmlwdGlvbiBpcyAncycgKHN1YnNldF9vbmx5KS4KKyRzdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElP TiBzdWJfZGVmYXVsdAorCSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJ Q0FUSU9OIHB1YgorCSAgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzbG90X25hbWUgPSBOT05F LCBlbmFibGVkID0gZmFsc2UsCisJICAgICAgICBjcmVhdGVfc2xvdCA9IGZhbHNlKTsKK30p OworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1Qg c3ViaG90aW5kZXhlZG9uYXBwbHkgRlJPTSBwZ19zdWJzY3JpcHRpb24KKwkJICBXSEVSRSBz dWJuYW1lID0gJ3N1Yl9kZWZhdWx0J30pLAorCSdzJywKKwknZnJlc2ggc3Vic2NyaXB0aW9u IGRlZmF1bHRzIHRvIHN1YnNldF9vbmx5Jyk7CisKKyMgRXhwbGljaXQgJ2Fsd2F5cycgaXMg c3RvcmVkIGFzICdhJy4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7 CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfYWx3YXlzX3AKKwkgIENPTk5FQ1RJT04gJyRw dWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGNvbm5lY3QgPSBm YWxzZSwgc2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9IGZhbHNlLAorCSAgICAgICAgY3Jl YXRlX3Nsb3QgPSBmYWxzZSwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJyk7Cit9 KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNU IHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJCSAgV0hFUkUg c3VibmFtZSA9ICdzdWJfYWx3YXlzX3AnfSksCisJJ2EnLAorCSdDUkVBVEUgd2l0aCBob3Rf aW5kZXhlZF9vbl9hcHBseSA9IGFsd2F5cyBzdG9yZXMgYScpOworCisjIEFMVEVSIFNVQlND UklQVElPTiBTRVQgdXBkYXRlcyB0aGUgY29sdW1uLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCXF7QUxURVIgU1VCU0NSSVBUSU9OIHN1Yl9kZWZhdWx0IFNFVCAo aG90X2luZGV4ZWRfb25fYXBwbHkgPSAnb2ZmJyl9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZS T00gcGdfc3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFtZSA9ICdzdWJfZGVmYXVsdCd9 KSwKKwknbycsCisJJ0FMVEVSIFNVQlNDUklQVElPTiBTRVQgaG90X2luZGV4ZWRfb25fYXBw bHkgPSBvZmYgc3RvcmVzIG8nKTsKKworIyBVbmtub3duIHZhbHVlcyBhcmUgcmVqZWN0ZWQu CitteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkc3Vic2NyaWJlci0+cHNxbCgncG9z dGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9ib2d1cworCSAgQ09OTkVD VElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoY29u bmVjdCA9IGZhbHNlLCBzbG90X25hbWUgPSBOT05FLCBlbmFibGVkID0gZmFsc2UsCisJICAg ICAgICBjcmVhdGVfc2xvdCA9IGZhbHNlLCBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdib2d1 cycpOworfSk7Citpc250KCRyZXQsIDAsICdib2d1cyBob3RfaW5kZXhlZF9vbl9hcHBseSB2 YWx1ZSBpcyByZWplY3RlZCcpOworbGlrZSgkc3RkZXJyLAorCSBxci91bnJlY29nbml6ZWQg dmFsdWUgZm9yIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgImhvdF9pbmRleGVkX29uX2FwcGx5 Ii8sCisJICdib2d1cyBob3RfaW5kZXhlZF9vbl9hcHBseSB2YWx1ZSByZXBvcnRzIHRoZSBl eHBlY3RlZCBlcnJvcicpOworCisjIERyb3AgdGhlIHBsYWNlaG9sZGVyIHN1YnNjcmlwdGlv bnMgc28gd2UgY2FuIHJlYnVpbGQgd2l0aCByZWFsIHNsb3RzLgorJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX2RlZmF1bHQnKTsK KyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9O IHN1Yl9hbHdheXNfcCcpOworCisjIC0tLSBBcHBseS1wYXRoIGJlaGF2aW91ciAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByZS1wb3B1 bGF0ZSBib3RoIHNpZGVzIGlkZW50aWNhbGx5IHNvIHdlIGNhbiB1c2UgY29weV9kYXRhPWZh bHNlIGFuZAorIyBhdm9pZCBkdXBsaWNhdGUta2V5IGNvbmZsaWN0cyB3aGVuIHdlIHJlY3Jl YXRlIHN1YnNjcmlwdGlvbnMgYWNyb3NzIHRoZQorIyB0aHJlZSB0ZXN0IGNhc2VzLiAgV2Ug dXBkYXRlIG5vbi1vdmVybGFwcGluZyBpZCByYW5nZXMgcGVyIGNhc2Ugc28gdGhlCisjIHBn X3N0YXQgY291bnRlcnMgc2VnbWVudCBjbGVhbmx5LgorJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfZXh0cmEKKwkgIFNFTEVDVCBnLCAw LCAndCcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7CiskcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9waworCSAgU0VMRUNU IGcsIDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7Ciskc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfZXh0cmEKKwkgIFNF TEVDVCBnLCAwLCAndCcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7Ciskc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcGsK KwkgIFNFTEVDVCBnLCAwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworCisj IEhlbHBlcjogcmVhZCBjb3VudGVycyBhbmQgcG9sbCB1cCB0byAxMCBzIGZvciBuX3R1cF91 cGQgdG8gcmVhY2ggYQorIyBtaW5pbXVtIHRhcmdldCB2YWx1ZSAodGhlIGFwcGx5IHdvcmtl ciBmbHVzaGVzIHBnc3RhdCBhc3luY2hyb25vdXNseSkuCitzdWIgcG9sbF9jb3VudGVycwor eworCW15ICgkbm9kZSwgJHRhYmxlLCAkdXBkX3RhcmdldCkgPSBAXzsKKworCW15ICRkZWFk bGluZSA9IHRpbWUoKSArIDEwOworCW15ICRyb3cgPSAnJzsKKwl3aGlsZSAoMSkKKwl7CisJ CSRyb3cgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQlxcXtTRUxFQ1QgY29h bGVzY2Uobl90dXBfdXBkLCAwKSwKKwkJCSAgICAgICAgICBjb2FsZXNjZShuX3R1cF9ob3Rf dXBkLCAwKSwKKwkJCSAgICAgICAgICBjb2FsZXNjZShuX3R1cF9ob3RfaW5kZXhlZF91cGQs IDApCisJCQkgICBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICck dGFibGUnfSk7CisJCW15ICgkdXBkKSA9IHNwbGl0IC9cfC8sICRyb3c7CisJCWxhc3QgaWYg KCR1cGQgKyAwKSA+PSAkdXBkX3RhcmdldCB8fCB0aW1lKCkgPj0gJGRlYWRsaW5lOworCQl1 c2xlZXAoMTAwXzAwMCk7CisJfQorCW15ICgkdXBkLCAkaG90LCAkaG90X2lkeCkgPSBzcGxp dCAvXHwvLCAkcm93OworCXJldHVybiAoJHVwZCArIDAsICRob3QgKyAwLCAkaG90X2lkeCAr IDApOworfQorCisjIEhlbHBlcjogZmlyZSBVUERBVEVzIHRoYXQgdG91Y2ggdGhlIGluZGV4 ZWQgcGF5bG9hZCBjb2x1bW4gb24gYSBnaXZlbgorIyBpZCByYW5nZSBhbmQgcmV0dXJuIHRo ZSBkZWx0YXMgaW4gKG5fdHVwX3VwZCwgbl90dXBfaG90X3VwZCwKKyMgbl90dXBfaG90X2lu ZGV4ZWRfdXBkKSBvbiB0aGUgc3Vic2NyaWJlci4KK3N1YiBhcHBseV91cGRhdGVzX2FuZF9y ZWFkCit7CisJbXkgKCR0YWJsZSwgJHN1Yl9uYW1lLCAkaWRfbG8sICRpZF9oaSkgPSBAXzsK KworCW15ICgkdXBkMCwgJGhvdDAsICRob3RpZHgwKSA9CisJICBwb2xsX2NvdW50ZXJzKCRz dWJzY3JpYmVyLCAkdGFibGUsIDApOworCisJZm9yIG15ICRpICgkaWRfbG8gLi4gJGlkX2hp KQorCXsKKwkJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQkiVVBEQVRF ICR0YWJsZSBTRVQgcGF5bG9hZCA9IHBheWxvYWQgKyAxIFdIRVJFIGlkID0gJGkiKTsKKwl9 CisJJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkc3ViX25hbWUpOworCisJbXkgJG4g PSAkaWRfaGkgLSAkaWRfbG8gKyAxOworCW15ICgkdXBkMSwgJGhvdDEsICRob3RpZHgxKSA9 CisJICBwb2xsX2NvdW50ZXJzKCRzdWJzY3JpYmVyLCAkdGFibGUsICR1cGQwICsgJG4pOwor CW5vdGUoIiR0YWJsZSAkc3ViX25hbWUgJGlkX2xvLi4kaWRfaGk6IGRuX3VwZD0iCisJCSAu ICgkdXBkMSAtICR1cGQwKSAuICIgZGhvdD0iIC4gKCRob3QxIC0gJGhvdDApCisJCSAuICIg ZGhvdGlkeD0iIC4gKCRob3RpZHgxIC0gJGhvdGlkeDApKTsKKwlyZXR1cm4gKCR1cGQxIC0g JHVwZDAsICRob3QxIC0gJGhvdDAsICRob3RpZHgxIC0gJGhvdGlkeDApOworfQorCisjIENh c2UgMTogb2ZmLCBzdWJzY3JpYmVyLW9ubHkgc2Vjb25kYXJ5IGluZGV4LiAgSE9ULWluZGV4 ZWQgbXVzdCBiZQorIyBzdXBwcmVzc2VkIG9uIHRhYl9leHRyYS4gIFBsYWluIEhPVCB1cGRh dGVzIGFsc28gc3RheSB6ZXJvIGJlY2F1c2UgZXZlcnkKKyMgVVBEQVRFIHRvdWNoZXMgYHBh eWxvYWRgIHdoaWNoIGlzIGluZGV4ZWQgb24gdGhlIHN1YnNjcmliZXIuCiskc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3Vi X29mZgorCSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1 YgorCSAgV0lUSCAoc2xvdF9uYW1lID0gJ3N1Yl9vZmZfc2xvdCcsIGNyZWF0ZV9zbG90ID0g dHJ1ZSwKKwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ29mZicsIGNvcHlfZGF0 YSA9IGZhbHNlKTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX29m ZicpOworCitteSAodW5kZWYsIHVuZGVmLCAkb2ZmX2V4dHJhX2hvdGlkeCkgPQorICBhcHBs eV91cGRhdGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEnLCAnc3ViX29mZicsIDEsIDIwKTsKK2lz KCRvZmZfZXh0cmFfaG90aWR4LCAwLAorICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0gb2Zm OiBubyBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRhYl9leHRyYScpOworCiskc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfb2ZmJyk7 CisKKyMgQ2FzZSAyOiBzdWJzZXRfb25seS4gIE9uIHRhYl9wayAobm8gc2Vjb25kYXJ5IGlu ZGV4LCBpbmRleGVkLWF0dHIgc2V0IGlzCisjIGEgc3Vic2V0IG9mIFBLIGF0dHJzKSwgY2xh c3NpYyBIT1QgbXVzdCBmaXJlIGJlY2F1c2UgYHBheWxvYWRgIGlzIG5vdAorIyBpbmRleGVk IHRoZXJlLiAgT24gdGFiX2V4dHJhIChzdWJzY3JpYmVyJ3MgYHBheWxvYWRgIGluZGV4IGlz IE5PVCBjb3ZlcmVkCisjIGJ5IHRoZSBQSyksIHRoZSBhcHBseSB3b3JrZXIgbXVzdCBkZW1v dGUgdG8gbm9uLUhPVCBqdXN0IGxpa2UgJ29mZicuCiskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX3N1YnNldAorCSAg Q09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lU SCAoc2xvdF9uYW1lID0gJ3N1Yl9zdWJzZXRfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1ZSwK KwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ3N1YnNldF9vbmx5JywgY29weV9k YXRhID0gZmFsc2UpOworfSk7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWJf c3Vic2V0Jyk7CisKK215ICh1bmRlZiwgJHNzX3BrX2hvdCwgJHNzX3BrX2hvdGlkeCkgPQor ICBhcHBseV91cGRhdGVzX2FuZF9yZWFkKCd0YWJfcGsnLCAnc3ViX3N1YnNldCcsIDEsIDIw KTsKK2NtcF9vaygkc3NfcGtfaG90LCAnPicsIDAsCisJICAgJ2hvdF9pbmRleGVkX29uX2Fw cGx5ID0gc3Vic2V0X29ubHk6IGNsYXNzaWMgSE9UIGZpcmVzIG9uIHRhYl9waycpOworCitt eSAodW5kZWYsIHVuZGVmLCAkc3NfZXh0cmFfaG90aWR4KSA9CisgIGFwcGx5X3VwZGF0ZXNf YW5kX3JlYWQoJ3RhYl9leHRyYScsICdzdWJfc3Vic2V0JywgMjEsIDQwKTsKK2lzKCRzc19l eHRyYV9ob3RpZHgsIDAsCisgICAnaG90X2luZGV4ZWRfb25fYXBwbHkgPSBzdWJzZXRfb25s eTogbm8gSE9ULWluZGV4ZWQgb24gdGFiX2V4dHJhJyk7CisKKyRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9zdWJzZXQnKTsKKwor IyBDYXNlIDM6IGFsd2F5cy4gIFVuY29uZGl0aW9uYWwgSE9ULWluZGV4ZWQgZWxpZ2liaWxp dHkuICBPbiB0YWJfZXh0cmEKKyMgdXBkYXRlcyB0b3VjaGluZyB0aGUgaW5kZXhlZCBwYXls b2FkIGNvbHVtbiBzaG91bGQgbm93IHJ1biBvbiB0aGUKKyMgSE9ULWluZGV4ZWQgcGF0aDog bl90dXBfaG90X2luZGV4ZWRfdXBkIG11c3QgaW5jcmVhc2UuCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX2Fsd2F5 cworCSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1Ygor CSAgV0lUSCAoc2xvdF9uYW1lID0gJ3N1Yl9hbHdheXNfc2xvdCcsIGNyZWF0ZV9zbG90ID0g dHJ1ZSwKKwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycsIGNvcHlf ZGF0YSA9IGZhbHNlKTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3Vi X2Fsd2F5cycpOworCitteSAodW5kZWYsIHVuZGVmLCAkYWxfZXh0cmFfaG90aWR4KSA9Cisg IGFwcGx5X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9leHRyYScsICdzdWJfYWx3YXlzJywgNDEs IDgwKTsKK2NtcF9vaygkYWxfZXh0cmFfaG90aWR4LCAnPicsIDAsCisJICAgJ2hvdF9pbmRl eGVkX29uX2FwcGx5ID0gYWx3YXlzOiBIT1QtaW5kZXhlZCBmaXJlcyBvbiB0YWJfZXh0cmEn KTsKKworIyBBTFRFUiBiYWNrIHRvIG9mZiBhbmQgdmVyaWZ5IHRoZSBhcHBseSB3b3JrZXIg cGlja3MgdXAgdGhlIG5ldyBtb2RlLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCXF7QUxURVIgU1VCU0NSSVBUSU9OIHN1Yl9hbHdheXMgU0VUIChob3RfaW5kZXhl ZF9vbl9hcHBseSA9ICdvZmYnKX0pOworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJcXtTRUxFQ1Qgc3ViaG90aW5kZXhlZG9uYXBwbHkgRlJPTSBwZ19zdWJz Y3JpcHRpb24KKwkJICBXSEVSRSBzdWJuYW1lID0gJ3N1Yl9hbHdheXMnfSksCisJJ28nLAor CSdBTFRFUiBzdWJfYWx3YXlzIFNFVCBob3RfaW5kZXhlZF9vbl9hcHBseSA9IG9mZiBwZXJz aXN0cycpOworCisjIERyaXZlIGFub3RoZXIgYmF0Y2ggb2YgdXBkYXRlcyBhbmQgY29uZmly bSBuX3R1cF9ob3RfaW5kZXhlZF91cGQgZG9lcyBOT1QKKyMgYWR2YW5jZSBhZnRlciB0aGUg d29ya2VyIHJlcmVhZHMgdGhlIGNhdGFsb2cuCitteSAodW5kZWYsIHVuZGVmLCAkcG9zdF9h bHRlcl9ob3RpZHgpID0KKyAgYXBwbHlfdXBkYXRlc19hbmRfcmVhZCgndGFiX2V4dHJhJywg J3N1Yl9hbHdheXMnLCA4MSwgMTAwKTsKK2lzKCRwb3N0X2FsdGVyX2hvdGlkeCwgMCwKKyAg ICdBTFRFUiB0byBvZmYgZnJlZXplcyBuX3R1cF9ob3RfaW5kZXhlZF91cGQgYWZ0ZXIgd29y a2VyIHJlcmVhZCcpOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdE Uk9QIFNVQlNDUklQVElPTiBzdWJfYWx3YXlzJyk7CisKKyMgLS0tIFN1YnNjcmliZXIgSU5T RVJULWFmdGVyLXJlcGxpY2F0ZWQtVVBEQVRFIHBlciBtb2RlIC0tLS0tLS0tLS0tLS0tLS0t LS0KKyMKKyMgVmVyaWZ5IHRoYXQgYSBzdWJzY3JpYmVyIElOU0VSVCB1c2luZyB0aGUgT0xE IHZhbHVlIG9mIGEgcmVwbGljYXRlZAorIyBVUERBVEUncyBpbmRleGVkIGNvbHVtbiBzdWNj ZWVkcyB3aXRob3V0IGEgc3B1cmlvdXMgdW5pcXVlLXZpb2xhdGlvbgorIyB1bmRlciBlYWNo IGFwcGx5IG1vZGUuICBVc2UgYSBkZWRpY2F0ZWQgdGFibGUgKHRhYl91aykgc28gdGhlIHVu aXF1ZQorIyBjb25zdHJhaW50IGNhbiBiZSBkZWZpbmVkIHVwLWZyb250IGFuZCB0aGUgdGVz dCBkb2VzIG5vdCBjb2xsaWRlIHdpdGgKKyMgcHJlLXBvcHVsYXRlZCByb3dzIGZyb20gdGhl IGFwcGx5LXBhdGggc2NlbmFyaW9zIGFib3ZlLgorIworIyBQdWJsaXNoZXIgdXBkYXRlcyBy b3cgJHVwZF9pZCBjaGFuZ2luZyBwYXlsb2FkIGZyb20gMCB0byA5OTkuICBUaGUKKyMgc3Vi c2NyaWJlciB0aGVuIGluc2VydHMgYSBmcmVzaCByb3cgd2l0aCBwYXlsb2FkPTAgKHRoZSBw cmUtdXBkYXRlCisjIHZhbHVlKS4gIFVuZGVyIGFsbCB0aHJlZSBtb2RlcyBfYnRfY2hlY2tf dW5pcXVlJ3MgcmVjaGVjayBvZiB0aGUKKyMgY29uZmxpY3RpbmcgdHVwbGUncyBsaXZlIGtl eSBtdXN0IHJlY29nbml6ZSB0aGUgc3RhbGUgbGVhZiBlbnRyeSBwb2ludGluZworIyBhdCB0 aGUgY2hhaW4gcm9vdCwgc28gdGhlIElOU0VSVCBzdWNjZWVkcy4KKworJHB1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX3VrICgKKwkgICAg aWQgICAgICBpbnQgUFJJTUFSWSBLRVksCisJICAgIHBheWxvYWQgaW50LAorCSAgICB0YWcg ICAgIHRleHQsCisJICAgIFVOSVFVRSAocGF5bG9hZCwgdGFnKSl9KTsKKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfdWsgKAorCSAg ICBpZCAgICAgIGludCBQUklNQVJZIEtFWSwKKwkgICAgcGF5bG9hZCBpbnQsCisJICAgIHRh ZyAgICAgdGV4dCwKKwkgICAgVU5JUVVFIChwYXlsb2FkLCB0YWcpKX0pOworJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtBTFRFUiBQVUJMSUNBVElPTiBwdWIgQURE IFRBQkxFIHRhYl91a30pOworCitmb3IgbXkgJG1vZGUgKCdvZmYnLCAnc3Vic2V0X29ubHkn LCAnYWx3YXlzJykKK3sKKwlteSAkYmFzZV9pZCA9ICgkbW9kZSBlcSAnb2ZmJykgPyAxCisJ ICAgICAgICAgICAgICA6ICgkbW9kZSBlcSAnc3Vic2V0X29ubHknKSA/IDEwMCA6IDIwMDsK KwlteSAkdXBkX2lkICA9ICRiYXNlX2lkICsgMTsKKwlteSAkaW5zX2lkICA9ICRiYXNlX2lk ICsgMjsKKworCSMgU2VlZCBhIHJvdyB0aGF0IHdlIHdpbGwgVVBEQVRFIG9uIHRoZSBwdWJs aXNoZXIgKHBheWxvYWQgc3RhcnRzIGF0IDApLAorCSMgYW5kIGRyYWluIHRoZSBhcHBseSBm b3IgaXQgYmVmb3JlIGNoYW5naW5nIHBheWxvYWQuCisJJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0YWJfdWsgVkFMVUVTICgkdXBkX2lkLCAw LCAnbW9kZV8kbW9kZScpIik7CisKKwkkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFxeworCQlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl91a18kbW9kZQorCQkgIENPTk5F Q1RJT04gJyRwdWJfY29ubmluZm8nCisJCSAgUFVCTElDQVRJT04gcHViCisJCSAgV0lUSCAo c2xvdF9uYW1lID0gJ3N1Yl91a18ke21vZGV9X3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUs CisJCSAgICAgICAgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnJG1vZGUnLCBjb3B5X2RhdGEg PSB0cnVlKTsKKwl9KTsKKwkkcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCJzdWJfdWtf JG1vZGUiKTsKKworCSMgUHVibGlzaGVyIFVQREFURTogcGF5bG9hZCAwIC0+IDk5OS4KKwkk cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0YWJfdWsgU0VU IHBheWxvYWQgPSA5OTkgV0hFUkUgaWQgPSAkdXBkX2lkIik7CisJJHB1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgic3ViX3VrXyRtb2RlIik7CisKKwkjIFN1YnNjcmliZXIgSU5TRVJU IHdpdGggdGhlIE9MRCBwYXlsb2FkIHZhbHVlIGJ1dCBhIHVuaXF1ZSB0YWcuICBUaGUKKwkj IGV4aXN0aW5nIGNoYWluIGxlYWYgd2l0aCBrZXkgKDAsICdtb2RlXyRtb2RlJykgaXMgbm93 IHN0YWxlOiB0aGUKKwkjIGxpdmUgdHVwbGUgYXQgdGhlIGNoYWluIHJvb3QgaGFzIHBheWxv YWQ9OTk5LiAgX2J0X2NoZWNrX3VuaXF1ZQorCSMgcmVjaGVja3MgdGhlIGNvbmZsaWN0aW5n IHR1cGxlJ3MgbGl2ZSBrZXkgYW5kIHJlY29nbml6ZXMgdGhlIHN0YWxlCisJIyBsZWFmLCBh bGxvd2luZyB0aGlzIElOU0VSVCB0byBzdWNjZWVkLgorCW15ICgkciwgJG91dCwgJGVycikg PSAkc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGFiX3Vr IFZBTFVFUyAoJGluc19pZCwgMCwgJ2ZyZXNoXyRtb2RlJykiKTsKKwlpcygkciwgMCwKKwkg ICAiaG90X2luZGV4ZWRfb25fYXBwbHkgPSAkbW9kZTogIgorCSAgIC4gInN1YnNjcmliZXIg SU5TRVJUIHdpdGggb2xkIHBheWxvYWQgdmFsdWUgc3VjY2VlZHMiKTsKKwlsaWtlKCRlcnIs IHFyL14kLywKKwkJICJob3RfaW5kZXhlZF9vbl9hcHBseSA9ICRtb2RlOiAiCisJCSAuICJJ TlNFUlQgZGlkIG5vdCByYWlzZSBhbiBlcnJvciIpOworCisJJHN1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiRFJPUCBTVUJTQ1JJUFRJT04gc3ViX3VrXyRtb2RlIik7 Cit9CisKKyMgLS0tIGFsd2F5cy1tb2RlIHNhZmV0eSB3aXRoIGluZGV4ZWQgYXR0cnMgYmV5 b25kIHRoZSByZXBsaWNhIGlkZW50aXR5IC0tLS0tCisjCisjIEFtaXQncyBjb3JuZXI6IHVu ZGVyIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycgdGhlIGFwcGx5IHdvcmtlciBt YXkKKyMgcnVuIGEgSE9ULWluZGV4ZWQgdXBkYXRlIGV2ZW4gd2hlbiB0aGUgdGFibGUgaGFz IGFuIGluZGV4ZWQgYXR0cmlidXRlIHRoYXQKKyMgaXMgTk9UIGNvdmVyZWQgYnkgdGhlIHJl cGxpY2EgaWRlbnRpdHkuICBUaGUgcmVhZC1zaWRlIHN0YWxlbmVzcyBtZWNoYW5pc20KKyMg bXVzdCBzdGlsbCBsZXQgdGhlIGFwcGx5IHdvcmtlcidzIGxhdGVyIHJlcGxpY2EtaWRlbnRp dHkgbG9va3VwcyBmaW5kIHRoZQorIyByb3csIGFuZCBERUxFVEUvVVBEQVRFIHJlcGxpY2F0 aW9uIG11c3QgY29udmVyZ2UsIGluY2x1ZGluZyB3aGVuIHRoZQorIyByZXBsaWNhLWlkZW50 aXR5IGNvbHVtbiBpdHNlbGYgaXMgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSkuCisjCisj IHRhYl9yaTogcmVwbGljYSBpZGVudGl0eSBpcyBhIFVOSVFVRSBpbmRleCBvbiByaWQgKG5v dCB0aGUgUEspLCBhbmQgdGhlcmUKKyMgaXMgYW4gZXh0cmEgc2Vjb25kYXJ5IGluZGV4IG9u IHBheWxvYWQgdGhhdCBpcyBOT1QgcGFydCBvZiB0aGUgcmVwbGljYQorIyBpZGVudGl0eS4g IFNvIGEgcGF5bG9hZCBjaGFuZ2UgbWFrZXMgdGhlIHBheWxvYWQgbGVhZiBzdGFsZSwgYW5k IGFuIHJpZAorIyBBQkEgY3ljbGUgbWFrZXMgdGhlIHJpZCAocmVwbGljYS1pZGVudGl0eSkg bGVhZiBzdGFsZSAtLSBib3RoIHdoaWxlCisjICdhbHdheXMnIGtlZXBzIHRoZSB1cGRhdGVz IG9uIHRoZSBIT1QgY2hhaW4uCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXsKKwlDUkVBVEUgVEFCTEUgdGFiX3JpIChpZCBpbnQgUFJJTUFSWSBLRVksIHJpZCBpbnQg Tk9UIE5VTEwsIHBheWxvYWQgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRhYl9yaV9y aWRfdWsgT04gdGFiX3JpKHJpZCk7CisJQUxURVIgVEFCTEUgdGFiX3JpIFJFUExJQ0EgSURF TlRJVFkgVVNJTkcgSU5ERVggdGFiX3JpX3JpZF91azsKKwlDUkVBVEUgUFVCTElDQVRJT04g cHViX3JpIEZPUiBUQUJMRSB0YWJfcmk7Cit9KTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXsKKwlDUkVBVEUgVEFCTEUgdGFiX3JpIChpZCBpbnQgUFJJTUFSWSBL RVksIHJpZCBpbnQgTk9UIE5VTEwsIHBheWxvYWQgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElO REVYIHRhYl9yaV9yaWRfdWsgT04gdGFiX3JpKHJpZCk7CisJQUxURVIgVEFCTEUgdGFiX3Jp IFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGFiX3JpX3JpZF91azsKKwlDUkVBVEUg SU5ERVggdGFiX3JpX3BheWxvYWRfaWR4IE9OIHRhYl9yaShwYXlsb2FkKTsKK30pOworCisk cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9y aSBWQUxVRVMgKDEsIDEwLCAwKSwgKDIsIDIwLCAwKX0pOworCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX3JpCisJ ICBDT05ORUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHViX3JpCisJ ICBXSVRIIChzbG90X25hbWUgPSAnc3ViX3JpX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUs CisJICAgICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnLCBjb3B5X2RhdGEg PSB0cnVlKTsKK30pOworIyBXYWl0IGZvciB0aGUgaW5pdGlhbCB0YWJsZSBDT1BZIHRvIGZp bmlzaCwgbm90IGp1c3Qgc3RyZWFtaW5nIGNhdGNoLXVwLCBzbworIyB0aGUgc2VlZGVkIHJv d3MgYXJlIHByZXNlbnQgYmVmb3JlIHdlIHN0YXJ0IHVwZGF0aW5nIHRoZW0uCiskc3Vic2Ny aWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1Yl9yaScp OworCisjIEN5Y2xlIHRoZSByZXBsaWNhLWlkZW50aXR5IGNvbHVtbiBhd2F5IGFuZCBiYWNr IChBQkEpLCBhbmQgYWxzbyBjaHVybiB0aGUKKyMgZXh0cmEgcGF5bG9hZCBpbmRleCwgYWxs IHJlcGxpY2F0ZWQgdW5kZXIgJ2Fsd2F5cycuICBFYWNoIHN0ZXAgaXMgYQorIyBIT1QtaW5k ZXhlZCB1cGRhdGUgb24gdGhlIHN1YnNjcmliZXIgdGhhdCBsZWF2ZXMgYSBzdGFsZSBsZWFm LgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJVVBEQVRFIHRhYl9y aSBTRVQgcmlkID0gMTEsIHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9IDE7CisJ VVBEQVRFIHRhYl9yaSBTRVQgcmlkID0gMTAsIHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVS RSBpZCA9IDE7ICAtLSByaWQgQUJBCisJVVBEQVRFIHRhYl9yaSBTRVQgcGF5bG9hZCA9IHBh eWxvYWQgKyAxIFdIRVJFIGlkID0gMjsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgnc3ViX3JpJyk7CisKKyMgQ29uZmlybSB0aGUgYXBwbHkgd29ya2VyIGFjdHVhbGx5 IHRvb2sgdGhlIEhPVC1pbmRleGVkIHBhdGggb24gdGFiX3JpICh0aGUKKyMgd2hvbGUgcG9p bnQgb2YgJ2Fsd2F5cycgd2l0aCBpbmRleGVkIGF0dHJzIGJleW9uZCB0aGUgcmVwbGljYSBp ZGVudGl0eSkuCisjIFdpdGhvdXQgdGhpcyB0aGUgY29udmVyZ2VuY2UvdmVyaWZ5X2hlYXBh bSBhc3NlcnRzIGJlbG93IGNvdWxkIHBhc3MKKyMgdmFjdW91c2x5IGlmIGVsaWdpYmlsaXR5 IHNpbGVudGx5IHJlZ3Jlc3NlZCB0byBwbGFpbiBub24tSE9ULgorbXkgKHVuZGVmLCB1bmRl ZiwgJHJpX2hvdGlkeCkgPSBwb2xsX2NvdW50ZXJzKCRzdWJzY3JpYmVyLCAndGFiX3JpJywg Myk7CitjbXBfb2soJHJpX2hvdGlkeCwgJz4nLCAwLAorCSAgICdhbHdheXMtbW9kZTogSE9U LWluZGV4ZWQgcGF0aCBmaXJlZCBvbiB0YWJfcmkgKHJpZC9wYXlsb2FkIGNodXJuKScpOwor CisjIEEgc3Vic2VxdWVudCByZXBsaWNhdGVkIFVQREFURSBrZXllZCBieSB0aGUgcmVwbGlj YSBpZGVudGl0eSAocmlkKSBtdXN0CisjIGZpbmQgdGhlIHJvdyBkZXNwaXRlIHRoZSBzdGFs ZSByaWQvcGF5bG9hZCBsZWF2ZXMgdGhlIEFCQSBsZWZ0IGJlaGluZC4KKyRwdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7VVBEQVRFIHRhYl9yaSBTRVQgcGF5bG9hZCA9 IDEwMCBXSEVSRSBpZCA9IDF9KTsKKyMgQW5kIGEgcmVwbGljYXRlZCBERUxFVEUgcmVzb2x2 ZWQgdGhyb3VnaCB0aGUgcmVwbGljYS1pZGVudGl0eSBpbmRleCBtdXN0CisjIGFsc28gZmlu ZCBhbmQgcmVtb3ZlIHRoZSByaWdodCByb3cuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXtERUxFVEUgRlJPTSB0YWJfcmkgV0hFUkUgaWQgPSAyfSk7CiskcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWJfcmknKTsKKworaXMoICRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgcmlkIHx8ICc6JyB8fCBwYXlsb2Fk IEZST00gdGFiX3JpIFdIRVJFIGlkID0gMX0pLAorCScxMDoxMDAnLAorCSdhbHdheXMtbW9k ZTogcmVwbGljYXRlZCBVUERBVEUgZm91bmQgdGhlIHJvdyB2aWEgUkkgYWZ0ZXIgcmlkIEFC QScpOworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxF Q1QgY291bnQoKikgRlJPTSB0YWJfcmkgV0hFUkUgaWQgPSAyfSksCisJJzAnLAorCSdhbHdh eXMtbW9kZTogcmVwbGljYXRlZCBERUxFVEUgZm91bmQgdGhlIHJvdyB2aWEgUkkgd2l0aCBz dGFsZSBsZWF2ZXMnKTsKKyMgRnVsbCBjb252ZXJnZW5jZSBjcm9zcy1jaGVjay4KK2lzKCAk c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN0cmluZ19h Z2coaWQgfHwgJywnIHx8IHJpZCB8fCAnLCcgfHwgcGF5bG9hZCwgJzsnIE9SREVSIEJZIGlk KQorCQkgIEZST00gdGFiX3JpfSksCisJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCXF7U0VMRUNUIHN0cmluZ19hZ2coaWQgfHwgJywnIHx8IHJpZCB8fCAnLCcgfHwg cGF5bG9hZCwgJzsnIE9SREVSIEJZIGlkKQorCQkgIEZST00gdGFiX3JpfSksCisJJ2Fsd2F5 cy1tb2RlOiB0YWJfcmkgY29udmVyZ2VzIGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3Jp YmVyJyk7CisKKyMgdmVyaWZ5X2hlYXBhbSBmaW5kcyBubyBjb3JydXB0aW9uIGluIHRoZSBI T1QtaW5kZXhlZCBjaGFpbnMgbGVmdCBiZWhpbmQuCiskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgYW1jaGVjaycp OworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1Qg Y291bnQoKikgRlJPTSB2ZXJpZnlfaGVhcGFtKCd0YWJfcmknKX0pLAorCScwJywKKwknYWx3 YXlzLW1vZGU6IHZlcmlmeV9oZWFwYW0gY2xlYW4gb24gdGFiX3JpIGFmdGVyIHN0YWxlLWxl YWYgY2h1cm4nKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJP UCBTVUJTQ1JJUFRJT04gc3ViX3JpJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2FfaWRl bnRpdHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVw bGljYV9pZGVudGl0eS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZjgwMTc4N2I0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbApAQCAtMCwwICsxLDEx MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisKKyMgTGl2ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIG9mIEhPVC1pbmRleGVk IHVwZGF0ZXMgdW5kZXIgbm9uLWRlZmF1bHQgcmVwbGljYQorIyBpZGVudGl0aWVzLiAgVGhl IGFwcGx5IHdvcmtlciBsb2NhdGVzIHRoZSByb3cgdG8gdXBkYXRlIG9yIGRlbGV0ZSB2aWEg dGhlCisjIHJlcGxpY2EgaWRlbnRpdHk6IGEgc2Vxc2NhbiBmb3IgUkVQTElDQSBJREVOVElU WSBGVUxMLCBhbmQgdGhlIG5vbWluYXRlZAorIyBpbmRleCBmb3IgUkVQTElDQSBJREVOVElU WSBVU0lORyBJTkRFWC4gIE9uIGEgc3Vic2NyaWJlciB3aG9zZSB0YWJsZXMgY2FycnkKKyMg ZXh0cmEgaW5kZXhlcyAoc28gYXBwbHkgcGVyZm9ybXMgSE9ULWluZGV4ZWQgdXBkYXRlcyBh bmQgbGVhdmVzIHN0YWxlIGluZGV4CisjIGxlYXZlcyksIHRoYXQgbG9va3VwIG11c3Qgc3Rp bGwgZmluZCB0aGUgY3VycmVudCByb3cgLS0gaW5jbHVkaW5nIGFmdGVyIHRoZQorIyBpZGVu dGl0eSBjb2x1bW4ncyB2YWx1ZSBpcyBjeWNsZWQgYXdheSBhbmQgYmFjayAoQUJBKS4KK3Vz ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBU ZXN0OjpNb3JlOworCitteSAkcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdwdWJsaXNoZXInKTsKKyRwdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWlu ZyA9PiAnbG9naWNhbCcpOworJHB1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRzdWJzY3JpYmVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskc3Vi c2NyaWJlci0+aW5pdDsKKyRzdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHB1Yl9jb25uaW5m byA9ICRwdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CisKKyMgdGFi X2Z1bGw6IFJFUExJQ0EgSURFTlRJVFkgRlVMTCAoYXBwbHkgdXNlcyBhIHNlcXVlbnRpYWwg c2NhbikuCisjIHRhYl9pZHg6ICBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIG9uIGEg bm9uLVBLIHVuaXF1ZSBpbmRleCB3aG9zZQorIyAgICAgICAgICAgY29sdW1uIGlzIGl0c2Vs ZiB1cGRhdGVkLCBzbyB0aGUgYXBwbHktc2lkZSBpbmRleCBsb29rdXAgbXVzdAorIyAgICAg ICAgICAgdG9sZXJhdGUgc3RhbGUgbGVhdmVzIGxlZnQgYnkgZWFybGllciBIT1QtaW5kZXhl ZCB1cGRhdGVzLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JF QVRFIFRBQkxFIHRhYl9mdWxsIChhIGludCwgYiBpbnQsIGMgaW50KTsKKwlBTFRFUiBUQUJM RSB0YWJfZnVsbCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisJQ1JFQVRFIFRBQkxFIHRhYl9p ZHggKGsgaW50IE5PVCBOVUxMLCB2IGludCwgdyBpbnQpOworCUNSRUFURSBVTklRVUUgSU5E RVggdGFiX2lkeF9rIE9OIHRhYl9pZHggKGspOworCUFMVEVSIFRBQkxFIHRhYl9pZHggUkVQ TElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0YWJfaWR4X2s7CisJQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YiBGT1IgVEFCTEUgdGFiX2Z1bGwsIHRhYl9pZHg7Cit9KTsKKworIyBUaGUgc3Vi c2NyaWJlciBhZGRzIGV4dHJhIHNlY29uZGFyeSBpbmRleGVzIHNvIHRoYXQgYW4gVVBEQVRF IGNoYW5naW5nIG9uZQorIyBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1QtaW5kZXhlZCBvbiBh cHBseS4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlDUkVBVEUg VEFCTEUgdGFiX2Z1bGwgKGEgaW50LCBiIGludCwgYyBpbnQpIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CisJQ1JFQVRFIElOREVYIHRhYl9mdWxsX2IgT04gdGFiX2Z1bGwgKGIpOworCUNS RUFURSBJTkRFWCB0YWJfZnVsbF9jIE9OIHRhYl9mdWxsIChjKTsKKwlBTFRFUiBUQUJMRSB0 YWJfZnVsbCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisJQ1JFQVRFIFRBQkxFIHRhYl9pZHgg KGsgaW50IE5PVCBOVUxMLCB2IGludCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWJfaWR4X2sgT04gdGFiX2lkeCAoayk7CisJQ1JF QVRFIElOREVYIHRhYl9pZHhfdiBPTiB0YWJfaWR4ICh2KTsKKwlDUkVBVEUgSU5ERVggdGFi X2lkeF93IE9OIHRhYl9pZHggKHcpOworCUFMVEVSIFRBQkxFIHRhYl9pZHggUkVQTElDQSBJ REVOVElUWSBVU0lORyBJTkRFWCB0YWJfaWR4X2s7Cit9KTsKKworIyBBbGxvdyBIT1QtaW5k ZXhlZCB1cGRhdGVzIG9uIHRoZSBhcHBseSBwYXRoLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YgorCSAgQ09OTkVD VElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoaG90 X2luZGV4ZWRfb25fYXBwbHkgPSBhbHdheXMpOworfSk7Ciskc3Vic2NyaWJlci0+d2FpdF9m b3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YicpOworCisjIFNlZWQgYm90 aCB0YWJsZXMuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlJTlNF UlQgSU5UTyB0YWJfZnVsbCBWQUxVRVMgKDEsIDEwLCAxMDApLCAoMiwgMjAsIDIwMCk7CisJ SU5TRVJUIElOVE8gdGFiX2lkeCBWQUxVRVMgKDEsIDEwLCAxMDAwKSwgKDIsIDIwLCAyMDAw KTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViJyk7CisKKyMgQSBy dW4gb2Ygc2luZ2xlLWNvbHVtbiB1cGRhdGVzOiBlYWNoIHN0YXlzIEhPVC1pbmRleGVkIG9u IHRoZSBzdWJzY3JpYmVyIGFuZAorIyBsZWF2ZXMgc3RhbGUgbGVhdmVzLCB0aGVuIHRoZSBp ZGVudGl0eS9QSyByb3cgaXMgbWF0Y2hlZCBhZ2FpbiBieSB0aGUgbmV4dAorIyBjaGFuZ2Uu ICBJbmNsdWRlIGFuIEFCQSBjeWNsZSBvbiB0aGUgVVNJTkcgSU5ERVggY29sdW1uIGsgKDEg LT4gMyAtPiAxKS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQ REFURSB0YWJfZnVsbCBTRVQgYiA9IGIgKyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJf ZnVsbCBTRVQgYyA9IGMgKyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfZnVsbCBTRVQg YiA9IGIgKyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfaWR4IFNFVCB2ID0gdiArIDEg V0hFUkUgayA9IDE7CisJVVBEQVRFIHRhYl9pZHggU0VUIGsgPSAzIFdIRVJFIGsgPSAxOwor CVVQREFURSB0YWJfaWR4IFNFVCB3ID0gdyArIDEgV0hFUkUgayA9IDM7CisJVVBEQVRFIHRh Yl9pZHggU0VUIGsgPSAxIFdIRVJFIGsgPSAzOworCURFTEVURSBGUk9NIHRhYl9mdWxsIFdI RVJFIGEgPSAyOworCURFTEVURSBGUk9NIHRhYl9pZHggV0hFUkUgayA9IDI7Cit9KTsKKyRw dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCisjIFRoZSBzdWJzY3JpYmVy IG11c3QgbWF0Y2ggdGhlIHB1Ymxpc2hlciBleGFjdGx5OiB0aGUgUkkgbG9va3VwcyBmb3Vu ZCB0aGUKKyMgcmlnaHQgcm93cyBhY3Jvc3MgdGhlIEhPVC1pbmRleGVkIGNoYWlucyBhbmQg dGhlIEFCQSBjeWNsZS4KK215ICRwdWJfZnVsbCA9ICRwdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIGEsIGIsIGMgRlJPTSB0YWJfZnVsbCBPUkRFUiBCWSBh fSk7CitteSAkc3ViX2Z1bGwgPSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJcXtTRUxFQ1QgYSwgYiwgYyBGUk9NIHRhYl9mdWxsIE9SREVSIEJZIGF9KTsKK2lzKCRz dWJfZnVsbCwgJHB1Yl9mdWxsLCAnUkVQTElDQSBJREVOVElUWSBGVUxMOiBzdWJzY3JpYmVy IG1hdGNoZXMgcHVibGlzaGVyJyk7CisKK215ICRwdWJfaWR4ID0gJHB1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaywgdiwgdyBGUk9NIHRhYl9pZHggT1JE RVIgQlkga30pOworbXkgJHN1Yl9pZHggPSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJcXtTRUxFQ1QgaywgdiwgdyBGUk9NIHRhYl9pZHggT1JERVIgQlkga30pOwor aXMoJHN1Yl9pZHgsICRwdWJfaWR4LAorCSdSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVY OiBzdWJzY3JpYmVyIG1hdGNoZXMgcHVibGlzaGVyIGFjcm9zcyBBQkEnKTsKKworIyBUaGUg c3Vic2NyaWJlcidzIHRhYmxlcyBtdXN0IGJlIHN0cnVjdHVyYWxseSBjb25zaXN0ZW50IChz dHVicyByZWNvZ25pc2VkKS4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXtDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2t9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBh bSgndGFiX2lkeCcpfSksCisJJzAnLAorCSdzdWJzY3JpYmVyIHRhYl9pZHggaGFzIG5vIGhl YXAgY29ycnVwdGlvbiBhZnRlciBIT1QtaW5kZXhlZCBhcHBseScpOworCiskc3Vic2NyaWJl ci0+c3RvcDsKKyRwdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi41 MC4xCgo= --3202a723b9a5d4132622fc7eaaa1d2d143f90e53 Content-Disposition: attachment; filename*0="v50-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v50-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch?=" Content-Transfer-Encoding: base64 RnJvbSA5NzY2N2I1NDdhODFjNDNjMmI1MGEzOGZkYWQ5MmY2Y2FjMTNhMGQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCAxNSBKdW4gMjAyNiAxNDoyMjo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjUwIDkv OV0gW0RPIE5PVCBNRVJHRV0gQWRkIGEgSE9UL1NJVSBiZW5jaG1hcmsgaGFybmVzcwoKQS9C IGFuZCBzaW5nbGUtdmFyaWFudCBiZW5jaG1hcmsgc2NyaXB0cyBmb3IgSE9ULWluZGV4ZWQg dXBkYXRlczogYnVpbGQgdHdvCnBvc3RncmVzIHZhcmlhbnRzLCBydW4gcGdiZW5jaCB3b3Jr bG9hZHMgZXhlcmNpc2luZyBjbGFzc2ljLUhPVCwgbm9uLUhPVCwgYW5kCkhPVC1pbmRleGVk IHBhdGhzLCBhbmQgYSBzZWxmLWNvbnRhaW5lZCBibG9hdCBwcm9iZSB0aGF0IHJlcG9ydHMg dGhlIHNraXAgY291bnQKKGluZGV4IHdyaXRlcyBhdm9pZGVkIG9uIHVuY2hhbmdlZCBpbmRl eGVzKSBhbmQgY2hhbmdlZC1pbmRleCBib3VuZGluZy4gIE5vdApmb3IgbWVyZ2U7IGtlcHQg Zm9yIGV2YWx1YXRpbmcgdGhlIGZlYXR1cmUuCi0tLQogc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvUkVBRE1FLm1kICAgICAgICAgICAgIHwgIDgyICsrKysKIHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2ggICAgICB8ICA4NCArKysrCiBzcmMvdGVzdC9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoICAgICAgfCAgNTQgKysrCiAuLi4vc2l1L3Nj cmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsICAgICAgICAgfCAgMTEgKwogLi4uL3NpdS9z Y3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwgICAgICAgIHwgICA2ICsKIC4uLi9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbCB8ICAxMSArCiBzcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaCAgICAgICAgfCAzNzcgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2ggICAg ICAgfCAxMjggKysrKysrCiAuLi4vYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0 ZS5zcWwgICAgfCAgIDcgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NjAgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L1JFQURNRS5tZAog Y3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxv YXQuc2gKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3Jp cHRzL2J1aWxkLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3Jl YWRfaW5kZXhzY2FuLnNxbAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvcnVuLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3Rlc3QvYmVu Y2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9SRUFETUUubWQgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjlhNjJkMjY4YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvUkVBRE1FLm1kCkBAIC0wLDAgKzEsODIgQEAKKyMgaG90LWluZGV4ZWQgKEhPVC1p bmRleGVkKSBBL0IgYmVuY2htYXJrIGhhcm5lc3MKKworVHdvIHBvc3RncmVzIHZhcmlhbnRz LCBpZGVudGljYWwgcGdkYXRhIGxheW91dHMsIHBnYmVuY2ggd29ya2xvYWRzCitleGVyY2lz aW5nIGNsYXNzaWMgSE9ULCBub24tSE9ULCBhbmQgSE9ULWluZGV4ZWQgcGF0aHMuCisKKyMj IENvbnRlbnRzCisKKy0gYHNjcmlwdHMvYnVpbGQuc2hgIC0tIGJ1aWxkcyB0d28gcG9zdGdy ZXMgdmFyaWFudHMgKGBtYXN0ZXJgID0gdGVwaWQncworICBtZXJnZS1iYXNlIHdpdGggb3Jp Z2luL21hc3RlcjsgYHRlcGlkYCA9IHRoZSBicmFuY2ggdW5kZXIgdGVzdCkuICBSZXF1aXJl cworICBhIHdyaXRhYmxlIGJlbmNobWFyayByb290IHZpYSBgQkVOQ0hgIChkZWZhdWx0IGAv c2NyYXRjaC90ZXBpZC1iZW5jaGApLgorLSBgc2NyaXB0cy9ydW4uc2hgIC0tIEEvQiBkcml2 ZXIuICBSdW5zIGBzaW1wbGVfdXBkYXRlYCAocGdiZW5jaCAtTiksCisgIGBob3RfaW5kZXhl ZF91cGRhdGVgLCBgaG90X2luZGV4ZWRfbWl4ZWRgLCBgcmVhZF9pbmRleHNjYW5gLCBhbmQg YHdpZGVfTmAKKyAgZm9yIE4gaW4gYCRXSURFX1NURVBTYC4KKyAgQ29sbGVjdHMgVFBTLCBs YXRlbmN5LCBXQUwgYnl0ZXMsIEhPVCB1cGRhdGUgY291bnQsIHByZS9wb3N0IGhlYXAgYW5k CisgIGluZGV4IHNpemUsIHBlYWsgQ1BVJSBhbmQgUlNTLiAgV3JpdGVzIGEgQ1NWIHBlciBy dW4gdG8gYCRCRU5DSC9yZXN1bHRzL2AuCistIGBzY3JpcHRzL3NvYWsuc2hgIC0tIGxvbmct cnVubmluZyBzaW5nbGUtd29ya2xvYWQgZHJpdmVyIHRoYXQgc2FtcGxlcworICBUUFMvSE9U JS9XQUwvYmxvYXQgZXZlcnkgYCRTQU1QTEVgIHNlY29uZHMgdW5kZXIgYCREVVJBVElPTmAg c2Vjb25kcworICBvZiBjb25zdGFudCBwcmVzc3VyZSwgcGVyIHZhcmlhbnQuCistIGBzY3Jp cHRzL2Jsb2F0LnNoYCAtLSBzaW5nbGUtdmFyaWFudCBibG9hdCBwcm9iZS4gIFJ1bnMgdXBk YXRlK3ZhY3V1bSBjeWNsZXMKKyAgb24gYSB0YWJsZSB3aG9zZSBjaGFuZ2VkIGNvbHVtbiBh bmQgYW4gdW5jaGFuZ2VkIGNvbHVtbiBhcmUgYm90aCBpbmRleGVkLCBhbmQKKyAgcmVwb3J0 cyAodmlhIHBnc3RhdHR1cGxlKSB0aGF0IHRoZSBjaGFuZ2VkIGluZGV4IHN0YXlzIGJvdW5k ZWQgd2l0aCBwZXJpb2RpYworICBWQUNVVU0gYnV0IGdyb3dzIHVuYm91bmRlZCB3aXRob3V0 IGl0LCBwbHVzIHRoZSBza2lwIGNvdW50IHNob3dpbmcKKyAgSE9ULWluZGV4ZWQgdXBkYXRl cyBhdm9pZGluZyB0aGUgdW5jaGFuZ2VkIGluZGV4LiAgU3BpbnMgaXRzIG93biB0aHJvd2F3 YXkKKyAgY2x1c3Rlciwgc28gaXQgZG9lcyBub3QgdG91Y2ggdGhlIEEvQiBwZ2RhdGEuCist IGBzY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWxgIC0tIGBVUERBVEUgc2l1X3RhYmxl IFNFVCBiID0gcmFuZCBXSEVSRSBhID0gcmFuZGAuCistIGBzY3JpcHRzL2hvdF9pbmRleGVk X21peGVkLnNxbGAgIC0tIDgwICUgU0VMRUNUIGJ5IFBLICsgMjAgJSBpbmRleGVkLWNvbCBV UERBVEUuCistIGBzY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbGAgLS0gcmVhZC1vbmx5IGJ0 cmVlIGluZGV4IHNjYW5zIG9uIGEgZnJlc2hseQorICByZXNldCBgc2l1X3RhYmxlYCAobm8g c3RhbGUgZW50cmllcyk7IGNvbmZpcm1zIHRoZSBIT1QtaW5kZXhlZCByZWFkIHBhdGgKKyAg YWRkcyBubyBwZXItc2NhbiBvdmVyaGVhZCwgc2luY2UgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBkZWNpZGVzCisgIHN0YWxlbmVzcyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb24g YW5kIHRoZSBzY2FuIHJlcXVlc3RzIG5vIGluZGV4IHR1cGxlLgorLSBgc2NyaXB0cy93aWRl X3VwZGF0ZS5zcWxgIC0tIGRyaXZlciBzY3JpcHQgZm9yIHRoZSB3aWRlLXRhYmxlIHdvcmts b2FkOworICB0aGUgYFNFVGAgY2xhdXNlIGlzIGJ1aWx0IGF0IHJ1biB0aW1lIGZyb20gYCRX SURFX1NURVBTYC4KKworIyMgUnVubmluZworCitgYGAKKyMgQnVpbGQgYm90aCB2YXJpYW50 cyAocnVuIG9uY2UgcGVyIGJlbmNobWFyayBob3N0KQorUkVQTz0kSE9NRS93cy9wb3N0Z3Jl cy90ZXBpZCBCRU5DSD0vc2NyYXRjaC90ZXBpZC1iZW5jaCBcCisgIC4vc2NyaXB0cy9idWls ZC5zaAorCisjIFN0YW5kYXJkIEEvQgorU0NBTEU9MjAgQ0xJRU5UUz0xNiBUSFJFQURTPTgg RFVSQVRJT049MTIwIFwKKyAgV0lERV9DT0xTPTE2IFdJREVfU1RFUFM9MCwxLDIsNCw4LDE2 IFwKKyAgLi9zY3JpcHRzL3J1bi5zaAorCisjIFNvYWsKK1NDQUxFPTUwIENMSUVOVFM9MTYg VEhSRUFEUz04IERVUkFUSU9OPTkwMCBTQU1QTEU9NjAgXAorICAuL3NjcmlwdHMvc29hay5z aAorCisjIEJsb2F0IHByb2JlIChzaW5nbGUgdmFyaWFudDsgZGVmYXVsdHMgdG8gdGhlIHRl cGlkIGJ1aWxkKQorQkVOQ0g9L3NjcmF0Y2gvdGVwaWQtYmVuY2ggUk9XUz01MDAwIENZQ0xF Uz04IFVQREFURVM9MjAgXAorICAuL3NjcmlwdHMvYmxvYXQuc2gKK2BgYAorCisjIyBFbnYg dmFycworCitgYGAKK1JFUE8gICAgICAgICBwYXRoIHRvIHBvc3RncmVzIHNvdXJjZSAoaGFz IC5naXQpCitCRU5DSCAgICAgICAgYmVuY2ggcm9vdCAoaW5zdGFsbCBwcmVmaXhlcywgYnVp bGQgdHJlZXMsIHJlc3VsdHMpCitTQ0FMRSAgICAgICAgcGdiZW5jaCAtcyAoYWxzbyBkcml2 ZXMgc2l1X3RhYmxlIHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCitDTElFTlRTICAgICAgcGdi ZW5jaCAtYworVEhSRUFEUyAgICAgIHBnYmVuY2ggLWoKK0RVUkFUSU9OICAgICBzZWNvbmRz IHBlciB3b3JrbG9hZAorV0lERV9DT0xTICAgIG51bWJlciBvZiBpbmRleGVkIGludCBjb2x1 bW5zIGluIHdpZGVfdGFibGUgKGRlZmF1bHQgMTYpCitXSURFX1NURVBTICAgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgY29sdW1ucy1tb2RpZmllZCB2YWx1ZXMgdG8gZXhlcmNpc2UKKyAg ICAgICAgICAgICAoZGVmYXVsdCAwLDEsNCw4LDE2KQorUE9SVCAgICAgICAgIHBvc3RncmVz IHBvcnQgZm9yIHRoZSBiZW5jaCBzZXJ2ZXJzCitTSEFSRURfQlVGRkVSUyAgcG9zdGdyZXNx bC5jb25mIHNldHRpbmcgKGRlZmF1bHQgNTEyTUIpCitNQVNURVJfUkVWICAgcmV2aXNpb24g Zm9yIHRoZSBtYXN0ZXIgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQncyBtZXJnZS1iYXNlCisg ICAgICAgICAgICAgd2l0aCBvcmlnaW4vbWFzdGVyKQorVEVQSURfUkVWICAgIHJldmlzaW9u IGZvciB0aGUgdGVwaWQgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQpCisKK2Jsb2F0LnNoIG9u bHk6CitCSU5ESVIgICAgICAgcG9zdGdyZXMgYmluIGRpciB0byB0ZXN0IChkZWZhdWx0OiB0 ZXBpZCB2YXJpYW50IHVuZGVyICRCRU5DSCkKK1JPV1MgICAgICAgICBzZWVkZWQgcm93cyAo ZGVmYXVsdCA1MDAwKQorQ1lDTEVTICAgICAgIHVwZGF0ZSt2YWN1dW0gY3ljbGVzIChkZWZh dWx0IDgpCitVUERBVEVTICAgICAgdXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSAoZGVmYXVs dCAyMCkKK2BgYAorCitUaGUgc2NyaXB0cyBhcmUgcG9ydGFibGUgYmV0d2VlbiBMaW51eCBh bmQgRnJlZUJTRDsgdGhlIENQVS9SU1Mgc2FtcGxlcgordXNlcyBgcHMgLW8gcGNwdT0scnNz PSAtLXBwaWQgTEVBREVSIC1wIExFQURFUmAgKExpbnV4KSBvciBgcGdyZXAgLVBgICsKK3Bl ci1waWQgYHBzYCAoRnJlZUJTRCkgLS0gcGVhayB2YWx1ZXMgYXJlIGFwcHJveGltYXRlLgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaCBi L3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2gKbmV3IGZpbGUgbW9k ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjM0MTcxYzY4ZjViCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaApAQCAtMCww ICsxLDg0IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIFNpbmdsZS12YXJpYW50IGJsb2F0 IGJlbmNobWFyayBmb3IgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgVGhlIEEv QiBydW4uc2ggbWVhc3VyZXMgVFBTL1dBTC9hZ2dyZWdhdGUgc2l6ZTsgaXQgZG9lcyBub3Qg aXNvbGF0ZSB0d28KKyMgYmxvYXQgcHJvcGVydGllcyBvZiB0aGUgSE9ULWluZGV4ZWQgcGF0 aCwgd2hpY2ggdGhpcyBzY3JpcHQgZGVtb25zdHJhdGVzOgorIworIyAgIDEuIFN0YWxlIGlu ZGV4IGVudHJpZXMgb24gdGhlIENIQU5HRUQgaW5kZXggYWNjdW11bGF0ZSBiZXR3ZWVuIHZh Y3V1bXMsCisjICAgICAgYnV0IFZBQ1VVTSByZWNsYWltcyB0aGVtLCBzbyBzaXplIHN0YXlz IGJvdW5kZWQgYWNyb3NzIHVwZGF0ZSt2YWN1dW0KKyMgICAgICBjeWNsZXMuICBTa2lwcGlu ZyB2YWN1dW0gbGV0cyB0aGVtIGdyb3cgdW5ib3VuZGVkICh0aGUgaW5oZXJlbnQKKyMgICAg ICBpbnRlci12YWN1dW0gYmxvYXQ7IHJlYWQtZmlsdGVyZWQgYnkgdGhlIGNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCBtZWFud2hpbGUpLgorIyAgIDIuIEFuIGluZGV4IG9uIGFuIFVOQ0hB TkdFRCBjb2x1bW4gaXMgc2tpcHBlZCBieSBIT1QtaW5kZXhlZCB1cGRhdGVzICh0aGUKKyMg ICAgICBzZWxlY3RpdmUtdXBkYXRlIGJlbmVmaXQpIC0tIHZpc2libGUgYXMgYSBza2lwIGNv dW50LiAgVXBkYXRlcyB0aGF0IGZhbGwKKyMgICAgICBiYWNrIHRvIG5vbi1IT1QgKGUuZy4g d2hlbiB0aGUgcGFnZSBoYXMgbm8gcm9vbSBmb3IgdGhlIGNoYWluKSBzdGlsbAorIyAgICAg IGluc2VydCBpbnRvIGl0LCBzbyBpdHMgc2l6ZSByZWZsZWN0cyBvbmx5IHRoZSBub24tSE9U IHJlbWFpbmRlci4KKyMKKyMgVXNlcyB0aGUgdGVwaWQgdmFyaWFudCBidWlsdCBieSBidWls ZC5zaCAob3ZlcnJpZGUgQklORElSIGZvciBhbnkgYnVpbGQpIGFuZAorIyBhIHRocm93YXdh eSBjbHVzdGVyIHVuZGVyICRCRU5DSCwgc28gaXQgbmV2ZXIgdG91Y2hlcyB0aGUgQS9CIHBn ZGF0YS4KKyMKKyMgRW52OiBCRU5DSCAoZGVmYXVsdCAvc2NyYXRjaC9zaXUtYmVuY2gpLCBC SU5ESVIgKGRlZmF1bHQgdGVwaWQgdmFyaWFudCBiaW4pLAorIyAgICAgIFBPUlQgKGRlZmF1 bHQgNTc0ODEpLCBST1dTIChkZWZhdWx0IDUwMDApLCBDWUNMRVMgKGRlZmF1bHQgOCksCisj ICAgICAgVVBEQVRFUyAodXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSwgZGVmYXVsdCAyMCku CitzZXQgLWV1byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVu Y2h9CitCSU5ESVI9JHtCSU5ESVI6LSRCRU5DSC90ZXBpZC91c3IvbG9jYWwvcGdzcWwvYmlu fQorUE9SVD0ke1BPUlQ6LTU3NDgxfQorUk9XUz0ke1JPV1M6LTUwMDB9CitDWUNMRVM9JHtD WUNMRVM6LTh9CitVUERBVEVTPSR7VVBEQVRFUzotMjB9CitEQVRBRElSPSRCRU5DSC9fZGF0 YV9ibG9hdAorCitiYXNlPSQoZGlybmFtZSAiJEJJTkRJUiIpCitpZiBbIC1kICIkYmFzZS9s aWI2NCIgXTsgdGhlbgorICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkYmFzZS9saWI2NCR7 TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJBUllfUEFUSH0iCitlbHNlCisgIGV4cG9ydCBM RF9MSUJSQVJZX1BBVEg9IiRiYXNlL2xpYiR7TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJB UllfUEFUSH0iCitmaQorCitQU1FMPSgiJEJJTkRJUi9wc3FsIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgLVggLXEpCitQKCkgeyAiJHtQU1FMW0BdfSIgLUF0ICIkQCI7IH0K KworIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3AgLW0gZmFzdCA+L2Rldi9u dWxsIDI+JjEgfHwgdHJ1ZQorcm0gLXJmICIkREFUQURJUiIKKyIkQklORElSL2luaXRkYiIg LUQgIiREQVRBRElSIiAtVSBwb3N0Z3JlcyAtLW5vLXN5bmMgPi9kZXYvbnVsbAorY2F0ID4+ ICIkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYiIDw8RU9GCitwb3J0ID0gJFBPUlQKK2F1dG92 YWN1dW0gPSBvZmYKK2ZzeW5jID0gb2ZmCitFT0YKKyIkQklORElSL3BnX2N0bCIgLUQgIiRE QVRBRElSIiAtbyAiLXAgJFBPUlQiIC1sICIkQkVOQ0gvX2Jsb2F0LmxvZyIgLXcgc3RhcnQg Pi9kZXYvbnVsbAordHJhcCAnIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3Ag LW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZScgRVhJVAorIiR7UFNRTFtAXX0iIC1j ICJDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGdzdGF0dHVwbGU7IiA+L2Rldi9u dWxsCisKKyMgJDEgPSB0YWJsZSBuYW1lLCAkMiA9IHZhY3V1bV9lYWNoICgxLzApLiAgUmV0 dXJucyBmaW5hbCBpZHhfYSBjb21wb3NpdGlvbi4KK3J1bl9hcm0oKSB7CisgIGxvY2FsIHRi bD0kMSB2YWM9JDIKKyAgIiR7UFNRTFtAXX0iIDw8U1FMID4vZGV2L251bGwKK0RST1AgVEFC TEUgSUYgRVhJU1RTICR0Ymw7CitDUkVBVEUgVEFCTEUgJHRibCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYICR7dGJsfV9hIE9OICR0YmwoYSk7ICAgLS0gY2hhbmdlZCBjb2x1bW4K K0NSRUFURSBJTkRFWCAke3RibH1fYiBPTiAkdGJsKGIpOyAgIC0tIG5ldmVyIGNoYW5nZWQK K0lOU0VSVCBJTlRPICR0YmwgU0VMRUNUIGcsIGcsIGcsIHJlcGVhdCgneCcsIDQwKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAkUk9XUykgZzsKK1ZBQ1VVTSAoRlJFRVpFLCBBTkFMWVpF KSAkdGJsOworU1FMCisgIGxvY2FsIGN5YworICBmb3IgKChjeWMgPSAxOyBjeWMgPD0gQ1lD TEVTOyBjeWMrKykpOyBkbworICAgICIke1BTUUxbQF19IiAtYyAiRE8gXCRcJCBCRUdJTiBG T1IgdSBJTiAxLi4kVVBEQVRFUyBMT09QIFVQREFURSAkdGJsIFNFVCBhID0gYSArIDE7IEVO RCBMT09QOyBFTkQgXCRcJDsiID4vZGV2L251bGwKKyAgICBbICIkdmFjIiA9IDEgXSAmJiAi JHtQU1FMW0BdfSIgLWMgIlZBQ1VVTSAkdGJsOyIgPi9kZXYvbnVsbAorICBkb25lCisgIFAg LWMgIlNFTEVDVCAnJHRibCh2YWN1dW1fZWFjaD0kdmFjKTonCisgICAgICAgIHx8ICcgaWR4 X2Ffa2I9JyB8fCBwZ19yZWxhdGlvbl9zaXplKCcke3RibH1fYScpLzEwMjQKKyAgICAgICAg fHwgJyBpZHhfYV9saXZlPScgfHwgKFNFTEVDVCB0dXBsZV9jb3VudCBGUk9NIHBnc3RhdHR1 cGxlKCcke3RibH1fYScpKQorICAgICAgICB8fCAnIGlkeF9hX2ZyZWUlPScgfHwgcm91bmQo KFNFTEVDVCBmcmVlX3BlcmNlbnQgRlJPTSBwZ3N0YXR0dXBsZSgnJHt0Ymx9X2EnKSk6Om51 bWVyaWMsMSkKKyAgICAgICAgfHwgJyBpZHhfYl9rYj0nIHx8IHBnX3JlbGF0aW9uX3NpemUo JyR7dGJsfV9iJykvMTAyNAorICAgICAgICB8fCAnIGlkeF9iX3NraXBzPScgfHwgY29hbGVz Y2UoKFNFTEVDVCBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcyBX SEVSRSBpbmRleHJlbG5hbWU9JyR7dGJsfV9iJyksIDApOyIKK30KKworZWNobyAiPT09IEhP VC1pbmRleGVkIGJsb2F0OiAkQ1lDTEVTIGN5Y2xlcyB4ICgkVVBEQVRFUyB1cGRhdGVzL3Jv dyB4ICRST1dTIHJvd3MpID09PSIKK3J1bl9hcm0gdF92YWMgMQorcnVuX2FybSB0X25vdmFj IDAKK2VjaG8gImlkeF9hOiBib3VuZGVkIHdpdGggdmFjdXVtX2VhY2g9MSwgdW5ib3VuZGVk IHdpdGggPTAgKHN0YWxlIGVudHJpZXMgYWNjdW11bGF0ZSIKK2VjaG8gInVudGlsIHJlY2xh aW1lZCkuICBpZHhfYl9za2lwcyBjb3VudHMgZW50cmllcyB0aGUgSE9ULWluZGV4ZWQgcGF0 aCBhdm9pZGVkIG9uIgorZWNobyAidGhlIHVuY2hhbmdlZCBpbmRleDsgaWR4X2Jfa2IgaXMg b25seSB0aGUgbm9uLUhPVC1mYWxsYmFjayByZW1haW5kZXIuIgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaCBiL3NyYy90ZXN0L2JlbmNo bWFya3Mvc2l1L3NjcmlwdHMvYnVpbGQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg MDAwMDAwMDAwMDAuLmIyZjBlZTUyNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv YmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaApAQCAtMCwwICsxLDU0IEBACisjIS91 c3IvYmluL2VudiBiYXNoCisjIEJ1aWxkIHR3byBwb3N0Z3JlcyB2YXJpYW50cyBmb3IgdGVw aWQgKEhPVC1pbmRleGVkKSBBL0IgYmVuY2htYXJrcy4KKyMKKyMgRW52IHZhcnMgKGFsbCBv cHRpb25hbCk6CisjICAgUkVQTyAgICAgICAgICAtLSBwYXRoIHRvIHBvc3RncmVzIHNvdXJj ZSByZXBvIChkZWZhdWx0OiAkSE9NRS93cy9wb3N0Z3Jlcy90ZXBpZCwgb3IgL3NjcmF0Y2gv c2l1LWJlbmNoL3JlcG8pCisjICAgQkVOQ0ggICAgICAgICAtLSBiZW5jaCByb290IChkZWZh dWx0OiAvc2NyYXRjaC9zaXUtYmVuY2gpCisjICAgTUFTVEVSX1JFViAgICAtLSByZXZpc2lv biBmb3IgdGhlICJtYXN0ZXIiIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkJ3MgbWVyZ2UtYmFz ZSB3aXRoIG9yaWdpbi9tYXN0ZXIpCisjICAgVEVQSURfUkVWICAgICAtLSByZXZpc2lvbiBm b3IgdGhlICJ0ZXBpZCIgIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkKQorIyAgIEpPQlMgICAg ICAgICAgLS0gcGFyYWxsZWwgY29tcGlsZSBqb2JzIChkZWZhdWx0OiBucHJvYyBvciA4KQor c2V0IC1ldW8gcGlwZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNo fQorSk9CUz0ke0pPQlM6LSQoIChjb21tYW5kIC12IG5wcm9jID4vZGV2L251bGwgJiYgbnBy b2MpIHx8IHN5c2N0bCAtbiBody5uY3B1IDI+L2Rldi9udWxsIHx8IGVjaG8gOCApfQoraWYg WyAteiAiJHtSRVBPOi19IiBdOyB0aGVuCisgIGZvciBjYW5kaWRhdGUgaW4gIiRIT01FL3dz L3Bvc3RncmVzL3RlcGlkIiAiJEJFTkNIL3JlcG8iIC9zY3JhdGNoL3BnOyBkbworICAgIGlm IFsgLWQgIiRjYW5kaWRhdGUvLmdpdCIgXTsgdGhlbiBSRVBPPSRjYW5kaWRhdGU7IGJyZWFr OyBmaQorICBkb25lCitmaQorOiAiJHtSRVBPOj9SRVBPIG5vdCBzZXQgYW5kIG5vIGRlZmF1 bHQgZm91bmR9IgorY2QgIiRSRVBPIgorCitURVBJRF9SRVY9JHtURVBJRF9SRVY6LXRlcGlk fQorTUFTVEVSX1JFVj0ke01BU1RFUl9SRVY6LSQoZ2l0IG1lcmdlLWJhc2UgIiRURVBJRF9S RVYiIG9yaWdpbi9tYXN0ZXIgMj4vZGV2L251bGwgfHwgZ2l0IG1lcmdlLWJhc2UgIiRURVBJ RF9SRVYiIG1hc3Rlcil9CisKK2VjaG8gIlJFUE89JFJFUE8gIE1BU1RFUj0kTUFTVEVSX1JF ViAgVEVQSUQ9JFRFUElEX1JFViAgSk9CUz0kSk9CUyAgQkVOQ0g9JEJFTkNIIgorCitkaWUo KSB7IHByaW50ZiAnYnVpbGQ6ICVzXG4nICIkKiIgPiYyOyBleGl0IDE7IH0KK2lmIGdpdCBz dGF0dXMgLS1wb3JjZWxhaW4gfCBncmVwIC12ICdePz8nIHwgZ3JlcCAtcSAuOyB0aGVuCisg IGRpZSAicmVwbyBoYXMgdW5zdGFnZWQvdW5jb21taXR0ZWQgY2hhbmdlczsgc3Rhc2ggb3Ig Y29tbWl0IGZpcnN0IgorZmkKKworYnVpbGRfdmFyaWFudCgpIHsKKyAgbG9jYWwgbmFtZT0k MQorICBsb2NhbCByZXY9JDIKKyAgbG9jYWwgcHJlZml4PSRCRU5DSC8kbmFtZQorICBlY2hv ICI9PT0gYnVpbGRpbmcgJG5hbWUgKCRyZXYpIGludG8gJHByZWZpeCIKKyAgWyAtZCAiJHBy ZWZpeCIgXSAmJiBmaW5kICIkcHJlZml4IiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGly ICIkcHJlZml4IgorICBta2RpciAtcCAiJHByZWZpeCIKKyAgZ2l0IGNoZWNrb3V0IC0tcXVp ZXQgLS1kZXRhY2ggIiRyZXYiCisgIGxvY2FsIGJsZD0kQkVOQ0gvX2J1aWxkXyRuYW1lCisg IFsgLWQgIiRibGQiIF0gJiYgZmluZCAiJGJsZCIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBy bWRpciAiJGJsZCIKKyAgbWVzb24gc2V0dXAgIiRibGQiIC0tcHJlZml4PSIkcHJlZml4L3Vz ci9sb2NhbC9wZ3NxbCIgXAorICAgIC1EYnVpbGR0eXBlPXJlbGVhc2UgLURjYXNzZXJ0PWZh bHNlIFwKKyAgICAtRGV4dHJhX3ZlcnNpb249LXNpdWJlbmNoLSRuYW1lID4vZGV2L251bGwK KyAgbWVzb24gY29tcGlsZSAtQyAiJGJsZCIgLWogIiRKT0JTIgorICBtZXNvbiBpbnN0YWxs IC1DICIkYmxkIiAtLWRlc3RkaXI9LyA+L2Rldi9udWxsCisgICIkcHJlZml4L3Vzci9sb2Nh bC9wZ3NxbC9iaW4vcG9zdGdyZXMiIC0tdmVyc2lvbgorfQorCitPUklHPSQoZ2l0IHN5bWJv bGljLXJlZiAtLXF1aWV0IC0tc2hvcnQgSEVBRCB8fCBnaXQgcmV2LXBhcnNlIEhFQUQpCit0 cmFwICdnaXQgY2hlY2tvdXQgLS1xdWlldCAiJE9SSUciJyBFWElUCisKK2J1aWxkX3Zhcmlh bnQgbWFzdGVyICIkTUFTVEVSX1JFViIKK2J1aWxkX3ZhcmlhbnQgdGVwaWQgICIkVEVQSURf UkVWIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ob3Rf aW5kZXhlZF9taXhlZC5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hv dF9pbmRleGVkX21peGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uM2FiMzI4OWRmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbApAQCAtMCwwICsxLDExIEBA CistLSBNaXhlZCB3b3JrbG9hZDogODAlIHNlbGVjdHMsIDIwJSBpbmRleGVkLWNvbHVtbiB1 cGRhdGVzLgorLS0gRXhlcmNpc2VzIGJvdGggdGhlIGhvdC1pbmRleGVkIHdyaXRlciBhbmQg dGhlIGNyb3NzZWQtYXR0cmlidXRlLWJpdG1hcCByZWFkZXIuCitcc2V0IGFpZCByYW5kb20o MSwgOnNjYWxlICogMTAwMDAwKQorXHNldCBiaWQgcmFuZG9tKDEsIDEwMDAwMDApCitcc2V0 IHdoaWNoIHJhbmRvbSgxLCAxMDApCitCRUdJTjsKK1NFTEVDVCAqIEZST00gc2l1X3RhYmxl IFdIRVJFIGEgPSA6YWlkOworXGlmIDp3aGljaCA+IDgwCisgIFVQREFURSBzaXVfdGFibGUg U0VUIGIgPSA6YmlkIFdIRVJFIGEgPSA6YWlkOworXGVuZGlmCitDT01NSVQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0 ZS5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3Vw ZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYxYmNm OTU5YzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2Ny aXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNiBAQAorLS0gaG90LWlu ZGV4ZWQtZnJpZW5kbHkgd29ya2xvYWQ6IG5hcnJvdyB0YWJsZSB3aXRoIGEgZmV3IG5vbi1Q SyBpbmRleGVzLgorLS0gRWFjaCBVUERBVEUgY2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBp bmRleGVkIGNvbHVtbiBvbiBhIHJhbmRvbSByb3cuCistLSBXaXRoIGhvdC1pbmRleGVkIHRo aXMgaXMgSE9ULWluZGV4ZWQ7IHdpdGhvdXQgaG90LWluZGV4ZWQgaXQgaXMgbm9uLUhPVC4K K1xzZXQgYWlkIHJhbmRvbSgxLCA6c2NhbGUgKiAxMDAwMDApCitcc2V0IG5ld19iIHJhbmRv bSgxLCAxMDAwMDAwKQorVVBEQVRFIHNpdV90YWJsZSBTRVQgYiA9IDpuZXdfYiBXSEVSRSBh ID0gOmFpZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMv cmVhZF9pbmRleHNjYW4uc3FsIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9y ZWFkX2luZGV4c2Nhbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQ2NTY4OTc2M2VhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5zcWwKQEAgLTAsMCArMSwxMSBAQAorLS0g cmVhZF9pbmRleHNjYW46IHJlYWQtb25seSBidHJlZSBpbmRleC1zY2FuIHdvcmtsb2FkIGNv bmZpcm1pbmcgdGhlCistLSBIT1QtaW5kZXhlZCByZWFkIHBhdGggYWRkcyBubyBwZXItc2Nh biBvdmVyaGVhZCBvbiB0YWJsZXMgd2l0aCBubyBzdGFsZQorLS0gZW50cmllcy4KKy0tIFRo ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZGVjaWRlcyBzdGFsZW5lc3Mgd2l0aG91dCBh IGtleSBjb21wYXJpc29uIGFuZAorLS0gdGhlIHNjYW4gZG9lcyBub3QgcmVxdWVzdCB0aGUg aW5kZXggdHVwbGUsIHNvIG9uIGEgZnJlc2hseSByZXNldCBzaXVfdGFibGUKKy0tIChubyBz dGFsZSBIT1QtaW5kZXhlZCBlbnRyaWVzKSB0aGVyZSBzaG91bGQgYmUgbm8gbWFzdGVyLXZz LXRlcGlkCistLSBkaWZmZXJlbmNlIG9uIHRoaXMgY2VsbC4gIFRoZSBwcmVkaWNhdGUgaXMg YW4gZXF1YWxpdHkgb24gdGhlCistLSBpbmRleGVkIGNvbHVtbiBiIGFuZCB0aGUgdGFyZ2V0 IGxpc3QgaW5jbHVkZXMgdGhlIG5vbi1pbmRleGVkIGNvbHVtbiBlLAorLS0gZm9yY2luZyBh IHBsYWluIChoZWFwLWZldGNoaW5nKSBpbmRleCBzY2FuIHJhdGhlciB0aGFuIGFuIGluZGV4 LW9ubHkgc2Nhbi4KK1xzZXQgaWQgcmFuZG9tKDEsIDpyb3dzKQorU0VMRUNUIGEsIGIsIGMs IGQsIGUgRlJPTSBzaXVfdGFibGUgV0hFUkUgYiA9IDppZDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvcnVuLnNoIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9ydW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw MDAwMDAuLmZhMzMwYWQ0ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9ydW4uc2gKQEAgLTAsMCArMSwzNzcgQEAKKyMhL3Vzci9iaW4v ZW52IGJhc2gKKyMgQS9CIHBnYmVuY2ggaGFybmVzcyBmb3IgdGVwaWQ6IG1hc3RlciAodXBz dHJlYW0pIHZzIHRlcGlkIChIT1QtaW5kZXhlZCkuCisjCisjIEVudiB2YXJzOgorIyAgIFND QUxFICAgICAgIC0tIHBnYmVuY2ggLXMgKGFsc28gbXVsdGlwbGllciBmb3Igc2l1X3RhYmxl IHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCisjICAgQ0xJRU5UUyAgICAgLS0gcGdiZW5jaCAt YworIyAgIFRIUkVBRFMgICAgIC0tIHBnYmVuY2ggLWoKKyMgICBEVVJBVElPTiAgICAtLSBw Z2JlbmNoIC1UIChzZWNvbmRzIHBlciB3b3JrbG9hZCkKKyMgICBXSURFX0NPTFMgICAtLSAj IG9mIGluZGV4ZWQgY29sdW1ucyBpbiB0aGUgd2lkZV90YWJsZSAoZGVmYXVsdCAxNikKKyMg ICBXSURFX1NURVBTICAtLSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAidXBkYXRlZCBjb2x1 bW5zIiBjb3VudHMgZm9yCisjICAgICAgICAgICAgICAgICB0aGUgd2lkZSB3b3JrbG9hZCAo ZGVmYXVsdCAiMCwxLDQsOCxXSURFX0NPTFMiKQorIyAgIFBPUlQgICAgICAgIC0tIHBvc3Rn cmVzIHBvcnQgKGRlZmF1bHQgNTc0ODApCisjCisjIEZvciBlYWNoIHZhcmlhbnQgaW4ge21h c3RlciwgdGVwaWR9OgorIyAgIGluaXRkYiBmcmVzaCBwZ2RhdGEsIHN0YXJ0IHBvc3RncmVz LCBjcmVhdGUgdGVzdCBvYmplY3RzLAorIyAgIHJ1biB3b3JrbG9hZHMgKHBnYmVuY2ggLU4g c2ltcGxlX3VwZGF0ZSwgaG90X2luZGV4ZWRfdXBkYXRlLCBob3RfaW5kZXhlZF9taXhlZCwK KyMgICByZWFkX2luZGV4c2NhbiwgYW5kIHdpZGVfTiBmb3IgZWFjaCB2YWx1ZSBpbiBXSURF X1NURVBTKSwgY29sbGVjdCBUUFMgKyBIT1QKKyMgICBjb3VudHMgKyBXQUwgZGVsdGEgKyBw ZWFrIENQVS9SU1Mgc2FtcGxlZCB2aWEgcGlkc3RhdC4KKyMgRW1pdHMgQ1NWICsgTWFya2Rv d24gc3VtbWFyeSB1bmRlciAvc2NyYXRjaC9zaXUtYmVuY2gvcmVzdWx0cy8uCitzZXQgLWV1 byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVuY2h9CitTQ0FM RT0ke1NDQUxFOi0yMH0KK0NMSUVOVFM9JHtDTElFTlRTOi0xNn0KK1RIUkVBRFM9JHtUSFJF QURTOi04fQorRFVSQVRJT049JHtEVVJBVElPTjotMTIwfQorV0lERV9DT0xTPSR7V0lERV9D T0xTOi0xNn0KK1dJREVfU1RFUFM9JHtXSURFX1NURVBTOi0wLDEsNCw4LDE2fQorUE9SVD0k e1BPUlQ6LTU3NDgwfQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VUPSRC RU5DSC9yZXN1bHRzLyRUUy5jc3YKK0xPR0RJUj0kQkVOQ0gvbG9ncy8kVFMKK21rZGlyIC1w ICIkTE9HRElSIgorZWNobyAidmFyaWFudCx3b3JrbG9hZCx0cHMsbGF0ZW5jeV9hdmdfbXMs Y2xhc3NpY19ob3RfdXBkYXRlcyxob3RfaW5kZXhlZF91cGRhdGVzLG5vbl9ob3RfdXBkYXRl cyx0b3RhbF91cGRhdGVzLHdhbF9ieXRlcyxibG9hdF9wYWdlc19iZWZvcmUsYmxvYXRfcGFn ZXNfYWZ0ZXIsaW5kZXhfc2l6ZV9iZWZvcmUsaW5kZXhfc2l6ZV9hZnRlcixjcHVfcGN0X3Bl YWsscnNzX21pYl9wZWFrLHBlcl9pbmRleF9iZWZvcmUscGVyX2luZGV4X2FmdGVyIiA+ICIk T1VUIgorZWNobyAiPT09IHNpdS1iZW5jaCBBL0IgcnVuICRUUyAtPiAkT1VUIChzY2FsZT0k U0NBTEUgY2xpZW50cz0kQ0xJRU5UUyB0aHJlYWRzPSRUSFJFQURTIGR1cmF0aW9uPSR7RFVS QVRJT059cykiCisKK2Jpbl9vZigpIHsKKyAgZWNobyAiJEJFTkNILyQxL3Vzci9sb2NhbC9w Z3NxbC9iaW4iCit9CisKK0xEX29mKCkgeworICBsb2NhbCBiYXNlPSRCRU5DSC8kMS91c3Iv bG9jYWwvcGdzcWwKKyAgIyBMaW51eCBkaXN0cm9zIHRoYXQgc3BsaXQgNjQtYml0IGxpYnMg dXNlIGxpYjY0OyBtb3N0IG90aGVycyB1c2UgbGliLgorICBpZiBbIC1kICIkYmFzZS9saWI2 NCIgXTsgdGhlbgorICAgIGVjaG8gIiRiYXNlL2xpYjY0IgorICBlbHNlCisgICAgZWNobyAi JGJhc2UvbGliIgorICBmaQorfQorCitwc3FsX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlm dAorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9w c3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIgorfQorCitwZ2Jl bmNoX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlmdAorICBMRF9MSUJSQVJZX1BBVEg9IiQo TERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgIiRAIgorfQorCitzdGFydF9wZygpIHsKKyAgbG9jYWwgdj0kMQor ICBsb2NhbCBkYXRhZGlyPSRCRU5DSC9fZGF0YV8kdgorICBbIC1kICIkZGF0YWRpciIgXSAm JiBmaW5kICIkZGF0YWRpciIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBybWRpciAiJGRhdGFk aXIiCisgIG1rZGlyIC1wICIkZGF0YWRpciIKKworICBMRF9MSUJSQVJZX1BBVEg9IiQoTERf b2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9z dGdyZXMgPiIkTE9HRElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgbG9jYWwgc2I9JHtTSEFS RURfQlVGRkVSUzotNTEyTUJ9CisgIGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNxbC5jb25m IiA8PEVPRgorc2hhcmVkX2J1ZmZlcnMgPSAkc2IKK3dvcmtfbWVtID0gMzJNQgorbWF4X3dh bF9zaXplID0gNEdCCitzeW5jaHJvbm91c19jb21taXQgPSBvbgorY2hlY2twb2ludF90aW1l b3V0ID0gMTBtaW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2xvZ19kZXN0aW5hdGlvbiA9ICdz dGRlcnInCitsb2dnaW5nX2NvbGxlY3RvciA9IG9mZgorcG9ydCA9ICRQT1JUCitFT0YKKyAg TERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3Rs IiAtRCAiJGRhdGFkaXIiIFwKKyAgICAtbyAiLXAgJFBPUlQiIC1sICIkTE9HRElSL3BnXyR2 LmxvZyIgc3RhcnQgPi9kZXYvbnVsbAorICBzbGVlcCAyCit9CisKK3N0b3BfcGcoKSB7Cisg IGxvY2FsIHY9JDEKKyAgbG9jYWwgZGF0YWRpcj0kQkVOQ0gvX2RhdGFfJHYKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3RsIiAtRCAi JGRhdGFkaXIiIHN0b3AgLW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorfQorCitw b3N0bWFzdGVyX3BpZCgpIHsKKyAgbG9jYWwgdj0kMQorICBoZWFkIC0xICIkQkVOQ0gvX2Rh dGFfJHYvcG9zdG1hc3Rlci5waWQiIDI+L2Rldi9udWxsCit9CisKK3NldHVwX3NjaGVtYXMo KSB7CisgIGxvY2FsIHY9JDEKKyAgc2VlZF9zaXVfdGFibGUgIiR2IgorICBzZWVkX3dpZGVf dGFibGUgIiR2IgorICAjIHBnYmVuY2ggc2NoZW1hIGZvciBidWlsdC1pbiBzaW1wbGVfdXBk YXRlLgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYi KS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgXAorICAgIC1pIC1z ICIkU0NBTEUiIC1xIHBvc3RncmVzID4iJExPR0RJUi9wZ2JlbmNoX2luaXRfJHYubG9nIiAy PiYxCit9CisKKyMgc2VlZF9zaXVfdGFibGU6IChyZSljcmVhdGUgdGhlIG5hcnJvdyB0YWJs ZSB1c2VkIGJ5IHRoZSBzaXVfKiB3b3JrbG9hZHMuCitzZWVkX3NpdV90YWJsZSgpIHsKKyAg bG9jYWwgdj0kMQorICBsb2NhbCByb3dzPSQoKFNDQUxFICogMTAwMDAwKSkKKyAgcHNxbF9h cyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElGIEVYSVNUUyBzaXVfdGFibGU7CitDUkVBVEUg VEFCTEUgc2l1X3RhYmxlKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQsIGQgaW50 LCBlIHRleHQpOworQ1JFQVRFIElOREVYIHNpdV9iIE9OIHNpdV90YWJsZShiKTsKK0NSRUFU RSBJTkRFWCBzaXVfYyBPTiBzaXVfdGFibGUoYyk7CitDUkVBVEUgSU5ERVggc2l1X2QgT04g c2l1X3RhYmxlKGQpOworSU5TRVJUIElOVE8gc2l1X3RhYmxlCisgIFNFTEVDVCBpLCBpLCBp LCBpLCByZXBlYXQoJ3gnLCAyMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHJvd3MpIEFT IGk7CitWQUNVVU0gKEZVTEwsIEFOQUxZWkUpIHNpdV90YWJsZTsKK0NIRUNLUE9JTlQ7CitT UUwKK30KKworIyBzZWVkX3dpZGVfdGFibGU6IChyZSljcmVhdGUgdGhlIHdpZGUgdGFibGUg d2l0aCBXSURFX0NPTFMgaW5kZXhlZCBjb2x1bW5zLgorc2VlZF93aWRlX3RhYmxlKCkgewor ICBsb2NhbCB2PSQxCisgIGxvY2FsIGNvbGRlZnM9IiIgaW5zZXJ0Y29scz0iIiBpbnNlcnR2 YWxzPSIiIGlkeGxpc3Q9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJFdJREVfQ09MUyIpOyBk bworICAgIGNvbGRlZnMrPSIsIGMkaSBpbnQiCisgICAgaW5zZXJ0Y29scys9IiwgYyRpIgor ICAgIGluc2VydHZhbHMrPSIsIGkiCisgICAgaWR4bGlzdCs9IkNSRUFURSBJTkRFWCB3aWRl X2MkaSBPTiB3aWRlX3RhYmxlKGMkaSk7ICIKKyAgZG9uZQorICBsb2NhbCB3aWRlX3Jvd3M9 JCgoU0NBTEUgKiAxMDAwKSkKKyAgcHNxbF9hcyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElG IEVYSVNUUyB3aWRlX3RhYmxlOworQ1JFQVRFIFRBQkxFIHdpZGVfdGFibGUoaWQgaW50IFBS SU1BUlkgS0VZICRjb2xkZWZzKTsKKyRpZHhsaXN0CitJTlNFUlQgSU5UTyB3aWRlX3RhYmxl KGlkICRpbnNlcnRjb2xzKSBTRUxFQ1QgaSAkaW5zZXJ0dmFscyBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAkd2lkZV9yb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpFKSB3aWRl X3RhYmxlOworQ0hFQ0tQT0lOVDsKK1NRTAorfQorCisjIHJlc2V0X3N0YXRlOiByZXN0b3Jl IGEgd29ya2xvYWQncyB0YXJnZXQgdGFibGUgdG8gaXRzIHNlZWRlZCBiYXNlbGluZS4KKyMg VXNlZCBiZXR3ZWVuIHdvcmtsb2FkcyBzbyBwZXItd29ya2xvYWQgYmxvYXQvaWR4X3NpemUg ZGVsdGFzIGFyZSBub3QKKyMgcG9sbHV0ZWQgYnkgY2FycnlvdmVyIGZyb20gZWFybGllciB3 b3JrbG9hZHMgaW4gdGhlIHNhbWUgdmFyaWFudCBydW4uCisjIEZvciBwZ2JlbmNoX2FjY291 bnRzIHdlIHJlLWluaXRpYWxpc2UgdmlhIGBwZ2JlbmNoIC1pYDsgZm9yIG91cgorIyBoYW5k LXJvbGxlZCB0YWJsZXMgd2UgZHJvcCArIHJlY3JlYXRlICsgcmVzZWVkLgorcmVzZXRfc3Rh dGUoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAgY2FzZSAiJHRhYmxlIiBpbgorICAg IHBnYmVuY2hfYWNjb3VudHMpCisgICAgICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2 IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9z dGdyZXMgXAorICAgICAgICAtaSAtcyAiJFNDQUxFIiAtcSBwb3N0Z3JlcyA+PiIkTE9HRElS L3BnYmVuY2hfaW5pdF8kdi5sb2ciIDI+JjEKKyAgICAgIHBzcWxfYXMgIiR2IiAtYyAiQ0hF Q0tQT0lOVCIgPi9kZXYvbnVsbAorICAgICAgOzsKKyAgICBzaXVfdGFibGUpCisgICAgICBz ZWVkX3NpdV90YWJsZSAiJHYiCisgICAgICA7OworICAgIHdpZGVfdGFibGUpCisgICAgICBz ZWVkX3dpZGVfdGFibGUgIiR2IgorICAgICAgOzsKKyAgICAqKQorICAgICAgZWNobyAicmVz ZXRfc3RhdGU6IHVua25vd24gdGFibGUgJHRhYmxlIiA+JjIKKyAgICAgIHJldHVybiAxCisg ICAgICA7OworICBlc2FjCisgIHBzcWxfYXMgIiR2IiAtYyAiU0VMRUNUIHBnX3N0YXRfcmVz ZXRfc2luZ2xlX3RhYmxlX2NvdW50ZXJzKCckdGFibGUnOjpyZWdjbGFzczo6b2lkKSIgPi9k ZXYvbnVsbAorfQorCitibG9hdF9zdGF0cygpIHsKKyAgbG9jYWwgdj0kMSB0YWJsZT0kMgor ICBwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3NpemUoJyR0YWJsZScpLzgx OTIgfHwgJywnIHx8IHBnX2luZGV4ZXNfc2l6ZSgnJHRhYmxlJykiCit9CisKKyMgc2l1X2Nv dW50OiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBkYXRlcyBvYnNlcnZlZCBvbiAkdGFibGUg c2luY2UgaXRzCisjIHBnc3RhdCBjb3VudGVycyB3ZXJlIGxhc3QgcmVzZXQuICBSZXR1cm5z ICIwIiBvbiBtYXN0ZXIgKHdoZXJlIHRoZQorIyBjb3VudGVyIGNvbHVtbiBkb2VzIG5vdCBl eGlzdCkgc28gdGhlIENTViBjb2x1bW4gc3RheXMgbnVtZXJpYy4KK3NpdV9jb3VudCgpIHsK KyAgbG9jYWwgdj0kMSB0YWJsZT0kMgorICBsb2NhbCB2YWwKKyAgdmFsPSQocHNxbF9hcyAi JHYiIC1BdGMgXAorICAgICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRfdXBk LCAwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIg Mj4vZGV2L251bGwpCisgIFtbICIkdmFsIiA9fiBeWzAtOV0rJCBdXSB8fCB2YWw9MAorICBl Y2hvICIkdmFsIgorfQorCisjIHBlcl9pbmRleF9zaXplczogZW1pdCAiaWR4MT1ieXRlcztp ZHgyPWJ5dGVzOy4uLiIgZm9yIHRoZSBpbmRleGVzIG9uCisjICR0YWJsZSwgc29ydGVkIGJ5 IGluZGV4cmVsaWQuICBVc2VkIGJ5IHRoZSB3aWRlXyogd29ya2xvYWRzIHNvIHdlIGNhbgor IyBzZWUgcGVyLWNvbHVtbiBpbmRleCBncm93dGggcmF0aGVyIHRoYW4ganVzdCB0aGUgYWdn cmVnYXRlLiAgUmV0dXJucworIyB0aGUgbGl0ZXJhbCAibm9uZSIgd2hlbiAkdGFibGUgaGFz IG5vIGluZGV4ZXMuCitwZXJfaW5kZXhfc2l6ZXMoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9 JDIKKyAgbG9jYWwgb3V0CisgIG91dD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1Qgc3Ry aW5nX2FnZygKKyAgICAgICAgICAgaS5yZWxuYW1lIHx8ICc9JyB8fCBwZ19yZWxhdGlvbl9z aXplKGkub2lkKTo6dGV4dCwKKyAgICAgICAgICAgJzsnIE9SREVSIEJZIGkub2lkKQorICAg ICAgICAgRlJPTSBwZ19jbGFzcyB0CisgICAgICAgICBKT0lOIHBnX2luZGV4IGl4IE9OIGl4 LmluZHJlbGlkID0gdC5vaWQKKyAgICAgICAgIEpPSU4gcGdfY2xhc3MgaSAgT04gaS5vaWQg PSBpeC5pbmRleHJlbGlkCisgICAgICAgICBXSEVSRSB0LnJlbG5hbWUgPSAnJHRhYmxlJyIp CisgIFsgLW4gIiRvdXQiIF0gfHwgb3V0PSJub25lIgorICBlY2hvICIkb3V0IgorfQorCitz YW1wbGVfcGVhaygpIHsKKyAgIyBTYW1wbGUgQ1BVIC8gUlNTIG9mIHRoZSBwb3N0bWFzdGVy IHRyZWUgZm9yICREVVJBVElPTis1IHNlY29uZHMuCisgICMgV3JpdGVzICJwZWFrX2NwdV9w Y3QscGVha19yc3NfbWliIiB0byB0aGUgZ2l2ZW4gb3V0ZmlsZS4gIFBvcnRhYmxlIGFjcm9z cworICAjIExpbnV4IC8gRnJlZUJTRCAoZmFsbHMgYmFjayB0byBwZ3JlcCArIHBlci1waWQg cHMgd2hlcmUgLS1wcGlkIGlzbid0CisgICMgYXZhaWxhYmxlKS4gIFJldHVybnMgJ05BLE5B JyBpZiB0aGUgc2FtcGxlciBjYW4ndCBjb2xsZWN0IHVzZWZ1bCBkYXRhLgorICBsb2NhbCBv dXRmaWxlPSQxIHY9JDIKKyAgbG9jYWwgbGVhZGVyCisgIGxlYWRlcj0kKHBvc3RtYXN0ZXJf cGlkICIkdiIpCisgIFsgLXogIiRsZWFkZXIiIF0gJiYgeyBlY2hvICJOQSxOQSIgPiAiJG91 dGZpbGUiOyByZXR1cm47IH0KKyAgbG9jYWwgZHVyPSQoKCBEVVJBVElPTiArIDUgKSkKKyAg KAorICAgIGxvY2FsIG1heF9jcHU9MAorICAgIGxvY2FsIG1heF9yc3M9MAorICAgIGxvY2Fs IHQwPSQoZGF0ZSArJXMpCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICMgQ2hpbGRyZW4gb2Yg dGhlIGxlYWRlciArIHRoZSBsZWFkZXIgaXRzZWxmLgorICAgICAgbG9jYWwgcGlkcworICAg ICAgcGlkcz0kKCAocGdyZXAgLVAgIiRsZWFkZXIiIDI+L2Rldi9udWxsOyBlY2hvICIkbGVh ZGVyIikgfCB0ciAnXG4nICcgJykKKyAgICAgIGxvY2FsIHNhbXBsZQorICAgICAgc2FtcGxl PSQocHMgLW8gcGNwdT0scnNzPSAtcCAkcGlkcyAyPi9kZXYvbnVsbCB8IFwKKyAgICAgICAg ICAgICAgIGF3ayAne2NwdSs9JDE7IHJzcys9JDJ9IEVORHtwcmludGYgIiUuMWYgJWRcbiIs IGNwdSswLCByc3MrMH0nKQorICAgICAgbG9jYWwgYyByCisgICAgICByZWFkIC1yIGMgciA8 PDwiJHNhbXBsZSIKKyAgICAgIGlmIFsgLW4gIiR7YzotfSIgXSAmJiBbIC1uICIke3I6LX0i IF07IHRoZW4KKyAgICAgICAgYXdrIC12IG09IiRtYXhfY3B1IiAtdiBjPSIkYyIgJ0JFR0lO e2V4aXQgIShjPm0pfScgJiYgbWF4X2NwdT0kYworICAgICAgICBbICIkciIgLWd0ICIkbWF4 X3JzcyIgXSAyPi9kZXYvbnVsbCAmJiBtYXhfcnNzPSRyCisgICAgICBmaQorICAgICAgbG9j YWwgbm93PSQoZGF0ZSArJXMpCisgICAgICBbICQoKG5vdyAtIHQwKSkgLWdlICIkZHVyIiBd ICYmIGJyZWFrCisgICAgICBzbGVlcCAxCisgICAgZG9uZQorICAgIGxvY2FsIHJzc19taWI9 JCgoIG1heF9yc3MgLyAxMDI0ICkpCisgICAgZWNobyAiJG1heF9jcHUsJHJzc19taWIiID4g IiRvdXRmaWxlIgorICApICYKKyAgZWNobyAkIQorfQorCitydW5fb25lKCkgeworICBsb2Nh bCB2PSQxIHdvcmtsb2FkPSQyIHNjcmlwdD0kMyB0YWJsZT0kezQ6LXNpdV90YWJsZX0gZXh0 cmFfc2V0PSR7NTotfQorCisgIGxvY2FsIHdhbF9zdGFydCB3YWxfZW5kIGhvdF9zdGFydCBo b3RfZW5kIHRvdGFsX3N0YXJ0IHRvdGFsX2VuZCB0cHMgbGF0CisgIGxvY2FsIHNpdV9zdGFy dCBzaXVfZW5kCisgIGxvY2FsIGJsb2F0X2JlZm9yZSBibG9hdF9hZnRlciBpZHhfYmVmb3Jl IGlkeF9hZnRlcgorICBsb2NhbCBwZXJfaWR4X2JlZm9yZSBwZXJfaWR4X2FmdGVyCisgIHJl YWQgLXIgYmxvYXRfYmVmb3JlIGlkeF9iZWZvcmUgPDw8IiQoYmxvYXRfc3RhdHMgIiR2IiAi JHRhYmxlIiB8IHRyICwgJyAnKSIKKyAgcGVyX2lkeF9iZWZvcmU9JChwZXJfaW5kZXhfc2l6 ZXMgIiR2IiAiJHRhYmxlIikKKworICB3YWxfc3RhcnQ9JChwc3FsX2FzICIkdiIgLUF0YyAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0IikKKyAgaG90X3N0YXJ0PSQocHNx bF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00g cGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikKKyAgc2l1X3N0 YXJ0PSQoc2l1X2NvdW50ICIkdiIgIiR0YWJsZSIpCisgIHRvdGFsX3N0YXJ0PSQocHNxbF9h cyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgRlJPTSBwZ19zdGF0 X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWU9JyR0YWJsZSciKQorCisgIGxvY2FsIG91dD0i JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LmxvZyIKKyAgbG9jYWwgY3B1X3Jzc19maWxlPSRM T0dESVIvJHt2fV8ke3dvcmtsb2FkfS5jcHUKKyAgbG9jYWwgc2FtcGxlcl9waWQKKyAgc2Ft cGxlcl9waWQ9JChzYW1wbGVfcGVhayAiJGNwdV9yc3NfZmlsZSIgIiR2IikKKworICBzZXQg K2UKKyAgY2FzZSAiJHdvcmtsb2FkIiBpbgorICAgIHNpbXBsZV91cGRhdGUpCisgICAgICBw Z2JlbmNoX2FzICIkdiIgLU4gLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVS QVRJT04iIFwKKyAgICAgICAgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisgICAgICA7Owor ICAgIHdpZGVfKikKKyAgICAgICMgYnVpbGQgdGhlIFNFVCBjbGF1c2UgZnJvbSBleHRyYV9z ZXQgd2hpY2ggaXMgImMxPTp2LGMyPTp2LC4uLiIKKyAgICAgIHBnYmVuY2hfYXMgIiR2IiAt ZiA8KHNlZCAicy86d2lkZV9zZXRfY2xhdXNlLyRleHRyYV9zZXQvIiAiJHNjcmlwdCIpIFwK KyAgICAgICAgLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwK KyAgICAgICAgLUQgInNjYWxlPSRTQ0FMRSIgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisg ICAgICA7OworICAgIHJlYWRfaW5kZXhzY2FuKQorICAgICAgIyByZWFkLW9ubHk7IHBhc3Mg dGhlIHJvdyBjb3VudCBzbyB0aGUgc2NyaXB0IGNhbiBwaWNrIHJhbmRvbSBrZXlzCisgICAg ICBwZ2JlbmNoX2FzICIkdiIgLWYgIiRzY3JpcHQiIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJF QURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1EICJyb3dzPSQoKFNDQUxFICogMTAw MDAwKSkiIC1uIHBvc3RncmVzID4iJG91dCIgMj4mMQorICAgICAgOzsKKyAgICAqKQorICAg ICAgcGdiZW5jaF9hcyAiJHYiIC1mICIkc2NyaXB0IiAtYyAiJENMSUVOVFMiIC1qICIkVEhS RUFEUyIgLVQgIiREVVJBVElPTiIgXAorICAgICAgICAtbiBwb3N0Z3JlcyA+IiRvdXQiIDI+ JjEKKyAgICAgIDs7CisgIGVzYWMKKyAgc2V0IC1lCisKKyAgd2FpdCAiJHNhbXBsZXJfcGlk IiAyPi9kZXYvbnVsbCB8fCB0cnVlCisgIGxvY2FsIGNwdV9yc3MKKyAgY3B1X3Jzcz0kKGNh dCAiJGNwdV9yc3NfZmlsZSIgMj4vZGV2L251bGwgfHwgZWNobyAiTkEsTkEiKQorCisgIHRw cz0kKGF3ayAnL3RwcyA9IC97cHJpbnQgJDM7IGV4aXR9JyAiJG91dCIpCisgIGxhdD0kKGF3 ayAnL2xhdGVuY3kgYXZlcmFnZSA9IC97cHJpbnQgJDQ7IGV4aXR9JyAiJG91dCIpCisgIHRw cz0ke3RwczotTkF9CisgIGxhdD0ke2xhdDotTkF9CisKKyAgd2FsX2VuZD0kKHBzcWxfYXMg IiR2IiAtQXRjICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCk6OnRleHQiKQorICBob3Rf ZW5kPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBk LDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikK KyAgc2l1X2VuZD0kKHNpdV9jb3VudCAiJHYiICIkdGFibGUiKQorICB0b3RhbF9lbmQ9JChw c3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIGNvYWxlc2NlKG5fdHVwX3VwZCwwKSBGUk9NIHBn X3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIpCisKKyAgbG9jYWwg d2FsX2J5dGVzCisgIHdhbF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgcGdf d2FsX2xzbl9kaWZmKCckd2FsX2VuZCc6OnBnX2xzbiwgJyR3YWxfc3RhcnQnOjpwZ19sc24p OjpiaWdpbnQiKQorCisgICMgQ2FwdHVyZSBhIFdBTCByZWNvcmQtdHlwZSBoaXN0b2dyYW0g Zm9yIHRoaXMgd29ya2xvYWQuICBwZ193YWxkdW1wJ3MKKyAgIyAtLXN0YXRzPXJlY29yZCBv dXRwdXQgaXMgcmljaCAofjYwIGxpbmVzKSBzbyBzdGFzaCBpdCBpbiBMT0dESVIKKyAgIyBy YXRoZXIgdGhhbiB0cnlpbmcgdG8gZm9sZCBpbnRvIHRoZSBDU1YuICBUb2xlcmF0ZSBmYWls dXJlczogaWYgdGhlCisgICMgc2VnbWVudCBjb250YWluaW5nIHdhbF9zdGFydCBoYXMgYmVl biByZWN5Y2xlZCAocmFyZSB3aXRoCisgICMgbWF4X3dhbF9zaXplPTRHQiBidXQgcG9zc2li bGUgdW5kZXIgbG9uZyBjaGFpbmVkIHJ1bnMpLCB3ZSBlbWl0IGEKKyAgIyBub3RlIGFuZCBt b3ZlIG9uIGluc3RlYWQgb2YgYWJvcnRpbmcgdGhlIHdob2xlIHJ1bi4KKyAgbG9jYWwgd2Fs X3N0YXRzX2ZpbGU9JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LndhbHN0YXRzCisgIExEX0xJ QlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX3dhbGR1bXAi IFwKKyAgICAtLXN0YXRzPXJlY29yZCAtcCAiJEJFTkNIL19kYXRhXyR2L3BnX3dhbCIgXAor ICAgIC0tc3RhcnQ9IiR3YWxfc3RhcnQiIC0tZW5kPSIkd2FsX2VuZCIgXAorICAgID4gIiR3 YWxfc3RhdHNfZmlsZSIgMj4gIiR7d2FsX3N0YXRzX2ZpbGV9LmVyciIgXAorICAgIHx8IGVj aG8gInBnX3dhbGR1bXAgdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2U7IHNlZSAke3dhbF9z dGF0c19maWxlfS5lcnIiID4gIiR3YWxfc3RhdHNfZmlsZSIKKworICByZWFkIC1yIGJsb2F0 X2FmdGVyIGlkeF9hZnRlciA8PDwiJChibG9hdF9zdGF0cyAiJHYiICIkdGFibGUiIHwgdHIg LCAnICcpIgorICBwZXJfaWR4X2FmdGVyPSQocGVyX2luZGV4X3NpemVzICIkdiIgIiR0YWJs ZSIpCisKKyAgbG9jYWwgaG90PSQoKGhvdF9lbmQgLSBob3Rfc3RhcnQpKQorICBsb2NhbCBz aXU9JCgoc2l1X2VuZCAtIHNpdV9zdGFydCkpCisgIGxvY2FsIHRvdD0kKCh0b3RhbF9lbmQg LSB0b3RhbF9zdGFydCkpCisgIGxvY2FsIGNsYXNzaWNfaG90PSQoKGhvdCAtIHNpdSkpCisg IGxvY2FsIG5vbl9ob3Q9JCgodG90IC0gaG90KSkKKworICBwcmludGYgJyVzLCVzLCVzLCVz LCVkLCVkLCVkLCVkLCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzXG4nIFwKKyAgICAiJHYiICIk d29ya2xvYWQiICIkdHBzIiAiJGxhdCIgIiRjbGFzc2ljX2hvdCIgIiRzaXUiICIkbm9uX2hv dCIgIiR0b3QiIFwKKyAgICAiJHdhbF9ieXRlcyIgXAorICAgICIkYmxvYXRfYmVmb3JlIiAi JGJsb2F0X2FmdGVyIiBcCisgICAgIiRpZHhfYmVmb3JlIiAiJGlkeF9hZnRlciIgXAorICAg ICIkY3B1X3JzcyIgIiRwZXJfaWR4X2JlZm9yZSIgIiRwZXJfaWR4X2FmdGVyIiA+PiAiJE9V VCIKKyAgcHJpbnRmICcgICUtOHMgJS0xNHMgdHBzPSUxMHMgbGF0PSU2cyBjbGFzc2ljX2hv dD0lN2QgaGk9JTdkIG5vbl9ob3Q9JTdkIHRvdD0lLTdkIHdhbD0lMTJzIGJsb2F0PSVzLT4l cyBpZHg9JXMtPiVzIGNwdV9yc3M9JXNcbicgXAorICAgICIkdiIgIiR3b3JrbG9hZCIgIiR0 cHMiICIkbGF0IiAiJGNsYXNzaWNfaG90IiAiJHNpdSIgIiRub25faG90IiAiJHRvdCIgIiR3 YWxfYnl0ZXMiIFwKKyAgICAiJGJsb2F0X2JlZm9yZSIgIiRibG9hdF9hZnRlciIgIiRpZHhf YmVmb3JlIiAiJGlkeF9hZnRlciIgIiRjcHVfcnNzIgorfQorCitidWlsZF93aWRlX3NldF9j bGF1c2UoKSB7CisgICMgZW1pdCBlLmcuICJjMT06dixjMj06diwuLi4sY049OnYiIGZvciBm aXJzdCBOIGNvbHMuCisgIGxvY2FsIG49JDEKKyAgaWYgWyAiJG4iIC1lcSAwIF07IHRoZW4K KyAgICAjIE5vIGluZGV4ZWQtY29sIHVwZGF0ZTsgdG91Y2ggYSBub24taW5kZXhlZCBjb2x1 bW4gKGlkICUgMSBzbyBpdCdzIGEgbm8tb3ApCisgICAgZWNobyAiaWQ9aWQiCisgICAgcmV0 dXJuCisgIGZpCisgIGxvY2FsIGNsYXVzZXM9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJG4i KTsgZG8KKyAgICBbIC1uICIkY2xhdXNlcyIgXSAmJiBjbGF1c2VzKz0iLCIKKyAgICBjbGF1 c2VzKz0iYyRpPTp2IgorICBkb25lCisgIGVjaG8gIiRjbGF1c2VzIgorfQorCitmb3IgdiBp biBtYXN0ZXIgdGVwaWQ7IGRvCisgIGVjaG8gIi0tLSB2YXJpYW50OiAkdiIKKyAgc3RvcF9w ZyAiJHYiIHx8IHRydWUKKyAgc3RhcnRfcGcgIiR2IgorICBzZXR1cF9zY2hlbWFzICIkdiIK KworICBydW5fb25lICIkdiIgc2ltcGxlX3VwZGF0ZSAnJyAgICAgICAgICAgICAgICAgICAg cGdiZW5jaF9hY2NvdW50cworICByZXNldF9zdGF0ZSAiJHYiIHNpdV90YWJsZQorICBydW5f b25lICIkdiIgaG90X2luZGV4ZWRfdXBkYXRlICAgICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5k ZXhlZF91cGRhdGUuc3FsIiAgc2l1X3RhYmxlCisgIHJlc2V0X3N0YXRlICIkdiIgc2l1X3Rh YmxlCisgIHJ1bl9vbmUgIiR2IiBob3RfaW5kZXhlZF9taXhlZCAgICAgIiRCRU5DSC9zY3Jp cHRzL2hvdF9pbmRleGVkX21peGVkLnNxbCIgICBzaXVfdGFibGUKKyAgcmVzZXRfc3RhdGUg IiR2IiBzaXVfdGFibGUKKyAgcnVuX29uZSAiJHYiIHJlYWRfaW5kZXhzY2FuICAgICAgICAi JEJFTkNIL3NjcmlwdHMvcmVhZF9pbmRleHNjYW4uc3FsIiAgICAgIHNpdV90YWJsZQorCisg IGZvciBuIGluICR7V0lERV9TVEVQUy8vLC8gfTsgZG8KKyAgICByZXNldF9zdGF0ZSAiJHYi IHdpZGVfdGFibGUKKyAgICBydW5fb25lICIkdiIgIndpZGVfJHtufSIgIiRCRU5DSC9zY3Jp cHRzL3dpZGVfdXBkYXRlLnNxbCIgd2lkZV90YWJsZSBcCisgICAgICAgICAgICAiJChidWls ZF93aWRlX3NldF9jbGF1c2UgIiRuIikiCisgIGRvbmUKKworICBzdG9wX3BnICIkdiIKK2Rv bmUKKworZWNobyAiPT09IHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIkT1VUIiB8 IGhlYWQgLTUwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L3NvYWsuc2ggYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2gKbmV3 IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjZkMTI3ZjFjMDEyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNo CkBAIC0wLDAgKzEsMTI4IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIHRlcGlkIHNvYWs6 IHJ1biBob3RfaW5kZXhlZF91cGRhdGUgZm9yICREVVJBVElPTiBzZWNvbmRzIG9uIGVhY2gg dmFyaWFudCwgc2FtcGxpbmcKKyMgVFBTIC8gSE9ULXJhdGUgLyBXQUwgdm9sdW1lIC8gdGFi bGUraW5kZXggYmxvYXQgZXZlcnkgJFNBTVBMRSBzZWNvbmRzLgorIyBFbWl0cyBhIENTViB3 aXRoIG9uZSBzYW1wbGUgcm93IHBlciB0aWNrIHBlciB2YXJpYW50Lgorc2V0IC1ldW8gcGlw ZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNofQorU0NBTEU9JHtT Q0FMRTotNTB9CitDTElFTlRTPSR7Q0xJRU5UUzotMTZ9CitUSFJFQURTPSR7VEhSRUFEUzot OH0KK0RVUkFUSU9OPSR7RFVSQVRJT046LTkwMH0gICAgICMgMTUgbWludXRlcworU0FNUExF PSR7U0FNUExFOi02MH0gICAgICAgICAgIyBldmVyeSA2MCBzCitQT1JUPSR7UE9SVDotNTc1 MDN9CitTSEFSRURfQlVGRkVSUz0ke1NIQVJFRF9CVUZGRVJTOi0yR0J9CisKK1RTPSQoZGF0 ZSAtdSArJVklbSVkVCVIJU0lU1opCitPVVQ9JEJFTkNIL3Jlc3VsdHMvc29ha18kVFMuY3N2 CitMT0dESVI9JEJFTkNIL2xvZ3Mvc29ha18kVFMKK21rZGlyIC1wICIkTE9HRElSIgorZWNo byAidmFyaWFudCx0X3NlY3MsdHBzX2luc3RhbnQsaG90X3BjdF9pbnN0YW50LGhlYXBfcGFn ZXMsaW5kZXhfYnl0ZXMsd2FsX2J5dGVzX3NpbmNlX3N0YXJ0LG5fZGVhZF90dXAiID4gIiRP VVQiCitlY2hvICI9PT0gc29hayAkVFMgLT4gJE9VVCIKKworYmluX29mKCkgIHsgZWNobyAi JEJFTkNILyQxL3Vzci9sb2NhbC9wZ3NxbC9iaW4iOyB9CitMRF9vZigpICAgeyBsb2NhbCBi PSRCRU5DSC8kMS91c3IvbG9jYWwvcGdzcWw7IFsgLWQgIiRiL2xpYjY0IiBdICYmIGVjaG8g IiRiL2xpYjY0IiB8fCBlY2hvICIkYi9saWIiOyB9CisKK3BzcWxfYXMoKSB7IGxvY2FsIHY9 JDE7IHNoaWZ0OyBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAi JHYiKS9wc3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIjsgfQor cGdiZW5jaF9hcygpIHsgbG9jYWwgdj0kMTsgc2hpZnQ7IExEX0xJQlJBUllfUEFUSD0iJChM RF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnYmVuY2giIC1oIC90bXAgLXAgIiRQT1JU IiAtVSBwb3N0Z3JlcyAiJEAiOyB9CisKK3N0YXJ0X3BnKCkgeworICBsb2NhbCB2PSQxIGRh dGFkaXI9JEJFTkNIL19kYXRhXyR2CisgIFsgLWQgIiRkYXRhZGlyIiBdICYmIGZpbmQgIiRk YXRhZGlyIiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGlyICIkZGF0YWRpciIKKyAgbWtk aXIgLXAgIiRkYXRhZGlyIgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIk KGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9zdGdyZXMgPiIkTE9H RElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgY2F0ID4+ICIkZGF0YWRpci9wb3N0Z3Jlc3Fs LmNvbmYiIDw8RU9GCitzaGFyZWRfYnVmZmVycyA9ICRTSEFSRURfQlVGRkVSUword29ya19t ZW0gPSAzMk1CCittYXhfd2FsX3NpemUgPSA4R0IKK3N5bmNocm9ub3VzX2NvbW1pdCA9IG9u CitjaGVja3BvaW50X3RpbWVvdXQgPSAxMG1pbgord2FsX2xldmVsID0gcmVwbGljYQorYXV0 b3ZhY3V1bSA9IG9uCithdXRvdmFjdXVtX25hcHRpbWUgPSAxMHMKK2F1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCA9IDUwCithdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IgPSAw LjEKK3BvcnQgPSAkUE9SVAorRU9GCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYi KSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8gIi1w ICRQT1JUIiAtbCAiJExPR0RJUi9wZ18kdi5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAgc2xl ZXAgMgorfQorCitzdG9wX3BnKCkgeworICBsb2NhbCB2PSQxCisgIExEX0xJQlJBUllfUEFU SD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRCRU5DSC9f ZGF0YV8kdiIgc3RvcCAtbSBmYXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCit9CisKK3Nl dHVwKCkgeworICBsb2NhbCB2PSQxIHJvd3M9JCgoU0NBTEUgKiAxMDAwMDApKQorICBwc3Fs X2FzICIkdiIgPDxTUUwKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHNpdV90YWJsZTsKK0NSRUFU RSBUQUJMRSBzaXVfdGFibGUoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCwgZCBp bnQsIGUgdGV4dCk7CitDUkVBVEUgSU5ERVggc2l1X2IgT04gc2l1X3RhYmxlKGIpOworQ1JF QVRFIElOREVYIHNpdV9jIE9OIHNpdV90YWJsZShjKTsKK0NSRUFURSBJTkRFWCBzaXVfZCBP TiBzaXVfdGFibGUoZCk7CitJTlNFUlQgSU5UTyBzaXVfdGFibGUKKyAgU0VMRUNUIGksIGks IGksIGksIHJlcGVhdCgneCcsIDIwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkcm93cykg QVMgaTsKK1ZBQ1VVTSAoQU5BTFlaRSkgc2l1X3RhYmxlOworU1FMCit9CisKK3J1bl9zb2Fr KCkgeworICBsb2NhbCB2PSQxCisgIGVjaG8gIi0tLSBzb2FrICR2IGZvciAke0RVUkFUSU9O fXMsIHNhbXBsaW5nIGV2ZXJ5ICR7U0FNUExFfXMiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVl CisgIHN0YXJ0X3BnICIkdiIKKyAgc2V0dXAgIiR2IgorICBsb2NhbCB3YWwwCisgIHdhbDA9 JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0 IikKKyAgbG9jYWwgaG90MCB0b3QwCisgIGhvdDA9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VM RUNUIGNvYWxlc2NlKG5fdHVwX2hvdF91cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVz IFdIRVJFIHJlbG5hbWU9J3NpdV90YWJsZSciKQorICB0b3QwPSQocHNxbF9hcyAiJHYiIC1B dGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91c2Vy X3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgbG9jYWwgcHJldl9ob3Q9 JGhvdDAgcHJldl90b3Q9JHRvdDAKKworICAjIERyaXZlIHBnYmVuY2ggaW4gdGhlIGJhY2tn cm91bmQ7IHNhbXBsZXIgaW4gZm9yZWdyb3VuZC4KKyAgcGdiZW5jaF9hcyAiJHYiIC1mICIk QkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsIiBcCisgICAgLWMgIiRDTElF TlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwKKyAgICAtUCAiJFNBTVBMRSIg LW4gcG9zdGdyZXMgPiIkTE9HRElSL3BnYmVuY2hfJHYubG9nIiAyPiYxICYKKyAgbG9jYWwg cGdiPSQhCisKKyAgbG9jYWwgdD0wCisgIHdoaWxlIFsgIiR0IiAtbHQgIiREVVJBVElPTiIg XTsgZG8KKyAgICBzbGVlcCAiJFNBTVBMRSIKKyAgICB0PSQoKHQgKyBTQU1QTEUpKQorICAg IGxvY2FsIG5vd19ob3Qgbm93X3RvdCB3YWxfbm93IHdhbF9ieXRlcyBoZWFwX3BhZ2VzIGlk eF9ieXRlcyBuX2RlYWQKKyAgICBub3dfaG90PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBX SEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICBub3dfdG90PSQocHNxbF9hcyAiJHYi IC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91 c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICB3YWxfbm93PSQo cHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIp CisgICAgd2FsX2J5dGVzPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ193YWxfbHNu X2RpZmYoJyR3YWxfbm93Jzo6cGdfbHNuLCAnJHdhbDAnOjpwZ19sc24pOjpiaWdpbnQiKQor ICAgIGhlYXBfcGFnZXM9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3Np emUoJ3NpdV90YWJsZScpLzgxOTIiKQorICAgIGlkeF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAt QXRjICJTRUxFQ1QgcGdfaW5kZXhlc19zaXplKCdzaXVfdGFibGUnKSIpCisgICAgbl9kZWFk PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX2RlYWRfdHVwLDApIEZS T00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKwor ICAgIGxvY2FsIGRfaG90PSQoKG5vd19ob3QgLSBwcmV2X2hvdCkpCisgICAgbG9jYWwgZF90 b3Q9JCgobm93X3RvdCAtIHByZXZfdG90KSkKKyAgICBsb2NhbCB0cHNfaSBob3RfcGN0Cisg ICAgaWYgWyAiJGRfdG90IiAtZ3QgMCBdOyB0aGVuCisgICAgICB0cHNfaT0kKGF3ayAtdiBk PSIkZF90b3QiIC12IHM9IiRTQU1QTEUiICdCRUdJTntwcmludGYgIiUuMWYiLCBkL3N9JykK KyAgICAgIGhvdF9wY3Q9JChhd2sgLXYgaD0iJGRfaG90IiAtdiB0PSIkZF90b3QiICdCRUdJ TntwcmludGYgIiUuMWYiLCAxMDAqaC90fScpCisgICAgZWxzZQorICAgICAgdHBzX2k9MDsg aG90X3BjdD0wCisgICAgZmkKKyAgICBwcmludGYgJyVzLCVkLCVzLCVzLCVzLCVzLCVzLCVz XG4nICIkdiIgIiR0IiAiJHRwc19pIiAiJGhvdF9wY3QiICIkaGVhcF9wYWdlcyIgIiRpZHhf Ynl0ZXMiICIkd2FsX2J5dGVzIiAiJG5fZGVhZCIgPj4gIiRPVVQiCisgICAgcHJpbnRmICcg ICUtNnMgdD0lLTVkIHRwcz0lOHMgaG90PSUtNXMlJSBoZWFwX3Bncz0lLTdzIGlkeD0lLTEy cyB3YWw9JS0xMnMgZGVhZD0lc1xuJyBcCisgICAgICAiJHYiICIkdCIgIiR0cHNfaSIgIiRo b3RfcGN0IiAiJGhlYXBfcGFnZXMiICIkaWR4X2J5dGVzIiAiJHdhbF9ieXRlcyIgIiRuX2Rl YWQiCisgICAgcHJldl9ob3Q9JG5vd19ob3QKKyAgICBwcmV2X3RvdD0kbm93X3RvdAorICBk b25lCisKKyAgd2FpdCAiJHBnYiIgMj4vZGV2L251bGwgfHwgdHJ1ZQorICBzdG9wX3BnICIk diIKK30KKworZm9yIHYgaW4gbWFzdGVyIHRlcGlkOyBkbworICBydW5fc29hayAiJHYiCitk b25lCisKK2VjaG8gIj09PSBzb2FrIHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIk T1VUIiB8IGhlYWQgLTgwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9z Y3JpcHRzL3dpZGVfdXBkYXRlLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3Njcmlw dHMvd2lkZV91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMmMyZmYxNGFjNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvd2lkZV91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNyBAQAorLS0gV2lk ZS10YWJsZSB3b3JrbG9hZC4gIFRoZSBzZXR1cCBzY3JpcHQgY3JlYXRlcyBhIHRhYmxlIHdp dGggV0lERV9DT0xTIGludGVnZXIKKy0tIGNvbHVtbnMsIGVhY2ggc2VwYXJhdGVseSBidHJl ZS1pbmRleGVkLiAgVGhlIHdvcmtsb2FkIFVQREFURXMgYQorLS0gY29uZmlndXJhYmxlIG51 bWJlciBvZiB0aG9zZSBpbmRleGVkIGNvbHVtbnMgcGVyIHRyYW5zYWN0aW9uCistLSAoV0lE RV9VUERDT0xTIGVudiB2YXIpIG9uIGEgcmFuZG9tIHJvdy4KK1xzZXQgcmlkIHJhbmRvbSgx LCA6c2NhbGUgKiAxMDAwKQorXHNldCB2IHJhbmRvbSgxLCAxMDAwMDAwMDAwKQorVVBEQVRF IHdpZGVfdGFibGUgU0VUIDp3aWRlX3NldF9jbGF1c2UgV0hFUkUgaWQgPSA6cmlkOwotLSAK Mi41MC4xCgo= --3202a723b9a5d4132622fc7eaaa1d2d143f90e53--