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.98.2) (envelope-from ) id 1xJxup-00000000XIL-2sLR for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Oct 2026 18:53:29 +0000 Received: from localhost ([127.0.0.1]:34036 helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xJxuo-0000000D1tf-2w9O for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Oct 2026 18:53:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]:43402) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xJxun-0000000D1tX-1Afh for pgsql-hackers@lists.postgresql.org; Thu, 22 Oct 2026 18:53:26 +0000 Received: from mail-244118.protonmail.ch ([109.224.244.118]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xJxuV-00000000Rw2-1DYy for pgsql-hackers@postgresql.org; Thu, 22 Oct 2026 18:53:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; s=protonmail; t=1792695175; x=1792954375; bh=NBR+EQKiM8AA9SDXsOOjUVBnRHHIz3xaQJnb4wu5LMQ=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=WpLn/e1CspOpb2XNiXNWkk4jPUHFHaY0XrmpqRZnQgIjweYBJseLvovi4N8Jq019s nQPwZoAdq4lXvLwzs8+C5HgehDRyih7CREWIj8vo/efALjfCwPCO6fFAKotwPWtADl QSZasIIz66F13t/bmP8ZwWCVHE+3etUAjGoHZ6kV/4F0H4FM0Su/mJ+u6kPPIZERrn 2qjMj9aaJCsZhDU+h2P2okZ6BKolM4s5DHnSB960470dA6pNPx2JHodBuU3CE0Y/Mu 3WnQrwDR+Pv12THi8kBe9P98G/mRk5OCSsxiUiewMyotC+YjhoydjE7hSKygKQRfkm n72Cz4BYtkJZA== Date: Thu, 22 Oct 2026 18:52:50 +0000 To: pgsql-hackers@postgresql.org From: Greg Burd Cc: greg@burd.me, boekewurm+postgres@gmail.com, pgsql@j-davis.com, nathandbossart@gmail.com Subject: Re: Expanding HOT updates for expression and partial indexes Message-ID: In-Reply-To: References: <7b8681a578b5fe77103948eeb7b5cdd80fabad5d.camel@j-davis.com> <4040d3a4-01c2-4f24-9025-57cfc19aea57@app.fastmail.com> <6609db3402d0d2994144abc2081d1b790e644c0d.camel@j-davis.com> <-ugooulGn7M5X4DFIzWHSgYRngUmXChD_a-JvcMaklnDNcHMGnQhcM82SpYY76Je5ss4TOrsQB5sv2USLRSlDcpwDX-6CgCCbGKlJuA0SOs=@protonmail.com> <9XW-2xmCYWws1lnV5ELwZ67eaqyJNb9gJ6R2aUxntUuHetRia8NhzpSEl4gqtpKLtLwfqnBwnj5xOIs8N4Zd2x6x7gCyd5-HXocpMF4Fkj4=@burd.me> Feedback-ID: 2668248:user:proton X-Pm-Message-ID: 9b06649236cb6cc895467eba6d524082ff68b37d MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, Attached is v43, eight patches on master (871dee0ccbe). It does what I said I would in my last mail. The executor treats an indexed value that is the same but stored differently as unchanged, for every access method; the nbtree callback is gone; amcomparedatums is never asked about a column the index can return; and the detoasting this costs is measured below. 0009 and 0010 from v41 are still out of the set. 0005 amcomparedatums is not asked about a column the index can return (index_can_return()), neither when the relcache decides which columns are COMPARABLE nor when the executor compares an index's datums. So the callback only answers for entries no index-only scan can see, and an AM that later learns to return a column loses the shortcut rather than giving a wrong answer. dummy_index_am gets an amcanreturn driven by a reloption, and the update its test makes HOT is not HOT with that turned on. 0006 Replaces "nbtree: implement amcomparedatums". When two values of an indexed column differ as stored and one of them is compressed or out of line, they are compared with datum_image_eq(), and if they are the same the column counts as unchanged. That is done once for each changed column, before any narrowing. The narrowing then takes a column an index stores as changed exactly when it is still in the changed set, so its values aren't compared or fetched a second time; only the datums of expressions are compared again, the same way. Columns of candidate keys and of the replica identity are still compared as stored, because heap_update() takes its lock strength and what it logs for decoding from them; the cross-check in heap_update() in assert-enabled builds allows for exactly that. hot_updates gets four write-back cases: under SP-GiST, under a partial btree index and under an expression that returns the value as is, all now HOT, and under a unique index, which stays non-HOT. Smaller things: heap_attr_equals()'s comment still named the function 0002 renamed, and a test had a redundant pg_stat_force_next_flush(). The cost of detoasting. Release builds on a c7i.8xlarge, shared_buffers 8GB, fillfactor 50, with the data directory on tmpfs, fsync and full_page_writes off, and a CHECKPOINT before each run. On disk, checkpoints decided the result: the versions that make the write-back cases HOT write less WAL, so their checkpoints come at different points of the later workloads, which moved one of them by 40%. One UPDATE over every row of a 100k-row table (50k for hash, 500k for the controls), with 3000-byte values that compress, or 2500- and 3200-byte values stored uncompressed out of line (STORAGE EXTERNAL). Median of 12 runs (3 interleaved rounds of 5, the first run of each dropped), in ms: master v43 v43/master value changes, same length compressed, btree 1423 1498 +5.3% out of line, btree 3428 3461 +0.9% out of line, hash 1318 1491 +13.1% value changes, different length compressed, btree 6213 6250 +0.6% same value written back compressed, btree 3023 231 -92.4% out of line, btree 2184 1245 -43.0% compressed, SP-GiST 681 236 -65.3% out of line, hash 730 660 -9.5% controls unindexed column changes 370 352 -4.9% short indexed value changes 2113 2117 +0.2% So your concern is right, and now we know what it costs. Nothing is fetched when the lengths differ, or when an unchanged value keeps its toast pointer. When a toasted value changes but keeps its length, the old value is detoasted to find that it changed; the new one is still in memory at that point. That costs 5% when the value is compressed, and about 1% out of line under btree, where inserting a 2.5 kB key costs much more. Out of line under hash is the worst case, at +13%, and most of that isn't detoasting. hashcomparedatums() hashes both 3 kB values, and the insertion hashes the new one again, so perf shows three times master's time in hash_bytes(); that is about two thirds of the difference, and fetching the old value is the rest. v42 hashed the same way. Without the changed set passed down, the narrowing compared and fetched once more, and this case was +18%. If the hashing matters, the executor could skip the callback for a column whose type's equality implies image equality (btree's equalimage): two values with different images then have the same hash code only by collision. Numeric and nondeterministic collations, where the callback earns its keep, would still be asked. The write-back side is what ORMs and logical replication do with every UPDATE: no version before v43 made the SP-GiST case HOT, and under hash v42 made the write-back HOT but slower than master, because hashing both values cost more than the index insertion saved; comparing images first makes it 9.5% faster. The unindexed-column control came out faster than master in every round, here and in an earlier run on disk. I can't explain that and wouldn't count on it. I haven't touched simple_heap_update(); I might try to deform both tuples once, maybe it will be in the next version. best. -greg --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0005-Add-amcomparedatums-index-AM-callback-for-HOT-up.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0005-Add-amcomparedatums-index-AM-callback-for-HOT-up.patch RnJvbSAzNDhhZWFkYmZmNWUyZjU3MDA1MDI3NmE3MTAzZDIyODI3N2ZmMzhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBNb24s IDE5IE9jdCAyMDI2IDE5OjEwOjM3IC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDUvOF0gQWRk IGFtY29tcGFyZWRhdHVtcyBpbmRleCBBTSBjYWxsYmFjayBmb3IgSE9UIHVwZGF0ZXMNCg0KQW4g VVBEQVRFIHRoYXQgY2hhbmdlcyBhIGNvbHVtbiBhbiBpbmRleCBzdG9yZXMgZGlyZWN0bHksIGFz IGEga2V5IG9yDQppbmNsdWRlZCBjb2x1bW4sIGFsd2F5cyBnZXRzIG5ldyBpbmRleCBlbnRyaWVz LCBldmVuIHdoZW4gdGhlIGluZGV4IHdvdWxkDQpzdG9yZSBleGFjdGx5IHdoYXQgaXQgYWxyZWFk eSBkb2VzLiAgT25seSB0aGUgaW5kZXgncyBhY2Nlc3MgbWV0aG9kIGNhbg0KdGVsbDogYSBoYXNo IGluZGV4IHN0b3JlcyBhIGhhc2ggY29kZSwgYSBHSU4gaW5kZXggdGhlIGtleXMgaXRzIG9wZXJh dG9yDQpjbGFzcyBleHRyYWN0cy4gIEluZGV4IGFjY2VzcyBtZXRob2RzDQpmb3IgZG9jdW1lbnRz IHN1Y2ggYXMgUlVNIHN0b3JlIGtleXMgZm9yIGEgZmV3IHBhdGhzIG9mIGEgZG9jdW1lbnQgY2hv c2VuDQpieSBvcGVyYXRvciBjbGFzcyBvcHRpb25zLCBzbyB0byBjb3JlIGV2ZXJ5IGNoYW5nZSB0 byB0aGUgZG9jdW1lbnQgbG9va3MNCmxpa2UgYSBjaGFuZ2UgdG8gdGhlIGluZGV4Lg0KDQpBZGQg YW4gb3B0aW9uYWwgY2FsbGJhY2ssDQoNCiAgICBib29sIGFtY29tcGFyZWRhdHVtcyhSZWxhdGlv biBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8sIGludCBhdHRudW0sDQogICAgICAgICAgICAg ICAgICAgICAgICAgT2lkIHR5cGlkLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwsDQogICAg ICAgICAgICAgICAgICAgICAgICAgRGF0dW0gb2xkVmFsdWUsIERhdHVtIG5ld1ZhbHVlKTsNCg0K d2hpY2ggc2F5cyB3aGV0aGVyIHRoZSBuZXcsIG5vbi1udWxsIHZhbHVlIG9mIGFuIGluZGV4IGNv bHVtbiBnaXZlcw0KZXhhY3RseSB0aGUgc2FtZSBpbmRleCBlbnRyaWVzIGFzIHRoZSBvbGQgb25l LiAgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMNCmFscmVhZHkgbmFycm93cyB0aGUgc2V0IG9m IGNoYW5nZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGZvciB0aG9zZSB1c2VkIG9ubHkNCnRocm91Z2gg ZXhwcmVzc2lvbnMgb3IgcGFydGlhbC1pbmRleCBwcmVkaWNhdGVzLCBieSBmb3JtaW5nIGVhY2gg c3VjaA0KaW5kZXgncyBkYXR1bXMgZm9yIHRoZSBvbGQgYW5kIG5ldyByb3cgYW5kIGNvbXBhcmlu ZyB0aGVtIGJ5dGUgZm9yIGJ5dGUuDQpUcmVhdCBhIGNvbHVtbiB0aGF0IGluZGV4ZXMgYWxzbyBz dG9yZSBkaXJlY3RseSB0aGUgc2FtZSB3YXksIGlmIGFsbCBvZg0KdGhvc2UgaW5kZXhlcyBoYXZl IHRoZSBjYWxsYmFjaywgYW5kIGFzayB0aGUgY2FsbGJhY2sgd2hlbmV2ZXIgYW4gaW5kZXgNCmRh dHVtIGRpZmZlcnMgYnl0ZSBmb3IgYnl0ZS4gIFRoZSBuZXcgcmVsY2FjaGUgYml0bWFwDQpJTkRF WF9BVFRSX0JJVE1BUF9DT01QQVJBQkxFIG5hbWVzIHRob3NlIGNvbHVtbnMuDQoNClRoZSBjYWxs YmFjayBpcyBub3QgYXNrZWQgYWJvdXQgYSBjb2x1bW4gdGhlIGluZGV4IGNhbiByZXR1cm4gaW4N CmluZGV4LW9ubHkgc2NhbnMgKGFtY2FucmV0dXJuKTogdGhlIGluZGV4IHN0b3JlcyB0aGUgdmFs dWUgaXRzZWxmIHRoZXJlLA0Kc28gb25seSB0aGUgc2FtZSB2YWx1ZSBnaXZlcyB0aGUgc2FtZSBl bnRyaWVzLCBhbmQgYW4gYWNjZXNzIG1ldGhvZCB0aGF0DQpsZWFybnMgdG8gcmV0dXJuIGEgY29s dW1uIGxhdGVyIGNhbm5vdCBiZSBsZWZ0IGdpdmluZyBhIHdyb25nIGFuc3dlci4NCg0KVGhlIGNv bHVtbnMgb2YgY2FuZGlkYXRlIGtleXMgYW5kIG9mIHRoZSByZXBsaWNhIGlkZW50aXR5IGFyZSBs ZWZ0IG91dDoNCnRoZSB0YWJsZSBBTSB0YWtlcyBpdHMgdHVwbGUgbG9jayBzdHJlbmd0aCBhbmQg d2hhdCBpdCBsb2dzIGZvciBsb2dpY2FsDQpkZWNvZGluZyBmcm9tIHRoZSBjaGFuZ2VkIHNldCwg YW5kIHRob3NlIHN0YXkgZGVjaWRlZCBieSB2YWx1ZS4gIFNvIGFyZSB0aGUNCmluZGV4ZXMgb2Yg ZXhjbHVzaW9uIGNvbnN0cmFpbnRzOiB0aGUgY29uc3RyYWludCBpcyBjaGVja2VkIG9uIHRoZSB2 YWx1ZXMNCndoZW4gYW4gZW50cnkgaXMgaW5zZXJ0ZWQsIGFuZCB0d28gdmFsdWVzIHRoYXQgZ2l2 ZSB0aGUgc2FtZSBlbnRyaWVzIG5lZWQNCm5vdCBoYXZlIHRoZSBzYW1lIGNvbmZsaWN0cy4NCg0K Tm8gY29yZSBhY2Nlc3MgbWV0aG9kIGltcGxlbWVudHMgdGhlIGNhbGxiYWNrIHlldCwgc28gbm90 aGluZyBjaGFuZ2VzDQp1bnRpbCBvbmUgZG9lcy4gIGR1bW15X2luZGV4X2FtIGdldHMgb25lLCBj b25maWd1cmVkIGJ5IGl0cyBvcHRpb25zLCB0bw0KdGVzdCB0aGUgZXhlY3V0b3Igc2lkZS4NCi0t LQ0KIGNvbnRyaWIvYmxvb20vYmx1dGlscy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr DQogZG9jL3NyYy9zZ21sL2luZGV4YW0uc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDUxICsr KysrKw0KIGRvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICAg OCArLQ0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAgICAgICB8ICAg MSArDQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMgICAgICAgICAgICAgIHwgICAx ICsNCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgICAgICAgICAgICAgICAgfCAgIDEg Kw0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICAgMSAr DQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDE2ICst DQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDE2ICst DQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYyAgICAgICAgICAgIHwgICAxICsN CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMgICAgICAgICAgfCAgIDEgKw0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8ICA4OCArKysr KysrLS0tDQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwg IDQ5ICsrKysrKw0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oICAgICAgICAgICAgICAgICAg ICB8ICAxMCArKw0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAg ICB8ICAgMyArLQ0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMyArDQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCAgICAgICAgICAgICAgICAg IHwgICAxICsNCiBzcmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL01ha2VmaWxlICAgICAg fCAgIDIgKy0NCiAuLi4vbW9kdWxlcy9kdW1teV9pbmRleF9hbS9kdW1teV9pbmRleF9hbS5jICAg fCAgMzggKysrKy0NCiAuLi4vZHVtbXlfaW5kZXhfYW0vZXhwZWN0ZWQvY29tcGFyZWRhdHVtcy5v dXQgfCAxNTIgKysrKysrKysrKysrKysrKysrDQogc3JjL3Rlc3QvbW9kdWxlcy9kdW1teV9pbmRl eF9hbS9tZXNvbi5idWlsZCAgIHwgICAxICsNCiAuLi4vZHVtbXlfaW5kZXhfYW0vc3FsL2NvbXBh cmVkYXR1bXMuc3FsICAgICAgfCAgODIgKysrKysrKysrKw0KIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArDQogMjMgZmlsZXMgY2hhbmdlZCwgNDky IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2V4cGVjdGVkL2NvbXBhcmVkYXR1bXMub3V0DQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vc3FsL2Nv bXBhcmVkYXR1bXMuc3FsDQoNCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2JsdXRpbHMuYyBi L2NvbnRyaWIvYmxvb20vYmx1dGlscy5jDQppbmRleCA1MTExY2RjNmRkNi4uOWZhNzcxMDczOWIg MTAwNjQ0DQotLS0gYS9jb250cmliL2Jsb29tL2JsdXRpbHMuYw0KKysrIGIvY29udHJpYi9ibG9v bS9ibHV0aWxzLmMNCkBAIC0xNTUsNiArMTU1LDcgQEAgYmxoYW5kbGVyKFBHX0ZVTkNUSU9OX0FS R1MpDQogCQkuYW1wYXJhbGxlbHJlc2NhbiA9IE5VTEwsDQogCQkuYW10cmFuc2xhdGVzdHJhdGVn eSA9IE5VTEwsDQogCQkuYW10cmFuc2xhdGVjbXB0eXBlID0gTlVMTCwNCisJCS5hbWNvbXBhcmVk YXR1bXMgPSBOVUxMLA0KIAl9Ow0KIA0KIAlQR19SRVRVUk5fUE9JTlRFUigmYW1yb3V0aW5lKTsN CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5kZXhhbS5zZ21sIGIvZG9jL3NyYy9zZ21sL2lu ZGV4YW0uc2dtbA0KaW5kZXggZjQ4ZGEzMTg1MzAuLmQ5MTE5MmJjMDExIDEwMDY0NA0KLS0tIGEv ZG9jL3NyYy9zZ21sL2luZGV4YW0uc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL2luZGV4YW0uc2dt bA0KQEAgLTE4MCw2ICsxODAsOSBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEFtUm91dGluZQ0KICAg ICAvKiBpbnRlcmZhY2UgZnVuY3Rpb25zIHRvIHN1cHBvcnQgcGxhbm5pbmcgKi8NCiAgICAgYW10 cmFuc2xhdGVfc3RyYXRlZ3lfZnVuY3Rpb24gYW10cmFuc2xhdGVzdHJhdGVneTsgIC8qIGNhbiBi ZSBOVUxMICovDQogICAgIGFtdHJhbnNsYXRlX2NtcHR5cGVfZnVuY3Rpb24gYW10cmFuc2xhdGVj bXB0eXBlOyAgICAvKiBjYW4gYmUgTlVMTCAqLw0KKw0KKyAgICAvKiBpbnRlcmZhY2UgZnVuY3Rp b24gdG8gc3VwcG9ydCBIT1QgdXBkYXRlcyAqLw0KKyAgICBhbWNvbXBhcmVkYXR1bXNfZnVuY3Rp b24gYW1jb21wYXJlZGF0dW1zOyAgICAvKiBjYW4gYmUgTlVMTCAqLw0KIH0gSW5kZXhBbVJvdXRp bmU7DQogPC9wcm9ncmFtbGlzdGluZz4NCiAgIDwvcGFyYT4NCkBAIC05MTUsNiArOTE4LDU0IEBA IGFtdHJhbnNsYXRlY21wdHlwZSAoQ29tcGFyZVR5cGUgY21wdHlwZSwgT2lkIG9wZmFtaWx5LCBP aWQgb3BjaW50eXBlKTsNCiAgICBmdWxseSBmdW5jdGlvbmFsLg0KICAgPC9wYXJhPg0KIA0KKyAg PHBhcmE+DQorPHByb2dyYW1saXN0aW5nPg0KK2Jvb2wNCithbWNvbXBhcmVkYXR1bXMgKFJlbGF0 aW9uIGluZGV4UmVsYXRpb24sDQorICAgICAgICAgICAgICAgICBJbmRleEluZm8gKmluZGV4SW5m bywNCisgICAgICAgICAgICAgICAgIGludCBhdHRudW0sDQorICAgICAgICAgICAgICAgICBPaWQg dHlwaWQsDQorICAgICAgICAgICAgICAgICBpbnQxNiB0eXBsZW4sDQorICAgICAgICAgICAgICAg ICBib29sIHR5cGJ5dmFsLA0KKyAgICAgICAgICAgICAgICAgRGF0dW0gb2xkVmFsdWUsDQorICAg ICAgICAgICAgICAgICBEYXR1bSBuZXdWYWx1ZSk7DQorPC9wcm9ncmFtbGlzdGluZz4NCisgICBX b3VsZCBpbnNlcnRpbmcgYSByb3cgd2hvc2UgaW5kZXggY29sdW1uIDxwYXJhbWV0ZXI+YXR0bnVt PC9wYXJhbWV0ZXI+DQorICAgKGNvdW50aW5nIGZyb20gMSkgaGFzIHRoZSB2YWx1ZSA8cGFyYW1l dGVyPm5ld1ZhbHVlPC9wYXJhbWV0ZXI+IG1ha2UNCisgICBleGFjdGx5IHRoZSBzYW1lIGluZGV4 IGVudHJpZXMgYXMgPHBhcmFtZXRlcj5vbGRWYWx1ZTwvcGFyYW1ldGVyPiBtYWRlPw0KKyAgIFRo ZSB2YWx1ZXMgYXJlIG5vdCBudWxsLCBhcmUgb2YgdHlwZSA8cGFyYW1ldGVyPnR5cGlkPC9wYXJh bWV0ZXI+ICh0aGUNCisgICB0eXBlIG9mIHRoZSB0YWJsZSBjb2x1bW4gb3IgaW5kZXggZXhwcmVz c2lvbiwgd2hpY2ggbmVlZCBub3QgYmUgdGhlIHR5cGUNCisgICB0aGUgaW5kZXggc3RvcmVzKSwg d2hvc2UgbGVuZ3RoIGFuZCBieS12YWx1ZSBwcm9wZXJ0eSBhcmUNCisgICA8cGFyYW1ldGVyPnR5 cGxlbjwvcGFyYW1ldGVyPiBhbmQgPHBhcmFtZXRlcj50eXBieXZhbDwvcGFyYW1ldGVyPiwgYW5k DQorICAgYXJlIG5vdCBlcXVhbCBieXRlIGZvciBieXRlLiAgVGhlIGZ1bmN0aW9uIGlzDQorICAg Y2FsbGVkIGR1cmluZyA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+LCBiZWZvcmUgdGhlIHRhYmxl IGFjY2VzcyBtZXRob2QNCisgICBpcywgZm9yIGV2ZXJ5IGluZGV4IHRoYXQgdXNlcyBhIGNvbHVt biB3aG9zZSB2YWx1ZSBjaGFuZ2VkOyBpZiBldmVyeSBzdWNoDQorICAgaW5kZXggYW5zd2VycyA8 bGl0ZXJhbD50cnVlPC9saXRlcmFsPiBmb3IgZXZlcnkgY2hhbmdlZCBjb2x1bW4sIHRoZSB1cGRh dGUNCisgICBjYW4gYmUgYSBoZWFwLW9ubHkgdHVwbGUgKDxhY3JvbnltPkhPVDwvYWNyb255bT4p IHVwZGF0ZSwgd2hpY2ggbWFrZXMgbm8gbmV3DQorICAgaW5kZXggZW50cmllcyBhdCBhbGwgKHNl ZSA8eHJlZiBsaW5rZW5kPSJzdG9yYWdlLWhvdCIvPikuICBUaGUgaW5kZXggdGhlbg0KKyAgIGtl ZXBzIHRoZSBlbnRyaWVzIGl0IG1hZGUgZm9yIHRoZSBvbGQgdmFsdWUsIGFuZCByZWFjaGVzIHRo ZSBuZXcgcm93DQorICAgdGhyb3VnaCB0aGVtLiAgPHBhcmFtZXRlcj5pbmRleEluZm88L3BhcmFt ZXRlcj4gaXMgdGhlIG9uZQ0KKyAgIDxmdW5jdGlvbj5hbWluc2VydDwvZnVuY3Rpb24+IHdvdWxk IGdldCBmb3IgdGhlIG5ldyByb3csIHNvIHRoZSBmdW5jdGlvbg0KKyAgIG1heSB1c2UgPGxpdGVy YWw+aWlfQW1DYWNoZTwvbGl0ZXJhbD4gaW4gdGhlIHNhbWUgd2F5Lg0KKyAgPC9wYXJhPg0KKw0K KyAgPHBhcmE+DQorICAgU28gPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gaXMgb25seSBjb3JyZWN0 IGlmIG5vIHNjYW4gY2FuIHRlbGwgdGhlIG9sZA0KKyAgIGVudHJpZXMgZnJvbSB0aGUgb25lcyB0 aGUgbmV3IHZhbHVlIHdvdWxkIG1ha2U6IHRoZXkgbXVzdCBoYXZlIHRoZSBzYW1lDQorICAga2V5 cywgY29tcGFyZWQgYXMgdGhlIGluZGV4IGNvbXBhcmVzIHRoZW0sIGFuZCBhbnl0aGluZyBhIHNj YW4gcmV0dXJucw0KKyAgIGZyb20gdGhlbSBtdXN0IGJlIHRoZSBzYW1lLiAgVGhlIGZ1bmN0aW9u IGlzIG5vdCBjYWxsZWQgZm9yIGEgY29sdW1uIHRoZQ0KKyAgIGluZGV4IGNhbiByZXR1cm4gaW4g aW5kZXgtb25seSBzY2FucyAoc2VlIDxmdW5jdGlvbj5hbWNhbnJldHVybjwvZnVuY3Rpb24+KToN CisgICB0aGUgaW5kZXggc3RvcmVzIHRoZSB2YWx1ZSBpdHNlbGYgdGhlcmUsIHNvIG9ubHkgdGhl IHNhbWUgdmFsdWUgZ2l2ZXMgdGhlDQorICAgc2FtZSBlbnRyaWVzLiAgSWYgdGhlIGZ1bmN0aW9u IGNhbm5vdCBiZSBzdXJlLCBpdCBtdXN0IHJldHVybiA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4s IHdoaWNoDQorICAgaXMgYWx3YXlzIGNvcnJlY3QuICBJdCBtdXN0IG5vdCBtb2RpZnkgdGhlIGlu ZGV4LCBhbmQgaXQgbWF5IGJlIGNhbGxlZCBmb3INCisgICBhbiBpbmRleCB0aGF0IGlzIG5vdCB5 ZXQgdmFsaWQuICBDb2x1bW5zIG9mIHVuaXF1ZSBpbmRleGVzIHRoYXQgY2FuIGJlDQorICAgcmVm ZXJlbmNlZCBieSBhIGZvcmVpZ24ga2V5LCBhbmQgb2YgdGhlIHJlcGxpY2EgaWRlbnRpdHkgaW5k ZXgsIGFyZSBub3QNCisgICBjb21wYXJlZCB0aGlzIHdheSwgYW5kIHRoZSBmdW5jdGlvbiBpcyBu b3QgY2FsbGVkIGZvciB0aGUgaW5kZXggb2YgYW4NCisgICBleGNsdXNpb24gY29uc3RyYWludCwg d2hvc2UgY2hlY2sgbmVlZHMgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLiAgSWYgPHN0cnVjdGZpZWxk PmFtY29tcGFyZWRhdHVtczwvc3RydWN0ZmllbGQ+IGlzDQorICAgPGxpdGVyYWw+TlVMTDwvbGl0 ZXJhbD4sIGEgY2hhbmdlIHRvIGEgY29sdW1uIHRoYXQgdGhlIGluZGV4IHN0b3Jlcw0KKyAgIGFs d2F5cyBuZWVkcyBuZXcgaW5kZXggZW50cmllcy4NCisgIDwvcGFyYT4NCisNCiAgPC9zZWN0MT4N CiANCiAgPHNlY3QxIGlkPSJpbmRleC1zY2FubmluZyI+DQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3N0b3JhZ2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwNCmluZGV4IDQ1MjNk MDczYTE5Li4xNWI1ZGFlMTc1MiAxMDA2NDQNCi0tLSBhL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNn bWwNCisrKyBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwNCkBAIC0xMTIwLDcgKzExMjAsMTMg QEAgZGF0YS4gRW1wdHkgaW4gb3JkaW5hcnkgdGFibGVzLjwvZW50cnk+DQogICAgICA8bGl0ZXJh bD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSBjaGFuZ2VzIG9ubHkgcGFydHMgb2YgdGhlIGNvbHVtbiB0 aGF0IHRoZQ0KICAgICAgaW5kZXhlcyBkbyBub3QgcmVhZCwgZm9yIGV4YW1wbGUgdGhyb3VnaCA8 ZnVuY3Rpb24+anNvbmJfc2V0PC9mdW5jdGlvbj4NCiAgICAgIG9yIGFycmF5IHN1YnNjcmlwdGlu ZywgdGhpcyBpcyBrbm93biB3aXRob3V0IGV2YWx1YXRpbmcgdGhlIGluZGV4ZXMnDQotICAgICBl eHByZXNzaW9ucy4NCisgICAgIGV4cHJlc3Npb25zLiAgQSBjb2x1bW4gdGhhdCBpbmRleGVzIHN0 b3JlIGRpcmVjdGx5IGlzIHRyZWF0ZWQgdGhlIHNhbWUNCisgICAgIHdheSBpZiB0aGUgYWNjZXNz IG1ldGhvZCBvZiBlYWNoIHN1Y2ggaW5kZXggY2FuIHRlbGwgd2hldGhlciB0aGUgbmV3DQorICAg ICB2YWx1ZSBnaXZlcyB0aGUgc2FtZSBpbmRleCBlbnRyaWVzIGFzIHRoZSBvbGQgb25lOyBhbW9u ZyB0aGUgYnVpbHQtaW4NCisgICAgIG1ldGhvZHMsIHRoYXQgZGVwZW5kcyBvbiB0aGUgbWV0aG9k IGFuZCBvbiB0aGUgY2hhbmdlIChzZWUNCisgICAgIDx4cmVmIGxpbmtlbmQ9ImluZGV4YW0iLz4p LiAgVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGUgY29sdW1ucyBvZg0KKyAgICAgdW5pcXVlIGlu ZGV4ZXMgdGhhdCBhIGZvcmVpZ24ga2V5IGNhbiByZWZlcmVuY2UsIG9mIHRoZSByZXBsaWNhDQor ICAgICBpZGVudGl0eSBpbmRleCwgb3Igb2YgZXhjbHVzaW9uIGNvbnN0cmFpbnRzLg0KICAgICAg PC9wYXJhPg0KICAgIDwvbGlzdGl0ZW0+DQogICAgPGxpc3RpdGVtPg0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYw0KaW5kZXggNTA1OWRhOGRjZTcuLjgzZGE0ODUwZGRjIDEwMDY0NA0KLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jDQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMNCkBAIC0zMDcsNiArMzA3LDcgQEAgYnJpbmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykN CiAJCS5hbXBhcmFsbGVscmVzY2FuID0gTlVMTCwNCiAJCS5hbXRyYW5zbGF0ZXN0cmF0ZWd5ID0g TlVMTCwNCiAJCS5hbXRyYW5zbGF0ZWNtcHR5cGUgPSBOVUxMLA0KKwkJLmFtY29tcGFyZWRhdHVt cyA9IE5VTEwsDQogCX07DQogDQogCVBHX1JFVFVSTl9QT0lOVEVSKCZhbXJvdXRpbmUpOw0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW51dGlsLmMNCmluZGV4IGU3Y2JhODFkNDc3Li5iNTdjMDE2YWVhMiAxMDA2 NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jDQorKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYw0KQEAgLTkwLDYgKzkwLDcgQEAgZ2luaGFuZGxlcihQ R19GVU5DVElPTl9BUkdTKQ0KIAkJLmFtZXN0aW1hdGVwYXJhbGxlbHNjYW4gPSBOVUxMLA0KIAkJ LmFtaW5pdHBhcmFsbGVsc2NhbiA9IE5VTEwsDQogCQkuYW1wYXJhbGxlbHJlc2NhbiA9IE5VTEws DQorCQkuYW1jb21wYXJlZGF0dW1zID0gTlVMTCwNCiAJfTsNCiANCiAJUEdfUkVUVVJOX1BPSU5U RVIoJmFtcm91dGluZSk7DQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jDQppbmRleCA4NTY1ZTIyNWJlNy4u MGQ1NjI0NjY4MjEgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMN CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYw0KQEAgLTExMiw2ICsxMTIsNyBA QCBnaXN0aGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQ0KIAkJLmFtcGFyYWxsZWxyZXNjYW4gPSBO VUxMLA0KIAkJLmFtdHJhbnNsYXRlc3RyYXRlZ3kgPSBOVUxMLA0KIAkJLmFtdHJhbnNsYXRlY21w dHlwZSA9IGdpc3R0cmFuc2xhdGVjbXB0eXBlLA0KKwkJLmFtY29tcGFyZWRhdHVtcyA9IE5VTEws DQogCX07DQogDQogCVBHX1JFVFVSTl9QT0lOVEVSKCZhbXJvdXRpbmUpOw0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNo L2hhc2guYw0KaW5kZXggNjM4NDZjMTA4NDAuLjBiMDVjNDYwNmUxIDEwMDY0NA0KLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jDQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNoLmMNCkBAIC0xMjMsNiArMTIzLDcgQEAgaGFzaGhhbmRsZXIoUEdfRlVOQ1RJT05fQVJH UykNCiAJCS5hbXBhcmFsbGVscmVzY2FuID0gTlVMTCwNCiAJCS5hbXRyYW5zbGF0ZXN0cmF0ZWd5 ID0gaGFzaHRyYW5zbGF0ZXN0cmF0ZWd5LA0KIAkJLmFtdHJhbnNsYXRlY21wdHlwZSA9IGhhc2h0 cmFuc2xhdGVjbXB0eXBlLA0KKwkJLmFtY29tcGFyZWRhdHVtcyA9IE5VTEwsDQogCX07DQogDQog CVBHX1JFVFVSTl9QT0lOVEVSKCZhbXJvdXRpbmUpOw0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUu SE9UDQppbmRleCAwMzc3ZjUwODA1NS4uNWMyZGZjMjdmNTggMTAwNjQ0DQotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UDQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UDQpAQCAtNDEsMTAgKzQxLDE1IEBAIEEgY29sdW1uIHRoYXQgaW5kZXhlcyBy ZWZlcmVuY2Ugb25seSB0aHJvdWdoIGV4cHJlc3Npb25zLCBvciBvbmx5IGFzDQogcGFydGlhbCBp bmRleGVzLCBtYXkgY2hhbmdlIGlmIHRoZSB1cGRhdGUgY2hhbmdlcyBub3RoaW5nIHRob3NlIGlu ZGV4ZXMNCiBzdG9yZTogbm90IHRoZSB2YWx1ZSBvZiBhbnkgb2YgdGhlaXIgZXhwcmVzc2lvbnMg b3IgY29sdW1ucywgYXMgY29tcGFyZWQNCiBieXRlIGZvciBieXRlLCBhbmQgbm90IHdoZXRoZXIg dGhlIHR1cGxlIHNhdGlzZmllcyB0aGVpciBwcmVkaWNhdGVzLg0KLVRoZSBleGVjdXRvciB3b3Jr cyB0aGF0IG91dCBiZWZvcmUgY2FsbGluZyB0aGUgdGFibGUgQU0sIGFuZCBwYXNzZXMgb24NCi1v bmx5IHRoZSBpbmRleGVkIGNvbHVtbnMgd2hvc2UgY2hhbmdlIG1hdHRlcnMuICBBbiBpbmRleCB0 aGF0IGlzIG5vdCB5ZXQNCi1yZWFkeSBmb3IgaW5zZXJ0cywgb3Igd2hvc2UgYnVpbGQgZmFpbGVk LCBjb3VudHMgYXMgY2hhbmdlZCB3aGVuZXZlciBhDQotY29sdW1uIGl0IHJlZmVyZW5jZXMgZG9l czsgc2VlICJDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIiBiZWxvdy4NCitUaGUgc2FtZSBob2xk cyBmb3IgYSBjb2x1bW4gdGhhdCBpbmRleGVzIGFsc28gc3RvcmUgZGlyZWN0bHksIGlmIGV2ZXJ5 DQoraW5kZXggdGhhdCBkb2VzIHNvIGhhcyBhbiBhY2Nlc3MgbWV0aG9kIHRoYXQgY2FuIHRlbGws IGZyb20gdGhlIG9sZCBhbmQNCituZXcgdmFsdWVzLCB0aGF0IGl0IHdvdWxkIHN0b3JlIHRoZSBz YW1lIGVudHJpZXMgKGFtY29tcGFyZWRhdHVtcyksIGFuZA0KK3RoZSBjb2x1bW4gaXMgaW4gbm8g Y2FuZGlkYXRlIGtleSwgcmVwbGljYSBpZGVudGl0eSBvciBleGNsdXNpb24NCitjb25zdHJhaW50 LiAgVGhlIGV4ZWN1dG9yIHdvcmtzIHRoYXQgb3V0IGJlZm9yZSBjYWxsaW5nIHRoZSB0YWJsZSBB TSwNCithbmQgcGFzc2VzIG9uIG9ubHkgdGhlIGluZGV4ZWQgY29sdW1ucyB3aG9zZSBjaGFuZ2Ug bWF0dGVycy4gIEFuIGluZGV4DQordGhhdCBpcyBub3QgeWV0IHJlYWR5IGZvciBpbnNlcnRzLCBv ciB3aG9zZSBidWlsZCBmYWlsZWQsIGNvdW50cyBhcw0KK2NoYW5nZWQgd2hlbmV2ZXIgYSBjb2x1 bW4gaXQgcmVmZXJlbmNlcyBkb2VzOyBzZWUgIkNSRUFURSBJTkRFWA0KK0NPTkNVUlJFTlRMWSIg YmVsb3cuDQogDQogU2Vjb25kLCB3aGVyZSB0aGUgbW9kaWZpZWQgY29sdW1ucyBhcmUgb25seSB1 c2VkIGluIGluZGV4ZXMgdGhhdCBkbyBub3QNCiBjb250YWluIHR1cGxlIElEcywgYnV0IG1haW50 YWluIHN1bW1hcmllcyBvZiB0aGUgaW5kZXhlZCBkYXRhIGJ5IGJsb2NrLg0KQEAgLTUwNiw3ICs1 MTEsOCBAQCBJbmRleGVkIGNvbHVtbg0KIAlhY3R1YWxseSBiZSBzdG9yZWQgaW4gdGhlIGluZGV4 IC0tLSBpdCBjb3VsZCBiZSB1c2VkIGluIGENCiAJZnVuY3Rpb25hbCBpbmRleCdzIGV4cHJlc3Np b24sIG9yIHVzZWQgaW4gYSBwYXJ0aWFsIGluZGV4DQogCXByZWRpY2F0ZS4gIEEgY2hhbmdlIHRv IGEgY29sdW1uIHRoYXQgaW5kZXhlcyB1c2Ugb25seSBpbiB0aGVzZQ0KLQl3YXlzIGJsb2NrcyBI T1Qgb25seSBpZiBpdCBjaGFuZ2VzIHdoYXQgdGhvc2UgaW5kZXhlcyBzdG9yZS4NCisJd2F5cywg b3Igd2hvc2UgaW5kZXhlcyBjYW4gY29tcGFyZSBlbnRyaWVzLCBibG9ja3MgSE9UIG9ubHkgaWYg aXQNCisJY2hhbmdlcyB3aGF0IHRob3NlIGluZGV4ZXMgc3RvcmUuDQogDQogUmVkaXJlY3Rpbmcg bGluZSBwb2ludGVyDQogDQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYw0KaW5kZXggZTBjZDFhYjc2 MTIuLmEwZTJkOTA0YmViIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMNCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jDQpAQCAtMzM2Miw2 ICszMzYyLDEzIEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogCWNoZWNrX2F0dHJzID0gUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQp Ow0KIAluYXJyb3dhYmxlX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sDQogCQkJCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OKTsNCisJew0K KwkJQml0bWFwc2V0ICAqY21wX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVs YXRpb24sDQorCQkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9DT01QQVJBQkxFKTsN CisNCisJCW5hcnJvd2FibGVfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMobmFycm93YWJsZV9hdHRy cywgY21wX2F0dHJzKTsNCisJCWJtc19mcmVlKGNtcF9hdHRycyk7DQorCX0NCiAjZW5kaWYNCiAN CiAJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKG90aWQpOw0KQEAgLTM4MDEsMTAg KzM4MDgsMTEgQEAgbDI6DQogCSAqIGF0dHJpYnV0ZSBjb21wYXJpbmcgdGhlIHR3byB0dXBsZXMg aGVyZSBmaW5kcyBjaGFuZ2VkIGlzIGluIHRoZQ0KIAkgKiBjYWxsZXIncyBzZXQsIHNvIHRoYXQg YSBjYWxsZXIgdGhhdCBtaXNzZXMgYSBjaGFuZ2UsIG9yIGNvbXBhcmVzIHRoZQ0KIAkgKiB3cm9u ZyB0dXBsZXMsIGlzIGNhdWdodC4gIFRoZSBjYWxsZXIgbWF5IGxlYXZlIG91dCBhbiBhdHRyaWJ1 dGUgdGhhdA0KLQkgKiBpbmRleGVzIHVzZSBvbmx5IHRocm91Z2ggZXhwcmVzc2lvbnMgb3IgYXMg cGFydGlhbCBpbmRleGVzLCBoYXZpbmcNCi0JICogZm91bmQgdGhhdCBubyBpbmRleCdzIGVudHJ5 IGNoYW5nZXMgKHNlZSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpKSwNCi0JICogYW5kIG1h eSByZXBvcnQgbW9yZTogY29tcGFyaW5nIHNsb3RzLCBpdCBjYW5ub3QgYWx3YXlzIHRlbGwgdGhh dCB0d28NCi0JICogdmFsdWVzIHdpbGwgYmUgc3RvcmVkIGFsaWtlLg0KKwkgKiBpbmRleGVzIHVz ZSBvbmx5IHRocm91Z2ggZXhwcmVzc2lvbnMgb3IgYXMgcGFydGlhbCBpbmRleGVzLCBvciBvbmx5 IGluDQorCSAqIGluZGV4ZXMgdGhhdCBjYW4gY29tcGFyZSBlbnRyaWVzLCBoYXZpbmcgZm91bmQg dGhhdCBubyBpbmRleCdzIGVudHJ5DQorCSAqIGNoYW5nZXMgKHNlZSBFeGVjVXBkYXRlTW9kaWZp ZWRJZHhBdHRycygpKSwgYW5kIG1heSByZXBvcnQgbW9yZToNCisJICogY29tcGFyaW5nIHNsb3Rz LCBpdCBjYW5ub3QgYWx3YXlzIHRlbGwgdGhhdCB0d28gdmFsdWVzIHdpbGwgYmUgc3RvcmVkDQor CSAqIGFsaWtlLg0KIAkgKi8NCiAJew0KIAkJQml0bWFwc2V0ICAqY2hhbmdlZCA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBjaGVja19hdHRycywNCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRyZWUuYw0KaW5kZXggMGFiZGQ3YjQ5ZjUuLjc1NGRkYWVlNzFkIDEwMDY0NA0KLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYw0KKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRyZWUuYw0KQEAgLTE3MSw2ICsxNzEsNyBAQCBidGhhbmRsZXIoUEdf RlVOQ1RJT05fQVJHUykNCiAJCS5hbXBhcmFsbGVscmVzY2FuID0gYnRwYXJhbGxlbHJlc2NhbiwN CiAJCS5hbXRyYW5zbGF0ZXN0cmF0ZWd5ID0gYnR0cmFuc2xhdGVzdHJhdGVneSwNCiAJCS5hbXRy YW5zbGF0ZWNtcHR5cGUgPSBidHRyYW5zbGF0ZWNtcHR5cGUsDQorCQkuYW1jb21wYXJlZGF0dW1z ID0gTlVMTCwNCiAJfTsNCiANCiAJUEdfUkVUVVJOX1BPSU5URVIoJmFtcm91dGluZSk7DQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jDQppbmRleCBmMmVlMzMzZjYwZC4uOTg1YTk0NzRj OWMgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMNCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYw0KQEAgLTk3LDYgKzk3LDcg QEAgc3BnaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQ0KIAkJLmFtcGFyYWxsZWxyZXNjYW4gPSBO VUxMLA0KIAkJLmFtdHJhbnNsYXRlc3RyYXRlZ3kgPSBOVUxMLA0KIAkJLmFtdHJhbnNsYXRlY21w dHlwZSA9IE5VTEwsDQorCQkuYW1jb21wYXJlZGF0dW1zID0gTlVMTCwNCiAJfTsNCiANCiAJUEdf UkVUVVJOX1BPSU5URVIoJmFtcm91dGluZSk7DQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYw0KaW5kZXggMjViZmI5YmNlNTUuLjQwNTRmNmRhMGRmIDEwMDY0NA0KLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMNCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jDQpAQCAtNTQsNiArNTQsOCBAQA0KIA0KICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIg0KIA0KKyNpbmNsdWRlICJhY2Nlc3MvYW1hcGkuaCINCisjaW5jbHVkZSAi YWNjZXNzL2dlbmFtLmgiDQogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCINCiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCINCiAjaW5jbHVkZSAiYWNjZXNzL3R1cGNvbnZlcnQuaCIN CkBAIC0xOTgsNDEgKzIwMCw1OCBAQCBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNNZXJnZU5v dE1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LA0KIAkJCQkJCQkJCQkgICBib29s IGNhblNldFRhZyk7DQogDQogLyoNCi0gKiBEbyB0aGUgb2xkIGFuZCBuZXcgaW5kZXggZGF0dW1z IGRpZmZlciwgYnl0ZSBmb3IgYnl0ZT8gIENvbXBhcmUgZWFjaA0KLSAqIGNvbHVtbiBhcyB0aGUg dHlwZSBGb3JtSW5kZXhEYXR1bSgpIHByb2R1Y2VkIGl0IGluOiB0aGUgdGFibGUgY29sdW1uJ3MN Ci0gKiB0eXBlIG9yIHRoZSBleHByZXNzaW9uJ3MsIHdoaWNoIG5lZWQgbm90IGJlIHRoZSB0eXBl IHRoZSBpbmRleCBzdG9yZXMuDQorICogRG8gdGhlIG9sZCBhbmQgbmV3IGluZGV4IGRhdHVtcyBk aWZmZXI/ICBDb21wYXJlIGVhY2ggY29sdW1uIGFzIHRoZSB0eXBlDQorICogRm9ybUluZGV4RGF0 dW0oKSBwcm9kdWNlZCBpdCBpbjogdGhlIHRhYmxlIGNvbHVtbidzIHR5cGUgb3IgdGhlDQorICog ZXhwcmVzc2lvbidzLCB3aGljaCBuZWVkIG5vdCBiZSB0aGUgdHlwZSB0aGUgaW5kZXggc3RvcmVz LiAgRGF0dW1zIHRoYXQNCisgKiBkaWZmZXIgYnl0ZSBmb3IgYnl0ZSBtYXkgc3RpbGwgZ2l2ZSB0 aGUgaW5kZXggdGhlIHNhbWUgZW50cmllczsgaWYgaXRzDQorICogYWNjZXNzIG1ldGhvZCBjYW4g dGVsbCAoYW1jb21wYXJlZGF0dW1zKSwgYXNrIGl0LCBidXQgbm90IGZvciBhIGNvbHVtbiB0aGUN CisgKiBpbmRleCBjYW4gcmV0dXJuIGluIGluZGV4LW9ubHkgc2NhbnMsIHdoZXJlIG9ubHkgdGhl IHNhbWUgdmFsdWUgd2lsbCBkby4NCisgKg0KKyAqIE5vdCBmb3IgYW4gZXhjbHVzaW9uIGNvbnN0 cmFpbnQncyBpbmRleCwgdGhvdWdoOiB0aGUgY29uc3RyYWludCBpcyBjaGVja2VkDQorICogd2hl biBhbiBlbnRyeSBpcyBpbnNlcnRlZCwgd2l0aCBpdHMgb3BlcmF0b3JzLCBhZ2FpbnN0IHRoZSB2 YWx1ZXMsIGFuZCB0d28NCisgKiB2YWx1ZXMgdGhhdCBnaXZlIHRoZSBzYW1lIGVudHJpZXMgbmVl ZCBub3QgaGF2ZSB0aGUgc2FtZSBjb25mbGljdHMuICAoQQ0KKyAqIHZhbHVlIHRoYXQgaXMgdGhl IHNhbWUgYnl0ZSBmb3IgYnl0ZSBoYXMsIHNvIHRoZSBjaGVjayBpcyBub3QgbmVlZGVkLikNCiAg Ki8NCiBzdGF0aWMgYm9vbA0KLUluZGV4RGF0dW1zRGlmZmVyKFJlbGF0aW9uIGhlYXBSZWwsIElu ZGV4SW5mbyAqaW5kZXhJbmZvLA0KK0luZGV4RGF0dW1zRGlmZmVyKFJlbGF0aW9uIGhlYXBSZWws IFJlbGF0aW9uIGluZGV4UmVsLCBJbmRleEluZm8gKmluZGV4SW5mbywNCiAJCQkJICBjb25zdCBE YXR1bSAqb2xkX3ZhbHVlcywgY29uc3QgYm9vbCAqb2xkX2lzbnVsbCwNCiAJCQkJICBjb25zdCBE YXR1bSAqbmV3X3ZhbHVlcywgY29uc3QgYm9vbCAqbmV3X2lzbnVsbCkNCiB7DQogCUxpc3RDZWxs ICAgKmV4cHIgPSBsaXN0X2hlYWQoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyk7DQorCWFtY29t cGFyZWRhdHVtc19mdW5jdGlvbiBjbXAgPSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGlzZXhjbHVz aW9uID8gTlVMTCA6DQorCQlpbmRleFJlbC0+cmRfaW5kYW0tPmFtY29tcGFyZWRhdHVtczsNCiAN CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykN CiAJew0KIAkJQXR0ck51bWJlcglhdHRudW0gPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJl cnNbaV07DQorCQlPaWQJCQl0eXBpZDsNCiAJCWludDE2CQl0eXBsZW47DQogCQlib29sCQl0eXBi eXZhbDsNCiANCiAJCWlmIChhdHRudW0gIT0gMCkNCiAJCXsNCi0JCQlDb21wYWN0QXR0cmlidXRl ICphdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cihSZWxhdGlvbkdldERlc2NyKGhlYXBSZWwpLA0K LQkJCQkJCQkJCQkJCQkJIGF0dG51bSAtIDEpOw0KKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9 IFR1cGxlRGVzY0F0dHIoUmVsYXRpb25HZXREZXNjcihoZWFwUmVsKSwNCisJCQkJCQkJCQkJCQkg IGF0dG51bSAtIDEpOw0KIA0KKwkJCXR5cGlkID0gYXR0LT5hdHR0eXBpZDsNCiAJCQl0eXBsZW4g PSBhdHQtPmF0dGxlbjsNCiAJCQl0eXBieXZhbCA9IGF0dC0+YXR0Ynl2YWw7DQogCQl9DQogCQll bHNlDQogCQl7DQotCQkJZ2V0X3R5cGxlbmJ5dmFsKGV4cHJUeXBlKGxmaXJzdChleHByKSksICZ0 eXBsZW4sICZ0eXBieXZhbCk7DQorCQkJdHlwaWQgPSBleHByVHlwZShsZmlyc3QoZXhwcikpOw0K KwkJCWdldF90eXBsZW5ieXZhbCh0eXBpZCwgJnR5cGxlbiwgJnR5cGJ5dmFsKTsNCiAJCQlleHBy ID0gbG5leHQoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucywgZXhwcik7DQogCQl9DQogDQogCQlp ZiAob2xkX2lzbnVsbFtpXSAhPSBuZXdfaXNudWxsW2ldKQ0KIAkJCXJldHVybiB0cnVlOw0KLQkJ aWYgKCFvbGRfaXNudWxsW2ldICYmDQotCQkJIWRhdHVtSXNFcXVhbChvbGRfdmFsdWVzW2ldLCBu ZXdfdmFsdWVzW2ldLCB0eXBieXZhbCwgdHlwbGVuKSkNCisJCWlmIChvbGRfaXNudWxsW2ldIHx8 DQorCQkJZGF0dW1Jc0VxdWFsKG9sZF92YWx1ZXNbaV0sIG5ld192YWx1ZXNbaV0sIHR5cGJ5dmFs LCB0eXBsZW4pKQ0KKwkJCWNvbnRpbnVlOw0KKwkJaWYgKGNtcCA9PSBOVUxMIHx8IGluZGV4X2Nh bl9yZXR1cm4oaW5kZXhSZWwsIGkgKyAxKSB8fA0KKwkJCSFjbXAoaW5kZXhSZWwsIGluZGV4SW5m bywgaSArIDEsIHR5cGlkLCB0eXBsZW4sIHR5cGJ5dmFsLA0KKwkJCQkgb2xkX3ZhbHVlc1tpXSwg bmV3X3ZhbHVlc1tpXSkpDQogCQkJcmV0dXJuIHRydWU7DQogCX0NCiAJcmV0dXJuIGZhbHNlOw0K QEAgLTI0OCw5ICsyNjcsOSBAQCBJbmRleERhdHVtc0RpZmZlcihSZWxhdGlvbiBoZWFwUmVsLCBJ bmRleEluZm8gKmluZGV4SW5mbywNCiAgKiBpdCBpbiB0aGUgcXVlcnkgY29udGV4dC4NCiAgKi8N CiBzdGF0aWMgYm9vbA0KLUluZGV4RW50cnlDaGFuZ2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sIEluZGV4SW5mbyAqaW5kZXhJbmZvLA0KLQkJCQkgIFR1cGxlVGFibGVTbG90ICpvbGRf dHRzLCBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cywNCi0JCQkJICBFU3RhdGUgKmVzdGF0ZSkNCitJ bmRleEVudHJ5Q2hhbmdlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBSZWxhdGlvbiBp bmRleFJlbCwNCisJCQkJICBJbmRleEluZm8gKmluZGV4SW5mbywgVHVwbGVUYWJsZVNsb3QgKm9s ZF90dHMsDQorCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMsIEVTdGF0ZSAqZXN0YXRlKQ0K IHsNCiAJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3Rh dGUpOw0KIAlUdXBsZVRhYmxlU2xvdCAqc2F2ZV9zY2FudHVwbGUgPSBlY29udGV4dC0+ZWN4dF9z Y2FudHVwbGU7DQpAQCAtMjk0LDE2ICszMTMsMTggQEAgSW5kZXhFbnRyeUNoYW5nZXMoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgSW5kZXhJbmZvICppbmRleEluZm8sDQogCUZvcm1JbmRl eERhdHVtKGluZGV4SW5mbywgbmV3X3R0cywgZXN0YXRlLCBuZXdfdmFsdWVzLCBuZXdfaXNudWxs KTsNCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2F2ZV9zY2FudHVwbGU7DQogDQotCXJl c3VsdCA9IEluZGV4RGF0dW1zRGlmZmVyKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywg aW5kZXhJbmZvLA0KLQkJCQkJCQkgICBvbGRfdmFsdWVzLCBvbGRfaXNudWxsLCBuZXdfdmFsdWVz LCBuZXdfaXNudWxsKTsNCisJcmVzdWx0ID0gSW5kZXhEYXR1bXNEaWZmZXIocmVzdWx0UmVsSW5m by0+cmlfUmVsYXRpb25EZXNjLCBpbmRleFJlbCwNCisJCQkJCQkJICAgaW5kZXhJbmZvLCBvbGRf dmFsdWVzLCBvbGRfaXNudWxsLA0KKwkJCQkJCQkgICBuZXdfdmFsdWVzLCBuZXdfaXNudWxsKTsN CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7DQogCXJldHVybiByZXN1bHQ7DQogfQ0K IA0KIC8qDQogICogUmV0dXJuIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpJ3RoIGluZGV4IHRoYXQg SU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTg0KLSAqIGNhbiBjb250YWluOiB0aG9zZSBpdCBy ZWZlcmVuY2VzIHRocm91Z2ggaXRzIGV4cHJlc3Npb25zLCBhbmQgZm9yIGENCi0gKiBwYXJ0aWFs IGluZGV4IGFsbCB0aG9zZSBpdCByZWZlcmVuY2VzLiAgQnVpbGRzIHRoZSBwZXItaW5kZXggY2Fj aGUgb24NCisgKiBvciBJTkRFWF9BVFRSX0JJVE1BUF9DT01QQVJBQkxFIGNhbiBjb250YWluOiB0 aG9zZSBpdCByZWZlcmVuY2VzIHRocm91Z2gNCisgKiBpdHMgZXhwcmVzc2lvbnMsIGFuZCBhbGwg dGhvc2UgaXQgcmVmZXJlbmNlcyBpZiBpdCBpcyBhIHBhcnRpYWwgaW5kZXggb3INCisgKiBpdHMg YWNjZXNzIG1ldGhvZCBjYW4gY29tcGFyZSBlbnRyaWVzLiAgQnVpbGRzIHRoZSBwZXItaW5kZXgg Y2FjaGUgb24NCiAgKiBmaXJzdCB1c2UuDQogICovDQogc3RhdGljIEJpdG1hcHNldCAqDQpAQCAt MzIxLDkgKzM0MiwxMiBAQCBJbmRleEV4cHJBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLCBpbnQgaSwgRVN0YXRlICplc3RhdGUpDQogCQkJQml0bWFwc2V0ICAqYXR0cnMgPSBOVUxM Ow0KIA0KIAkJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlpLT5paV9FeHByZXNzaW9ucywgMSwg JmF0dHJzKTsNCi0JCQlpZiAoaWktPmlpX1ByZWRpY2F0ZSAhPSBOSUwpDQorCQkJcHVsbF92YXJh dHRub3MoKE5vZGUgKikgaWktPmlpX1ByZWRpY2F0ZSwgMSwgJmF0dHJzKTsNCisJCQlpZiAoaWkt PmlpX1ByZWRpY2F0ZSAhPSBOSUwgfHwNCisJCQkJKHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVs YXRpb25EZXNjc1tqXSAhPSBOVUxMICYmDQorCQkJCSByZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJl bGF0aW9uRGVzY3Nbal0tPnJkX2luZGFtLT5hbWNvbXBhcmVkYXR1bXMgIT0gTlVMTCAmJg0KKwkJ CQkgIXJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25EZXNjc1tqXS0+cmRfaW5kZXgtPmlu ZGlzZXhjbHVzaW9uKSkNCiAJCQl7DQotCQkJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlpLT5p aV9QcmVkaWNhdGUsIDEsICZhdHRycyk7DQogCQkJCWZvciAoaW50IGsgPSAwOyBrIDwgaWktPmlp X051bUluZGV4QXR0cnM7IGsrKykNCiAJCQkJew0KIAkJCQkJaWYgKGlpLT5paV9JbmRleEF0dHJO dW1iZXJzW2tdICE9IDApDQpAQCAtMzc2LDcgKzQwMCw5IEBAIEluZGV4VW5hZmZlY3RlZChSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBpbnQgaSwgQml0bWFwc2V0ICptaW5lLA0KICNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQogCWlmIChwcm92ZW4pDQogCXsNCi0JCWlmIChJbmRleEVu dHJ5Q2hhbmdlcyhyZXN1bHRSZWxJbmZvLCBpbmRleEluZm8sIG9sZF90dHMsIG5ld190dHMsDQor CQlpZiAoSW5kZXhFbnRyeUNoYW5nZXMocmVzdWx0UmVsSW5mbywNCisJCQkJCQkJICByZXN1bHRS ZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0sDQorCQkJCQkJCSAgaW5kZXhJbmZvLCBv bGRfdHRzLCBuZXdfdHRzLA0KIAkJCQkJCQkgIGVzdGF0ZSkpDQogCQkJZWxvZyhFUlJPUiwgImlu ZGV4IFwiJXNcIiBwcm92ZW4gdW5hZmZlY3RlZCBieSBVUERBVEUsIGJ1dCBpdHMgZW50cnkgY2hh bmdlZCIsDQogCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZXN1bHRSZWxJbmZvLT5yaV9J bmRleFJlbGF0aW9uRGVzY3NbaV0pKTsNCkBAIC0zODcsNyArNDEzLDkgQEAgSW5kZXhVbmFmZmVj dGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGludCBpLCBCaXRtYXBzZXQgKm1pbmUs DQogCQlyZXR1cm4gdHJ1ZTsNCiAjZW5kaWYNCiANCi0JcmV0dXJuICFJbmRleEVudHJ5Q2hhbmdl cyhyZXN1bHRSZWxJbmZvLCBpbmRleEluZm8sIG9sZF90dHMsIG5ld190dHMsDQorCXJldHVybiAh SW5kZXhFbnRyeUNoYW5nZXMocmVzdWx0UmVsSW5mbywNCisJCQkJCQkJICByZXN1bHRSZWxJbmZv LT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0sDQorCQkJCQkJCSAgaW5kZXhJbmZvLCBvbGRfdHRz LCBuZXdfdHRzLA0KIAkJCQkJCQkgIGVzdGF0ZSk7DQogfQ0KIA0KQEAgLTQyMyw2ICs0NTEsMTIg QEAgSW5kZXhVbmFmZmVjdGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGludCBpLCBC aXRtYXBzZXQgKm1pbmUsDQogICogdXBkYXRlIGFzIGlmIGl0IGhhZCBub3QgY2hhbmdlZCB0aGUg YXR0cmlidXRlOiBubyBpbmRleCBuZWVkcyBhIG5ldw0KICAqIGVudHJ5IGJlY2F1c2Ugb2YgaXQu DQogICoNCisgKiBBbiBhdHRyaWJ1dGUgdGhhdCBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBhbHNv IHJlZmVyZW5jZSBkaXJlY3RseSwgYXMga2V5DQorICogb3IgaW5jbHVkZWQgY29sdW1ucywgaXMg YSBjYW5kaWRhdGUgdG9vIGlmIGFsbCBvZiB0aG9zZSBpbmRleGVzJyBhY2Nlc3MNCisgKiBtZXRo b2RzIGNhbiBjb21wYXJlIGVudHJpZXMgKElOREVYX0FUVFJfQklUTUFQX0NPTVBBUkFCTEUpOiBz dWNoIGFuIGluZGV4DQorICogaXMgdW5hZmZlY3RlZCB3aGVuLCBjb2x1bW4gYnkgY29sdW1uLCBp dHMgZGF0dW1zIGFyZSBlcXVhbCBvciBpdHMgYWNjZXNzDQorICogbWV0aG9kJ3MgYW1jb21wYXJl ZGF0dW1zIHNheXMgdGhleSBnaXZlIHRoZSBzYW1lIGVudHJpZXMuDQorICoNCiAgKiBBbiBpbmRl eCB0aGF0IGlzIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyBvciBub3QgdmFsaWQgY291bnRzIGFzIGFm ZmVjdGVkIGJ5DQogICogYW55IGNoYW5nZSB0byBhbiBhdHRyaWJ1dGUgaXQgcmVmZXJlbmNlcywg d2l0aG91dCBldmFsdWF0aW5nIGFueXRoaW5nLg0KICAqIFN1Y2ggYW4gaW5kZXggaXMgYmVpbmcg YnVpbHQsIG9yIGl0cyBidWlsZCBmYWlsZWQsIHNvIHRoZSBvbGQgcm93IG1heSBiZQ0KQEAgLTQz MCw5ICs0NjQsMTAgQEAgSW5kZXhVbmFmZmVjdGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sIGludCBpLCBCaXRtYXBzZXQgKm1pbmUsDQogICogd291bGQgbWFrZSB0aGUgVVBEQVRFIGZh aWwuICBJdCBzdGlsbCBjb25zdHJhaW5zIEhPVCwgYXMgUkVBRE1FLkhPVA0KICAqIHJlcXVpcmVz Lg0KICAqDQotICogTmFycm93aW5nIG5ldmVyIHJlbW92ZXMgYW4gYXR0cmlidXRlIG9mIGEga2V5 IG9yIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXgsDQotICogYXMgdGhvc2UgaGF2ZSBuZWl0aGVyIGV4 cHJlc3Npb25zIG5vciBwcmVkaWNhdGVzLCBzbyB0aGUgdGFibGUgQU0gbWF5DQotICogYWxzbyB0 YWtlIGl0cyBsb2NrIG1vZGUgYW5kIHJlcGxpY2EgaWRlbnRpdHkgZGVjaXNpb25zIGZyb20gdGhl IHJlc3VsdC4NCisgKiBOYXJyb3dpbmcgbmV2ZXIgcmVtb3ZlcyBhbiBhdHRyaWJ1dGUgb2YgYSBr ZXkgb3IgcmVwbGljYSBpZGVudGl0eSBpbmRleDoNCisgKiB0aG9zZSBoYXZlIG5laXRoZXIgZXhw cmVzc2lvbnMgbm9yIHByZWRpY2F0ZXMsIGFuZCB0aGVpciBjb2x1bW5zIGFyZSBsZWZ0DQorICog b3V0IG9mIElOREVYX0FUVFJfQklUTUFQX0NPTVBBUkFCTEUuICBTbyB0aGUgdGFibGUgQU0gbWF5 IGFsc28gdGFrZSBpdHMNCisgKiBsb2NrIG1vZGUgYW5kIHJlcGxpY2EgaWRlbnRpdHkgZGVjaXNp b25zIGZyb20gdGhlIHJlc3VsdC4NCiAgKi8NCiBCaXRtYXBzZXQgKg0KIEV4ZWNVcGRhdGVNb2Rp ZmllZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sDQpAQCAtNDYxLDYgKzQ5 NiwxMyBAQCBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvLA0KIAkgKi8NCiAJZXhwcmF0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAo cmVsYXRpb24sDQogCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04pOw0K Kwl7DQorCQlCaXRtYXBzZXQgICpjbXBhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLA0KKwkJCQkJCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9DT01QQVJBQkxF KTsNCisNCisJCWV4cHJhdHRycyA9IGJtc19hZGRfbWVtYmVycyhleHByYXR0cnMsIGNtcGF0dHJz KTsNCisJCWJtc19mcmVlKGNtcGF0dHJzKTsNCisJfQ0KIAljYW5kaWRhdGVzID0gYm1zX2ludGVy c2VjdChhdHRycywgZXhwcmF0dHJzKTsNCiAJaWYgKGJtc19pc19lbXB0eShjYW5kaWRhdGVzKSkN CiAJew0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jDQppbmRleCBjMDk0MTE4MmI5MS4uZjkz YzQ1NmM4NmMgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j DQorKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jDQpAQCAtMzAsNiArMzAs NyBAQA0KICNpbmNsdWRlIDxmY250bC5oPg0KICNpbmNsdWRlIDx1bmlzdGQuaD4NCiANCisjaW5j bHVkZSAiYWNjZXNzL2dlbmFtLmgiDQogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIN CiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIg0KICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxs ZWwuaCINCkBAIC0yNDc5LDYgKzI0ODAsNyBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxh dGlvbiByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQ0KIAlibXNfZnJlZShyZWxhdGlv bi0+cmRfc3VtbWFyaXplZGF0dHIpOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmF0dHIpOw0KKwlibXNfZnJlZShyZWxh dGlvbi0+cmRfY21wYXR0cik7DQogCWlmIChyZWxhdGlvbi0+cmRfcHViZGVzYykNCiAJCXBmcmVl KHJlbGF0aW9uLT5yZF9wdWJkZXNjKTsNCiAJaWYgKHJlbGF0aW9uLT5yZF9vcHRpb25zKQ0KQEAg LTUzMzEsNiArNTMzMywxMSBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJl bGF0aW9uKQ0KICAqCUlOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04JQ29sdW1ucyB0aGF0IG5v bi1zdW1tYXJpemluZyBpbmRleGVzDQogICoJCQkJCQkJCQlyZWZlcmVuY2Ugb25seSB0aHJvdWdo IGV4cHJlc3Npb25zIG9yDQogICoJCQkJCQkJCQlhcyBwYXJ0aWFsIGluZGV4ZXMNCisgKglJTkRF WF9BVFRSX0JJVE1BUF9DT01QQVJBQkxFCUNvbHVtbnMgdGhhdCBub24tc3VtbWFyaXppbmcgaW5k ZXhlcw0KKyAqCQkJCQkJCQkJcmVmZXJlbmNlIGRpcmVjdGx5IG9ubHkgaWYgdGhlaXINCisgKgkJ CQkJCQkJCWFjY2VzcyBtZXRob2QgY2FuIGNvbXBhcmUgZW50cmllcw0KKyAqCQkJCQkJCQkJKGFt Y29tcGFyZWRhdHVtcyksIGxlc3Mga2V5IGFuZCByZXBsaWNhDQorICoJCQkJCQkJCQlpZGVudGl0 eSBjb2x1bW5zDQogICoNCiAgKiBBdHRyaWJ1dGUgbnVtYmVycyBhcmUgb2Zmc2V0IGJ5IEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgc28gdGhhdA0KICAqIHdlIGNhbiBpbmNsdWRl IHN5c3RlbSBhdHRyaWJ1dGVzIChlLmcuLCBPSUQpIGluIHRoZSBiaXRtYXAgcmVwcmVzZW50YXRp b24uDQpAQCAtNTM1OCw2ICs1MzY1LDkgQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVs YXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpDQogCUJpdG1hcHNl dCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyByZWZlcmVuY2VkIGJ5IGFueSBpbmRleCAqLw0K IAlCaXRtYXBzZXQgICpleHByYXR0cnM7CQkvKiBjb2x1bW5zIG9mIGV4cHJlc3Npb24gb3IgcGFy dGlhbA0KIAkJCQkJCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgKi8NCisJQml0bWFwc2V0 ICAqY21wYXR0cnM7CQkvKiBwbGFpbiBjb2x1bW5zIG9mIGluZGV4ZXMgd2hvc2UgQU0gY2FuDQor CQkJCQkJCQkgKiBjb21wYXJlIGVudHJpZXMgKGFtY29tcGFyZWRhdHVtcykgKi8NCisJQml0bWFw c2V0ICAqbm9jbXBhdHRyczsJCS8qIHBsYWluIGNvbHVtbnMgb2YgaW5kZXhlcyB3aG9zZSBBTSBj YW5ub3QgKi8NCiAJQml0bWFwc2V0ICAqcGxhaW5hdHRyczsJCS8qIGNvbHVtbnMgb2Ygb3RoZXIg bm9uLXN1bW1hcml6aW5nIGluZGV4ZXMsDQogCQkJCQkJCQkgKiBhbmQgcGxhaW4gY29sdW1ucyBv ZiBleHByZXNzaW9uIGluZGV4ZXMgKi8NCiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0Ow0KQEAgLTUz ODYsNiArNTM5Niw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0 aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAkJCQlyZXR1cm4gYm1zX2NvcHko cmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsNCiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0VY UFJFU1NJT046DQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfZXhwcmF0dHIpOw0K KwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfQ09NUEFSQUJMRToNCisJCQkJcmV0dXJuIGJtc19j b3B5KHJlbGF0aW9uLT5yZF9jbXBhdHRyKTsNCiAJCQlkZWZhdWx0Og0KIAkJCQllbG9nKEVSUk9S LCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsNCiAJCX0NCkBAIC01NDMxLDYgKzU0 NDMsOCBAQCByZXN0YXJ0Og0KIAlob3RibG9ja2luZ2F0dHJzID0gTlVMTDsNCiAJc3VtbWFyaXpl ZGF0dHJzID0gTlVMTDsNCiAJZXhwcmF0dHJzID0gTlVMTDsNCisJY21wYXR0cnMgPSBOVUxMOw0K Kwlub2NtcGF0dHJzID0gTlVMTDsNCiAJcGxhaW5hdHRycyA9IE5VTEw7DQogCWZvcmVhY2gobCwg aW5kZXhvaWRsaXN0KQ0KIAl7DQpAQCAtNTUyMyw2ICs1NTM3LDE0IEBAIHJlc3RhcnQ6DQogCQkJ CQllbHNlDQogCQkJCQkJcGxhaW5hdHRycyA9IGJtc19hZGRfbWVtYmVyKHBsYWluYXR0cnMsDQog CQkJCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVy KTsNCisJCQkJCWlmIChpbmRleERlc2MtPnJkX2luZGFtLT5hbWNvbXBhcmVkYXR1bXMgIT0gTlVM TCAmJg0KKwkJCQkJCSFpbmRleERlc2MtPnJkX2luZGV4LT5pbmRpc2V4Y2x1c2lvbiAmJg0KKwkJ CQkJCSFpbmRleF9jYW5fcmV0dXJuKGluZGV4RGVzYywgaSArIDEpKQ0KKwkJCQkJCWNtcGF0dHJz ID0gYm1zX2FkZF9tZW1iZXIoY21wYXR0cnMsDQorCQkJCQkJCQkJCQkJICBhdHRybnVtIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7DQorCQkJCQllbHNlDQorCQkJCQkJbm9j bXBhdHRycyA9IGJtc19hZGRfbWVtYmVyKG5vY21wYXR0cnMsDQorCQkJCQkJCQkJCQkJCWF0dHJu dW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsNCiAJCQkJfQ0KIA0KIAkJ CQlpZiAoaXNLZXkgJiYgaSA8IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZG5rZXlhdHRzKQ0KQEAg LTU1ODAsNiArNTYwMiw4IEBAIHJlc3RhcnQ6DQogCQlibXNfZnJlZShob3RibG9ja2luZ2F0dHJz KTsNCiAJCWJtc19mcmVlKHN1bW1hcml6ZWRhdHRycyk7DQogCQlibXNfZnJlZShleHByYXR0cnMp Ow0KKwkJYm1zX2ZyZWUoY21wYXR0cnMpOw0KKwkJYm1zX2ZyZWUobm9jbXBhdHRycyk7DQogCQli bXNfZnJlZShwbGFpbmF0dHJzKTsNCiANCiAJCWdvdG8gcmVzdGFydDsNCkBAIC01NTk5LDYgKzU2 MjMsMjYgQEAgcmVzdGFydDoNCiAJZXhwcmF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKGV4cHJhdHRy cywgc3VtbWFyaXplZGF0dHJzKTsNCiAJYm1zX2ZyZWUocGxhaW5hdHRycyk7DQogDQorCS8qDQor CSAqIFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgYWxzbyBy ZWZlcmVuY2UgZGlyZWN0bHksDQorCSAqIGFzIGtleSBvciBpbmNsdWRlZCBjb2x1bW5zLCBvbmx5 IGluIGluZGV4ZXMgd2hvc2UgYWNjZXNzIG1ldGhvZCBjYW4NCisJICogdGVsbCB3aGV0aGVyIGEg bmV3IHZhbHVlIGdpdmVzIHRoZSBzYW1lIGVudHJpZXMgKGFtY29tcGFyZWRhdHVtcykuICBBDQor CSAqIGNoYW5nZSB0byBvbmUgb2YgdGhlc2UgbmVlZHMgbmV3IGluZGV4IGVudHJpZXMgb25seSBp ZiwgZm9yIHNvbWUgaW5kZXgsDQorCSAqIGl0IGRvZXMgbm90LiAgTGlrZSB0aG9zZSBhYm92ZSwg YW5kIGZvciB0aGUgc2FtZSByZWFzb24sIHRoZXNlIGxlYXZlDQorCSAqIG91dCB3aGF0IHN1bW1h cml6aW5nIGluZGV4ZXMgcmVmZXJlbmNlLiAgVGhleSBhbHNvIGxlYXZlIG91dCB0aGUNCisJICog Y29sdW1ucyBvZiBjYW5kaWRhdGUga2V5cyBhbmQgdGhlIHJlcGxpY2EgaWRlbnRpdHksIHdob3Nl IGNoYW5nZXMgYXJlDQorCSAqIGRlY2lkZWQgYnkgdmFsdWUgYXMgYmVmb3JlOiB0aGUgdGFibGUg QU0gdGFrZXMgaXRzIHR1cGxlIGxvY2sgc3RyZW5ndGgNCisJICogYW5kIHdoYXQgaXQgbG9ncyBm b3IgbG9naWNhbCBkZWNvZGluZyBmcm9tIHRoZW0uICBJbmRleGVzIG9mIGV4Y2x1c2lvbg0KKwkg KiBjb25zdHJhaW50cyBjb3VudCBhcyB1bmFibGUgdG8gY29tcGFyZTogdGhlIGNvbnN0cmFpbnQg aXMgY2hlY2tlZCBvbg0KKwkgKiB0aGUgdmFsdWVzIHdoZW4gYW4gZW50cnkgaXMgaW5zZXJ0ZWQs IGFuZCB2YWx1ZXMgdGhhdCBnaXZlIHRoZSBzYW1lDQorCSAqIGVudHJpZXMgbmVlZCBub3QgaGF2 ZSB0aGUgc2FtZSBjb25mbGljdHMuDQorCSAqLw0KKwljbXBhdHRycyA9IGJtc19kZWxfbWVtYmVy cyhjbXBhdHRycywgbm9jbXBhdHRycyk7DQorCWNtcGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKGNt cGF0dHJzLCBzdW1tYXJpemVkYXR0cnMpOw0KKwljbXBhdHRycyA9IGJtc19kZWxfbWVtYmVycyhj bXBhdHRycywgdWluZGV4YXR0cnMpOw0KKwljbXBhdHRycyA9IGJtc19kZWxfbWVtYmVycyhjbXBh dHRycywgaWRpbmRleGF0dHJzKTsNCisJYm1zX2ZyZWUobm9jbXBhdHRycyk7DQorDQogCS8qIERv bid0IGxlYWsgdGhlIG9sZCB2YWx1ZXMgb2YgdGhlc2UgYml0bWFwcywgaWYgYW55ICovDQogCXJl bGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7DQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9r ZXlhdHRyKTsNCkBAIC01NjE1LDYgKzU2NTksOCBAQCByZXN0YXJ0Og0KIAlyZWxhdGlvbi0+cmRf aW5kZXhlZGF0dHIgPSBOVUxMOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmF0dHIpOw0K IAlyZWxhdGlvbi0+cmRfZXhwcmF0dHIgPSBOVUxMOw0KKwlibXNfZnJlZShyZWxhdGlvbi0+cmRf Y21wYXR0cik7DQorCXJlbGF0aW9uLT5yZF9jbXBhdHRyID0gTlVMTDsNCiANCiAJLyoNCiAJICog Tm93IHNhdmUgY29waWVzIG9mIHRoZSBiaXRtYXBzIGluIHRoZSByZWxjYWNoZSBlbnRyeS4gIFdl IGludGVudGlvbmFsbHkNCkBAIC01NjMxLDYgKzU2NzcsNyBAQCByZXN0YXJ0Og0KIAlyZWxhdGlv bi0+cmRfc3VtbWFyaXplZGF0dHIgPSBibXNfY29weShzdW1tYXJpemVkYXR0cnMpOw0KIAlyZWxh dGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBibXNfY29weShpbmRleGVkYXR0cnMpOw0KIAlyZWxhdGlv bi0+cmRfZXhwcmF0dHIgPSBibXNfY29weShleHByYXR0cnMpOw0KKwlyZWxhdGlvbi0+cmRfY21w YXR0ciA9IGJtc19jb3B5KGNtcGF0dHJzKTsNCiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0 cnVlOw0KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsNCiANCkBAIC01NjUxLDYgKzU2 OTgsOCBAQCByZXN0YXJ0Og0KIAkJCXJldHVybiBpbmRleGVkYXR0cnM7DQogCQljYXNlIElOREVY X0FUVFJfQklUTUFQX0VYUFJFU1NJT046DQogCQkJcmV0dXJuIGV4cHJhdHRyczsNCisJCWNhc2Ug SU5ERVhfQVRUUl9CSVRNQVBfQ09NUEFSQUJMRToNCisJCQlyZXR1cm4gY21wYXR0cnM7DQogCQlk ZWZhdWx0Og0KIAkJCWVsb2coRVJST1IsICJ1bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQp Ow0KIAkJCXJldHVybiBOVUxMOw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFw aS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgNCmluZGV4IDc5MjQwMzMzNTMwLi5mOGUx YjgxOTdhZSAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oDQorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaA0KQEAgLTEwOSw2ICsxMDksMTMgQEAgdHlwZWRlZiBD b21wYXJlVHlwZSAoKmFtdHJhbnNsYXRlX3N0cmF0ZWd5X2Z1bmN0aW9uKSAoU3RyYXRlZ3lOdW1i ZXIgc3RyYXRlZ3ksIE8NCiAvKiB0cmFuc2xhdGUgZ2VuZXJhbCBvcGVyYXRvciB0eXBlcyB0byBB TS1zcGVjaWZpYyBzdHJhdGVnaWVzICovDQogdHlwZWRlZiBTdHJhdGVneU51bWJlciAoKmFtdHJh bnNsYXRlX2NtcHR5cGVfZnVuY3Rpb24pIChDb21wYXJlVHlwZSBjbXB0eXBlLCBPaWQgb3BmYW1p bHkpOw0KIA0KKy8qIHdvdWxkIHR3byBub24tbnVsbCB2YWx1ZXMgb2YgYW4gaW5kZXggY29sdW1u IGdpdmUgdGhlIHNhbWUgZW50cmllcz8gKi8NCit0eXBlZGVmIGJvb2wgKCphbWNvbXBhcmVkYXR1 bXNfZnVuY3Rpb24pIChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLA0KKwkJCQkJCQkJCQkgIEluZGV4 SW5mbyAqaW5kZXhJbmZvLA0KKwkJCQkJCQkJCQkgIGludCBhdHRudW0sIE9pZCB0eXBpZCwNCisJ CQkJCQkJCQkJICBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwsDQorCQkJCQkJCQkJCSAgRGF0 dW0gb2xkVmFsdWUsIERhdHVtIG5ld1ZhbHVlKTsNCisNCiAvKiBidWlsZCBuZXcgaW5kZXggKi8N CiB0eXBlZGVmIEluZGV4QnVpbGRSZXN1bHQgKigqYW1idWlsZF9mdW5jdGlvbikgKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwNCiAJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsYXRpb24sDQpA QCAtMzIzLDYgKzMzMCw5IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4QW1Sb3V0aW5lDQogCS8qIGlu dGVyZmFjZSBmdW5jdGlvbnMgdG8gc3VwcG9ydCBwbGFubmluZyAqLw0KIAlhbXRyYW5zbGF0ZV9z dHJhdGVneV9mdW5jdGlvbiBhbXRyYW5zbGF0ZXN0cmF0ZWd5OwkvKiBjYW4gYmUgTlVMTCAqLw0K IAlhbXRyYW5zbGF0ZV9jbXB0eXBlX2Z1bmN0aW9uIGFtdHJhbnNsYXRlY21wdHlwZTsJLyogY2Fu IGJlIE5VTEwgKi8NCisNCisJLyogaW50ZXJmYWNlIGZ1bmN0aW9uIHRvIHN1cHBvcnQgSE9UIHVw ZGF0ZXMgKi8NCisJYW1jb21wYXJlZGF0dW1zX2Z1bmN0aW9uIGFtY29tcGFyZWRhdHVtczsJLyog Y2FuIGJlIE5VTEwgKi8NCiB9IEluZGV4QW1Sb3V0aW5lOw0KIA0KIA0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgNCmluZGV4IDcxNjY2OGM1YWFkLi43YzkxNGVlMDAxZCAxMDA2NDQNCi0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oDQorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aA0KQEAgLTUwNCw3ICs1MDQsOCBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvDQogDQog CS8qDQogCSAqIEZvciBVUERBVEUsIHRoZSB0YWJsZSBhdHRyaWJ1dGVzIGVhY2ggaW5kZXggcmVm ZXJlbmNlcyB0aHJvdWdoDQotCSAqIGV4cHJlc3Npb25zIG9yIGl0cyBwcmVkaWNhdGUsIG9mZnNl dCBieQ0KKwkgKiBleHByZXNzaW9ucyBvciBpdHMgcHJlZGljYXRlLCBhbmQgZGlyZWN0bHkgaWYg dGhlIGluZGV4IGlzIHBhcnRpYWwgb3INCisJICogaXRzIGFjY2VzcyBtZXRob2QgaGFzIGFtY29t cGFyZWRhdHVtcywgb2Zmc2V0IGJ5DQogCSAqIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXIuICBCdWlsdCBvbiBmaXJzdCB1c2U7IE5VTEwgdW50aWwNCiAJICogdGhlbi4NCiAJICov DQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGls cy9yZWwuaA0KaW5kZXggZmRkMmExZTMyMTMuLmI4ODJjMGU1MGY4IDEwMDY0NA0KLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgNCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oDQpAQCAt MTY3LDYgKzE2Nyw5IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQ0KIAlCaXRtYXBzZXQg ICpyZF9pbmRleGVkYXR0cjsgLyogY29scyByZWZlcmVuY2VkIGJ5IGFueSBpbmRleCAqLw0KIAlC aXRtYXBzZXQgICpyZF9leHByYXR0cjsJLyogY29scyBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBy ZWZlcmVuY2Ugb25seQ0KIAkJCQkJCQkJICogdmlhIGV4cHJlc3Npb25zIG9yIGFzIHBhcnRpYWwg aW5kZXhlcyAqLw0KKwlCaXRtYXBzZXQgICpyZF9jbXBhdHRyOwkJLyogY29scyBpbmRleGVkIGRp cmVjdGx5IG9ubHkgYnkgaW5kZXhlcyB3aXRoDQorCQkJCQkJCQkgKiBhbWNvbXBhcmVkYXR1bXMs IGxlc3Mga2V5IGFuZCByZXBsaWNhDQorCQkJCQkJCQkgKiBpZGVudGl0eSBjb2xzICovDQogDQog CVB1YmxpY2F0aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGljYXRpb24gZGVzY3JpcHRvciwg b3IgTlVMTCAqLw0KIA0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oDQppbmRleCA5NTVkMDE4NmMyZC4uMjZmZDBh ZjU0ZGQgMTAwNjQ0DQotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oDQorKysgYi9z cmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oDQpAQCAtNzQsNiArNzQsNyBAQCB0eXBlZGVmIGVu dW0gSW5kZXhBdHRyQml0bWFwS2luZA0KIAlJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELA0K IAlJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVELA0KIAlJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNT SU9OLA0KKwlJTkRFWF9BVFRSX0JJVE1BUF9DT01QQVJBQkxFLA0KIH0gSW5kZXhBdHRyQml0bWFw S2luZDsNCiANCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChS ZWxhdGlvbiByZWxhdGlvbiwNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2lu ZGV4X2FtL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9kdW1teV9pbmRleF9hbS9NYWtlZmls ZQ0KaW5kZXggYWFmNTQ0YTM4NTQuLjZjYTFmOTZkNjU1IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy9kdW1teV9pbmRleF9hbS9NYWtlZmlsZQ0KKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9k dW1teV9pbmRleF9hbS9NYWtlZmlsZQ0KQEAgLTYsNyArNiw3IEBAIEVYVEVOU0lPTiA9IGR1bW15 X2luZGV4X2FtDQogREFUQSA9IGR1bW15X2luZGV4X2FtLS0xLjAuc3FsDQogUEdGSUxFREVTQyA9 ICJkdW1teV9pbmRleF9hbSAtIGluZGV4IGFjY2VzcyBtZXRob2QgdGVtcGxhdGUiDQogDQotUkVH UkVTUyA9IHJlbG9wdGlvbnMNCitSRUdSRVNTID0gY29tcGFyZWRhdHVtcyByZWxvcHRpb25zDQog DQogaWZkZWYgVVNFX1BHWFMNCiBQR19DT05GSUcgPSBwZ19jb25maWcNCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2R1bW15X2luZGV4X2FtLmMgYi9zcmMvdGVz dC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2R1bW15X2luZGV4X2FtLmMNCmluZGV4IDMxZjhkMmI4 MTYxLi4xOGZlMzg2ZjJjYyAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5k ZXhfYW0vZHVtbXlfaW5kZXhfYW0uYw0KKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kdW1teV9pbmRl eF9hbS9kdW1teV9pbmRleF9hbS5jDQpAQCAtMTYsOCArMTYsMTAgQEANCiAjaW5jbHVkZSAiYWNj ZXNzL2FtYXBpLmgiDQogI2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25zLmgiDQogI2luY2x1ZGUg ImNhdGFsb2cvaW5kZXguaCINCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiDQogI2luY2x1 ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIg0KICNpbmNsdWRlICJub2Rlcy9wYXRobm9kZXMuaCINCisj aW5jbHVkZSAidXRpbHMvcmVsLmgiDQogDQogUEdfTU9EVUxFX01BR0lDOw0KIA0KQEAgLTI0NCw2 ICsyNDYsMzkgQEAgZGlvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpDQog CQkJCQkJCQkJICBkaV9yZWxvcHRfdGFiLCBsZW5ndGhvZihkaV9yZWxvcHRfdGFiKSk7DQogfQ0K IA0KKy8qDQorICogYW1jYW5yZXR1cm46IHdpdGggb3B0aW9uX3Rlcm5hcnlfMSBzZXQgdG8gdHJ1 ZSwgY2xhaW0gdGhhdCBldmVyeSBjb2x1bW4NCisgKiBjYW4gYmUgcmV0dXJuZWQsIHNvIHRoYXQg YW1jb21wYXJlZGF0dW1zIGlzIG5vdCB0byBiZSBhc2tlZCBhYm91dCBpdC4NCisgKiAoVGhlIGlu ZGV4IGNhbm5vdCBhY3R1YWxseSBiZSBzY2FubmVkLikNCisgKi8NCitzdGF0aWMgYm9vbA0KK2Rp Y2FucmV0dXJuKFJlbGF0aW9uIGluZGV4LCBpbnQgYXR0bm8pDQorew0KKwlEdW1teUluZGV4T3B0 aW9ucyAqb3B0cyA9IChEdW1teUluZGV4T3B0aW9ucyAqKSBpbmRleC0+cmRfb3B0aW9uczsNCisN CisJcmV0dXJuIG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5vcHRpb25fdGVybmFyeV8xID09IFBHX1RF Uk5BUllfVFJVRTsNCit9DQorDQorLyoNCisgKiBXb3VsZCBuZXdWYWx1ZSBnaXZlIHRoZSBzYW1l IGVudHJpZXMgYXMgb2xkVmFsdWU/ICBUaGUgZHVtbXkgaW5kZXggc3RvcmVzDQorICogbm90aGlu Zywgc28gYW55IGFuc3dlciBpcyBjb3JyZWN0LiAgRm9yIHRlc3RpbmcgdGhlIGV4ZWN1dG9yJ3Mg dXNlIG9mDQorICogYW1jb21wYXJlZGF0dW1zOiB3aXRoIG9wdGlvbl9yZWFsIHNldCB0byAxLCBp bnQ0IHZhbHVlcyB0aGF0IGFyZSBlcXVhbA0KKyAqIG1vZHVsbyBvcHRpb25faW50IGNvdW50IGFz IGdpdmluZyB0aGUgc2FtZSBlbnRyaWVzLg0KKyAqLw0KK3N0YXRpYyBib29sDQorZGljb21wYXJl ZGF0dW1zKFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbywgaW50IGF0dG51bSwN CisJCQkJT2lkIHR5cGlkLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwsDQorCQkJCURhdHVt IG9sZFZhbHVlLCBEYXR1bSBuZXdWYWx1ZSkNCit7DQorCUR1bW15SW5kZXhPcHRpb25zICpvcHRz ID0gKER1bW15SW5kZXhPcHRpb25zICopIGluZGV4LT5yZF9vcHRpb25zOw0KKw0KKwlpZiAob3B0 cyA9PSBOVUxMIHx8IG9wdHMtPm9wdGlvbl9yZWFsICE9IDEgfHwgb3B0cy0+b3B0aW9uX2ludCA8 IDIgfHwNCisJCXR5cGlkICE9IElOVDRPSUQpDQorCQlyZXR1cm4gZmFsc2U7DQorCXJldHVybiBE YXR1bUdldEludDMyKG9sZFZhbHVlKSAlIG9wdHMtPm9wdGlvbl9pbnQgPT0NCisJCURhdHVtR2V0 SW50MzIobmV3VmFsdWUpICUgb3B0cy0+b3B0aW9uX2ludDsNCit9DQorDQogLyoNCiAgKiBWYWxp ZGF0b3IgZm9yIGluZGV4IEFNLg0KICAqLw0KQEAgLTMyNCw3ICszNTksNyBAQCBkaWhhbmRsZXIo UEdfRlVOQ1RJT05fQVJHUykNCiAJCS5hbWluc2VydCA9IGRpaW5zZXJ0LA0KIAkJLmFtYnVsa2Rl bGV0ZSA9IGRpYnVsa2RlbGV0ZSwNCiAJCS5hbXZhY3V1bWNsZWFudXAgPSBkaXZhY3V1bWNsZWFu dXAsDQotCQkuYW1jYW5yZXR1cm4gPSBOVUxMLA0KKwkJLmFtY2FucmV0dXJuID0gZGljYW5yZXR1 cm4sDQogCQkuYW1jb3N0ZXN0aW1hdGUgPSBkaWNvc3Rlc3RpbWF0ZSwNCiAJCS5hbWdldHRyZWVo ZWlnaHQgPSBOVUxMLA0KIAkJLmFtb3B0aW9ucyA9IGRpb3B0aW9ucywNCkBAIC0zNDEsNiArMzc2 LDcgQEAgZGloYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1MpDQogCQkuYW1lc3RpbWF0ZXBhcmFsbGVs c2NhbiA9IE5VTEwsDQogCQkuYW1pbml0cGFyYWxsZWxzY2FuID0gTlVMTCwNCiAJCS5hbXBhcmFs bGVscmVzY2FuID0gTlVMTCwNCisJCS5hbWNvbXBhcmVkYXR1bXMgPSBkaWNvbXBhcmVkYXR1bXMs DQogCX07DQogDQogCVBHX1JFVFVSTl9QT0lOVEVSKCZhbXJvdXRpbmUpOw0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vZXhwZWN0ZWQvY29tcGFyZWRhdHVtcy5v dXQgYi9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2V4cGVjdGVkL2NvbXBhcmVkYXR1 bXMub3V0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjc1NGJhMWZl MWQwDQotLS0gL2Rldi9udWxsDQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2Ft L2V4cGVjdGVkL2NvbXBhcmVkYXR1bXMub3V0DQpAQCAtMCwwICsxLDE1MiBAQA0KKy0tIFRlc3Qg dGhlIGV4ZWN1dG9yJ3MgdXNlIG9mIGFtY29tcGFyZWRhdHVtcyBvbiBVUERBVEU6IGEgY29sdW1u IHRoYXQgYW4NCistLSBpbmRleCBzdG9yZXMgZGlyZWN0bHkgZG9lcyBub3QgYmxvY2sgSE9UIGlm IHRoZSBpbmRleCdzIGFjY2VzcyBtZXRob2QNCistLSBzYXlzIHRoZSBuZXcgdmFsdWUgZ2l2ZXMg dGhlIHNhbWUgZW50cmllcy4NCitDUkVBVEUgRVhURU5TSU9OIGR1bW15X2luZGV4X2FtOw0KK0NS RUFURSBUQUJMRSBkdW1teV9jbXAgKGlkIGludCwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOw0KK0lOU0VSVCBJTlRPIGR1bW15X2NtcCBTRUxFQ1QgZywgZywgZyBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMCkgZzsNCistLSBXaXRoIG9wdGlvbl9yZWFsID0gMSwgZHVtbXlf aW5kZXhfYW0gc2F5cyBpbnQ0IHZhbHVlcyBlcXVhbCBtb2R1bG8NCistLSBvcHRpb25faW50IGdp dmUgdGhlIHNhbWUgZW50cmllcy4gIEEgYnRyZWUgaW5kZXggb24gYW5vdGhlciBjb2x1bW4sIGFu ZA0KKy0tIG5vIGluZGV4IG9uIGIuDQorQ1JFQVRFIElOREVYIGR1bW15X2NtcF9hIE9OIGR1bW15 X2NtcCBVU0lORyBkdW1teV9pbmRleF9hbSAoYSkNCisgIFdJVEggKG9wdGlvbl9yZWFsID0gMSwg b3B0aW9uX2ludCA9IDEwKTsNCitDUkVBVEUgSU5ERVggZHVtbXlfY21wX2lkIE9OIGR1bW15X2Nt cCAoaWQpOw0KK0NSRUFURSBGVU5DVElPTiBkdW1teV9jbXBfaG90KE9VVCB1cGRhdGVkIGJpZ2lu dCwgT1VUIGhvdCBiaWdpbnQpDQorTEFOR1VBR0Ugc3FsIEFTICQkDQorICBTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZCgnZHVtbXlfY21wJzo6cmVnY2xhc3MpLA0KKyAgICAg ICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdkdW1teV9jbXAnOjpyZWdj bGFzcykgJCQ7DQorLS0gY291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNh Y3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAN CisoMSByb3cpDQorDQorQkVHSU47DQorLS0gYSArIDEwIGlzIGVxdWFsIG1vZHVsbyAxMDogSE9U DQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15 X2NtcF9ob3QoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAx MCB8ICAxMA0KKygxIHJvdykNCisNCistLSBhICsgMSBpcyBub3Q6IG5vdCBIT1QNCitVUERBVEUg ZHVtbXlfY21wIFNFVCBhID0gYSArIDE7DQorU0VMRUNUICogRlJPTSBkdW1teV9jbXBfaG90KCk7 DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgMjAgfCAgMTANCiso MSByb3cpDQorDQorLS0gYiBpcyBub3QgaW5kZXhlZDogSE9UDQorVVBEQVRFIGR1bW15X2NtcCBT RVQgYiA9IGIgKyAxOw0KK1NFTEVDVCAqIEZST00gZHVtbXlfY21wX2hvdCgpOw0KKyB1cGRhdGVk IHwgaG90IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDMwIHwgIDIwDQorKDEgcm93KQ0KKw0K Ky0tIGlkICsgMTAwIG5lZWRzIGEgbmV3IGVudHJ5IGluIHRoZSBidHJlZSBpbmRleCBvbiBpZDog bm90IEhPVCwgZXZlbiB0aG91Z2gNCistLSBhIGNoYW5nZXMgaW4gYSB3YXkgZHVtbXlfaW5kZXhf YW0gYWNjZXB0cw0KK1VQREFURSBkdW1teV9jbXAgU0VUIGEgPSBhICsgMTAsIGlkID0gaWQgKyAx MDA7DQorU0VMRUNUICogRlJPTSBkdW1teV9jbXBfaG90KCk7DQorIHVwZGF0ZWQgfCBob3QgDQor LS0tLS0tLS0tKy0tLS0tDQorICAgICAgNDAgfCAgMjANCisoMSByb3cpDQorDQorLS0gdG8gYW5k IGZyb20gbnVsbCBhbHdheXMgbmVlZHMgbmV3IGVudHJpZXMNCitVUERBVEUgZHVtbXlfY21wIFNF VCBhID0gTlVMTCBXSEVSRSBpZCA9IDEwMTsNCitVUERBVEUgZHVtbXlfY21wIFNFVCBhID0gMiBX SEVSRSBpZCA9IDEwMTsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCisgdXBkYXRl ZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICA0MiB8ICAyMA0KKygxIHJvdykNCisN CitDT01NSVQ7DQorLS0gQSBjaGFuZ2UgdG8gYSBjb2x1bW4gdGhhdCBhbm90aGVyIGluZGV4IGFs c28gc3RvcmVzIG5lZWRzIGEgbmV3IGVudHJ5DQorLS0gaWYgdGhhdCBpbmRleCBuZWVkcyBvbmU6 IGEgKyAxMCBkb2VzIGluIGEgYnRyZWUgaW5kZXggb24gYSwgc28gbm90IEhPVC4NCitDUkVBVEUg SU5ERVggZHVtbXlfY21wX2EyIE9OIGR1bW15X2NtcCAoYSk7DQorLS0gY291bnQgZnJvbSB6ZXJv OiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCANCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorQkVHSU47DQorVVBEQVRF IGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3Qo KTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAxMCB8ICAgMA0K KygxIHJvdykNCisNCitDT01NSVQ7DQorRFJPUCBJTkRFWCBkdW1teV9jbXBfYTI7DQorLS0gTm9y IGlzIHRoZSBjYWxsYmFjayBhc2tlZCBhYm91dCBhIGNvbHVtbiB0aGUgaW5kZXggc2F5cyBpdCBj YW4gcmV0dXJuIGluDQorLS0gaW5kZXgtb25seSBzY2FucyAob3B0aW9uX3Rlcm5hcnlfMSBtYWtl cyBkdW1teV9pbmRleF9hbSBzYXkgc28pOiBhICsgMTANCistLSBpcyBub3QgSE9UIHRoZW4uDQor QUxURVIgSU5ERVggZHVtbXlfY21wX2EgU0VUIChvcHRpb25fdGVybmFyeV8xID0gdHJ1ZSk7DQor LS0gY291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50 ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQor DQorQkVHSU47DQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBG Uk9NIGR1bW15X2NtcF9ob3QoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0N CisgICAgICAxMCB8ICAgMA0KKygxIHJvdykNCisNCitDT01NSVQ7DQorQUxURVIgSU5ERVggZHVt bXlfY21wX2EgUkVTRVQgKG9wdGlvbl90ZXJuYXJ5XzEpOw0KKy0tIFRoZSBjb2x1bW5zIG9mIGEg dW5pcXVlIGluZGV4IHRoYXQgYSBmb3JlaWduIGtleSBjb3VsZCByZWZlcmVuY2UgYXJlDQorLS0g bmV2ZXIgY29tcGFyZWQgdGhpcyB3YXkuICAoTm9yIGFyZSB0aG9zZSBvZiB0aGUgcmVwbGljYSBp ZGVudGl0eSwgYnV0IGFuDQorLS0gaW5kZXggdGhhdCBjYW4gYmUgdGhlIHJlcGxpY2EgaWRlbnRp dHkgaXMgYWx3YXlzIHN1Y2ggYSBrZXkuKSAgV2l0aG91dA0KKy0tIHRoZSB1bmlxdWUgaW5kZXgs IGlkICsgMTAwIHdvdWxkIGJlIEhPVDogZHVtbXlfaW5kZXhfYW0gc2F5cyBpdCBnaXZlcw0KKy0t IHRoZSBzYW1lIGVudHJpZXMsIGFuZCBub3RoaW5nIGVsc2UgaW5kZXhlcyBpZC4NCitEUk9QIElO REVYIGR1bW15X2NtcF9pZDsNCitDUkVBVEUgSU5ERVggZHVtbXlfY21wX2lkX2QgT04gZHVtbXlf Y21wIFVTSU5HIGR1bW15X2luZGV4X2FtIChpZCkNCisgIFdJVEggKG9wdGlvbl9yZWFsID0gMSwg b3B0aW9uX2ludCA9IDEwMCk7DQorLS0gY291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxp ZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7DQorIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KKyANCisoMSByb3cpDQorDQorQkVHSU47DQorVVBEQVRFIGR1bW15X2NtcCBTRVQgaWQg PSBpZCArIDEwMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCisgdXBkYXRlZCB8 IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAxMCB8ICAxMA0KKygxIHJvdykNCisNCitD T01NSVQ7DQorQ1JFQVRFIFVOSVFVRSBJTkRFWCBkdW1teV9jbXBfaWRfdSBPTiBkdW1teV9jbXAg KGlkKTsNCistLSBjb3VudCBmcm9tIHplcm86IGZsdXNoIHdoYXQgZWFybGllciB0cmFuc2FjdGlv bnMgY291bnRlZA0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCisgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygx IHJvdykNCisNCitCRUdJTjsNCitVUERBVEUgZHVtbXlfY21wIFNFVCBpZCA9IGlkICsgMTAwOw0K K1NFTEVDVCAqIEZST00gZHVtbXlfY21wX2hvdCgpOw0KKyB1cGRhdGVkIHwgaG90IA0KKy0tLS0t LS0tLSstLS0tLQ0KKyAgICAgIDEwIHwgICAwDQorKDEgcm93KQ0KKw0KK0NPTU1JVDsNCitEUk9Q IFRBQkxFIGR1bW15X2NtcDsNCitEUk9QIEZVTkNUSU9OIGR1bW15X2NtcF9ob3Q7DQorRFJPUCBF WFRFTlNJT04gZHVtbXlfaW5kZXhfYW07DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9k dW1teV9pbmRleF9hbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhf YW0vbWVzb24uYnVpbGQNCmluZGV4IDljZWRmZDJjZjhiLi5hNDE3NGMyNjMyYyAxMDA2NDQNCi0t LSBhL3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vbWVzb24uYnVpbGQNCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vbWVzb24uYnVpbGQNCkBAIC0yNyw2ICsyNyw3 IEBAIHRlc3RzICs9IHsNCiAgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksDQogICAn cmVncmVzcyc6IHsNCiAgICAgJ3NxbCc6IFsNCisgICAgICAnY29tcGFyZWRhdHVtcycsDQogICAg ICAgJ3JlbG9wdGlvbnMnLA0KICAgICBdLA0KICAgfSwNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2R1bW15X2luZGV4X2FtL3NxbC9jb21wYXJlZGF0dW1zLnNxbCBiL3NyYy90ZXN0L21v ZHVsZXMvZHVtbXlfaW5kZXhfYW0vc3FsL2NvbXBhcmVkYXR1bXMuc3FsDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmNkODAxNmE2NzliDQotLS0gL2Rldi9udWxsDQor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL3NxbC9jb21wYXJlZGF0dW1zLnNx bA0KQEAgLTAsMCArMSw4MiBAQA0KKy0tIFRlc3QgdGhlIGV4ZWN1dG9yJ3MgdXNlIG9mIGFtY29t cGFyZWRhdHVtcyBvbiBVUERBVEU6IGEgY29sdW1uIHRoYXQgYW4NCistLSBpbmRleCBzdG9yZXMg ZGlyZWN0bHkgZG9lcyBub3QgYmxvY2sgSE9UIGlmIHRoZSBpbmRleCdzIGFjY2VzcyBtZXRob2QN CistLSBzYXlzIHRoZSBuZXcgdmFsdWUgZ2l2ZXMgdGhlIHNhbWUgZW50cmllcy4NCitDUkVBVEUg RVhURU5TSU9OIGR1bW15X2luZGV4X2FtOw0KK0NSRUFURSBUQUJMRSBkdW1teV9jbXAgKGlkIGlu dCwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KK0lOU0VSVCBJTlRPIGR1 bW15X2NtcCBTRUxFQ1QgZywgZywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZzsNCist LSBXaXRoIG9wdGlvbl9yZWFsID0gMSwgZHVtbXlfaW5kZXhfYW0gc2F5cyBpbnQ0IHZhbHVlcyBl cXVhbCBtb2R1bG8NCistLSBvcHRpb25faW50IGdpdmUgdGhlIHNhbWUgZW50cmllcy4gIEEgYnRy ZWUgaW5kZXggb24gYW5vdGhlciBjb2x1bW4sIGFuZA0KKy0tIG5vIGluZGV4IG9uIGIuDQorQ1JF QVRFIElOREVYIGR1bW15X2NtcF9hIE9OIGR1bW15X2NtcCBVU0lORyBkdW1teV9pbmRleF9hbSAo YSkNCisgIFdJVEggKG9wdGlvbl9yZWFsID0gMSwgb3B0aW9uX2ludCA9IDEwKTsNCitDUkVBVEUg SU5ERVggZHVtbXlfY21wX2lkIE9OIGR1bW15X2NtcCAoaWQpOw0KK0NSRUFURSBGVU5DVElPTiBk dW1teV9jbXBfaG90KE9VVCB1cGRhdGVkIGJpZ2ludCwgT1VUIGhvdCBiaWdpbnQpDQorTEFOR1VB R0Ugc3FsIEFTICQkDQorICBTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZCgn ZHVtbXlfY21wJzo6cmVnY2xhc3MpLA0KKyAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKCdkdW1teV9jbXAnOjpyZWdjbGFzcykgJCQ7DQorLS0gY291bnQgZnJvbSB6 ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorLS0gYSArIDEwIGlzIGVxdWFsIG1v ZHVsbyAxMDogSE9UDQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1Qg KiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCistLSBhICsgMSBpcyBub3Q6IG5vdCBIT1QNCitVUERB VEUgZHVtbXlfY21wIFNFVCBhID0gYSArIDE7DQorU0VMRUNUICogRlJPTSBkdW1teV9jbXBfaG90 KCk7DQorLS0gYiBpcyBub3QgaW5kZXhlZDogSE9UDQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYiA9 IGIgKyAxOw0KK1NFTEVDVCAqIEZST00gZHVtbXlfY21wX2hvdCgpOw0KKy0tIGlkICsgMTAwIG5l ZWRzIGEgbmV3IGVudHJ5IGluIHRoZSBidHJlZSBpbmRleCBvbiBpZDogbm90IEhPVCwgZXZlbiB0 aG91Z2gNCistLSBhIGNoYW5nZXMgaW4gYSB3YXkgZHVtbXlfaW5kZXhfYW0gYWNjZXB0cw0KK1VQ REFURSBkdW1teV9jbXAgU0VUIGEgPSBhICsgMTAsIGlkID0gaWQgKyAxMDA7DQorU0VMRUNUICog RlJPTSBkdW1teV9jbXBfaG90KCk7DQorLS0gdG8gYW5kIGZyb20gbnVsbCBhbHdheXMgbmVlZHMg bmV3IGVudHJpZXMNCitVUERBVEUgZHVtbXlfY21wIFNFVCBhID0gTlVMTCBXSEVSRSBpZCA9IDEw MTsNCitVUERBVEUgZHVtbXlfY21wIFNFVCBhID0gMiBXSEVSRSBpZCA9IDEwMTsNCitTRUxFQ1Qg KiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCitDT01NSVQ7DQorLS0gQSBjaGFuZ2UgdG8gYSBjb2x1 bW4gdGhhdCBhbm90aGVyIGluZGV4IGFsc28gc3RvcmVzIG5lZWRzIGEgbmV3IGVudHJ5DQorLS0g aWYgdGhhdCBpbmRleCBuZWVkcyBvbmU6IGEgKyAxMCBkb2VzIGluIGEgYnRyZWUgaW5kZXggb24g YSwgc28gbm90IEhPVC4NCitDUkVBVEUgSU5ERVggZHVtbXlfY21wX2EyIE9OIGR1bW15X2NtcCAo YSk7DQorLS0gY291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25z IGNvdW50ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQor VVBEQVRFIGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2Nt cF9ob3QoKTsNCitDT01NSVQ7DQorRFJPUCBJTkRFWCBkdW1teV9jbXBfYTI7DQorLS0gTm9yIGlz IHRoZSBjYWxsYmFjayBhc2tlZCBhYm91dCBhIGNvbHVtbiB0aGUgaW5kZXggc2F5cyBpdCBjYW4g cmV0dXJuIGluDQorLS0gaW5kZXgtb25seSBzY2FucyAob3B0aW9uX3Rlcm5hcnlfMSBtYWtlcyBk dW1teV9pbmRleF9hbSBzYXkgc28pOiBhICsgMTANCistLSBpcyBub3QgSE9UIHRoZW4uDQorQUxU RVIgSU5ERVggZHVtbXlfY21wX2EgU0VUIChvcHRpb25fdGVybmFyeV8xID0gdHJ1ZSk7DQorLS0g Y291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQN CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorVVBEQVRFIGR1 bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsN CitDT01NSVQ7DQorQUxURVIgSU5ERVggZHVtbXlfY21wX2EgUkVTRVQgKG9wdGlvbl90ZXJuYXJ5 XzEpOw0KKy0tIFRoZSBjb2x1bW5zIG9mIGEgdW5pcXVlIGluZGV4IHRoYXQgYSBmb3JlaWduIGtl eSBjb3VsZCByZWZlcmVuY2UgYXJlDQorLS0gbmV2ZXIgY29tcGFyZWQgdGhpcyB3YXkuICAoTm9y IGFyZSB0aG9zZSBvZiB0aGUgcmVwbGljYSBpZGVudGl0eSwgYnV0IGFuDQorLS0gaW5kZXggdGhh dCBjYW4gYmUgdGhlIHJlcGxpY2EgaWRlbnRpdHkgaXMgYWx3YXlzIHN1Y2ggYSBrZXkuKSAgV2l0 aG91dA0KKy0tIHRoZSB1bmlxdWUgaW5kZXgsIGlkICsgMTAwIHdvdWxkIGJlIEhPVDogZHVtbXlf aW5kZXhfYW0gc2F5cyBpdCBnaXZlcw0KKy0tIHRoZSBzYW1lIGVudHJpZXMsIGFuZCBub3RoaW5n IGVsc2UgaW5kZXhlcyBpZC4NCitEUk9QIElOREVYIGR1bW15X2NtcF9pZDsNCitDUkVBVEUgSU5E RVggZHVtbXlfY21wX2lkX2QgT04gZHVtbXlfY21wIFVTSU5HIGR1bW15X2luZGV4X2FtIChpZCkN CisgIFdJVEggKG9wdGlvbl9yZWFsID0gMSwgb3B0aW9uX2ludCA9IDEwMCk7DQorLS0gY291bnQg ZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorVVBEQVRFIGR1bW15X2Nt cCBTRVQgaWQgPSBpZCArIDEwMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCitD T01NSVQ7DQorQ1JFQVRFIFVOSVFVRSBJTkRFWCBkdW1teV9jbXBfaWRfdSBPTiBkdW1teV9jbXAg KGlkKTsNCistLSBjb3VudCBmcm9tIHplcm86IGZsdXNoIHdoYXQgZWFybGllciB0cmFuc2FjdGlv bnMgY291bnRlZA0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCitCRUdJTjsN CitVUERBVEUgZHVtbXlfY21wIFNFVCBpZCA9IGlkICsgMTAwOw0KK1NFTEVDVCAqIEZST00gZHVt bXlfY21wX2hvdCgpOw0KK0NPTU1JVDsNCitEUk9QIFRBQkxFIGR1bW15X2NtcDsNCitEUk9QIEZV TkNUSU9OIGR1bW15X2NtcF9ob3Q7DQorRFJPUCBFWFRFTlNJT04gZHVtbXlfaW5kZXhfYW07DQpk aWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdA0KaW5kZXggYmNjZDNjYWM0NjUuLjE2ZTEyZjA4NTRmIDEw MDY0NA0KLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QNCisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0DQpAQCAtMzU3Miw2ICszNTcyLDcgQEAgYW1idWls ZGVtcHR5X2Z1bmN0aW9uDQogYW1idWlsZHBoYXNlbmFtZV9mdW5jdGlvbg0KIGFtYnVsa2RlbGV0 ZV9mdW5jdGlvbg0KIGFtY2FucmV0dXJuX2Z1bmN0aW9uDQorYW1jb21wYXJlZGF0dW1zX2Z1bmN0 aW9uDQogYW1jb3N0ZXN0aW1hdGVfZnVuY3Rpb24NCiBhbWVuZHNjYW5fZnVuY3Rpb24NCiBhbWVz dGltYXRlcGFyYWxsZWxzY2FuX2Z1bmN0aW9uDQotLSANCjIuNTAuMQ0KDQo= --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0002-Identify-modified-indexed-attributes-in-the-exec.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0002-Identify-modified-indexed-attributes-in-the-exec.patch RnJvbSBiNGNlMDkwOGYwZjNjMGFmYTFiNmFkNjlmODkwMzAxOGRiZWVjYWFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBUdWUs IDEwIE1hciAyMDI2IDA4OjE3OjMxIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDIvOF0gSWRl bnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRvcg0KIG9uIFVQ REFURQ0KDQpoZWFwX3VwZGF0ZSgpIGRlY2lkZXMgd2hpY2ggaW5kZXhlZCBhdHRyaWJ1dGVzIGFu IFVQREFURSBjaGFuZ2VkIGJ5DQpjb21wYXJpbmcgdGhlIG9sZCBhbmQgbmV3IHR1cGxlcyBpbnNp ZGUgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKCksIHdpdGgNCnRoZSBidWZmZXIgbG9ja2VkLiAg VGhhdCBrbm93bGVkZ2UgaXMgbm90IGhlYXAtc3BlY2lmaWMsIGFuZCB0aGUNCmV4ZWN1dG9yIG5l ZWRzIGl0IGJlZm9yZSBpdCBjYWxscyB0aGUgdGFibGUgQU0gdG8gZG8gYW55dGhpbmcgc21hcnRl cjoNCmFuIGluZGV4IHdob3NlIGtleSBkaWQgbm90IGNoYW5nZSBkb2VzIG5vdCBuZWVkIGEgbmV3 IGVudHJ5LCB3aGF0ZXZlcg0KdGhlIHRhYmxlIEFNIGRvZXMuICBEZXRlcm1pbmUgaXQgaW4gdGhl IGV4ZWN1dG9yIGluc3RlYWQuDQoNCkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgY29tcGFy ZXMgdGhlIG9sZCBhbmQgbmV3IHNsb3RzIG92ZXIgdGhlDQpyZWxhdGlvbidzIGluZGV4ZWQgYXR0 cmlidXRlcyBhbmQgcGFzc2VzIHRoZSByZXN1bHQgdG8NCnRhYmxlX3R1cGxlX3VwZGF0ZSgpIGFz IGEgbmV3IG1vZGlmaWVkX2lkeF9hdHRycyBhcmd1bWVudC4gIEl0IGNvbXBhcmVzDQpldmVyeSBp bmRleGVkIGF0dHJpYnV0ZSwgbm90IGp1c3QgdGhvc2UgdGhlIFVQREFURSB0YXJnZXRzOg0KRXhl Y0dldEFsbFVwZGF0ZWRDb2xzKCkgbmFtZXMgdGhlIHRhcmdldGVkIGNvbHVtbnMsIGFuZCBtaXNz ZXMgYSBjb2x1bW4NCmEgQkVGT1JFIFJPVyB0cmlnZ2VyIGNoYW5nZXMgd2l0aCBoZWFwX21vZGlm eV90dXBsZSgpIChhcw0KdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSBkb2VzKSwgd2hpbGUgbG9n aWNhbCByZXBsaWNhdGlvbiBhcHBseSBhbmQNClJFUEFDSyAoQ09OQ1VSUkVOVExZKSBhcHBseSBo YW5kIG92ZXIgd2hvbGUgdHVwbGVzLiAgVGhlIGNvbXBhcmlzb24gaXMNCnRoZSBiaW5hcnkgY29t cGFyaXNvbiBoZWFwX3VwZGF0ZSgpIGhhcyBhbHdheXMgbWFkZSwgc28gYW4gdW5jaGFuZ2VkDQp0 b2FzdGVkIHZhbHVlIHN0aWxsIGNvbXBhcmVzIGVxdWFsIHdpdGhvdXQgYmVpbmcgZmV0Y2hlZC4N Cg0KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGRlcml2ZXMgdGhlIEhPVCBkZWNpc2lvbiBhbmQgdGhl IGxvY2sgbW9kZSBmcm9tDQp0aGUgc2V0LCB0aHJvdWdoIHRoZSBuZXcgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSgpIGFuZA0KSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCksIGFuZCBwYXNzZXMg Ym90aCB0byBoZWFwX3VwZGF0ZSgpLg0Kc2ltcGxlX2hlYXBfdXBkYXRlKCkgaGFzIG5vIHNsb3Rz OiBpdCBmZXRjaGVzIHRoZSBvbGQgdHVwbGUgYW5kIGNvbXB1dGVzDQp0aGUgc2FtZSBzZXQgd2l0 aCBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpLCB0aGUgcmVtYWluZGVyIG9mDQpIZWFwRGV0 ZXJtaW5lQ29sdW1uc0luZm8oKSwgYmVmb3JlIHRha2luZyB0aGUgYnVmZmVyIGxvY2suICBoZWFw X3VwZGF0ZSgpDQprZWVwcyB0aGUgcmVwbGljYSBpZGVudGl0eSBkZWNpc2lvbiwgd2hpY2ggbmVl ZHMgdGhlIG9sZCB0dXBsZSBvbiB0aGUNCnBhZ2UuICBUaGUgZGVjaXNpb25zIGFib3V0DQpIT1Qs IGxvY2sgbW9kZSBhbmQgcmVwbGljYSBpZGVudGl0eSBkbyBub3QgY2hhbmdlOyBob3RfdXBkYXRl cycgZXhwZWN0ZWQNCm91dHB1dCBpcyB1bmNoYW5nZWQuDQoNClRoZSBzZXQgdG8gY29tcGFyZSBp cyB0aGUgbmV3IElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQsIHRoZSBhdHRyaWJ1dGVzDQpyZWZl cmVuY2VkIGJ5IGFueSBpbmRleDogdGhlIHVuaW9uIG9mIElOREVYX0FUVFJfQklUTUFQX0hPVF9C TE9DS0lORyBhbmQNCklOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQsIHdob3NlIG1lYW5pbmdz IGRvIG5vdCBjaGFuZ2UuDQoNCnNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoKSBrZWVwcyBpdHMg c2lnbmF0dXJlOiBpdCBmZXRjaGVzIHRoZSBvbGQNCnZlcnNpb24gYW5kIGNvbXBhcmVzIGl0IHdp dGggdGFibGVfc2xvdF9tb2RpZmllZF9pZHhfYXR0cnMoKSwgdGhlDQpleGVjdXRvcidzIGNvbXBh cmlzb24sIG5vdyBpbiB0YWJsZWFtLmMuICBMb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5LA0Kd2hp Y2ggaGFzIGJvdGggc2xvdHMsIGNhbGxzIHRoZSBuZXcgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0 ZV9leHQoKSBhbmQNCnBhc3NlcyB0aGUgc2V0Lg0KDQpJbiBidWlsZHMgd2l0aCBhc3NlcnRpb25z LCBoZWFwX3VwZGF0ZSgpIGNvbXBhcmVzIHRoZSBvbGQgdHVwbGUgaXQNCmxvY2tlZCB3aXRoIHRo ZSBuZXcgb25lIGFuZCBjaGVja3MgdGhhdCB0aGUgY2FsbGVyJ3Mgc2V0IGlzIHRoZSBzYW1lLA0K c28gdGhhdCBhIGNhbGxlciBwYXNzaW5nIGEgd3Jvbmcgc2V0IGlzIGNhdWdodC4NCg0KVGhlIHN5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQgaXNvbGF0aW9uIHRlc3Qgd2FpdHMgYXQgYW4gaW5qZWN0aW9u IHBvaW50DQpiZWZvcmUgc2ltcGxlX2hlYXBfdXBkYXRlKCkgcGlucyB0aGUgb2xkIHR1cGxlJ3Mg YnVmZmVyLCB3aGljaCBub3cNCmhhcHBlbnMgYmVmb3JlIGhlYXBfdXBkYXRlKCk7IHRoZSBwb2lu dCBtb3ZlcyB3aXRoIGl0Lg0KDQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzc4NTc0 QjI0LUJFMEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQ0BhbWF6b24uY29tDQotLS0NCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0NDggKysrKysrKysrKysr LS0tLS0tDQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg IDMwICstDQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgICAgIHwg MTEwICsrKystDQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAgICAg IHwgICA5ICstDQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgICAg IHwgICA5ICstDQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAg IHwgIDU3ICsrLQ0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAg ICB8ICAxMiArDQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAg IHwgICA5ICstDQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICAgICAg IHwgIDE5ICstDQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAg IHwgICAzICsNCiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKw0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgICB8 ICAgMSArDQogLi4uL2V4cGVjdGVkL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0ICAgICAgIHwg IDEyICstDQogLi4uL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwg ICA2ICstDQogMTQgZmlsZXMgY2hhbmdlZCwgNTM0IGluc2VydGlvbnMoKyksIDE5MiBkZWxldGlv bnMoLSkNCg0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMNCmluZGV4IDZhMDlhMWExNTE3Li43Mjlm OWM1ZmI1NyAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jDQor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYw0KQEAgLTM3LDYgKzM3LDggQEAN CiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIg0KICNpbmNsdWRlICJhY2Nlc3Mvc3VidHJh bnMuaCINCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiDQorI2luY2x1ZGUgImFjY2Vzcy9z eXNhdHRyLmgiDQorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiDQogI2luY2x1ZGUgImFjY2Vz cy92YWxpZC5oIg0KICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIg0KICNpbmNsdWRl ICJhY2Nlc3MveGxvZ2luc2VydC5oIg0KQEAgLTQ0LDggKzQ2LDExIEBADQogI2luY2x1ZGUgImNh dGFsb2cvcGdfZGF0YWJhc2VfZC5oIg0KICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCINCiAj aW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiDQorI2luY2x1ZGUgImV4ZWN1dG9y L3R1cHRhYmxlLmgiDQorI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiDQogI2luY2x1ZGUg InBnc3RhdC5oIg0KICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiDQorI2luY2x1ZGUgInN0 b3JhZ2UvYnVmLmgiDQogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIg0KICNpbmNsdWRlICJzdG9y YWdlL3ByZWRpY2F0ZS5oIg0KICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCINCkBAIC01Myw2ICs1 OCw3IEBADQogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiDQogI2luY2x1ZGUgInV0aWxzL2luamVj dGlvbl9wb2ludC5oIg0KICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIg0KKyNpbmNsdWRlICJ1dGls cy9yZWxjYWNoZS5oIg0KICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIg0KICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIg0KIA0KQEAgLTcxLDExICs3Nyw5IEBAIHN0YXRpYyB2b2lkIGNoZWNr X2xvY2tfaWZfaW5wbGFjZV91cGRhdGVhYmxlX3JlbChSZWxhdGlvbiByZWxhdGlvbiwNCiAJCQkJ CQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7DQogc3RhdGljIHZvaWQgY2hlY2tfaW5wbGFjZV9y ZWxfbG9jayhIZWFwVHVwbGUgb2xkdHVwKTsNCiAjZW5kaWYNCi1zdGF0aWMgQml0bWFwc2V0ICpI ZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sDQotCQkJCQkJCQkJCSAg IEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29scywNCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICpl eHRlcm5hbF9jb2xzLA0KLQkJCQkJCQkJCQkgICBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUg bmV3dHVwLA0KLQkJCQkJCQkJCQkgICBib29sICpoYXNfZXh0ZXJuYWwpOw0KK3N0YXRpYyBCaXRt YXBzZXQgKkhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLA0KKwkJ CQkJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqYXR0cnMsDQorCQkJCQkJCQkJCQkgSGVhcFR1cGxl IG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCk7DQogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1 cGxvY2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLA0KIAkJ CQkJCQkJIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksDQog CQkJCQkJCQkgYm9vbCAqaGF2ZV90dXBsZV9sb2NrKTsNCkBAIC0zMjU4LDcgKzMyNjIsMTMgQEAg c2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRh dGEgKnRpZCkNCiAgKgloZWFwX3VwZGF0ZSAtIHJlcGxhY2UgYSB0dXBsZQ0KICAqDQogICogU2Vl IHRhYmxlX3R1cGxlX3VwZGF0ZSgpIGZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgcGFyYW1ldGVy cywgZXhjZXB0IHRoYXQNCi0gKiB0aGlzIHJvdXRpbmUgZGlyZWN0bHkgdGFrZXMgYSB0dXBsZSBy YXRoZXIgdGhhbiBhIHNsb3QuDQorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgaGVh cCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QsIGFuZCB0aGF0IHRoZQ0KKyAqIGNhbGxlciBkZWNp ZGVzIHdoYXQgdGFibGVfdHVwbGVfdXBkYXRlKCkgbGVhdmVzIHRvIHRoZSB0YWJsZSBBTToNCisg KiBtb2RpZmllZF9pZHhfYXR0cnMgYXJlIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhlIHVwZGF0 ZSBjaGFuZ2VzLCBsb2NrbW9kZQ0KKyAqIHRoZSB0dXBsZSBsb2NrIHRvIHRha2UgKEhlYXBVcGRh dGVEZXRlcm1pbmVMb2NrbW9kZSgpKSwgYW5kIGhvdF9hbGxvd2VkDQorICogd2hldGhlciB0aGUg bmV3IHZlcnNpb24gbWF5IGJlIGhlYXAtb25seSAoSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSgpKS4g IFRoZQ0KKyAqIGNhbGxlciB0aGVuIGxlYXJucyBmcm9tIEhlYXBUdXBsZUlzSGVhcE9ubHkobmV3 dHVwKSB3aGljaCBpbmRleGVzIG5lZWQgbmV3DQorICogZW50cmllcy4NCiAgKg0KICAqIEluIHRo ZSBmYWlsdXJlIGNhc2VzLCB0aGUgcm91dGluZSBmaWxscyAqdG1mZCB3aXRoIHRoZSB0dXBsZSdz IHRfY3RpZCwNCiAgKiB0X3htYXggKHJlc29sdmluZyBhIHBvc3NpYmxlIE11bHRpWGFjdCwgaWYg bmVjZXNzYXJ5KSwgYW5kIHRfY21heCAodGhlIGxhc3QNCkBAIC0zMjY4LDE3ICszMjc4LDEyIEBA IHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJE YXRhICp0aWQpDQogVE1fUmVzdWx0DQogaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwNCiAJCQlDb21tYW5k SWQgY2lkLCB1aW50MzIgb3B0aW9ucywgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LA0K LQkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwNCi0JCQlU VV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykNCisJCQlUTV9GYWlsdXJlRGF0YSAqdG1m ZCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwNCisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywgYm9vbCBob3RfYWxsb3dlZCkNCiB7DQogCVRNX1Jlc3VsdAlyZXN1bHQ7DQog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsNCi0JQml0bWFw c2V0ICAqaG90X2F0dHJzOw0KLQlCaXRtYXBzZXQgICpzdW1fYXR0cnM7DQotCUJpdG1hcHNldCAg KmtleV9hdHRyczsNCiAJQml0bWFwc2V0ICAqaWRfYXR0cnM7DQotCUJpdG1hcHNldCAgKmludGVy ZXN0aW5nX2F0dHJzOw0KLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsNCiAJSXRlbUlkCQls cDsNCiAJSGVhcFR1cGxlRGF0YSBvbGR0dXA7DQogCUhlYXBUdXBsZQloZWFwdHVwOw0KQEAgLTMz MDEsNyArMzMwNiw2IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogCWJvb2wJCWhhdmVfdHVwbGVf bG9jayA9IGZhbHNlOw0KIAlib29sCQlpc2NvbWJvOw0KIAlib29sCQl1c2VfaG90X3VwZGF0ZSA9 IGZhbHNlOw0KLQlib29sCQlzdW1tYXJpemVkX3VwZGF0ZSA9IGZhbHNlOw0KIAlib29sCQlrZXlf aW50YWN0Ow0KIAlib29sCQljbGVhcl9hbGxfdmlzaWJsZSA9IGZhbHNlOw0KIAlib29sCQljbGVh cl9hbGxfdmlzaWJsZV9uZXcgPSBmYWxzZTsNCkBAIC0zMzA5LDcgKzMzMTMsMTAgQEAgaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwNCiAJYm9vbAkJdm1idWZmZXJfbmV3X21vZGlmaWVkID0gZmFsc2U7DQog CWJvb2wJCWNoZWNrZWRfbG9ja2VyczsNCiAJYm9vbAkJbG9ja2VyX3JlbWFpbnM7DQotCWJvb2wJ CWlkX2hhc19leHRlcm5hbCA9IGZhbHNlOw0KKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0g ZmFsc2U7DQorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcNCisJQml0bWFwc2V0ICAqY2hlY2tf YXR0cnM7DQorI2VuZGlmDQogCVRyYW5zYWN0aW9uSWQgeG1heF9uZXdfdHVwbGUsDQogCQkJCXht YXhfb2xkX3R1cGxlOw0KIAl1aW50MTYJCWluZm9tYXNrX29sZF90dXBsZSwNCkBAIC0zMzQwLDMz ICszMzQ3LDE5IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogI2VuZGlmDQogDQogCS8qDQotCSAq IEZldGNoIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYmUgY2hlY2tlZCBmb3IgdmFyaW91cyBv cGVyYXRpb25zLg0KKwkgKiBGZXRjaCB0aGUgcmVwbGljYSBpZGVudGl0eSBjb2x1bW5zLg0KIAkg Kg0KLQkgKiBGb3IgSE9UIGNvbnNpZGVyYXRpb25zLCB0aGlzIGlzIHdhc3RlZCBlZmZvcnQgaWYg d2UgZmFpbCB0byB1cGRhdGUgb3INCi0JICogaGF2ZSB0byBwdXQgdGhlIG5ldyB0dXBsZSBvbiBh IGRpZmZlcmVudCBwYWdlLiAgQnV0IHdlIG11c3QgY29tcHV0ZSB0aGUNCi0JICogbGlzdCBiZWZv cmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2FzZSwgaWYgd2UgYXJl DQotCSAqIGRvaW5nIGFuIHVwZGF0ZSBvbiBvbmUgb2YgdGhlIHJlbGV2YW50IHN5c3RlbSBjYXRh bG9ncywgd2UgY291bGQNCi0JICogZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZldGNoIHRoZSBsaXN0 IGxhdGVyLiAgSW4gYW55IGNhc2UsIHRoZSByZWxjYWNoZQ0KLQkgKiBjYWNoZXMgdGhlIGRhdGEg c28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4NCi0JICoNCi0JICogV2UgYWxzbyBuZWVk IGNvbHVtbnMgdXNlZCBieSB0aGUgcmVwbGljYSBpZGVudGl0eSBhbmQgY29sdW1ucyB0aGF0IGFy ZQ0KLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGluIHRoZSB0YWJsZS4NCi0JICoN Ci0JICogTm90ZSB0aGF0IHdlIGdldCBjb3BpZXMgb2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQg bm90IHdvcnJ5IGFib3V0DQotCSAqIHJlbGNhY2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhy b3VnaC4NCi0JICovDQotCWhvdF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJl bGF0aW9uLA0KLQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOw0K LQlzdW1fYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCi0JCQkJ CQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7DQotCWtleV9hdHRycyA9IFJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkp Ow0KLQlpZF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLA0KLQkJ CQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7DQotCWludGVyZXN0aW5n X2F0dHJzID0gTlVMTDsNCi0JaW50ZXJlc3RpbmdfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW50 ZXJlc3RpbmdfYXR0cnMsIGhvdF9hdHRycyk7DQotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2Fk ZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBzdW1fYXR0cnMpOw0KLQlpbnRlcmVzdGluZ19h dHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsNCi0J aW50ZXJlc3RpbmdfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW50ZXJlc3RpbmdfYXR0cnMsIGlk X2F0dHJzKTsNCisJICogTm90ZTogV2UgbXVzdCBjb21wdXRlIHRoZSBsaXN0IGJlZm9yZSBvYnRh aW5pbmcgYnVmZmVyIGxvY2suIEluIHRoZQ0KKwkgKiB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUgZG9p bmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtDQorCSAqIGNhdGFsb2dz LCB3ZSBjb3VsZCBkZWFkbG9jayBpZiB3ZSB0cnkgdG8gZmV0Y2ggdGhlIGxpc3QgbGF0ZXIuIEtl ZXAgaW4NCisJICogbWluZCB0aGF0IHJlbGNhY2hlIHJldHVybnMgYSBjb3B5IG9mIHRoZSBiaXRt YXAsIHNvIHdlIG5lZWQgbm90IHdvcnJ5DQorCSAqIGFib3V0IHJlbGNhY2hlIGZsdXNoIGhhcHBl bmluZyBtaWR3YXkgdGhyb3VnaCwgYnV0IHdlIGRvIG5lZWQgdG8gZnJlZQ0KKwkgKiBpdC4NCisJ ICovDQorCWlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElO REVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7DQorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJ TkcNCisJY2hlY2tfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwg SU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7DQorI2VuZGlmDQogDQogCWJsb2NrID0gSXRlbVBv aW50ZXJHZXRCbG9ja051bWJlcihvdGlkKTsNCiAJSU5KRUNUSU9OX1BPSU5UKCJoZWFwX3VwZGF0 ZS1iZWZvcmUtcGluIiwgTlVMTCk7DQpAQCAtMzQyMCwyMCArMzQxMywxOSBAQCBoZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVw bGUgbmV3dHVwLA0KIAkJdG1mZC0+Y3RpZCA9ICpvdGlkOw0KIAkJdG1mZC0+eG1heCA9IEludmFs aWRUcmFuc2FjdGlvbklkOw0KIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7DQotCQkq dXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOw0KIA0KLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsNCi0J CWJtc19mcmVlKHN1bV9hdHRycyk7DQotCQlibXNfZnJlZShrZXlfYXR0cnMpOw0KIAkJYm1zX2Zy ZWUoaWRfYXR0cnMpOw0KLQkJLyogbW9kaWZpZWRfYXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAq Lw0KLQkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOw0KKyNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HDQorCQlibXNfZnJlZShjaGVja19hdHRycyk7DQorI2VuZGlmDQorCQkvKiBtb2RpZmll ZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLw0KKw0K IAkJcmV0dXJuIFRNX0RlbGV0ZWQ7DQogCX0NCiANCiAJLyoNCi0JICogRmlsbCBpbiBlbm91Z2gg ZGF0YSBpbiBvbGR0dXAgZm9yIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyB0byB3b3JrDQotCSAq IHByb3Blcmx5Lg0KKwkgKiBGaWxsIGluIGVub3VnaCBkYXRhIGluIG9sZHR1cCB0byBkZXRlcm1p bmUgcmVwbGljYSBpZGVudGl0eSBhdHRyaWJ1dGUNCisJICogcmVxdWlyZW1lbnRzLg0KIAkgKi8N CiAJb2xkdHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsNCiAJb2xk dHVwLnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsNCkBA IC0zNDQ0LDE2ICszNDM2LDU0IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25z dCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogCW5ld3R1cC0+dF90 YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOw0KIA0KIAkvKg0KLQkgKiBEZXRl cm1pbmUgY29sdW1ucyBtb2RpZmllZCBieSB0aGUgdXBkYXRlLiAgQWRkaXRpb25hbGx5LCBpZGVu dGlmeQ0KLQkgKiB3aGV0aGVyIGFueSBvZiB0aGUgdW5tb2RpZmllZCByZXBsaWNhIGlkZW50aXR5 IGtleSBhdHRyaWJ1dGVzIGluIHRoZQ0KLQkgKiBvbGQgdHVwbGUgaXMgZXh0ZXJuYWxseSBzdG9y ZWQgb3Igbm90LiAgVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGZvcg0KLQkgKiBzdWNoIGF0dHJp YnV0ZXMgdGhlIGZsYXR0ZW5lZCB2YWx1ZSB3b24ndCBiZSBXQUwgbG9nZ2VkIGFzIHBhcnQgb2Yg dGhlDQotCSAqIG5ldyB0dXBsZSBzbyB3ZSBtdXN0IGluY2x1ZGUgaXQgYXMgcGFydCBvZiB0aGUg b2xkX2tleV90dXBsZS4gIFNlZQ0KLQkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5Lg0KKwkgKiBF eHRyYWN0UmVwbGljYUlkZW50aXR5KCkgbmVlZHMgdG8ga25vdyBpZiBhIG1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlDQorCSAqIGlzIHVzZWQgYXMgYSByZXBsaWNhIGlkZW50aXR5IG9yIGlmIGFu eSBvZiB0aGUgcmVwbGljYSBpZGVudGl0eQ0KKwkgKiBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2Vk IGluIGFuIGluZGV4LCB1bm1vZGlmaWVkLCBhbmQgYXJlIHN0b3JlZA0KKwkgKiBleHRlcm5hbGx5 IGluIHRoZSBvbGQgdHVwbGUgYmVpbmcgcmVwbGFjZWQuICBJbiB0aG9zZSBjYXNlcyBpdCBtYXkg YmUNCisJICogbmVjZXNzYXJ5IHRvIFdBTCBsb2cgdGhlbSBzbyB0aGV5IGFyZSBhdmFpbGFibGUg dG8gcmVwbGljYXMuDQogCSAqLw0KLQltb2RpZmllZF9hdHRycyA9IEhlYXBEZXRlcm1pbmVDb2x1 bW5zSW5mbyhyZWxhdGlvbiwgaW50ZXJlc3RpbmdfYXR0cnMsDQotCQkJCQkJCQkJCQkgIGlkX2F0 dHJzLCAmb2xkdHVwLA0KLQkJCQkJCQkJCQkJICBuZXd0dXAsICZpZF9oYXNfZXh0ZXJuYWwpOw0K KwlyZXBfaWRfa2V5X3JlcXVpcmVkID0gYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLCBp ZF9hdHRycyk7DQorCWlmICghcmVwX2lkX2tleV9yZXF1aXJlZCkNCisJew0KKwkJQml0bWFwc2V0 ICAqYXR0cnM7DQorCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRp b24pOw0KKwkJaW50CQkJYXR0aWR4ID0gLTE7DQorDQorCQkvKiB0aGUgcmVwbGljYSBpZGVudGl0 eSBrZXkgYXR0cmlidXRlcyB0aGUgdXBkYXRlIGxlYXZlcyB1bmNoYW5nZWQgKi8NCisJCWF0dHJz ID0gYm1zX2RpZmZlcmVuY2UoaWRfYXR0cnMsIG1vZGlmaWVkX2lkeF9hdHRycyk7DQorDQorCQl3 aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkNCisJ CXsNCisJCQkvKg0KKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBu b3JtYWwgYXR0cmlidXRlIG51bWJlcg0KKwkJCSAqLw0KKwkJCUF0dHJOdW1iZXIJYXR0cm51bSA9 IGF0dGlkeCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7DQorCQkJRGF0dW0J CXZhbHVlOw0KKwkJCWJvb2wJCWlzbnVsbDsNCisNCisJCQkvKg0KKwkJCSAqIFRoZXNlIGFyZSBy ZXBsaWNhIGlkZW50aXR5IGNvbHVtbnM6IGFuIGluZGV4J3MgcGxhaW4ga2V5DQorCQkJICogY29s dW1ucywgbmV2ZXIgc3lzdGVtIGF0dHJpYnV0ZXMuDQorCQkJICovDQorCQkJQXNzZXJ0KGF0dHJu dW0gPiAwKTsNCisNCisJCQl2YWx1ZSA9IGhlYXBfZ2V0YXR0cigmb2xkdHVwLCBhdHRybnVtLCB0 dXBkZXNjLCAmaXNudWxsKTsNCisNCisJCQkvKiBObyBuZWVkIHRvIGNoZWNrIGF0dHJpYnV0ZXMg dGhhdCBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseSAqLw0KKwkJCWlmIChpc251bGwgfHwNCisJ CQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpLT5hdHRsZW4gIT0g LTEpDQorCQkJCWNvbnRpbnVlOw0KKw0KKwkJCS8qIENoZWNrIGlmIHRoZSBvbGQgdHVwbGUncyBh dHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8NCisJCQlpZiAoVkFSQVRUX0lTX0VYVEVS TkFMKCh2YXJsZW5hICopIERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKQ0KKwkJCXsNCisJCQkJcmVw X2lkX2tleV9yZXF1aXJlZCA9IHRydWU7DQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisNCisJ CWJtc19mcmVlKGF0dHJzKTsNCisJfQ0KIA0KIAkvKg0KIAkgKiBJZiB3ZSdyZSBub3QgdXBkYXRp bmcgYW55ICJrZXkiIGNvbHVtbiwgd2UgY2FuIGdyYWIgYSB3ZWFrZXIgbG9jayB0eXBlLg0KQEAg LTM0NjYsOSArMzQ5Niw4IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogCSAqIGlzIHVwZGF0ZXMg dGhhdCBkb24ndCBtYW5pcHVsYXRlIGtleSBjb2x1bW5zLCBub3QgdGhvc2UgdGhhdA0KIAkgKiBz ZXJlbmRpcGl0b3VzbHkgYXJyaXZlIGF0IHRoZSBzYW1lIGtleSB2YWx1ZXMuDQogCSAqLw0KLQlp ZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBrZXlfYXR0cnMpKQ0KKwlpZiAobG9ja21v ZGUgPT0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmUpDQogCXsNCi0JCSpsb2NrbW9kZSA9IExvY2tU dXBsZU5vS2V5RXhjbHVzaXZlOw0KIAkJbXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzTm9L ZXlVcGRhdGU7DQogCQlrZXlfaW50YWN0ID0gdHJ1ZTsNCiANCkBAIC0zNDg1LDcgKzM1MTQsNyBA QCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpv dGlkLCBIZWFwVHVwbGUgbmV3dHVwLA0KIAl9DQogCWVsc2UNCiAJew0KLQkJKmxvY2ttb2RlID0g TG9ja1R1cGxlRXhjbHVzaXZlOw0KKwkJQXNzZXJ0KGxvY2ttb2RlID09IExvY2tUdXBsZUV4Y2x1 c2l2ZSk7DQogCQlteGFjdF9zdGF0dXMgPSBNdWx0aVhhY3RTdGF0dXNVcGRhdGU7DQogCQlrZXlf aW50YWN0ID0gZmFsc2U7DQogCX0NCkBAIC0zNTY0LDcgKzM1OTMsNyBAQCBsMjoNCiAJCQlib29s CQljdXJyZW50X2lzX21lbWJlciA9IGZhbHNlOw0KIA0KIAkJCWlmIChEb2VzTXVsdGlYYWN0SWRD b25mbGljdCgoTXVsdGlYYWN0SWQpIHh3YWl0LCBpbmZvbWFzaywNCi0JCQkJCQkJCQkJKmxvY2tt b2RlLCAmY3VycmVudF9pc19tZW1iZXIpKQ0KKwkJCQkJCQkJCQlsb2NrbW9kZSwgJmN1cnJlbnRf aXNfbWVtYmVyKSkNCiAJCQl7DQogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19V TkxPQ0spOw0KIA0KQEAgLTM1NzMsNyArMzYwMiw3IEBAIGwyOg0KIAkJCQkgKiByZXF1ZXN0aW5n IGEgbG9jayBhbmQgYWxyZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4NCiAJCQkJICov DQogCQkJCWlmICghY3VycmVudF9pc19tZW1iZXIpDQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9j ayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLA0KKwkJCQkJaGVhcF9hY3F1 aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxvY2ttb2RlLA0KIAkJCQkJ CQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVfdHVwbGVfbG9jayk7DQogDQogCQkJCS8qIHdhaXQg Zm9yIG11bHRpeGFjdCAqLw0KQEAgLTM2NjksNyArMzY5OCw3IEBAIGwyOg0KIAkJCSAqIGxvY2su DQogCQkJICovDQogCQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7DQot CQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksICpsb2Nr bW9kZSwNCisJCQloZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxm KSwgbG9ja21vZGUsDQogCQkJCQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVfdHVwbGVfbG9jayk7 DQogCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0aW9uLCAmb2xkdHVwLnRfc2VsZiwN CiAJCQkJCQkJICBYTFRXX1VwZGF0ZSk7DQpAQCAtMzcyOSwxNyArMzc1OCwxNiBAQCBsMjoNCiAJ CQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsNCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIo YnVmZmVyKTsNCiAJCWlmIChoYXZlX3R1cGxlX2xvY2spDQotCQkJVW5sb2NrVHVwbGVUdXBsb2Nr KHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOw0KKwkJCVVubG9ja1R1cGxl VHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUpOw0KIAkJaWYgKHZt YnVmZmVyICE9IEludmFsaWRCdWZmZXIpDQogCQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7DQot CQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOw0KIA0KLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsN Ci0JCWJtc19mcmVlKHN1bV9hdHRycyk7DQotCQlibXNfZnJlZShrZXlfYXR0cnMpOw0KIAkJYm1z X2ZyZWUoaWRfYXR0cnMpOw0KLQkJYm1zX2ZyZWUobW9kaWZpZWRfYXR0cnMpOw0KLQkJYm1zX2Zy ZWUoaW50ZXJlc3RpbmdfYXR0cnMpOw0KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQorCQli bXNfZnJlZShjaGVja19hdHRycyk7DQorI2VuZGlmDQorCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMg aXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLw0KKw0KIAkJcmV0dXJuIHJl c3VsdDsNCiAJfQ0KIA0KQEAgLTM3NjAsNiArMzc4OCwyNiBAQCBsMjoNCiAJCWdvdG8gbDI7DQog CX0NCiANCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORw0KKw0KKwkvKg0KKwkgKiBUaGUgY2Fs bGVyIGNvbXBhcmVkIHRoZSB2ZXJzaW9uIGl0IGZldGNoZWQ7IHRoaXMgaXMgdGhlIHZlcnNpb24g YmVpbmcNCisJICogdXBkYXRlZCwgYW5kIG5vIG9uZSBlbHNlIGNhbiBoYXZlIGNoYW5nZWQgaXQu ICBDaGVjayB0aGF0IGV2ZXJ5DQorCSAqIGF0dHJpYnV0ZSBjb21wYXJpbmcgdGhlIHR3byB0dXBs ZXMgaGVyZSBmaW5kcyBjaGFuZ2VkIGlzIGluIHRoZQ0KKwkgKiBjYWxsZXIncyBzZXQsIHNvIHRo YXQgYSBjYWxsZXIgdGhhdCBtaXNzZXMgYSBjaGFuZ2UsIG9yIGNvbXBhcmVzIHRoZQ0KKwkgKiB3 cm9uZyB0dXBsZXMsIGlzIGNhdWdodC4gIFRoZSBjYWxsZXIgbWF5IHJlcG9ydCBtb3JlOiBjb21w YXJpbmcgc2xvdHMsDQorCSAqIGl0IGNhbm5vdCBhbHdheXMgdGVsbCB0aGF0IHR3byB2YWx1ZXMg d2lsbCBiZSBzdG9yZWQgYWxpa2UuDQorCSAqLw0KKwl7DQorCQlCaXRtYXBzZXQgICpjaGFuZ2Vk ID0gSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVsYXRpb24sIGNoZWNrX2F0dHJzLA0KKwkJ CQkJCQkJCQkJCQkJICZvbGR0dXAsIG5ld3R1cCk7DQorDQorCQlBc3NlcnQoYm1zX2lzX3N1YnNl dChjaGFuZ2VkLCBtb2RpZmllZF9pZHhfYXR0cnMpKTsNCisJCWJtc19mcmVlKGNoYW5nZWQpOw0K KwkJYm1zX2ZyZWUoY2hlY2tfYXR0cnMpOw0KKwl9DQorI2VuZGlmDQorDQogCS8qIEZpbGwgaW4g dHJhbnNhY3Rpb24gc3RhdHVzIGRhdGEgKi8NCiANCiAJLyoNCkBAIC0zNzY5LDcgKzM4MTcsNyBA QCBsMjoNCiAJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdY bWF4KG9sZHR1cC50X2RhdGEpLA0KIAkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2ss DQogCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzazIsDQotCQkJCQkJCSAgeGlkLCAq bG9ja21vZGUsIHRydWUsDQorCQkJCQkJCSAgeGlkLCBsb2NrbW9kZSwgdHJ1ZSwNCiAJCQkJCQkJ ICAmeG1heF9vbGRfdHVwbGUsICZpbmZvbWFza19vbGRfdHVwbGUsDQogCQkJCQkJCSAgJmluZm9t YXNrMl9vbGRfdHVwbGUpOw0KIA0KQEAgLTM4ODYsNyArMzkzNCw3IEBAIGwyOg0KIAkJY29tcHV0 ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2Rh dGEpLA0KIAkJCQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrLA0KIAkJCQkJCQkJICBv bGR0dXAudF9kYXRhLT50X2luZm9tYXNrMiwNCi0JCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIGZh bHNlLA0KKwkJCQkJCQkJICB4aWQsIGxvY2ttb2RlLCBmYWxzZSwNCiAJCQkJCQkJCSAgJnhtYXhf bG9ja19vbGRfdHVwbGUsICZpbmZvbWFza19sb2NrX29sZF90dXBsZSwNCiAJCQkJCQkJCSAgJmlu Zm9tYXNrMl9sb2NrX29sZF90dXBsZSk7DQogDQpAQCAtNDA4MSwyMyArNDEyOSwxMSBAQCBsMjoN CiAJew0KIAkJLyoNCiAJCSAqIFNpbmNlIHRoZSBuZXcgdHVwbGUgaXMgZ29pbmcgaW50byB0aGUg c2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlDQotCQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuICBD aGVjayBpZiBhbnkgb2YgdGhlIGluZGV4IGNvbHVtbnMgaGF2ZSBiZWVuDQotCQkgKiBjaGFuZ2Vk Lg0KKwkJICogdG8gZG8gYSBIT1QgdXBkYXRlLCBpZiB0aGUgY2FsbGVyIGZvdW5kIHRoYXQgbm8g aW5kZXggbmVlZHMgYSBuZXcNCisJCSAqIGVudHJ5IChob3RfYWxsb3dlZCkuDQogCQkgKi8NCi0J CWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGhvdF9hdHRycykpDQotCQl7DQorCQlp ZiAoaG90X2FsbG93ZWQpDQogCQkJdXNlX2hvdF91cGRhdGUgPSB0cnVlOw0KLQ0KLQkJCS8qDQot CQkJICogSWYgbm9uZSBvZiB0aGUgY29sdW1ucyB0aGF0IGFyZSB1c2VkIGluIGhvdC1ibG9ja2lu ZyBpbmRleGVzDQotCQkJICogd2VyZSB1cGRhdGVkLCB3ZSBjYW4gYXBwbHkgSE9ULCBidXQgd2Ug ZG8gc3RpbGwgbmVlZCB0byBjaGVjaw0KLQkJCSAqIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBz dW1tYXJpemluZyBpbmRleGVzLCBhbmQgdXBkYXRlIHRob3NlDQotCQkJICogaW5kZXhlcyBpZiB0 aGUgY29sdW1ucyB3ZXJlIHVwZGF0ZWQsIG9yIHdlIG1heSBmYWlsIHRvIGRldGVjdA0KLQkJCSAq IGUuZy4gdmFsdWUgYm91bmQgY2hhbmdlcyBpbiBCUklOIG1pbm1heCBpbmRleGVzLg0KLQkJCSAq Lw0KLQkJCWlmIChibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgc3VtX2F0dHJzKSkNCi0JCQkJ c3VtbWFyaXplZF91cGRhdGUgPSB0cnVlOw0KLQkJfQ0KIAl9DQogCWVsc2UNCiAJew0KQEAgLTQx MTMsOCArNDE0OSw3IEBAIGwyOg0KIAkgKiBjb2x1bW5zIGFyZSBtb2RpZmllZCBvciBpdCBoYXMg ZXh0ZXJuYWwgZGF0YS4NCiAJICovDQogCW9sZF9rZXlfdHVwbGUgPSBFeHRyYWN0UmVwbGljYUlk ZW50aXR5KHJlbGF0aW9uLCAmb2xkdHVwLA0KLQkJCQkJCQkJCQkgICBibXNfb3ZlcmxhcChtb2Rp ZmllZF9hdHRycywgaWRfYXR0cnMpIHx8DQotCQkJCQkJCQkJCSAgIGlkX2hhc19leHRlcm5hbCwN CisJCQkJCQkJCQkJICAgcmVwX2lkX2tleV9yZXF1aXJlZCwNCiAJCQkJCQkJCQkJICAgJm9sZF9r ZXlfY29waWVkKTsNCiANCiAJY2xlYXJfYWxsX3Zpc2libGUgPSBQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpOw0KQEAgLTQzNDIsNyArNDM3Nyw3IEBAIGwyOg0KIAkgKiBSZWxlYXNlIHRoZSBsbWdyIHR1 cGxlIGxvY2ssIGlmIHdlIGhhZCBpdC4NCiAJICovDQogCWlmIChoYXZlX3R1cGxlX2xvY2spDQot CQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksICpsb2NrbW9k ZSk7DQorCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxv Y2ttb2RlKTsNCiANCiAJcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKHJlbGF0aW9uLCB1c2VfaG90 X3VwZGF0ZSwgbmV3YnVmICE9IGJ1ZmZlcik7DQogDQpAQCAtNDM1NiwzMSArNDM5MSwxMSBAQCBs MjoNCiAJCWhlYXBfZnJlZXR1cGxlKGhlYXB0dXApOw0KIAl9DQogDQotCS8qDQotCSAqIElmIGl0 IGlzIGEgSE9UIHVwZGF0ZSwgdGhlIHVwZGF0ZSBtYXkgc3RpbGwgbmVlZCB0byB1cGRhdGUgc3Vt bWFyaXplZA0KLQkgKiBpbmRleGVzLCBsZXN0IHdlIGZhaWwgdG8gdXBkYXRlIHRob3NlIHN1bW1h cmllcyBhbmQgZ2V0IGluY29ycmVjdA0KLQkgKiByZXN1bHRzIChmb3IgZXhhbXBsZSwgbWlubWF4 IGJvdW5kcyBvZiB0aGUgYmxvY2sgbWF5IGNoYW5nZSB3aXRoIHRoaXMNCi0JICogdXBkYXRlKS4N Ci0JICovDQotCWlmICh1c2VfaG90X3VwZGF0ZSkNCi0Jew0KLQkJaWYgKHN1bW1hcml6ZWRfdXBk YXRlKQ0KLQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOw0KLQkJZWxzZQ0KLQkJ CSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7DQotCX0NCi0JZWxzZQ0KLQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfQWxsOw0KLQ0KIAlpZiAob2xkX2tleV90dXBsZSAhPSBOVUxMICYmIG9sZF9rZXlf Y29waWVkKQ0KIAkJaGVhcF9mcmVldHVwbGUob2xkX2tleV90dXBsZSk7DQogDQotCWJtc19mcmVl KGhvdF9hdHRycyk7DQotCWJtc19mcmVlKHN1bV9hdHRycyk7DQotCWJtc19mcmVlKGtleV9hdHRy cyk7DQogCWJtc19mcmVlKGlkX2F0dHJzKTsNCi0JYm1zX2ZyZWUobW9kaWZpZWRfYXR0cnMpOw0K LQlibXNfZnJlZShpbnRlcmVzdGluZ19hdHRycyk7DQorCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBp cyBvd25lZCBieSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICovDQogDQogCXJldHVybiBUTV9P azsNCiB9DQpAQCAtNDUwOSw3ICs0NTI0LDcgQEAgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFw VHVwbGUgb2xkdHVwKQ0KIA0KIC8qDQogICogQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCBhdHRyaWJ1 dGUncyB2YWx1ZXMgYXJlIHRoZSBzYW1lLiAgU3Vicm91dGluZSBmb3INCi0gKiBIZWFwRGV0ZXJt aW5lQ29sdW1uc0luZm8uDQorICogSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMuDQogICovDQog c3RhdGljIGJvb2wNCiBoZWFwX2F0dHJfZXF1YWxzKFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0 cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1ZTIsDQpAQCAtNDU1MywyOCArNDU2OCw4NiBA QCBoZWFwX2F0dHJfZXF1YWxzKFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0g dmFsdWUxLCBEYXR1bSB2YWx1ZTIsDQogfQ0KIA0KIC8qDQotICogQ2hlY2sgd2hpY2ggY29sdW1u cyBhcmUgYmVpbmcgdXBkYXRlZC4NCi0gKg0KLSAqIEdpdmVuIGFuIHVwZGF0ZWQgdHVwbGUsIGRl dGVybWluZSAoYW5kIHJldHVybiBpbnRvIHRoZSBvdXRwdXQgYml0bWFwc2V0KSwNCi0gKiBmcm9t IHRob3NlIGxpc3RlZCBhcyBpbnRlcmVzdGluZywgdGhlIHNldCBvZiBjb2x1bW5zIHRoYXQgY2hh bmdlZC4NCi0gKg0KLSAqIGhhc19leHRlcm5hbCBpbmRpY2F0ZXMgaWYgYW55IG9mIHRoZSB1bm1v ZGlmaWVkIGF0dHJpYnV0ZXMgKGZyb20gdGhvc2UNCi0gKiBsaXN0ZWQgYXMgaW50ZXJlc3Rpbmcp IG9mIHRoZSBvbGQgdHVwbGUgaXMgYSBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scyBhbmQgaXMNCi0g KiBzdG9yZWQgZXh0ZXJuYWxseS4NCisgKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBl aXRoZXI6IGEpIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleGVkDQorICogYXR0cmlidXRlcywg b3IgYikgdGhlIG1vZGlmaWVkIGF0dHJpYnV0ZXMgYXJlIGFsbCBvbiBzdW1tYXJpemluZyBpbmRl eGVzLg0KKyAqIExhdGVyLCBpbiBoZWFwX3VwZGF0ZSgpLCB3ZSBjYW4gY2hvb3NlIHRvIHBlcmZv cm0gYSBIT1QgdXBkYXRlIGlmIHRoZXJlIGlzDQorICogc3BhY2Ugb24gdGhlIHBhZ2UgZm9yIHRo ZSBuZXcgdHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5lZA0KKyAqIHRo YXQgSE9UIGlzIGFsbG93ZWQuDQorICovDQorYm9vbA0KK0hlYXBVcGRhdGVIb3RBbGxvd2FibGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLA0K KwkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KQ0KK3sNCisJQml0bWFwc2V0ICAqaG90X2F0 dHJzOw0KKwlCaXRtYXBzZXQgICpzdW1fYXR0cnM7DQorCWJvb2wJCWhvdF9hbGxvd2VkOw0KKw0K Kwkqc3VtbWFyaXplZF9vbmx5ID0gZmFsc2U7DQorCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRf aWR4X2F0dHJzKSkNCisJCXJldHVybiB0cnVlOw0KKw0KKwlob3RfYXR0cnMgPSBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCisJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRN QVBfSE9UX0JMT0NLSU5HKTsNCisJc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRt YXAocmVsYXRpb24sDQorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQp Ow0KKw0KKwkvKg0KKwkgKiBVbmxlc3MgYSBtb2RpZmllZCBhdHRyaWJ1dGUgaXMgcmVmZXJlbmNl ZCBieSBhIG5vbi1zdW1tYXJpemluZyBpbmRleCwNCisJICogSE9UIGlzIGFsbG93ZWQ7IGlmIGEg c3VtbWFyaXppbmcgaW5kZXggcmVmZXJlbmNlcyBvbmUsIHRoYXQgaW5kZXggc3RpbGwNCisJICog bmVlZHMgYSBuZXcgZW50cnkuDQorCSAqLw0KKwlob3RfYWxsb3dlZCA9ICFibXNfb3ZlcmxhcCht b2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hdHRycyk7DQorCWlmIChob3RfYWxsb3dlZCkNCisJCSpz dW1tYXJpemVkX29ubHkgPSBibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhfYXR0cnMsIHN1bV9hdHRy cyk7DQorDQorCWJtc19mcmVlKGhvdF9hdHRycyk7DQorCWJtc19mcmVlKHN1bV9hdHRycyk7DQor DQorCXJldHVybiBob3RfYWxsb3dlZDsNCit9DQorDQorLyoNCisgKiBJZiB3ZSdyZSBub3QgdXBk YXRpbmcgYW55IGF0dHJpYnV0ZXMgdXNlZCB3aGVuIGZvcm1pbmcgdGhlIGluZGV4IGtleXMgd2Ug Y2FuDQorICogZ3JhYiBhIHdlYWtlciBsb2NrIHR5cGUuIFRoaXMgYWxsb3dzIGZvciBtb3JlIGNv bmN1cnJlbmN5IHdoZW4gd2UgYXJlDQorICogcnVubmluZyBzaW11bHRhbmVvdXNseSB3aXRoIGZv cmVpZ24ga2V5IGNoZWNrcy4NCisgKi8NCitMb2NrVHVwbGVNb2RlDQorSGVhcFVwZGF0ZURldGVy bWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycykNCit7DQorCUxvY2tUdXBsZU1vZGUgbG9ja21vZGUgPSBMb2NrVHVwbGVFeGNs dXNpdmU7DQorDQorCUJpdG1hcHNldCAgKmtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLA0KKwkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9LRVkp Ow0KKw0KKwlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2lkeF9hdHRycywga2V5X2F0dHJzKSkN CisJCWxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7DQorDQorCWJtc19mcmVlKGtl eV9hdHRycyk7DQorDQorCXJldHVybiBsb2NrbW9kZTsNCit9DQorDQorLyoNCisgKiBSZXR1cm4g YSBCaXRtYXBzZXQgdGhhdCBjb250YWlucyB0aGUgbWVtYmVycyBvZiBhdHRycywgYSBzZXQgb2Yg aW5kZXhlZA0KKyAqIGF0dHJpYnV0ZXMsIHdob3NlIHZhbHVlcyBkaWZmZXIgYmV0d2VlbiBvbGR0 dXAgYW5kIG5ld3R1cC4gIFJlYWRzIG5vDQorICogY2F0YWxvZ3MsIHNvIGl0IG1heSBiZSBjYWxs ZWQgd2l0aCB0aGUgYnVmZmVyIGxvY2tlZC4NCiAgKi8NCiBzdGF0aWMgQml0bWFwc2V0ICoNCi1I ZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sDQotCQkJCQkJIEJpdG1h cHNldCAqaW50ZXJlc3RpbmdfY29scywNCi0JCQkJCQkgQml0bWFwc2V0ICpleHRlcm5hbF9jb2xz LA0KLQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLA0KLQkJCQkJCSBi b29sICpoYXNfZXh0ZXJuYWwpDQorSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqYXR0cnMsDQorCQkJCQkJICAgSGVhcFR1cGxlIG9s ZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCkNCiB7DQogCWludAkJCWF0dGlkeDsNCi0JQml0bWFwc2V0 ICAqbW9kaWZpZWQgPSBOVUxMOw0KKwlCaXRtYXBzZXQgICptb2RpZmllZF9pZHhfYXR0cnMgPSBO VUxMOw0KIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOw0K IA0KKwkvKg0KKwkgKiBBcyBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpIGRvZXMgZm9yIHRo ZSBleGVjdXRvcidzIHNsb3RzLCBjb21wYXJlDQorCSAqIGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRl IG9mIHRoZSBvbGQgdHVwbGUgYW5kIHRoZSBuZXcgdG8gZmluZCB0aGUgc3Vic2V0DQorCSAqIHRo YXQgY2hhbmdlZCB2YWx1ZSwgdGhlICJtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMiIG9yDQor CSAqICJtb2RpZmllZF9pZHhfYXR0cnMiLg0KKwkgKi8NCiAJYXR0aWR4ID0gLTE7DQotCXdoaWxl ICgoYXR0aWR4ID0gYm1zX25leHRfbWVtYmVyKGludGVyZXN0aW5nX2NvbHMsIGF0dGlkeCkpID49 IDApDQorCXdoaWxlICgoYXR0aWR4ID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRpZHgpKSA+ PSAwKQ0KIAl7DQogCQkvKiBhdHRpZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9y bWFsIGF0dHJpYnV0ZSBudW1iZXIgKi8NCiAJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0dGlkeCAr IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7DQpAQCAtNDU5MCw3ICs0NjYzLDcg QEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLA0KIAkJICovDQog CQlpZiAoYXR0cm51bSA9PSAwKQ0KIAkJew0KLQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIo bW9kaWZpZWQsIGF0dGlkeCk7DQorCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1i ZXIobW9kaWZpZWRfaWR4X2F0dHJzLCBhdHRpZHgpOw0KIAkJCWNvbnRpbnVlOw0KIAkJfQ0KIA0K QEAgLTQ2MDMsNyArNDY3Niw3IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiBy ZWxhdGlvbiwNCiAJCXsNCiAJCQlpZiAoYXR0cm51bSAhPSBUYWJsZU9pZEF0dHJpYnV0ZU51bWJl cikNCiAJCQl7DQotCQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGF0dGlk eCk7DQorCQkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkX2lk eF9hdHRycywgYXR0aWR4KTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KIAkJfQ0KQEAgLTQ2MTks MjkgKzQ2OTIsMTAgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9u LA0KIA0KIAkJaWYgKCFoZWFwX2F0dHJfZXF1YWxzKHR1cGRlc2MsIGF0dHJudW0sIHZhbHVlMSwN CiAJCQkJCQkJICB2YWx1ZTIsIGlzbnVsbDEsIGlzbnVsbDIpKQ0KLQkJew0KLQkJCW1vZGlmaWVk ID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGF0dGlkeCk7DQotCQkJY29udGludWU7DQotCQl9 DQotDQotCQkvKg0KLQkJICogTm8gbmVlZCB0byBjaGVjayBhdHRyaWJ1dGVzIHRoYXQgY2FuJ3Qg YmUgc3RvcmVkIGV4dGVybmFsbHkuIE5vdGUNCi0JCSAqIHRoYXQgc3lzdGVtIGF0dHJpYnV0ZXMg Y2FuJ3QgYmUgc3RvcmVkIGV4dGVybmFsbHkuDQotCQkgKi8NCi0JCWlmIChhdHRybnVtIDwgMCB8 fCBpc251bGwxIHx8DQotCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAt IDEpLT5hdHRsZW4gIT0gLTEpDQotCQkJY29udGludWU7DQotDQotCQkvKg0KLQkJICogQ2hlY2sg aWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQgZXh0ZXJuYWxseSBhbmQgaXMg YQ0KLQkJICogbWVtYmVyIG9mIGV4dGVybmFsX2NvbHMuDQotCQkgKi8NCi0JCWlmIChWQVJBVFRf SVNfRVhURVJOQUwoKHZhcmxlbmEgKikgRGF0dW1HZXRQb2ludGVyKHZhbHVlMSkpICYmDQotCQkJ Ym1zX2lzX21lbWJlcihhdHRpZHgsIGV4dGVybmFsX2NvbHMpKQ0KLQkJCSpoYXNfZXh0ZXJuYWwg PSB0cnVlOw0KKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVk X2lkeF9hdHRycywgYXR0aWR4KTsNCiAJfQ0KIA0KLQlyZXR1cm4gbW9kaWZpZWQ7DQorCXJldHVy biBtb2RpZmllZF9pZHhfYXR0cnM7DQogfQ0KIA0KIC8qDQpAQCAtNDY1OSwxMiArNDcxMyw5MCBA QCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVy RGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cA0KIAlUTV9SZXN1bHQJcmVzdWx0Ow0KIAlUTV9GYWls dXJlRGF0YSB0bWZkOw0KIAlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOw0KKwlUdXBsZVRhYmxlU2xv dCAqc2xvdDsNCisJQnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICpic2xvdDsNCisJSGVhcFR1cGxl CW9sZHR1cDsNCisJQml0bWFwc2V0ICAqaW5kZXhlZF9hdHRyczsNCisJQml0bWFwc2V0ICAqbW9k aWZpZWRfaWR4X2F0dHJzOw0KKwlib29sCQlob3RfYWxsb3dlZCwNCisJCQkJc3VtbWFyaXplZF9v bmx5Ow0KKwlCdWZmZXIJCWJ1ZmZlcjsNCiANCi0JcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRp b24sIG90aWQsIHR1cCwNCi0JCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgMCwNCi0J CQkJCQkgSW52YWxpZFNuYXBzaG90LA0KLQkJCQkJCSB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAq LyAsDQotCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsNCisJQXNzZXJ0 KEl0ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7DQorDQorCUlOSkVDVElPTl9QT0lOVCgic2ltcGxl X2hlYXBfdXBkYXRlLWJlZm9yZS1waW4iLCBOVUxMKTsNCisNCisJLyoNCisJICogVG8gdXBkYXRl IGEgaGVhcCB0dXBsZSB3ZSBuZWVkIHRvIGZpbmQgdGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVk DQorCSAqIGF0dHJpYnV0ZXMgKCJtb2RpZmllZF9pZHhfYXR0cnMiKSBhbmQgdXNlIHRoYXQgdG8g ZGV0ZXJtaW5lIGlmIGEgSE9UDQorCSAqIHVwZGF0ZSBpcyBhbGxvd2FibGUgb3Igbm90LiBXaGVu IHVwZGF0aW5nIGhlYXAgdHVwbGVzIHZpYSBleGVjdXRpb24gb2YNCisJICogVVBEQVRFIHN0YXRl bWVudHMgdGhpcyBzZXQgaXMgY29uc3RydWN0ZWQgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUgdGFi bGUNCisJICogQU0ncyB1cGRhdGUgZnVuY3Rpb24gYnkgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0 cnMoKSB3aGljaCBjb21wYXJlcyB0aGUNCisJICogb2xkL25ldyBUdXBsZVRhYmxlU2xvdHMuDQor CSAqDQorCSAqIEhlcmUgdGhpbmdzIGFyZSBhIGJpdCBkaWZmZXJlbnQsIHdlIGhhdmUgdGhlIG9s ZCBUSUQgYW5kIHRoZSBuZXcgdHVwbGUsDQorCSAqIG5vdCB0d28gVHVwbGVUYWJsZVNsb3RzLCBi dXQgd2Ugc3RpbGwgbmVlZCB0byBjb25zdHJ1Y3QgYSBzaW1pbGFyDQorCSAqIGJpdG1hcCBzbyBh cyB0byBiZSBhYmxlIHRvIGtub3cgaWYgSE9UIHVwZGF0ZXMgYXJlIGFsbG93ZWQgb3Igbm90Lg0K KwkgKg0KKwkgKiBUbyBkbyB0aGF0IHdlIGZpcnN0IGhhdmUgdG8gZmV0Y2ggdGhlIG9sZCB0dXBs ZSBpdHNlbGYsIGJ1dCBiZWNhdXNlDQorCSAqIGhlYXBhbV9mZXRjaF9yb3dfdmVyc2lvbigpIGlz IHN0YXRpYywgd2UgcmVwbGljYXRlIGluIHBhcnQgdGhhdCBjb2RlDQorCSAqIGhlcmUuDQorCSAq DQorCSAqIGhlYXBfdXBkYXRlKCkgcmVhZHMgdGhlIG9sZCB0dXBsZSBhZ2FpbiwgdW5kZXIgdGhl IGJ1ZmZlciBsb2NrLiAgVGhlDQorCSAqIGNvbXBhcmlzb24gdXNlZCB0byBydW4gdGhlcmU7IHJ1 bm5pbmcgaXQgaGVyZSwgYmVmb3JlIHRoZSBsb2NrLCBrZWVwcw0KKwkgKiB0aGUgbG9jayBzaG9y dC4gIENhbGxlcnMgZG8gbm90IGV4cGVjdCBjb25jdXJyZW50IHVwZGF0ZXMgb2YgdGhlIHR1cGxl DQorCSAqIChzZWUgdGhlIGhlYWRlciBjb21tZW50KSwgc28gYm90aCByZWFkcyBzZWUgdGhlIHNh bWUgdmVyc2lvbjsgaWYgb25lDQorCSAqIGhhcHBlbnMgYW55d2F5LCBoZWFwX3VwZGF0ZSgpIHJl cG9ydHMgaXQuDQorCSAqLw0KKwlzbG90ID0gTWFrZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0 RGVzY3IocmVsYXRpb24pLCAmVFRTT3BzQnVmZmVySGVhcFR1cGxlLCAwKTsNCisJYnNsb3QgPSAo QnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICopIHNsb3Q7DQorDQorCS8qDQorCSAqIFNldCB0aGUg VElEIGluIHRoZSBzbG90IGFuZCB0aGVuIGZldGNoIHRoZSBvbGQgdHVwbGUgc28gd2UgY2FuIGV4 YW1pbmUNCisJICogaXQNCisJICovDQorCWJzbG90LT5iYXNlLnR1cGRhdGEudF9zZWxmID0gKm90 aWQ7DQorCWlmICghaGVhcF9mZXRjaChyZWxhdGlvbiwgU25hcHNob3RBbnksICZic2xvdC0+YmFz ZS50dXBkYXRhLCAmYnVmZmVyLCBmYWxzZSkpDQorCXsNCisJCS8qDQorCQkgKiBoZWFwX3VwZGF0 ZSgpIGNoZWNrcyBmb3IgIUl0ZW1JZElzTm9ybWFsKGxwKSB0b28sIGFuZCByZXR1cm5zDQorCQkg KiBUTV9EZWxldGVkLCB3aGljaCBpcyByZXBvcnRlZCB0aGUgc2FtZSB3YXkgYmVsb3cuDQorCQkg Ki8NCisJCUFzc2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbikpKTsNCisNCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7DQor CQllbG9nKEVSUk9SLCAidHVwbGUgY29uY3VycmVudGx5IGRlbGV0ZWQiKTsNCisJfQ0KKw0KKwlB c3NlcnQoYnVmZmVyICE9IEludmFsaWRCdWZmZXIpOw0KKw0KKwkvKiBTdG9yZSBpbiBzbG90LCB0 cmFuc2ZlcnJpbmcgZXhpc3RpbmcgcGluICovDQorCUV4ZWNTdG9yZVBpbm5lZEJ1ZmZlckhlYXBU dXBsZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsNCisJb2xkdHVwID0gRXhl Y0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCBmYWxzZSwgTlVMTCk7DQorDQorCWluZGV4ZWRfYXR0 cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCisJCQkJCQkJCQkJCSAg IElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpOw0KKwltb2RpZmllZF9pZHhfYXR0cnMgPSBIZWFw VXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZWxhdGlvbiwgaW5kZXhlZF9hdHRycywNCisJCQkJCQkJ CQkJCQkJb2xkdHVwLCB0dXApOw0KKwlibXNfZnJlZShpbmRleGVkX2F0dHJzKTsNCisJbG9ja21v ZGUgPSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9h dHRycyk7DQorCWhvdF9hbGxvd2VkID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwg bW9kaWZpZWRfaWR4X2F0dHJzLCAmc3VtbWFyaXplZF9vbmx5KTsNCisNCisJcmVzdWx0ID0gaGVh cF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwg MCwNCisJCQkJCQkgSW52YWxpZFNuYXBzaG90LCB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAs DQorCQkJCQkJICZ0bWZkLCBsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dl ZCk7DQorDQorCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7DQorCWJtc19mcmVl KG1vZGlmaWVkX2lkeF9hdHRycyk7DQorDQorCS8qDQorCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBp bmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQ0KKwkgKg0KKwkgKiBJZiB0aGUg dXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVzLiBJZiB0aGUgdXBk YXRlIGlzDQorCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQg Y29sdW1ucywgc28gd2UgZWl0aGVyDQorCSAqIHVwZGF0ZSBvbmx5IHN1bW1hcml6ZWQgaW5kZXhl cywgb3Igbm9uZSBhdCBhbGwuDQorCSAqLw0KKwkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOw0K IAlzd2l0Y2ggKHJlc3VsdCkNCiAJew0KIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6DQpAQCAtNDY3 NCw2ICs0ODA2LDEwIEBAIHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29u c3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwDQogDQogCQljYXNlIFRNX09r Og0KIAkJCS8qIGRvbmUgc3VjY2Vzc2Z1bGx5ICovDQorCQkJaWYgKCFIZWFwVHVwbGVJc0hlYXBP bmx5KHR1cCkpDQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsNCisJCQllbHNlIGlmIChz dW1tYXJpemVkX29ubHkpDQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOw0K IAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBUTV9VcGRhdGVkOg0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jDQppbmRleCA3ZDIwNjVkZWMzNy4uYTJhNTdlYWM4MjMgMTAwNjQ0 DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jDQorKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jDQpAQCAtMjE4LDIwICsyMTgs MjcgQEAgc3RhdGljIFRNX1Jlc3VsdA0KIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVs YXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LA0KIAkJCQkJQ29t bWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsDQogCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwgU25h cHNob3QgY3Jvc3NjaGVjaywNCi0JCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQs DQotCQkJCQlMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpDQorCQkJCQlib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVw bGVNb2RlICpsb2NrbW9kZSwNCisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0 dHJzLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykNCiB7DQogCWJvb2wJCXNob3Vs ZEZyZWUgPSB0cnVlOw0KIAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxl KHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsNCisJYm9vbAkJaG90X2FsbG93ZWQ7DQorCWJvb2wJ CXN1bW1hcml6ZWRfb25seTsNCiAJVE1fUmVzdWx0CXJlc3VsdDsNCiANCisJQXNzZXJ0KEl0ZW1Q b2ludGVySXNWYWxpZChvdGlkKSk7DQorDQorCWhvdF9hbGxvd2VkID0gSGVhcFVwZGF0ZUhvdEFs bG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzLCAmc3VtbWFyaXplZF9vbmx5KTsN CisJKmxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCBtb2Rp ZmllZF9pZHhfYXR0cnMpOw0KKw0KIAkvKiBVcGRhdGUgdGhlIHR1cGxlIHdpdGggdGFibGUgb2lk ICovDQogCXNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOw0K IAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsNCiANCiAJcmVzdWx0ID0g aGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIG9wdGlvbnMsDQogCQkJCQkJ IGNyb3NzY2hlY2ssIHdhaXQsDQotCQkJCQkJIHRtZmQsIGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhl cyk7DQorCQkJCQkJIHRtZmQsICpsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxs b3dlZCk7DQogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQp Ow0KIA0KIAkvKg0KQEAgLTI0NCwxNiArMjUxLDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LA0K IAkgKiBIT1QsIGl0IGNvdWxkIGJlIHRoYXQgd2UgdXBkYXRlZCBzdW1tYXJpemVkIGNvbHVtbnMs IHNvIHdlIGVpdGhlcg0KIAkgKiB1cGRhdGUgb25seSBzdW1tYXJpemVkIGluZGV4ZXMsIG9yIG5v bmUgYXQgYWxsLg0KIAkgKi8NCi0JaWYgKHJlc3VsdCAhPSBUTV9PaykNCisJKnVwZGF0ZV9pbmRl eGVzID0gVFVfTm9uZTsNCisJaWYgKHJlc3VsdCA9PSBUTV9PaykNCiAJew0KLQkJQXNzZXJ0KCp1 cGRhdGVfaW5kZXhlcyA9PSBUVV9Ob25lKTsNCi0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7 DQorCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seSh0dXBsZSkpDQorCQl7DQorCQkJaWYgKHN1bW1h cml6ZWRfb25seSkNCisJCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3VtbWFyaXppbmc7DQorCQl9 DQorCQllbHNlDQorCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOw0KIAl9DQotCWVsc2UgaWYg KCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkNCi0JCUFzc2VydCgqdXBkYXRlX2luZGV4ZXMg PT0gVFVfQWxsKTsNCi0JZWxzZQ0KLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3Vt bWFyaXppbmcpIHx8DQotCQkJICAgKCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9Ob25lKSk7DQogDQog CWlmIChzaG91bGRGcmVlKQ0KIAkJcGZyZWUodHVwbGUpOw0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jDQppbmRleCAzYTFmZjlhMWQ0Ni4uMWJhMThmMGEyMTUgMTAwNjQ0DQotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jDQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jDQpAQCAtMzAsNiArMzAsOSBAQA0KICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIg0KICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiDQogI2luY2x1ZGUgInN0b3JhZ2Uv c21nci5oIg0KKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIg0KKyNpbmNsdWRlICJ1dGlscy9yZWxj YWNoZS5oIg0KKyNpbmNsdWRlICJ2YXJhdHQuaCINCiANCiAvKg0KICAqIENvbnN0YW50cyB0byBj b250cm9sIHRoZSBiZWhhdmlvciBvZiBibG9jayBhbGxvY2F0aW9uIHRvIHBhcmFsbGVsIHdvcmtl cnMNCkBAIC0zMTEsNiArMzE0LDgzIEBAIHNpbXBsZV90YWJsZV90dXBsZV9kZWxldGUoUmVsYXRp b24gcmVsLCBJdGVtUG9pbnRlciB0aWQsIFNuYXBzaG90IHNuYXBzaG90KQ0KIAl9DQogfQ0KIA0K Ky8qIFdvdWxkIHR3byB2YXJsZW5hIHZhbHVlcyBiZSBzdG9yZWQgdGhlIHNhbWUsIGJ5dGUgZm9y IGJ5dGU/ICovDQorc3RhdGljIGJvb2wNCit2YXJsZW5hX2ltYWdlX2VxKERhdHVtIHZhbHVlMSwg RGF0dW0gdmFsdWUyKQ0KK3sNCisJdmFybGVuYSAgICAqdjEgPSAodmFybGVuYSAqKSBEYXR1bUdl dFBvaW50ZXIodmFsdWUxKTsNCisJdmFybGVuYSAgICAqdjIgPSAodmFybGVuYSAqKSBEYXR1bUdl dFBvaW50ZXIodmFsdWUyKTsNCisNCisJaWYgKFZBUkFUVF9JU19FWFRFUk5BTCh2MSkgfHwgVkFS QVRUX0lTX0VYVEVSTkFMKHYyKSB8fA0KKwkJVkFSQVRUX0lTX0NPTVBSRVNTRUQodjEpIHx8IFZB UkFUVF9JU19DT01QUkVTU0VEKHYyKSkNCisJCXJldHVybiBkYXR1bUlzRXF1YWwodmFsdWUxLCB2 YWx1ZTIsIGZhbHNlLCAtMSk7DQorDQorCXJldHVybiBWQVJTSVpFX0FOWV9FWEhEUih2MSkgPT0g VkFSU0laRV9BTllfRVhIRFIodjIpICYmDQorCQltZW1jbXAoVkFSREFUQV9BTlkodjEpLCBWQVJE QVRBX0FOWSh2MiksIFZBUlNJWkVfQU5ZX0VYSERSKHYxKSkgPT0gMDsNCit9DQorDQorLyoNCisg KiB0YWJsZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycyAtIHdoaWNoIGluZGV4ZWQgYXR0cmlidXRl cyBkaWZmZXI/DQorICoNCisgKiBSZXR1cm4gdGhlIHNldCBvZiBhdHRyaWJ1dGVzIHJlZmVyZW5j ZWQgYnkgaW5kZXhlcyBvZiByZWwgd2hvc2UgdmFsdWVzDQorICogZGlmZmVyIGJldHdlZW4gb2xk X3Nsb3QgYW5kIG5ld19zbG90LCBvZmZzZXQgYnkNCisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyLCBpbiBtZW1vcnkgdGhlIGNhbGxlciBmcmVlcy4gIFZhbHVlcw0KKyAqIGFy ZSBjb21wYXJlZCBieXRlIGZvciBieXRlIGFzIHRoZSB0YWJsZSB3b3VsZCBzdG9yZSB0aGVtLCBz byBhbiB1bmNoYW5nZWQNCisgKiB0b2FzdGVkIHZhbHVlIGNvbXBhcmVzIGVxdWFsIHdpdGhvdXQg YmVpbmcgZmV0Y2hlZCwgYW5kIHR3byB2YWx1ZXMgdGhhdA0KKyAqIGFyZSBlcXVhbCBidXQgc3Rv cmVkIGRpZmZlcmVudGx5IGNvdW50IGFzIGNoYW5nZWQuDQorICoNCisgKiBBIHZhcmxlbmEgdmFs dWUgaW4gYSBzbG90IG5lZWQgbm90IGhhdmUgdGhlIGhlYWRlciBpdCB3aWxsIGJlIHN0b3JlZCB3 aXRoOg0KKyAqIGEgc2hvcnQgb25lIG1heSBoYXZlIGEgNC1ieXRlIGhlYWRlciB1bnRpbCBoZWFw X2Zvcm1fdHVwbGUoKSBwYWNrcyBpdCwgZm9yDQorICogaW5zdGFuY2Ugd2hlbiB0dXBsZSByb3V0 aW5nIGhhcyBjb252ZXJ0ZWQgdGhlIHNsb3QuICBTbyBhbiBpbmxpbmUsDQorICogdW5jb21wcmVz c2VkIHZhcmxlbmEgaXMgY29tcGFyZWQgd2l0aG91dCBpdHMgaGVhZGVyLg0KKyAqLw0KK0JpdG1h cHNldCAqDQordGFibGVfc2xvdF9tb2RpZmllZF9pZHhfYXR0cnMoUmVsYXRpb24gcmVsLCBUdXBs ZVRhYmxlU2xvdCAqb2xkX3Nsb3QsDQorCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm5ld19zbG90 KQ0KK3sNCisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7DQorCUJp dG1hcHNldCAgKmF0dHJzOw0KKwlpbnQJCQlhdHRpZHggPSAtMTsNCisNCisJYXR0cnMgPSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWwsIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpOw0K Kw0KKwl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0g MCkNCisJew0KKwkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlcjsNCisJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dDsNCisJCURhdHVt CQl2YWx1ZTEsDQorCQkJCQl2YWx1ZTI7DQorCQlib29sCQludWxsMSwNCisJCQkJCW51bGwyOw0K Kw0KKwkJLyoNCisJCSAqIEEgd2hvbGUtcm93IHJlZmVyZW5jZSBpcyAiY2hhbmdlZCIgKGl0IGNv dWxkIG9ubHkgYmUgdW5jaGFuZ2VkDQorCQkgKiBhZnRlciBhIG5vLW9wIHVwZGF0ZSksIGFuZCBz byBpcyBhbnkgc3lzdGVtIGNvbHVtbiBvdGhlciB0aGFuDQorCQkgKiB0YWJsZW9pZCwgd2hpY2gg bmVlZCBub3QgYmUgc2V0IHlldCBpbiB0aGUgbmV3IHR1cGxlLg0KKwkJICovDQorCQlpZiAoYXR0 cm51bSA8PSAwKQ0KKwkJew0KKwkJCWlmIChhdHRybnVtID09IFRhYmxlT2lkQXR0cmlidXRlTnVt YmVyKQ0KKwkJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBhdHRpZHgpOw0KKwkJCWNv bnRpbnVlOw0KKwkJfQ0KKw0KKwkJYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywg YXR0cm51bSAtIDEpOw0KKwkJdmFsdWUxID0gc2xvdF9nZXRhdHRyKG9sZF9zbG90LCBhdHRybnVt LCAmbnVsbDEpOw0KKwkJdmFsdWUyID0gc2xvdF9nZXRhdHRyKG5ld19zbG90LCBhdHRybnVtLCAm bnVsbDIpOw0KKw0KKwkJaWYgKG51bGwxICE9IG51bGwyKQ0KKwkJCWNvbnRpbnVlOw0KKwkJaWYg KG51bGwxIHx8DQorCQkJKGF0dC0+YXR0bGVuID09IC0xID8NCisJCQkgdmFybGVuYV9pbWFnZV9l cSh2YWx1ZTEsIHZhbHVlMikgOg0KKwkJCSBkYXR1bUlzRXF1YWwodmFsdWUxLCB2YWx1ZTIsIGF0 dC0+YXR0Ynl2YWwsIGF0dC0+YXR0bGVuKSkpDQorCQkJYXR0cnMgPSBibXNfZGVsX21lbWJlcihh dHRycywgYXR0aWR4KTsNCisJfQ0KKw0KKwlyZXR1cm4gYXR0cnM7DQorfQ0KKw0KIC8qDQogICog c2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZSAtIHJlcGxhY2UgYSB0dXBsZQ0KICAqDQpAQCAtMzI0 LDYgKzQwNCwzMiBAQCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRl bVBvaW50ZXIgb3RpZCwNCiAJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LA0KIAkJCQkJCSAg U25hcHNob3Qgc25hcHNob3QsDQogCQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5k ZXhlcykNCit7DQorCVR1cGxlVGFibGVTbG90ICpvbGRzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUo cmVsLCBOVUxMKTsNCisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzOw0KKw0KKwlpZiAo IXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uKHJlbCwgb3RpZCwgU25hcHNob3RBbnksIG9s ZHNsb3QpKQ0KKwkJZWxvZyhFUlJPUiwgInR1cGxlIGNvbmN1cnJlbnRseSBkZWxldGVkIik7DQor CW1vZGlmaWVkX2lkeF9hdHRycyA9IHRhYmxlX3Nsb3RfbW9kaWZpZWRfaWR4X2F0dHJzKHJlbCwg b2xkc2xvdCwgc2xvdCk7DQorCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qob2xkc2xvdCk7 DQorDQorCXNpbXBsZV90YWJsZV90dXBsZV91cGRhdGVfZXh0KHJlbCwgb3RpZCwgc2xvdCwgc25h cHNob3QsDQorCQkJCQkJCQkgIG1vZGlmaWVkX2lkeF9hdHRycywgdXBkYXRlX2luZGV4ZXMpOw0K KwlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOw0KK30NCisNCisvKg0KKyAqIHNpbXBsZV90 YWJsZV90dXBsZV91cGRhdGVfZXh0IC0gcmVwbGFjZSBhIHR1cGxlLCBnaXZlbiB3aGF0IGNoYW5n ZWQNCisgKg0KKyAqIEFzIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoKSwgYnV0IHRoZSBjYWxs ZXIgcGFzc2VzIHRoZSBpbmRleGVkDQorICogYXR0cmlidXRlcyB0aGUgdXBkYXRlIGNoYW5nZXMs IGFzIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRha2VzIHRoZW0uDQorICovDQordm9pZA0KK3NpbXBs ZV90YWJsZV90dXBsZV91cGRhdGVfZXh0KFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwN CisJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwNCisJCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCwNCisJCQkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywNCisJ CQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykNCiB7DQogCVRNX1Jlc3Vs dAlyZXN1bHQ7DQogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7DQpAQCAtMzMzLDcgKzQzOSw5IEBAIHNp bXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLA0K IAkJCQkJCQkJR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwNCiAJCQkJCQkJCTAsIHNuYXBzaG90 LCBJbnZhbGlkU25hcHNob3QsDQogCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAs DQotCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7DQorCQkJCQkJCQkm dG1mZCwgJmxvY2ttb2RlLA0KKwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLA0KKwkJCQkJCQkJ dXBkYXRlX2luZGV4ZXMpOw0KIA0KIAlzd2l0Y2ggKHJlc3VsdCkNCiAJew0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVw YWNrLmMNCmluZGV4IDFiMWE4MjEzMzU4Li41ZmM1ODA4ZTA3OSAxMDA2NDQNCi0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jDQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBh Y2suYw0KQEAgLTI5MTUsNiArMjkxNSwxMSBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxh dGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLA0KIAlUTV9GYWlsdXJlRGF0 YSB0bWZkOw0KIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVzOw0KIAlUTV9SZXN1bHQJ cmVzOw0KKwlCaXRtYXBzZXQgICptb2RpZmllZF9pZHhfYXR0cnM7DQorDQorCW1vZGlmaWVkX2lk eF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLA0KKwkJ CQkJCQkJCQkJCQlvbmRpc2tfdHVwbGUsDQorCQkJCQkJCQkJCQkJCXNwaWxsZWRfdHVwbGUpOw0K IA0KIAkvKg0KIAkgKiBDYXJyeSBvdXQgdGhlIHVwZGF0ZSwgc2tpcHBpbmcgbG9naWNhbCBkZWNv ZGluZyBmb3IgaXQuDQpAQCAtMjkyNSw3ICsyOTMwLDkgQEAgYXBwbHlfY29uY3VycmVudF91cGRh dGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwNCiAJCQkJCQkJ IEludmFsaWRTbmFwc2hvdCwNCiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwNCiAJCQkJCQkJIGZh bHNlLA0KLQkJCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgJnVwZGF0ZV9pbmRleGVzKTsNCisJCQkJ CQkJICZ0bWZkLCAmbG9ja21vZGUsDQorCQkJCQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRh dGVfaW5kZXhlcyk7DQorCWJtc19mcmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7DQogCWlmIChyZXMg IT0gVE1fT2spDQogCQllcmVwb3J0KEVSUk9SLA0KIAkJCQllcnJjb2RlKEVSUkNPREVfVF9SX1NF UklBTElaQVRJT05fRkFJTFVSRSksDQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u Yw0KaW5kZXggMTM2NDQzMjgxNjQuLjVmODk0NjUxZDVlIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMNCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNSZXBsaWNhdGlvbi5jDQpAQCAtOTg5LDYgKzk4OSw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlv blVwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLA0KIAlib29sCQlza2lwX3R1cGxl ID0gZmFsc2U7DQogCVJlbGF0aW9uCXJlbCA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVz YzsNCiAJSXRlbVBvaW50ZXIgdGlkID0gJihzZWFyY2hzbG90LT50dHNfdGlkKTsNCisJQml0bWFw c2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzOw0KIA0KIAkvKg0KIAkgKiBXZSBzdXBwb3J0IG9ubHkg bm9uLXN5c3RlbSB0YWJsZXMsIHdpdGgNCkBAIC0xMDI3LDggKzEwMjgsMTIgQEAgRXhlY1NpbXBs ZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sDQogCQlpZiAocmVs LT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQ0KIAkJCUV4ZWNQYXJ0aXRpb25DaGVjayhyZXN1bHRS ZWxJbmZvLCBzbG90LCBlc3RhdGUsIHRydWUpOw0KIA0KLQkJc2ltcGxlX3RhYmxlX3R1cGxlX3Vw ZGF0ZShyZWwsIHRpZCwgc2xvdCwgZXN0YXRlLT5lc19zbmFwc2hvdCwNCi0JCQkJCQkJCSAgJnVw ZGF0ZV9pbmRleGVzKTsNCisJCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sDQorCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90LCBzbG90 KTsNCisNCisJCXNpbXBsZV90YWJsZV90dXBsZV91cGRhdGVfZXh0KHJlbCwgdGlkLCBzbG90LCBl c3RhdGUtPmVzX3NuYXBzaG90LA0KKwkJCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBk YXRlX2luZGV4ZXMpOw0KKwkJYm1zX2ZyZWUobW9kaWZpZWRfaWR4X2F0dHJzKTsNCiANCiAJCWNv bmZsaWN0aW5kZXhlcyA9IHJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhl czsNCiANCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jDQppbmRleCA1NThjZWVj ZTliYi4uZDMxZWFlOTRmYjIgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYw0KKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMNCkBAIC0xOCw2ICsxOCw3IEBADQogICoJCUV4ZWNNb2RpZnlUYWJsZQkJLSByZXRyaWV2ZSB0 aGUgbmV4dCB0dXBsZSBmcm9tIHRoZSBub2RlDQogICoJCUV4ZWNFbmRNb2RpZnlUYWJsZQktIHNo dXQgZG93biB0aGUgTW9kaWZ5VGFibGUgbm9kZQ0KICAqCQlFeGVjUmVTY2FuTW9kaWZ5VGFibGUg LSByZXNjYW4gdGhlIE1vZGlmeVRhYmxlIG5vZGUNCisgKgkJRXhlY1VwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMgLSBmaW5kIHNldCBvZiB1cGRhdGVkIGluZGV4ZWQgY29sdW1ucw0KICAqDQogICoJIE5P VEVTDQogICoJCVRoZSBNb2RpZnlUYWJsZSBub2RlIHJlY2VpdmVzIGlucHV0IGZyb20gaXRzIG91 dGVyUGxhbiwgd2hpY2ggaXMNCkBAIC01Niw2ICs1Nyw3IEBADQogI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCINCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCINCiAjaW5jbHVkZSAi YWNjZXNzL3R1cGNvbnZlcnQuaCINCisjaW5jbHVkZSAiYWNjZXNzL3R1cGRlc2MuaCINCiAjaW5j bHVkZSAiYWNjZXNzL3hhY3QuaCINCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIg0KICNp bmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiDQpAQCAtMTkyLDYgKzE5NCw0MCBAQCBz dGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNNZXJnZU5vdE1hdGNoZWQoTW9kaWZ5VGFibGVDb250 ZXh0ICpjb250ZXh0LA0KIAkJCQkJCQkJCQkgICBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LA0KIAkJCQkJCQkJCQkgICBib29sIGNhblNldFRhZyk7DQogDQorLyoNCisgKiBFeGVjVXBkYXRl TW9kaWZpZWRJZHhBdHRycw0KKyAqDQorICogUmV0dXJuIHRoZSBzZXQgb2YgaW5kZXhlZCBhdHRy aWJ1dGVzIHdob3NlIHZhbHVlcyBkaWZmZXIgYmV0d2VlbiBvbGRfdHRzDQorICogYW5kIG5ld190 dHMsIHVzaW5nIHRoZSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIGNvbnZlbnRp b24uICBUaGUNCisgKiByZXN1bHQgZGVzY3JpYmVzIHRoaXMgb25lIHBhaXIgb2YgdHVwbGVzOyB0 aGUgY2FsbGVyIGZyZWVzIGl0Lg0KKyAqDQorICogQWxsIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUg Y29tcGFyZWQsIG5vdCBqdXN0IHRob3NlIHRoZSBVUERBVEUgdGFyZ2V0cy4NCisgKiBFeGVjR2V0 QWxsVXBkYXRlZENvbHMoKSBuYW1lcyB0aGUgY29sdW1ucyBhbiBVUERBVEUgdGFyZ2V0cywgbm90 IHRoZSB2YWx1ZXMNCisgKiB0aGF0IGNoYW5nZWQ6IGEgQkVGT1JFIFJPVyB0cmlnZ2VyIGNhbiBj aGFuZ2UgYW4gaW5kZXhlZCBjb2x1bW4gd2l0aA0KKyAqIGhlYXBfbW9kaWZ5X3R1cGxlKCkgKHNl ZSB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcigpKSwgYW5kIGxvZ2ljYWwNCisgKiByZXBsaWNhdGlv biBhbmQgUkVQQUNLIGFwcGx5IGhhbmQgdXMgd2hvbGUgdHVwbGVzLg0KKyAqDQorICogVmFsdWVz IGFyZSBjb21wYXJlZCBieXRlIGZvciBieXRlIGFzIHN0b3JlZCwgYXMgaGVhcF91cGRhdGUoKSBh bHdheXMgaGFzDQorICogKHNlZSB0YWJsZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycygpKS4gIEFu IHVuY2hhbmdlZCB0b2FzdGVkIHZhbHVlIGtlZXBzDQorICogaXRzIHRvYXN0IHBvaW50ZXIsIHNv IGl0IGNvbXBhcmVzIGVxdWFsIHdpdGhvdXQgYmVpbmcgZmV0Y2hlZC4gIFR3byB2YWx1ZXMNCisg KiB0aGF0IGFyZSBlcXVhbCBidXQgc3RvcmVkIGRpZmZlcmVudGx5IGNvdW50IGFzIGNoYW5nZWQ7 IHRoYXQgY29zdHMgYW4NCisgKiBpbmRleCBlbnRyeSwgbmV2ZXIgYSBtaXNzZWQgb25lLg0KKyAq DQorICogc2ltcGxlX2hlYXBfdXBkYXRlKCkgbWFrZXMgdGhlIHNhbWUgZGV0ZXJtaW5hdGlvbiBm cm9tIGEgVElEIGFuZCBhDQorICogSGVhcFR1cGxlIGluIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0 dHJzKCksIGFuZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKCkNCisgKiB3aXRoIHRhYmxlX3Ns b3RfbW9kaWZpZWRfaWR4X2F0dHJzKCkuDQorICovDQorQml0bWFwc2V0ICoNCitFeGVjVXBkYXRl TW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLA0KKwkJCQkJCSAg IFR1cGxlVGFibGVTbG90ICpvbGRfdHRzLA0KKwkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdf dHRzKQ0KK3sNCisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPT0gMCkNCisJCXJl dHVybiBOVUxMOw0KKw0KKwlyZXR1cm4gdGFibGVfc2xvdF9tb2RpZmllZF9pZHhfYXR0cnMocmVz dWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLA0KKwkJCQkJCQkJCQkgb2xkX3R0cywgbmV3X3R0 cyk7DQorfQ0KIA0KIC8qDQogICogVmVyaWZ5IHRoYXQgdGhlIHR1cGxlcyB0byBiZSBwcm9kdWNl ZCBieSBJTlNFUlQgbWF0Y2ggdGhlDQpAQCAtMjIwMywxNCArMjIzOSwxNyBAQCBFeGVjVXBkYXRl UHJlcGFyZVNsb3QoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywNCiAgKi8NCiBzdGF0aWMg VE1fUmVzdWx0DQogRXhlY1VwZGF0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sDQotCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBI ZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpzbG90LA0KLQkJCSAgYm9vbCBjYW5T ZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkNCisJCQkgIEl0ZW1Qb2ludGVyIHR1cGxl aWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVwbGVUYWJsZVNsb3QgKm9sZFNsb3QsDQorCQkJICBU dXBsZVRhYmxlU2xvdCAqc2xvdCwgYm9vbCBjYW5TZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0 ZUN4dCkNCiB7DQogCUVTdGF0ZQkgICAqZXN0YXRlID0gY29udGV4dC0+ZXN0YXRlOw0KIAlSZWxh dGlvbglyZXN1bHRSZWxhdGlvbkRlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7 DQogCWJvb2wJCXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxlZDsNCiAJVE1fUmVzdWx0CXJlc3Vs dDsNCiANCisJLyogVGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCB0 cmlnZ2VyIG5ldyBpbmRleCBlbnRyaWVzICovDQorCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9h dHRycyA9IE5VTEw7DQorDQogCXVwZGF0ZUN4dC0+Y3Jvc3NQYXJ0VXBkYXRlID0gZmFsc2U7DQog DQogCS8qDQpAQCAtMjMyNiw4ICsyMzY1LDEwIEBAIGxyZXBsYWNlOg0KIAlpZiAocmVzdWx0UmVs YXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0cikNCiAJCUV4ZWNDb25zdHJhaW50cyhyZXN1bHRSZWxJ bmZvLCBzbG90LCBlc3RhdGUpOw0KIA0KKwltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRl TW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsNCisNCiAJLyoN Ci0JICogcmVwbGFjZSB0aGUgaGVhcCB0dXBsZQ0KKwkgKiBDYWxsIGludG8gdGhlIHRhYmxlIEFN IHRvIHVwZGF0ZSB0aGUgaGVhcCB0dXBsZS4NCiAJICoNCiAJICogTm90ZTogaWYgZXNfY3Jvc3Nj aGVja19zbmFwc2hvdCBpc24ndCBJbnZhbGlkU25hcHNob3QsIHdlIGNoZWNrIHRoYXQNCiAJICog dGhlIHJvdyB0byBiZSB1cGRhdGVkIGlzIHZpc2libGUgdG8gdGhhdCBzbmFwc2hvdCwgYW5kIHRo cm93IGENCkBAIC0yMzQyLDcgKzIzODMsOSBAQCBscmVwbGFjZToNCiAJCQkJCQkJCWVzdGF0ZS0+ ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwNCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0 ICovICwNCiAJCQkJCQkJCSZjb250ZXh0LT50bWZkLCAmdXBkYXRlQ3h0LT5sb2NrbW9kZSwNCisJ CQkJCQkJCW1vZGlmaWVkX2lkeF9hdHRycywNCiAJCQkJCQkJCSZ1cGRhdGVDeHQtPnVwZGF0ZUlu ZGV4ZXMpOw0KKwlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOw0KIA0KIAlyZXR1cm4gcmVz dWx0Ow0KIH0NCkBAIC0yNTgzLDggKzI2MjYsOCBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29u dGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywNCiAJCSAqLw0KIHJl ZG9fYWN0Og0KIAkJbG9ja2VkdGlkID0gKnR1cGxlaWQ7DQotCQlyZXN1bHQgPSBFeGVjVXBkYXRl QWN0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBzbG90LA0KLQkJ CQkJCQkgICBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOw0KKwkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFj dChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgb2xkU2xvdCwNCisJ CQkJCQkJICAgc2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsNCiANCiAJCS8qDQogCQkgKiBJ ZiBFeGVjVXBkYXRlQWN0IHJlcG9ydHMgdGhhdCBhIGNyb3NzLXBhcnRpdGlvbiB1cGRhdGUgd2Fz IGRvbmUsDQpAQCAtMzQzNSw4ICszNDc4LDggQEAgbG1lcmdlX21hdGNoZWQ6DQogCQkJCQlBc3Nl cnQob2xkdHVwbGUgPT0gTlVMTCk7DQogDQogCQkJCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0KGNv bnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsDQotCQkJCQkJCQkJCSAgIE5VTEwsIG5ld3Ns b3QsIGNhblNldFRhZywNCi0JCQkJCQkJCQkJICAgJnVwZGF0ZUN4dCk7DQorCQkJCQkJCQkJCSAg IE5VTEwsIHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xvdCwNCisJCQkJCQkJCQkJICAgbmV3 c2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsNCiANCiAJCQkJCS8qDQogCQkJCQkgKiBBcyBp biBFeGVjVXBkYXRlKCksIGlmIEV4ZWNVcGRhdGVBY3QoKSByZXBvcnRzIHRoYXQgYQ0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jDQppbmRleCBkOGYwNGEwNTMwOS4uN2I4Mzg4MmJmMjggMTAw NjQ0DQotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jDQorKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jDQpAQCAtMjQ3Nyw2ICsyNDc3LDcgQEAgUmVs YXRpb25EZXN0cm95UmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVw ZGVzYykNCiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2lkYXR0cik7DQogCWJtc19mcmVlKHJlbGF0 aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIpOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFy aXplZGF0dHIpOw0KKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOw0KIAlpZiAo cmVsYXRpb24tPnJkX3B1YmRlc2MpDQogCQlwZnJlZShyZWxhdGlvbi0+cmRfcHViZGVzYyk7DQog CWlmIChyZWxhdGlvbi0+cmRfb3B0aW9ucykNCkBAIC01MzI1LDYgKzUzMjYsNyBAQCBSZWxhdGlv bkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJlbGF0aW9uKQ0KICAqCQkJCQkJCQkJaW5kZXgg KGVtcHR5IGlmIEZVTEwpDQogICoJSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HCUNvbHVt bnMgdGhhdCBibG9jayB1cGRhdGVzIGZyb20gYmVpbmcgSE9UDQogICoJSU5ERVhfQVRUUl9CSVRN QVBfU1VNTUFSSVpFRAlDb2x1bW5zIGluY2x1ZGVkIGluIHN1bW1hcml6aW5nIGluZGV4ZXMNCisg KglJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5jZWQgYnkgYW55IGlu ZGV4DQogICoNCiAgKiBBdHRyaWJ1dGUgbnVtYmVycyBhcmUgb2Zmc2V0IGJ5IEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgc28gdGhhdA0KICAqIHdlIGNhbiBpbmNsdWRlIHN5c3Rl bSBhdHRyaWJ1dGVzIChlLmcuLCBPSUQpIGluIHRoZSBiaXRtYXAgcmVwcmVzZW50YXRpb24uDQpA QCAtNTM0OSw2ICs1MzUxLDcgQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24g cmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpDQogCUJpdG1hcHNldCAgKmlk aW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcmVwbGljYSBpZGVudGl0eSAqLw0KIAlCaXRt YXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJsb2NraW5nIGlu ZGV4ZXMgKi8NCiAJQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIHdpdGgg c3VtbWFyaXppbmcgaW5kZXhlcyAqLw0KKwlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CS8qIGNv bHVtbnMgcmVmZXJlbmNlZCBieSBhbnkgaW5kZXggKi8NCiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0 Ow0KIAlMaXN0CSAgICpuZXdpbmRleG9pZGxpc3Q7DQogCU9pZAkJCXJlbHBraW5kZXg7DQpAQCAt NTM3MSw2ICs1Mzc0LDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVs YXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpDQogCQkJCXJldHVybiBibXNfY29w eShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsNCiAJCQljYXNlIElOREVYX0FUVFJfQklU TUFQX1NVTU1BUklaRUQ6DQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFy aXplZGF0dHIpOw0KKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoNCisJCQkJcmV0 dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7DQogCQkJZGVmYXVsdDoNCiAJ CQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7DQogCQl9DQpA QCAtNTU1MSw2ICs1NTU2LDggQEAgcmVzdGFydDoNCiAJCWdvdG8gcmVzdGFydDsNCiAJfQ0KIA0K KwlpbmRleGVkYXR0cnMgPSBibXNfdW5pb24oaG90YmxvY2tpbmdhdHRycywgc3VtbWFyaXplZGF0 dHJzKTsNCisNCiAJLyogRG9uJ3QgbGVhayB0aGUgb2xkIHZhbHVlcyBvZiB0aGVzZSBiaXRtYXBz LCBpZiBhbnkgKi8NCiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSBmYWxzZTsNCiAJYm1zX2Zy ZWUocmVsYXRpb24tPnJkX2tleWF0dHIpOw0KQEAgLTU1NjMsNiArNTU3MCw4IEBAIHJlc3RhcnQ6 DQogCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBOVUxMOw0KIAlibXNfZnJlZShyZWxh dGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOw0KIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIg PSBOVUxMOw0KKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOw0KKwlyZWxhdGlv bi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOw0KIA0KIAkvKg0KIAkgKiBOb3cgc2F2ZSBjb3BpZXMg b2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9uYWxseQ0K QEAgLTU1NzcsNiArNTU4Niw3IEBAIHJlc3RhcnQ6DQogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBi bXNfY29weShpZGluZGV4YXR0cnMpOw0KIAlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0g Ym1zX2NvcHkoaG90YmxvY2tpbmdhdHRycyk7DQogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0 ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7DQorCXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0 ciA9IGJtc19jb3B5KGluZGV4ZWRhdHRycyk7DQogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0g dHJ1ZTsNCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7DQogDQpAQCAtNTU5Myw2ICs1 NjAzLDggQEAgcmVzdGFydDoNCiAJCQlyZXR1cm4gaG90YmxvY2tpbmdhdHRyczsNCiAJCWNhc2Ug SU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoNCiAJCQlyZXR1cm4gc3VtbWFyaXplZGF0dHJz Ow0KKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEOg0KKwkJCXJldHVybiBpbmRleGVk YXR0cnM7DQogCQlkZWZhdWx0Og0KIAkJCWVsb2coRVJST1IsICJ1bmtub3duIGF0dHJLaW5kICV1 IiwgYXR0cktpbmQpOw0KIAkJCXJldHVybiBOVUxMOw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaA0KaW5kZXggOWUz NTk2MWZiOWUuLmZhN2M1NDA0MjVjIDEwMDY0NA0KLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oDQorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgNCkBAIC0zODksOCArMzg5 LDEzIEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwNCiAJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsDQog CQkJCQkJCSBDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucywNCiAJCQkJCQkJIFNuYXBzaG90 IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwNCi0JCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBM b2NrVHVwbGVNb2RlICpsb2NrbW9kZSwNCi0JCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0 ZV9pbmRleGVzKTsNCisJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2Rl IGxvY2ttb2RlLA0KKwkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMs IGJvb2wgaG90X2FsbG93ZWQpOw0KK2V4dGVybiBib29sIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUo UmVsYXRpb24gcmVsYXRpb24sDQorCQkJCQkJCQkgICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywNCisJCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSk7DQorZXh0ZXJu IExvY2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0 aW9uLA0KKwkJCQkJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7 DQogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhl YXBUdXBsZSB0dXBsZSwNCiAJCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBMb2NrVHVwbGVNb2RlIG1v ZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LA0KIAkJCQkJCQkJIGJvb2wgZm9sbG93X3Vw ZGF0ZXMsDQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgNCmluZGV4IGVhM2YyYTZiZTk5Li5hMzE3NGZiMjBmMSAx MDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgNCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgNCkBAIC01ODYsNiArNTg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg VGFibGVBbVJvdXRpbmUNCiAJCQkJCQkJCSBib29sIHdhaXQsDQogCQkJCQkJCQkgVE1fRmFpbHVy ZURhdGEgKnRtZmQsDQogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsDQorCQkJCQkJ CQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsDQogCQkJCQkJCQkgVFVfVXBk YXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOw0KIA0KIAkvKiBzZWUgdGFibGVfdHVwbGVfbG9j aygpIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAqLw0KQEAgLTE1OTQsNiArMTU5NSwx MCBAQCB0YWJsZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsIENv bW1hbmRJZCBjaWQsDQogICoJCWR1cmluZyB0YWJsZSByZXdyaXRlcyB3aGVyZSBSZWxhdGlvbklz TG9naWNhbGx5TG9nZ2VkKHJlbCkgaXMgbm90DQogICoJCXlldCBhY2N1cmF0ZSBmb3IgdGhlIG5l dyByZWxhdGlvbi4NCiAgKgljcm9zc2NoZWNrIC0gaWYgbm90IEludmFsaWRTbmFwc2hvdCwgYWxz byBjaGVjayBvbGQgdHVwbGUgYWdhaW5zdCB0aGlzDQorICoJbW9kaWZpZWRfaWR4X2F0dHJzIC0g dGhlIGluZGV4ZWQgYXR0cmlidXRlcyB3aG9zZSB2YWx1ZXMgZGlmZmVyIGJldHdlZW4NCisgKgkJ dGhlIG9sZCB0dXBsZSBhbmQgdGhlIG5ldyBvbmUsIG9mZnNldCBieQ0KKyAqCQlGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOyBzZWUgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMo KS4NCisgKgkJVGhlIGNhbGxlciBvd25zIGl0Lg0KICAqDQogICogT3V0cHV0IHBhcmFtZXRlcnM6 DQogICoJc2xvdCAtIG5ld2x5IGNvbnN0cnVjdGVkIHR1cGxlIGRhdGEgdG8gc3RvcmUNCkBAIC0x NjIxLDEyICsxNjI2LDEyIEBAIHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Q b2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LA0KIAkJCQkgICBDb21tYW5kSWQgY2lk LCB1aW50MzIgb3B0aW9ucywNCiAJCQkJICAgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNy b3NzY2hlY2ssDQogCQkJCSAgIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tU dXBsZU1vZGUgKmxvY2ttb2RlLA0KLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5k ZXhlcykNCisJCQkJICAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQ0KIHsNCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVh bS0+dHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwNCiAJCQkJCQkJCQkJIGNpZCwgb3B0aW9u cywgc25hcHNob3QsIGNyb3NzY2hlY2ssDQotCQkJCQkJCQkJCSB3YWl0LCB0bWZkLA0KLQkJCQkJ CQkJCQkgbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsNCisJCQkJCQkJCQkJIHdhaXQsIHRtZmQs IGxvY2ttb2RlLA0KKwkJCQkJCQkJCQkgbW9kaWZpZWRfaWR4X2F0dHJzLCB1cGRhdGVfaW5kZXhl cyk7DQogfQ0KIA0KIC8qDQpAQCAtMjExMiw2ICsyMTE3LDE0IEBAIGV4dGVybiB2b2lkIHNpbXBs ZV90YWJsZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsDQogZXh0 ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2lu dGVyIG90aWQsDQogCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgU25hcHNob3Qgc25h cHNob3QsDQogCQkJCQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7DQor ZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZV9leHQoUmVsYXRpb24gcmVsLCBJ dGVtUG9pbnRlciBvdGlkLA0KKwkJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LA0KKwkJ CQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LA0KKwkJCQkJCQkJCQkgIGNvbnN0IEJpdG1hcHNl dCAqbW9kaWZpZWRfaWR4X2F0dHJzLA0KKwkJCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVw ZGF0ZV9pbmRleGVzKTsNCitleHRlcm4gQml0bWFwc2V0ICp0YWJsZV9zbG90X21vZGlmaWVkX2lk eF9hdHRycyhSZWxhdGlvbiByZWwsDQorCQkJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZF9z bG90LA0KKwkJCQkJCQkJCQkJCVR1cGxlVGFibGVTbG90ICpuZXdfc2xvdCk7DQogDQogDQogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oDQppbmRleCAxNTJhMWRm YTU2OC4uNWNiZGIwOTI1NjQgMTAwNjQ0DQotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oDQorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oDQpAQCAtODE3LDUg KzgxNyw4IEBAIGV4dGVybiBSZXN1bHRSZWxJbmZvICpFeGVjTG9va3VwUmVzdWx0UmVsQnlPaWQo TW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSwNCiAJCQkJCQkJCQkJCSAgIE9pZCByZXN1bHRvaWQsDQog CQkJCQkJCQkJCQkgICBib29sIG1pc3Npbmdfb2ssDQogCQkJCQkJCQkJCQkgICBib29sIHVwZGF0 ZV9jYWNoZSk7DQorZXh0ZXJuIEJpdG1hcHNldCAqRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMo UmVzdWx0UmVsSW5mbyAqcmVsaW5mbywNCisJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqb2xk X3R0cywNCisJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7DQogDQogI2VuZGlm CQkJCQkJCS8qIEVYRUNVVE9SX0ggICovDQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaA0KaW5kZXggN2I4YzJiMWUzNjIuLjU1YjQ1 OWFkYmE4IDEwMDY0NA0KLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgNCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oDQpAQCAtMTY0LDYgKzE2NCw3IEBAIHR5cGVkZWYgc3RydWN0IFJl bGF0aW9uRGF0YQ0KIAlCaXRtYXBzZXQgICpyZF9pZGF0dHI7CQkvKiBpbmNsdWRlZCBpbiByZXBs aWNhIGlkZW50aXR5IGluZGV4ICovDQogCUJpdG1hcHNldCAgKnJkX2hvdGJsb2NraW5nYXR0cjsg LyogY29scyBibG9ja2luZyBIT1QgdXBkYXRlICovDQogCUJpdG1hcHNldCAgKnJkX3N1bW1hcml6 ZWRhdHRyOwkvKiBjb2xzIGluZGV4ZWQgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAqLw0KKwlCaXRt YXBzZXQgICpyZF9pbmRleGVkYXR0cjsgLyogY29scyByZWZlcmVuY2VkIGJ5IGFueSBpbmRleCAq Lw0KIA0KIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2Ny aXB0b3IsIG9yIE5VTEwgKi8NCiANCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaA0KaW5kZXggM2U5N2RhNmE1Mzgu LjQxNzk5MGU4MDIyIDEwMDY0NA0KLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaA0K KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaA0KQEAgLTcyLDYgKzcyLDcgQEAgdHlw ZWRlZiBlbnVtIEluZGV4QXR0ckJpdG1hcEtpbmQNCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJ VFlfS0VZLA0KIAlJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcsDQogCUlOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQsDQorCUlOREVYX0FUVFJfQklUTUFQX0lOREVYRUQsDQogfSBJbmRl eEF0dHJCaXRtYXBLaW5kOw0KIA0KIGV4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLA0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLm91dCBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRh dGUtcHJ1bmVkLm91dA0KaW5kZXggYTZhNGU4ZGI5OTYuLjA3ZWY2N2ExZWI0IDEwMDY0NA0KLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3N5c2NhY2hlLXVw ZGF0ZS1wcnVuZWQub3V0DQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv ZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQNCkBAIC0xNiw4ICsxNiw4IEBAIHN0 ZXAgd2FrZWludmFsNDoNCiBzdGVwIGF0MjogPC4uLiBjb21wbGV0ZWQ+DQogc3RlcCB3YWtlaW52 YWw0OiA8Li4uIGNvbXBsZXRlZD4NCiBzdGVwIHdha2VncmFudDQ6IA0KLQlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOw0KLQlTRUxF Q1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicp Ow0KKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2ltcGxlX2hlYXBfdXBk YXRlLWJlZm9yZS1waW4nKTsNCisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAo J3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQogIDx3YWl0aW5nIC4uLj4NCiBzdGVw IGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+DQogRVJST1I6ICB0dXBsZSBjb25jdXJyZW50bHkgZGVs ZXRlZA0KQEAgLTQyLDggKzQyLDggQEAgc3RlcCBta3JlbHM0Og0KIAlTRUxFQ1QgRlJPTSB2YWN0 ZXN0Lm1rcmVscygnaW50cnVkZXInLCAxLCAxMDApOyAgLS0gcmVwb3B1bGF0ZSBMUF9VTlVTRUQN CiANCiBzdGVwIHdha2VncmFudDQ6IA0KLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2Rl dGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOw0KLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOw0KKwlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsN CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3NpbXBsZV9oZWFwX3VwZGF0 ZS1iZWZvcmUtcGluJyk7DQogIDx3YWl0aW5nIC4uLj4NCiBzdGVwIGdyYW50MTogPC4uLiBjb21w bGV0ZWQ+DQogRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25z dHJhaW50ICJwZ19jbGFzc19vaWRfaW5kZXgiDQpAQCAtNzEsOCArNzEsOCBAQCBzdGVwIGF0Mjog PC4uLiBjb21wbGV0ZWQ+DQogc3RlcCB3YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRlZD4NCiBzdGVw IGF0NDogQUxURVIgVEFCTEUgdmFjdGVzdC5jaGlsZDUwIElOSEVSSVQgdmFjdGVzdC5vcmlnNTA7 DQogc3RlcCB3YWtlZ3JhbnQ0OiANCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsNCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3Bv aW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsNCisJU0VMRUNUIEZST00gaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQor CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUt YmVmb3JlLXBpbicpOw0KICA8d2FpdGluZyAuLi4+DQogc3RlcCBncmFudDE6IDwuLi4gY29tcGxl dGVkPg0KIHN0ZXAgd2FrZWdyYW50NDogPC4uLiBjb21wbGV0ZWQ+DQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVu ZWQuc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLnNwZWMNCmluZGV4IGUzYTQyOTViZDEyLi5mZWY5YWM4OTVhMSAxMDA2 NDQNCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLnNwZWMNCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMNCkBAIC0xMDMsNyArMTAzLDcg QEAgc2Vzc2lvbiBzMQ0KIHNldHVwCXsNCiAJU0VUIGRlYnVnX2Rpc2NhcmRfY2FjaGVzID0gMDsN CiAJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsNCi0JU0VMRUNUIEZS T00gaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nLCAnd2Fp dCcpOw0KKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnc2ltcGxlX2hlYXBf dXBkYXRlLWJlZm9yZS1waW4nLCAnd2FpdCcpOw0KIH0NCiBzdGVwIGNhY2hlZmlsbDEJeyBTRUxF Q1QgRlJPTSB2YWN0ZXN0LnJlbG9pZF9jYXRjYWNoZV9zZXQoJ3ZhY3Rlc3Qub3JpZzUwJyk7IH0N CiBzdGVwIGdyYW50MQl7IEdSQU5UIFNFTEVDVCBPTiB2YWN0ZXN0Lm9yaWc1MCBUTyBQVUJMSUM7 IH0NCkBAIC0xNDAsOCArMTQwLDggQEAgc3RlcCBta3JlbHM0CXsNCiAJU0VMRUNUIEZST00gdmFj dGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwgMTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBfVU5VU0VE DQogfQ0KIHN0ZXAgd2FrZWdyYW50NAl7DQotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNf ZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQotCVNFTEVDVCBGUk9NIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQorCVNFTEVDVCBGUk9N IGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicp Ow0KKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBk YXRlLWJlZm9yZS1waW4nKTsNCiB9DQogc3RlcCBhdDQJeyBBTFRFUiBUQUJMRSB2YWN0ZXN0LmNo aWxkNTAgSU5IRVJJVCB2YWN0ZXN0Lm9yaWc1MDsgfQ0KIHN0ZXAgd2FrZWludmFsNAl7DQotLSAN CjIuNTAuMQ0KDQo= --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0008-hash-implement-amcomparedatums.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0008-hash-implement-amcomparedatums.patch RnJvbSA5Y2UyMmI3ZDUwMzkyZDQ5NGY0ZGE0ZDU3NGY5ZDEzYTNlY2IzMDIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBGcmks IDE2IE9jdCAyMDI2IDEyOjUwOjMwIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDgvOF0gaGFz aDogaW1wbGVtZW50IGFtY29tcGFyZWRhdHVtcw0KDQpBIGhhc2ggaW5kZXggc3RvcmVzIG9ubHkg dGhlIGhhc2ggY29kZSBvZiB0aGUgdmFsdWUsIGFuZCBldmVyeSBzY2FuLCBwbGFpbg0Kb3IgYml0 bWFwLCByZWNoZWNrcyB0aGUgaGVhcCB0dXBsZS4gIFNvIGFuIHVwZGF0ZWQgcm93IGdpdmVzIHRo ZSBzYW1lIGVudHJ5DQpleGFjdGx5IHdoZW4gdGhlIG5ldyB2YWx1ZSBoYXMgdGhlIHNhbWUgaGFz aCBjb2RlIGFzIHRoZSBvbGQgb25lLg0KDQpVcGRhdGVzIHRoYXQgYmVjb21lIEhPVCBpbmNsdWRl IGNoYW5naW5nIHRoZSBkaXNwbGF5IHNjYWxlIG9mIGEgbnVtZXJpYywNCndoaWNoIGhhc2hfbnVt ZXJpYygpIGlnbm9yZXMsIGFuZCBjaGFuZ2luZyBhIHN0cmluZyB0byBvbmUgZXF1YWwgdW5kZXIg YQ0Kbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb24uDQoNCkEgdGVzdCBjaGVja3MgdGhhdCBhbiBl eGNsdXNpb24gY29uc3RyYWludCB1c2luZyBhIGhhc2ggaW5kZXggc3RpbGwgc2VlcyBhDQpjaGFu Z2UgdG8gYSB2YWx1ZSB3aXRoIHRoZSBzYW1lIGhhc2ggY29kZSAoaGFzaGludDgoMSkgPSBoYXNo aW50OCgyXjMyKSk6DQp0aGUgZXhlY3V0b3IgZG9lcyBub3QgY29uc3VsdCBhbWNvbXBhcmVkYXR1 bXMgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50cy4NCi0tLQ0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2guYyAgICAgICAgICAgfCAgMjAgKysrLQ0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNo LmggICAgICAgICAgICAgICAgfCAgIDMgKw0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGFz aF9pbmRleC5vdXQgfCAxMjQgKysrKysrKysrKysrKysrKysrKysrKysNCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9oYXNoX2luZGV4LnNxbCAgICAgIHwgIDU5ICsrKysrKysrKysrDQogNCBmaWxlcyBj aGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KDQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaC5jDQppbmRleCAwYjA1YzQ2MDZlMS4uODY3N2I2YjNmOTYgMTAwNjQ0DQotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMNCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNo L2hhc2guYw0KQEAgLTEyMyw3ICsxMjMsNyBAQCBoYXNoaGFuZGxlcihQR19GVU5DVElPTl9BUkdT KQ0KIAkJLmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMLA0KIAkJLmFtdHJhbnNsYXRlc3RyYXRlZ3kg PSBoYXNodHJhbnNsYXRlc3RyYXRlZ3ksDQogCQkuYW10cmFuc2xhdGVjbXB0eXBlID0gaGFzaHRy YW5zbGF0ZWNtcHR5cGUsDQotCQkuYW1jb21wYXJlZGF0dW1zID0gTlVMTCwNCisJCS5hbWNvbXBh cmVkYXR1bXMgPSBoYXNoY29tcGFyZWRhdHVtcywNCiAJfTsNCiANCiAJUEdfUkVUVVJOX1BPSU5U RVIoJmFtcm91dGluZSk7DQpAQCAtMTAyOSwzICsxMDI5LDIxIEBAIGhhc2h0cmFuc2xhdGVjbXB0 eXBlKENvbXBhcmVUeXBlIGNtcHR5cGUsIE9pZCBvcGZhbWlseSkNCiAJCXJldHVybiBIVEVxdWFs U3RyYXRlZ3lOdW1iZXI7DQogCXJldHVybiBJbnZhbGlkU3RyYXRlZ3k7DQogfQ0KKw0KKy8qDQor ICogaGFzaGNvbXBhcmVkYXR1bXMoKSAtLSB3b3VsZCBuZXdWYWx1ZSBnaXZlIHRoZSBzYW1lIGlu ZGV4IGVudHJ5IGFzIG9sZFZhbHVlPw0KKyAqDQorICogQSBoYXNoIGluZGV4IHN0b3JlcyBvbmx5 IHRoZSBoYXNoIGNvZGUgb2YgdGhlIHZhbHVlLCBhbmQgZXZlcnkgc2Nhbg0KKyAqIHJlY2hlY2tz IHRoZSBoZWFwIHR1cGxlLCBzbyB0aGUgZW50cmllcyBhcmUgdGhlIHNhbWUgaWYgdGhlIGhhc2gg Y29kZXMNCisgKiBhcmUuICBUaGVuLCBmb3IgZXhhbXBsZSwgbnVtZXJpYyAxLjAgYW5kIDEuMDAs IG9yIHN0cmluZ3MgZXF1YWwgdW5kZXIgYQ0KKyAqIGNhc2UtaW5zZW5zaXRpdmUgY29sbGF0aW9u LCBtYWtlIG5vIG5ldyBlbnRyaWVzLg0KKyAqLw0KK2Jvb2wNCitoYXNoY29tcGFyZWRhdHVtcyhS ZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8sIGludCBhdHRudW0sDQorCQkJCSAg T2lkIHR5cGlkLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwsDQorCQkJCSAgRGF0dW0gb2xk VmFsdWUsIERhdHVtIG5ld1ZhbHVlKQ0KK3sNCisJQXNzZXJ0KGF0dG51bSA9PSAxKTsNCisJcmV0 dXJuIF9oYXNoX2RhdHVtMmhhc2hrZXkoaW5kZXgsIG9sZFZhbHVlKSA9PQ0KKwkJX2hhc2hfZGF0 dW0yaGFzaGtleShpbmRleCwgbmV3VmFsdWUpOw0KK30NCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2guaA0KaW5kZXggYTg3MDJm MGU1ZWEuLjJmZjJhYWM5ODIyIDEwMDY0NA0KLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2gu aA0KKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2guaA0KQEAgLTM4OSw2ICszODksOSBAQCBl eHRlcm4gdm9pZCBoYXNoYWRqdXN0bWVtYmVycyhPaWQgb3BmYW1pbHlvaWQsDQogDQogZXh0ZXJu IENvbXBhcmVUeXBlIGhhc2h0cmFuc2xhdGVzdHJhdGVneShTdHJhdGVneU51bWJlciBzdHJhdGVn eSwgT2lkIG9wZmFtaWx5KTsNCiBleHRlcm4gU3RyYXRlZ3lOdW1iZXIgaGFzaHRyYW5zbGF0ZWNt cHR5cGUoQ29tcGFyZVR5cGUgY21wdHlwZSwgT2lkIG9wZmFtaWx5KTsNCitleHRlcm4gYm9vbCBo YXNoY29tcGFyZWRhdHVtcyhSZWxhdGlvbiBpbmRleCwgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJ bmZvLA0KKwkJCQkJCQkgIGludCBhdHRudW0sIE9pZCB0eXBpZCwgaW50MTYgdHlwbGVuLA0KKwkJ CQkJCQkgIGJvb2wgdHlwYnl2YWwsIERhdHVtIG9sZFZhbHVlLCBEYXR1bSBuZXdWYWx1ZSk7DQog DQogLyogcHJpdmF0ZSByb3V0aW5lcyAqLw0KIA0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaGFzaF9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hh c2hfaW5kZXgub3V0DQppbmRleCAwYjA5OWI5ZTc3MS4uMDE5MmNjZDhhZTMgMTAwNjQ0DQotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hhc2hfaW5kZXgub3V0DQorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2hhc2hfaW5kZXgub3V0DQpAQCAtMzc1LDMgKzM3NSwxMjcgQEAg Q1JFQVRFIElOREVYIGhhc2hfZjhfaW5kZXgyIE9OIGhhc2hfZjhfaGVhcCBVU0lORyBoYXNoIChy YW5kb20gZmxvYXQ4X29wcykNCiAJV0lUSCAoZmlsbGZhY3Rvcj0xMDEpOw0KIEVSUk9SOiAgdmFs dWUgMTAxIG91dCBvZiBib3VuZHMgZm9yIG9wdGlvbiAiZmlsbGZhY3RvciINCiBERVRBSUw6ICBW YWxpZCB2YWx1ZXMgYXJlIGJldHdlZW4gIjEwIiBhbmQgIjEwMCIuDQorLS0NCistLSBBbiBVUERB VEUgdG8gYSB2YWx1ZSB3aXRoIHRoZSBzYW1lIGhhc2ggY29kZSBpcyBIT1Q6IHRoZSBpbmRleCBz dG9yZXMNCistLSBvbmx5IHRoZSBjb2RlLCBhbmQgc2NhbnMgcmVjaGVjayB0aGUgaGVhcCB0dXBs ZS4NCistLQ0KK0NSRUFURSBUQUJMRSBoYXNoX2hvdCAoaWQgaW50LCBuIG51bWVyaWMpIFdJVEgg KGZpbGxmYWN0b3IgPSAxMCk7DQorQ1JFQVRFIElOREVYIGhhc2hfaG90X24gT04gaGFzaF9ob3Qg VVNJTkcgaGFzaCAobik7DQorQ1JFQVRFIElOREVYIGhhc2hfaG90X24yIE9OIGhhc2hfaG90IFVT SU5HIGhhc2ggKChuICogMikpOw0KK0lOU0VSVCBJTlRPIGhhc2hfaG90IFNFTEVDVCBnLCBnIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBnOw0KKy0tIChwZ19zdGF0X2dldF94YWN0XyogY291 bnQgdGhpcyB0cmFuc2FjdGlvbidzIHVwZGF0ZXMsIGFuZCBlYXJsaWVyDQorLS0gdHJhbnNhY3Rp b25zJyBub3QgeWV0IHJlcG9ydGVkKQ0KK0NSRUFURSBGVU5DVElPTiBoYXNoX2hvdF9jb3VudChP VVQgdXBkYXRlZCBiaWdpbnQsIE9VVCBob3QgYmlnaW50KQ0KK0xBTkdVQUdFIHNxbCBBUyAkJA0K KyAgU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoJ2hhc2hfaG90Jzo6cmVn Y2xhc3MpLA0KKyAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdo YXNoX2hvdCc6OnJlZ2NsYXNzKSAkJDsNCitCRUdJTjsNCistLSBudW1lcmljIGhhc2hlcyBpZ25v cmUgdGhlIGRpc3BsYXkgc2NhbGUsIGluIHRoZSBjb2x1bW4gYW5kIGluIHRoZQ0KKy0tIGV4cHJl c3Npb246IEhPVA0KK1VQREFURSBoYXNoX2hvdCBTRVQgbiA9IG4gKyAwLjAwOw0KK1NFTEVDVCAq IEZST00gaGFzaF9ob3RfY291bnQoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0t LS0NCisgICAgICA1MCB8ICA1MA0KKygxIHJvdykNCisNCistLSBhIGRpZmZlcmVudCB2YWx1ZTog bm90IEhPVA0KK1VQREFURSBoYXNoX2hvdCBTRVQgbiA9IG4gKyAxMDAgV0hFUkUgaWQgPD0gNTsN CitTRUxFQ1QgKiBGUk9NIGhhc2hfaG90X2NvdW50KCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0t LS0tLS0tKy0tLS0tDQorICAgICAgNTUgfCAgNTANCisoMSByb3cpDQorDQorQ09NTUlUOw0KK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7DQor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIG4gRlJPTSBoYXNoX2hvdCBXSEVSRSBuID0g NzsNCisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIA0KKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIEluZGV4IFNjYW4gdXNpbmcgaGFz aF9ob3RfbiBvbiBoYXNoX2hvdA0KKyAgIEluZGV4IENvbmQ6IChuID0gJzcnOjpudW1lcmljKQ0K KygyIHJvd3MpDQorDQorU0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9IDc7DQor IGlkIHwgIG4gICANCistLS0tKy0tLS0tLQ0KKyAgNyB8IDcuMDANCisoMSByb3cpDQorDQorU0VM RUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9IDcuMDAwOw0KKyBpZCB8ICBuICAgDQor LS0tLSstLS0tLS0NCisgIDcgfCA3LjAwDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBpZCwgbiBGUk9N IGhhc2hfaG90IFdIRVJFIG4gPSAzOw0KKyBpZCB8IG4gDQorLS0tLSstLS0NCisoMCByb3dzKQ0K Kw0KK1NFTEVDVCBpZCwgbiBGUk9NIGhhc2hfaG90IFdIRVJFIG4gPSAxMDM7DQorIGlkIHwgICBu ICAgIA0KKy0tLS0rLS0tLS0tLS0NCisgIDMgfCAxMDMuMDANCisoMSByb3cpDQorDQorU0VMRUNU IGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiAqIDIgPSAxNDsNCisgaWQgfCAgbiAgIA0KKy0t LS0rLS0tLS0tDQorICA3IHwgNy4wMA0KKygxIHJvdykNCisNCitSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsNCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsNCitTRUxFQ1QgY291bnQoKikgRlJP TSBoYXNoX2hvdCBoIFdIRVJFIG4gPSAoU0VMRUNUIG4gRlJPTSBoYXNoX2hvdCBXSEVSRSBpZCA9 IGguaWQpOw0KKyBjb3VudCANCistLS0tLS0tDQorICAgIDUwDQorKDEgcm93KQ0KKw0KK1JFU0VU IGVuYWJsZV9pbmRleHNjYW47DQorUkVTRVQgZW5hYmxlX3NlcXNjYW47DQorRFJPUCBUQUJMRSBo YXNoX2hvdDsNCistLSBBbiBleGNsdXNpb24gY29uc3RyYWludCBpcyBjaGVja2VkIG9uIHRoZSB2 YWx1ZXMsIHNvIGEgY2hhbmdlIHRvIGEgdmFsdWUNCistLSB3aXRoIHRoZSBzYW1lIGhhc2ggY29k ZSBtdXN0IHN0aWxsIG1ha2UgYSBuZXcgZW50cnkgYW5kIGJlIGNoZWNrZWQuDQorLS0gaGFzaGlu dDggZm9sZHMgdGhlIGhpZ2ggaGFsZiBpbnRvIHRoZSBsb3csIHNvIDEgYW5kIDJeMzIgY29sbGlk ZS4NCitTRUxFQ1QgaGFzaGludDgoMSkgPSBoYXNoaW50OCg0Mjk0OTY3Mjk2KSBBUyBzYW1lX2hh c2g7DQorIHNhbWVfaGFzaCANCistLS0tLS0tLS0tLQ0KKyB0DQorKDEgcm93KQ0KKw0KK0NSRUFU RSBUQUJMRSBoYXNoX2hvdCAoaWQgaW50LCBrIGludDgsIEVYQ0xVREUgVVNJTkcgaGFzaCAoayBX SVRIID0pKQ0KKyAgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsNCitJTlNFUlQgSU5UTyBoYXNoX2hv dCBWQUxVRVMgKDEsIDEpLCAoMiwgNDI5NDk2NzI5Nik7DQorVVBEQVRFIGhhc2hfaG90IFNFVCBr ID0gNDI5NDk2NzI5NiBXSEVSRSBpZCA9IDE7DQorRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFs dWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgImhhc2hfaG90X2tfZXhjbCINCitERVRB SUw6ICBLZXkgKGspPSg0Mjk0OTY3Mjk2KSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGsp PSg0Mjk0OTY3Mjk2KS4NCistLSBwZ19zdGF0X2dldF94YWN0XyogYWxzbyBjb3VudCBlYXJsaWVy IHRyYW5zYWN0aW9ucycgdXBkYXRlcyBub3QgeWV0DQorLS0gcmVwb3J0ZWQ7IHJlcG9ydCB0aGVt LCBzbyB0aGUgY291bnRzIGJlbG93IHN0YXJ0IGZyb20gemVybw0KK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsNCisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitCRUdJTjsNCitERUxFVEUgRlJP TSBoYXNoX2hvdCBXSEVSRSBpZCA9IDI7DQorLS0gd2l0aG91dCBhIGNvbmZsaWN0LCB0aGUgdXBk YXRlIGlzIGNoZWNrZWQgYW5kIGlzIG5vdCBIT1QNCitVUERBVEUgaGFzaF9ob3QgU0VUIGsgPSA0 Mjk0OTY3Mjk2IFdIRVJFIGlkID0gMTsNCitTRUxFQ1QgKiBGUk9NIGhhc2hfaG90X2NvdW50KCk7 DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgIDEgfCAgIDANCiso MSByb3cpDQorDQorQ09NTUlUOw0KK1NFTEVDVCAqIEZST00gaGFzaF9ob3Q7DQorIGlkIHwgICAg IGsgICAgICANCistLS0tKy0tLS0tLS0tLS0tLQ0KKyAgMSB8IDQyOTQ5NjcyOTYNCisoMSByb3cp DQorDQorRFJPUCBUQUJMRSBoYXNoX2hvdDsNCitEUk9QIEZVTkNUSU9OIGhhc2hfaG90X2NvdW50 Ow0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hhc2hfaW5kZXguc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaGFzaF9pbmRleC5zcWwNCmluZGV4IDNlYmRhZWFmMTcyLi4wNTFl NzQyNzA0MSAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hhc2hfaW5kZXguc3Fs DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9oYXNoX2luZGV4LnNxbA0KQEAgLTM1MSwzICsz NTEsNjIgQEAgQ1JFQVRFIElOREVYIGhhc2hfZjhfaW5kZXgyIE9OIGhhc2hfZjhfaGVhcCBVU0lO RyBoYXNoIChyYW5kb20gZmxvYXQ4X29wcykNCiAJV0lUSCAoZmlsbGZhY3Rvcj05KTsNCiBDUkVB VEUgSU5ERVggaGFzaF9mOF9pbmRleDIgT04gaGFzaF9mOF9oZWFwIFVTSU5HIGhhc2ggKHJhbmRv bSBmbG9hdDhfb3BzKQ0KIAlXSVRIIChmaWxsZmFjdG9yPTEwMSk7DQorDQorLS0NCistLSBBbiBV UERBVEUgdG8gYSB2YWx1ZSB3aXRoIHRoZSBzYW1lIGhhc2ggY29kZSBpcyBIT1Q6IHRoZSBpbmRl eCBzdG9yZXMNCistLSBvbmx5IHRoZSBjb2RlLCBhbmQgc2NhbnMgcmVjaGVjayB0aGUgaGVhcCB0 dXBsZS4NCistLQ0KK0NSRUFURSBUQUJMRSBoYXNoX2hvdCAoaWQgaW50LCBuIG51bWVyaWMpIFdJ VEggKGZpbGxmYWN0b3IgPSAxMCk7DQorQ1JFQVRFIElOREVYIGhhc2hfaG90X24gT04gaGFzaF9o b3QgVVNJTkcgaGFzaCAobik7DQorQ1JFQVRFIElOREVYIGhhc2hfaG90X24yIE9OIGhhc2hfaG90 IFVTSU5HIGhhc2ggKChuICogMikpOw0KK0lOU0VSVCBJTlRPIGhhc2hfaG90IFNFTEVDVCBnLCBn IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBnOw0KKy0tIChwZ19zdGF0X2dldF94YWN0Xyog Y291bnQgdGhpcyB0cmFuc2FjdGlvbidzIHVwZGF0ZXMsIGFuZCBlYXJsaWVyDQorLS0gdHJhbnNh Y3Rpb25zJyBub3QgeWV0IHJlcG9ydGVkKQ0KK0NSRUFURSBGVU5DVElPTiBoYXNoX2hvdF9jb3Vu dChPVVQgdXBkYXRlZCBiaWdpbnQsIE9VVCBob3QgYmlnaW50KQ0KK0xBTkdVQUdFIHNxbCBBUyAk JA0KKyAgU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoJ2hhc2hfaG90Jzo6 cmVnY2xhc3MpLA0KKyAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdoYXNoX2hvdCc6OnJlZ2NsYXNzKSAkJDsNCitCRUdJTjsNCistLSBudW1lcmljIGhhc2hlcyBp Z25vcmUgdGhlIGRpc3BsYXkgc2NhbGUsIGluIHRoZSBjb2x1bW4gYW5kIGluIHRoZQ0KKy0tIGV4 cHJlc3Npb246IEhPVA0KK1VQREFURSBoYXNoX2hvdCBTRVQgbiA9IG4gKyAwLjAwOw0KK1NFTEVD VCAqIEZST00gaGFzaF9ob3RfY291bnQoKTsNCistLSBhIGRpZmZlcmVudCB2YWx1ZTogbm90IEhP VA0KK1VQREFURSBoYXNoX2hvdCBTRVQgbiA9IG4gKyAxMDAgV0hFUkUgaWQgPD0gNTsNCitTRUxF Q1QgKiBGUk9NIGhhc2hfaG90X2NvdW50KCk7DQorQ09NTUlUOw0KK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsNCitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7DQorRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgaWQsIG4gRlJPTSBoYXNoX2hvdCBXSEVSRSBuID0gNzsNCitTRUxFQ1QgaWQs IG4gRlJPTSBoYXNoX2hvdCBXSEVSRSBuID0gNzsNCitTRUxFQ1QgaWQsIG4gRlJPTSBoYXNoX2hv dCBXSEVSRSBuID0gNy4wMDA7DQorU0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9 IDM7DQorU0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9IDEwMzsNCitTRUxFQ1Qg aWQsIG4gRlJPTSBoYXNoX2hvdCBXSEVSRSBuICogMiA9IDE0Ow0KK1JFU0VUIGVuYWJsZV9iaXRt YXBzY2FuOw0KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOw0KK1NFTEVDVCBjb3VudCgqKSBG Uk9NIGhhc2hfaG90IGggV0hFUkUgbiA9IChTRUxFQ1QgbiBGUk9NIGhhc2hfaG90IFdIRVJFIGlk ID0gaC5pZCk7DQorUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsNCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsNCitEUk9QIFRBQkxFIGhhc2hfaG90Ow0KKw0KKy0tIEFuIGV4Y2x1c2lvbiBjb25zdHJhaW50 IGlzIGNoZWNrZWQgb24gdGhlIHZhbHVlcywgc28gYSBjaGFuZ2UgdG8gYSB2YWx1ZQ0KKy0tIHdp dGggdGhlIHNhbWUgaGFzaCBjb2RlIG11c3Qgc3RpbGwgbWFrZSBhIG5ldyBlbnRyeSBhbmQgYmUg Y2hlY2tlZC4NCistLSBoYXNoaW50OCBmb2xkcyB0aGUgaGlnaCBoYWxmIGludG8gdGhlIGxvdywg c28gMSBhbmQgMl4zMiBjb2xsaWRlLg0KK1NFTEVDVCBoYXNoaW50OCgxKSA9IGhhc2hpbnQ4KDQy OTQ5NjcyOTYpIEFTIHNhbWVfaGFzaDsNCitDUkVBVEUgVEFCTEUgaGFzaF9ob3QgKGlkIGludCwg ayBpbnQ4LCBFWENMVURFIFVTSU5HIGhhc2ggKGsgV0lUSCA9KSkNCisgIFdJVEggKGZpbGxmYWN0 b3IgPSAxMCk7DQorSU5TRVJUIElOVE8gaGFzaF9ob3QgVkFMVUVTICgxLCAxKSwgKDIsIDQyOTQ5 NjcyOTYpOw0KK1VQREFURSBoYXNoX2hvdCBTRVQgayA9IDQyOTQ5NjcyOTYgV0hFUkUgaWQgPSAx Ow0KKy0tIHBnX3N0YXRfZ2V0X3hhY3RfKiBhbHNvIGNvdW50IGVhcmxpZXIgdHJhbnNhY3Rpb25z JyB1cGRhdGVzIG5vdCB5ZXQNCistLSByZXBvcnRlZDsgcmVwb3J0IHRoZW0sIHNvIHRoZSBjb3Vu dHMgYmVsb3cgc3RhcnQgZnJvbSB6ZXJvDQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOw0KK0JFR0lOOw0KK0RFTEVURSBGUk9NIGhhc2hfaG90IFdIRVJFIGlkID0gMjsNCistLSB3 aXRob3V0IGEgY29uZmxpY3QsIHRoZSB1cGRhdGUgaXMgY2hlY2tlZCBhbmQgaXMgbm90IEhPVA0K K1VQREFURSBoYXNoX2hvdCBTRVQgayA9IDQyOTQ5NjcyOTYgV0hFUkUgaWQgPSAxOw0KK1NFTEVD VCAqIEZST00gaGFzaF9ob3RfY291bnQoKTsNCitDT01NSVQ7DQorU0VMRUNUICogRlJPTSBoYXNo X2hvdDsNCitEUk9QIFRBQkxFIGhhc2hfaG90Ow0KK0RST1AgRlVOQ1RJT04gaGFzaF9ob3RfY291 bnQ7DQotLSANCjIuNTAuMQ0KDQo= --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0004-Skip-evaluating-indexes-that-an-UPDATE-s-SET-cla.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0004-Skip-evaluating-indexes-that-an-UPDATE-s-SET-cla.patch RnJvbSA0MWUzNmRhY2MyZjk0MTE1ZmU4MzYyZjQ4MDU2Zjc5N2MzODY1Zjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBUaHUs IDE1IE9jdCAyMDI2IDEyOjUxOjIyIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDQvOF0gU2tp cCBldmFsdWF0aW5nIGluZGV4ZXMgdGhhdCBhbiBVUERBVEUncyBTRVQgY2xhdXNlDQogY2Fubm90 IGFmZmVjdA0KDQpUaGUgcHJldmlvdXMgY29tbWl0IGxldHMgYW4gVVBEQVRFIGJlIEhPVCB3aGVu IGl0IGNoYW5nZXMgYSBjb2x1bW4gdGhhdA0KaW5kZXhlcyB1c2Ugb25seSB0aHJvdWdoIGV4cHJl c3Npb25zIG9yIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlcywgaWYNCmV2YWx1YXRpbmcgdGhvc2Ug ZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgb24gdGhlIG9sZCBhbmQgbmV3IHJvd3MgZ2l2ZXMN CnRoZSBzYW1lIHJlc3VsdHMuICBGb3IgYSBsYXJnZSBzdHJ1Y3R1cmVkIGNvbHVtbiwgc3VjaCBh cyBhIGpzb25iDQpkb2N1bWVudCwgdGhhdCBtZWFucyByZWFkaW5nIHRoZSBkb2N1bWVudCB0d2lj ZSBwZXIgaW5kZXggb24gZXZlcnkgcm93LA0KZXZlbiB3aGVuIHRoZSBTRVQgY2xhdXNlIHBsYWlu bHkgY2hhbmdlcyBhIHBhcnQgbm8gaW5kZXggcmVhZHM6DQoNCiAgICBDUkVBVEUgSU5ERVggT04g dCAoKGRvYy0+PiduYW1lJykpOw0KICAgIFVQREFURSB0IFNFVCBkb2MgPSBqc29uYl9zZXQoZG9j LCAne3Zpc2l0c30nLCAuLi4pOw0KDQpXb3JrIHRoaXMgb3V0IG9uY2UgcGVyIHN0YXRlbWVudCwg d2hlbiB0aGUgdXBkYXRlIHByb2plY3Rpb24gaXMgc2V0IHVwLA0KZnJvbSB0aGUgcGxhbiB0cmVl IGFsb25lLiAgRm9yIGVhY2ggU0VUIHRhcmdldCBjb2x1bW4gdGhhdCBleHByZXNzaW9uIG9yDQpw YXJ0aWFsIGluZGV4ZXMgdXNlLCBmaW5kIHdoaWNoIHBhcnRzIG9mIHRoZSBjb2x1bW4gdGhlIFNF VCBleHByZXNzaW9uIG1heQ0KY2hhbmdlLCBhbmQgd2hpY2ggcGFydHMgZWFjaCBpbmRleCByZWFk czsgYW4gaW5kZXggd2hvc2UgcGFydHMgY2Fubm90DQpvdmVybGFwIHRoZSBjaGFuZ2VkIG9uZXMg bmVlZHMgbm8gZXZhbHVhdGlvbiBmb3IgdGhhdCBjb2x1bW4uICBOb3RoaW5nIGF0DQpydW4gdGlt ZSBpcyBpbnZvbHZlZCwgc28gdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSB3aXRoIG9yIHdpdGhvdXQg SklUDQpjb21waWxhdGlvbiwgYW5kIHRoZXJlIGlzIG5vIHBlci1yb3cgc3RhdGUgdG8gcmVzZXQu DQoNClBhcnRzIGFyZSBuYW1lZCBieSBwYXRocyBvZiBvYmplY3Qga2V5cyBhbmQgYXJyYXkgcG9z aXRpb25zLiAgQSBmdW5jdGlvbg0KZGVzY3JpYmVzIGl0cyBjYWxscyB0aHJvdWdoIGl0cyBzdXBw b3J0IGZ1bmN0aW9uLCB3aXRoIHRoZSBuZXcNClN1cHBvcnRSZXF1ZXN0U3ViYXR0ciByZXF1ZXN0 OiB3aGljaCBwYXJ0cyBvZiB3aGljaCBhcmd1bWVudCBhIGNhbGwgcmVhZHMsDQpvciB3aGljaCBw YXJ0cyBvZiBpdHMgc291cmNlIGFyZ3VtZW50IGl0IG1heSBjaGFuZ2UsIGdpdmVuIGl0cyBjb25z dGFudA0KYXJndW1lbnRzLiAgQXJyYXkgYW5kIGpzb25iIHN1YnNjcmlwdGluZywgY29tcG9zaXRl IGZpZWxkIHNlbGVjdGlvbiBhbmQNCmFzc2lnbm1lbnQsIENPQUxFU0NFIGFuZCBkb21haW4gY29l cmNpb24gYXJlIHVuZGVyc3Rvb2QgZGlyZWN0bHkuICBUaGUNCmpzb25iIGFjY2Vzc29ycyAoLT4s IC0+PiwgIz4sICM+PiwganNvbmJfZXh0cmFjdF9wYXRoW190ZXh0XSkgYW5kDQptb2RpZmllcnMg KGpzb25iX3NldCwganNvbmJfc2V0X2xheCwganNvbmJfaW5zZXJ0LCAtLCAjLSwgYW5kIHx8IHdp dGggYQ0KY29uc3RhbnQgb2JqZWN0KSBnZXQgYSBzdXBwb3J0IGZ1bmN0aW9uLCBqc29uYl9zdWJh dHRyX3N1cHBvcnQoKS4NCkV4dGVuc2lvbnMgY2FuIGRlc2NyaWJlIHRoZWlyIG93biBkb2N1bWVu dCB0eXBlcyBhbmQgZnVuY3Rpb25zIHRoZSBzYW1lDQp3YXkuICBFeHRlcm5hbCBQYXJhbXMgb2Yg YSBnZW5lcmljIHBsYW4gYXJlIHJlYWQgYXMgY29uc3RhbnRzLCBzbw0KcHJlcGFyZWQgc3RhdGVt ZW50cyBiZW5lZml0IGFzIHdlbGwuDQoNClRoZSBhbmFseXNpcyBnaXZlcyB1cCBmb3IgYSBjb2x1 bW4gdW5sZXNzIHRoZSBzdWJwbGFuIGlzIGEgcGxhaW4gc2NhbiBvZg0KdGhlIHRhcmdldCByZWxh dGlvbiAoZGlyZWN0bHksIG9yIHVuZGVyIGFuIEFwcGVuZCBmb3IgaW5oZXJpdGFuY2UgYW5kDQpw YXJ0aXRpb25pbmcpLCB0aGUgc3RhdGVtZW50IGlzIGFuIFVQREFURSByYXRoZXIgdGhhbiBhIE1F UkdFLCB0aGVyZSBhcmUNCm5vIEJFRk9SRSBST1cgVVBEQVRFIHRyaWdnZXJzLCBhbmQgZXZlcnkg cmVmZXJlbmNlIHRvIHRoZSBjb2x1bW4gaW4gdGhlDQpTRVQgZXhwcmVzc2lvbiBhbmQgdGhlIGlu ZGV4IGlzIG9uZSBpdCB1bmRlcnN0YW5kcy4gIEF0IHJ1biB0aW1lLCB0aGUNCmNvbmNsdXNpb24g aXMgbm90IHVzZWQgZm9yIGEgcm93IHdob3NlIG9sZCBvciBuZXcgdmFsdWUgb2YgdGhlIGNvbHVt biBpcw0KbnVsbC4gIFR3byBwYXRocyBhcmUgdGFrZW4gdG8gb3ZlcmxhcCB1bmxlc3MgdGhleSBk aWZmZXIgaW4gYSBrZXkgdGhhdA0KY2Fubm90IGJlIHJlYWQgYXMgYW4gYXJyYXkgcG9zaXRpb24s IHNvIGNoYW5nZXMgdGhhdCBtb3ZlIGFycmF5IGVsZW1lbnRzLA0KbmVnYXRpdmUgcG9zaXRpb25z IGFuZCBrZXlzIHN1Y2ggYXMgIjAxIiBvciAiIDEiIGFyZSBhbGwgY292ZXJlZC4NCkFzc2VydC1l bmFibGVkIGJ1aWxkcyBldmFsdWF0ZSB0aGUgaW5kZXhlcyBhbnl3YXkgYW5kIHJhaXNlIGFuIGVy cm9yIGlmDQp0aGUgY29uY2x1c2lvbiB3YXMgd3JvbmcuDQoNClRoaXMgb25seSBzYXZlcyB3b3Jr OiBhbiB1cGRhdGUgaXMgSE9UIGV4YWN0bHkgd2hlbiBpdCB3YXMgYmVmb3JlLg0KDQpFYWNoIGNv bmNsdXNpb24gaXMgbG9nZ2VkIGF0IERFQlVHMS4gIGFtY2hlY2sncyBuZXcgVEFQIHRlc3QNCjAw N19zdWJhdHRyX3Byb29mIHJlYWRzIHRoZW0gZnJvbSB0aGUgc2VydmVyIGxvZzsgY2hlY2tfc3Vi YXR0ciBjaGVja3MNCnRoZSBIT1QgY291bnRzIGFuZCB0aGUgaW5kZXhlcyBmb3IgbWFueSBTRVQg Y2xhdXNlcywgYW5kIG1pc2NfZnVuY3Rpb25zDQpjaGVja3MgSE9UIGNvdW50cyBhbmQgYW4gaW5k ZXggc2NhbiBpbiBidWlsZHMgd2l0aG91dCBhc3NlcnRpb25zLg0KLS0tDQogY29udHJpYi9hbWNo ZWNrL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogY29udHJpYi9hbWNo ZWNrL2V4cGVjdGVkL2NoZWNrX3N1YmF0dHIub3V0ICAgIHwgNTE3ICsrKysrKysrKysrKysrDQog Y29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgIHwgICAyICsNCiBj b250cmliL2FtY2hlY2svc3FsL2NoZWNrX3N1YmF0dHIuc3FsICAgICAgICAgfCAxNjIgKysrKysN CiBjb250cmliL2FtY2hlY2svdC8wMDdfc3ViYXR0cl9wcm9vZi5wbCAgICAgICAgfCAxMjMgKysr Kw0KIGRvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICAgNiAr LQ0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8ICAxNSAr DQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsN CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjU3ViYXR0ci5jICAgICAgICAgICAgfCA2MzAgKysr KysrKysrKysrKysrKysrDQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgICAgICAg ICAgICAgIHwgICAxICsNCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAg ICAgICAgfCAxOTcgKysrKystDQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jICAg ICAgICAgICAgIHwgMjc1ICsrKysrKysrDQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCAgICAgICAgICAgICAgIHwgIDYzICstDQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1N1YmF0 dHIuaCAgICAgICAgICAgIHwgIDIyICsNCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAg ICAgICAgICAgICAgICAgfCAgMTIgKw0KIHNyYy9pbmNsdWRlL25vZGVzL3N1cHBvcnRub2Rlcy5o ICAgICAgICAgICAgICB8ICA3NCArKw0KIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvdXBkYXRlLXN1 YmF0dHItZXBxLm91dCB8ICA2NSArKw0KIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2No ZWR1bGUgICAgICAgICB8ICAgMSArDQogLi4uL2lzb2xhdGlvbi9zcGVjcy91cGRhdGUtc3ViYXR0 ci1lcHEuc3BlYyAgIHwgIDQ0ICsrDQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1 bmN0aW9ucy5vdXQgIHwgIDY4ICsrDQogc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMgICAgICAg ICAgICAgICAgICAgIHwgIDM4ICsrDQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlv bnMuc3FsICAgICAgIHwgIDQyICsrDQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICA1ICsNCiAyMyBmaWxlcyBjaGFuZ2VkLCAyMzM2IGluc2VydGlvbnMo KyksIDI5IGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2FtY2hlY2sv ZXhwZWN0ZWQvY2hlY2tfc3ViYXR0ci5vdXQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9h bWNoZWNrL3NxbC9jaGVja19zdWJhdHRyLnNxbA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmli L2FtY2hlY2svdC8wMDdfc3ViYXR0cl9wcm9vZi5wbA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjU3ViYXR0ci5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNTdWJhdHRyLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL2V4cGVjdGVkL3VwZGF0ZS1zdWJhdHRyLWVwcS5vdXQNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3VwZGF0ZS1zdWJhdHRyLWVwcS5zcGVj DQoNCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svTWFrZWZpbGUgYi9jb250cmliL2FtY2hl Y2svTWFrZWZpbGUNCmluZGV4IDFiN2E2M2NiYWE0Li4xY2E2MTllMTc3NyAxMDA2NDQNCi0tLSBh L2NvbnRyaWIvYW1jaGVjay9NYWtlZmlsZQ0KKysrIGIvY29udHJpYi9hbWNoZWNrL01ha2VmaWxl DQpAQCAtMTMsNyArMTMsNyBAQCBEQVRBID0gYW1jaGVjay0tMS4yLS0xLjMuc3FsIGFtY2hlY2st LTEuMS0tMS4yLnNxbCBhbWNoZWNrLS0xLjAtLTEuMS5zcWwgYW1jaGVjaw0KIAkJYW1jaGVjay0t MS4zLS0xLjQuc3FsIGFtY2hlY2stLTEuNC0tMS41LnNxbA0KIFBHRklMRURFU0MgPSAiYW1jaGVj ayAtIGZ1bmN0aW9uIGZvciB2ZXJpZnlpbmcgcmVsYXRpb24gaW50ZWdyaXR5Ig0KIA0KLVJFR1JF U1MgPSBjaGVjayBjaGVja19idHJlZSBjaGVja19naW4gY2hlY2tfaGVhcA0KK1JFR1JFU1MgPSBj aGVjayBjaGVja19idHJlZSBjaGVja19naW4gY2hlY2tfaGVhcCBjaGVja19zdWJhdHRyDQogDQog RVhUUkFfSU5TVEFMTCA9IGNvbnRyaWIvcGdfd2FsaW5zcGVjdA0KIFRBUF9URVNUUyA9IDENCmRp ZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfc3ViYXR0ci5vdXQgYi9j b250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfc3ViYXR0ci5vdXQNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMjY2ZGE0MzE1MDQNCi0tLSAvZGV2L251bGwNCisr KyBiL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19zdWJhdHRyLm91dA0KQEAgLTAsMCAr MSw1MTcgQEANCistLQ0KKy0tIFVwZGF0ZXMgb2YgcGFydHMgb2YganNvbmIsIGFycmF5IGFuZCBj b21wb3NpdGUgY29sdW1ucw0KKy0tDQorLS0gVGhlIGV4ZWN1dG9yIHdvcmtzIG91dCBmcm9tIGFu IFVQREFURSdzIFNFVCBleHByZXNzaW9ucyB3aGljaCBwYXJ0cyBvZiBhDQorLS0gY29sdW1uIGl0 IGNhbiBjaGFuZ2UsIGFuZCBza2lwcyBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uIGFuZCBwYXJ0 aWFsDQorLS0gaW5kZXhlcyB0aGF0IHJlYWQgb25seSBvdGhlciBwYXJ0cy4gIEEgd3JvbmcgY29u Y2x1c2lvbiB3b3VsZCBsZWF2ZSBhbg0KKy0tIGluZGV4IHdpdGhvdXQgYW4gZW50cnkgZm9yIGEg cm93LCBzbyBlYWNoIGNhc2UgY2hlY2tzIGV2ZXJ5IGluZGV4IGFnYWluc3QNCistLSB0aGUgaGVh cDsgYXNzZXJ0LWVuYWJsZWQgYnVpbGRzIGFsc28gZXZhbHVhdGUgdGhlIGluZGV4ZXMgYW55d2F5 IGFuZCBmYWlsDQorLS0gaWYgdGhlIGNvbmNsdXNpb24gd2FzIHdyb25nLiAgSE9UIGNvdW50cyBz aG93IHdoaWNoIHVwZGF0ZXMgYXZvaWRlZCBuZXcNCistLSBpbmRleCBlbnRyaWVzLCB3aGV0aGVy IG9yIG5vdCBhbnl0aGluZyB3YXMgc2tpcHBlZC4NCistLQ0KK1NFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gd2FybmluZzsNCitDUkVBVEUgVEFCTEUgc3ViYXR0cl9yZXN1bHRzIChuYW1lIHRleHQs IGhvdCBiaWdpbnQsIHVwZCBiaWdpbnQsIGFtY2hlY2sgdGV4dCk7DQorQ1JFQVRFIEZVTkNUSU9O IHN1YmF0dHJfcHJvYmUobmFtZSB0ZXh0LCB1cGQgdGV4dCwgYXJnIGpzb25iIERFRkFVTFQgTlVM TCkNCitSRVRVUk5TIHZvaWQgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkZiQNCitERUNMQVJFIGgwIGJp Z2ludDsgdTAgYmlnaW50OyBhYyB0ZXh0IDo9ICdvayc7IGkgcmVnY2xhc3M7DQorQkVHSU4NCisg IENSRUFURSBUQUJMRSBzdWJhdHRyIChpZCBpbnQgUFJJTUFSWSBLRVksIGQganNvbmIsIGEgaW50 W10sIHggaW50KQ0KKyAgICBXSVRIIChmaWxsZmFjdG9yID0gMTApOw0KKyAgQ1JFQVRFIElOREVY IHN1YmF0dHJfbmFtZSBPTiBzdWJhdHRyICgoZC0+PiduYW1lJykpOw0KKyAgQ1JFQVRFIElOREVY IHN1YmF0dHJfbmVzdGVkIE9OIHN1YmF0dHIgKChkLT4nbyctPj4naycpKTsNCisgIENSRUFURSBJ TkRFWCBzdWJhdHRyX3BhdGggT04gc3ViYXR0ciAoKGQgIz4+ICd7cCxxfScpKTsNCisgIENSRUFU RSBJTkRFWCBzdWJhdHRyX2FycjAgT04gc3ViYXR0ciAoKGQtPid0YWdzJy0+PjApKTsNCisgIENS RUFURSBJTkRFWCBzdWJhdHRyX3N1YiBPTiBzdWJhdHRyICgoZFsncyddKSk7DQorICBDUkVBVEUg SU5ERVggc3ViYXR0cl9wYXJ0IE9OIHN1YmF0dHIgKGlkKSBXSEVSRSAoZC0+PidmbGFnJykgPSAn b24nOw0KKyAgQ1JFQVRFIElOREVYIHN1YmF0dHJfYTIgT04gc3ViYXR0ciAoKGFbMl0pKTsNCisg IElOU0VSVCBJTlRPIHN1YmF0dHIgU0VMRUNUIGcsDQorICAgIGpzb25iX2J1aWxkX29iamVjdCgn bmFtZScsICduJyB8fCBnLCAnYWdlJywgZywgJ3RhZ3MnLCAnWzEsMiwzXSc6Ompzb25iLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgJ28nLCBqc29uYl9idWlsZF9vYmplY3QoJ2snLCAnaycgfHwg ZywgJ3onLCAxKSwNCisgICAgICAgICAgICAgICAgICAgICAgICdwJywganNvbmJfYnVpbGRfb2Jq ZWN0KCdxJywgJ3EnIHx8IGcpLCAncycsICdzJyB8fCBnLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgJ2ZsYWcnLCBDQVNFIFdIRU4gZyAlIDIgPSAwIFRIRU4gJ29uJyBFTFNFICdvZmYnIEVORCwN CisgICAgICAgICAgICAgICAgICAgICAgICcxJywgJ29uZScsICdhcnInLCAnWzEwLDIwLDMwXSc6 Ompzb25iKSwNCisgICAgQVJSQVlbZywgZyArIDEsIGcgKyAyXSwgMA0KKyAgICBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgZzsNCisgIElGIG5hbWUgTElLRSAndHJpZ2dlciUnIFRIRU4NCisg ICAgQ1JFQVRFIEZVTkNUSU9OIHN1YmF0dHJfdHJnKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdF IHBscGdzcWwgQVMNCisgICAgICAkdCRCRUdJTiBORVcuZCA6PSBqc29uYl9zZXQoTkVXLmQsICd7 bmFtZX0nLCAnInJlbmFtZWQiJyk7IFJFVFVSTiBORVc7IEVORCR0JDsNCisgICAgQ1JFQVRFIFRS SUdHRVIgc3ViYXR0cl90cmcgQkVGT1JFIFVQREFURSBPTiBzdWJhdHRyDQorICAgICAgRk9SIEVB Q0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gc3ViYXR0cl90cmcoKTsNCisgIEVORCBJRjsNCisgIGgw IDo9IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdzdWJhdHRyJzo6cmVnY2xh c3MpOw0KKyAgdTAgOj0gcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZCgnc3ViYXR0cic6 OnJlZ2NsYXNzKTsNCisgIElGIGFyZyBJUyBOVUxMIFRIRU4gRVhFQ1VURSB1cGQ7IEVMU0UgRVhF Q1VURSB1cGQgVVNJTkcgYXJnOyBFTkQgSUY7DQorICBGT1IgaSBJTiBTRUxFQ1QgaW5kZXhyZWxp ZDo6cmVnY2xhc3MgRlJPTSBwZ19pbmRleA0KKyAgICAgICAgICAgV0hFUkUgaW5kcmVsaWQgPSAn c3ViYXR0cic6OnJlZ2NsYXNzIE9SREVSIEJZIDEgTE9PUA0KKyAgICBCRUdJTiBQRVJGT1JNIGJ0 X2luZGV4X2NoZWNrKGksIHRydWUpOw0KKyAgICBFWENFUFRJT04gV0hFTiBPVEhFUlMgVEhFTg0K KyAgICAgIGFjIDo9IENBU0UgV0hFTiBhYyA9ICdvaycgVEhFTiAnJyBFTFNFIGFjIHx8ICc7ICcg RU5EIHx8DQorICAgICAgICAgICAgaTo6dGV4dCB8fCAnOiAnIHx8IFNRTEVSUk07DQorICAgIEVO RDsNCisgIEVORCBMT09QOw0KKyAgSU5TRVJUIElOVE8gc3ViYXR0cl9yZXN1bHRzIFZBTFVFUyAo bmFtZSwNCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3N1YmF0dHIn OjpyZWdjbGFzcykgLSBoMCwNCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZCgn c3ViYXR0cic6OnJlZ2NsYXNzKSAtIHUwLCBhYyk7DQorICBEUk9QIFRBQkxFIHN1YmF0dHI7DQor ICBEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBzdWJhdHRyX3RyZygpOw0KK0VORCAkZiQ7DQorLS0g Tm90aGluZyBpbmRleGVkIGNoYW5nZXMuDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3NldC1hZ2Un LCAgICAgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3thZ2V9 JywgJzEnKSQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEg cm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdzZXQtby16JywgICAgICAgICAgICAkJFVQ REFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7byx6fScsICcyJykkJCk7DQorIHN1 YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qg c3ViYXR0cl9wcm9iZSgnc2V0LXAtb3RoZXInLCAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQg ZCA9IGpzb25iX3NldChkLCAne3Ascn0nLCAnMicpJCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0t LS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2Rl bGV0ZS1hZ2UnLCAgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBkIC0gJ2FnZSckJCk7 DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitT RUxFQ1Qgc3ViYXR0cl9wcm9iZSgnZGVsZXRlLWtleXMnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0 ciBTRVQgZCA9IGQgLSAne2FnZSx6en0nOjp0ZXh0W10kJCk7DQorIHN1YmF0dHJfcHJvYmUgDQor LS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgn ZGVsZXRlLXBhdGgtYWdlJywgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGQgIy0gJ3thZ2V9 JyQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0K Kw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdkZWxldGUtYXJyLWVsZW0nLCAgICAkJFVQREFURSBz dWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7dGFnc30nLCAoZC0+J3RhZ3MnKSAtIDApJCQp Ow0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQor U0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2NvbmNhdC1vdGhlcicsICAgICAgICQkVVBEQVRFIHN1YmF0 dHIgU0VUIGQgPSBkIHx8ICd7ImFnZSI6IDUsICJuZXciOiAxfSckJCk7DQorIHN1YmF0dHJfcHJv YmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9w cm9iZSgnc3Vic2NyaXB0LWFnZScsICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZFsnYWdlJ10g PSAnNyckJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJv dykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnbmVzdGVkLW11dGF0b3JzJywgICAgJCRVUERB VEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChqc29uYl9zZXQoZCwgJ3thZ2V9JywgJzEnKSwg J3tuZXd9JywgJzInKSQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisg DQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdzZXQtbGF4LWFnZScsICAgICAg ICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0X2xheChkLCAne2FnZX0nLCBOVUxM LCB0cnVlLCAnZGVsZXRlX2tleScpJCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0t LS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2luc2VydC1vLW5l dycsICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9pbnNlcnQoZCwgJ3tvLG5l d30nLCAnMScpJCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyANCiso MSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2FycmF5LWEzJywgICAgICAgICAgICQk VVBEQVRFIHN1YmF0dHIgU0VUIGFbM10gPSA5OSQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0t LS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdhcnJh eS1hOS1leHRlbmQnLCAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBhWzldID0gOTkkJCk7DQorIHN1 YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qg c3ViYXR0cl9wcm9iZSgnc2V0LWFyci1lbGVtJywgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQg ZCA9IGpzb25iX3NldChkLCAne2FyciwxfScsICc1JykkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQor LS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgn cGFyYW0tcGF0aCcsICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChk LCBBUlJBWVsnYWdlJ10sICQxKSQkLCAnMycpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0t LS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2NvYWxlc2Nl LXdyYXAnLCAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBDT0FMRVNDRShqc29uYl9zZXQo ZCwgJ3thZ2V9JywgJzEnKSwgZCkkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0t LS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnZmxhZy11bmNoYW5n ZWQnLCAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne2FnZX0nLCAn MScpIFdIRVJFIGlkICUgMiA9IDAkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0t LS0tDQorIA0KKygxIHJvdykNCisNCistLSBBbiBpbmRleGVkIHBhcnQgY2hhbmdlcywgb3IgbWln aHQuDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3NldC1uYW1lJywgICAgICAgICAgICQkVVBEQVRF IHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3tuYW1lfScsICcieCInKSQkKTsNCisgc3Vi YXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBz dWJhdHRyX3Byb2JlKCdzZXQtbycsICAgICAgICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBk ID0ganNvbmJfc2V0KGQsICd7b30nLCAne30nKSQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0t LS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdzZXQt by1rJywgICAgICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7 byxrfScsICcieCInKSQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisg DQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdzZXQtcCcsICAgICAgICAgICAg ICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7cH0nLCAnMScpJCQpOw0K KyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VM RUNUIHN1YmF0dHJfcHJvYmUoJ2RlbGV0ZS1uYW1lJywgICAgICAgICQkVVBEQVRFIHN1YmF0dHIg U0VUIGQgPSBkIC0gJ25hbWUnJCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0t LQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2RlbGV0ZS1rZXlzLW5h bWUnLCAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBkIC0gJ3thZ2UsbmFtZX0nOjp0ZXh0W10k JCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisN CitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnZGVsZXRlLXBhdGgtbmFtZScsICAgJCRVUERBVEUgc3Vi YXR0ciBTRVQgZCA9IGQgIy0gJ3tuYW1lfSckJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0t LS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnZGVsZXRl LXBhdGgtby1rJywgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGQgIy0gJ3tvLGt9JyQkKTsN Cisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NF TEVDVCBzdWJhdHRyX3Byb2JlKCdpbnNlcnQtdGFncy0wJywgICAgICAkJFVQREFURSBzdWJhdHRy IFNFVCBkID0ganNvbmJfaW5zZXJ0KGQsICd7dGFncywwfScsICcieCInKSQkKTsNCisgc3ViYXR0 cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJh dHRyX3Byb2JlKCdpbnNlcnQtdGFncy0xJywgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0g anNvbmJfaW5zZXJ0KGQsICd7dGFncywxfScsICcieCInKSQkKTsNCisgc3ViYXR0cl9wcm9iZSAN CistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2Jl KCdpbnNlcnQtdGFncy1uZWcnLCAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfaW5z ZXJ0KGQsICd7dGFncywtMX0nLCAnIngiJykkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0t LS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LXRh Z3MtMCcsICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne3Rh Z3MsMH0nLCAnOScpJCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyAN CisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3NldC10YWdzLW5lZzMnLCAgICAg ICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3t0YWdzLC0zfScsICc5Jykk JCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisN CitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LXRhZ3Mtc3AwJywgICAgICAgJCRVUERBVEUgc3Vi YXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCBBUlJBWVsndGFncycsJyAwJ10sICc5JykkJCk7DQor IHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxF Q1Qgc3ViYXR0cl9wcm9iZSgnc2V0LXRhZ3MtcGx1czAnLCAgICAgJCRVUERBVEUgc3ViYXR0ciBT RVQgZCA9IGpzb25iX3NldChkLCBBUlJBWVsndGFncycsJyswJ10sICc5JykkJCk7DQorIHN1YmF0 dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3Vi YXR0cl9wcm9iZSgnc2V0LXRhZ3MtMDAnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9 IGpzb25iX3NldChkLCBBUlJBWVsndGFncycsJzAwJ10sICc5JykkJCk7DQorIHN1YmF0dHJfcHJv YmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9w cm9iZSgnZGVsZXRlLXBhdGgtdGFncy0wJywgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGQgIy0g J3t0YWdzLDB9JyQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQor KDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdzZXQtbGF4LXRhZ3MtMCcsICAgICAk JFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0X2xheChkLCAne3RhZ3MsMH0nLCBOVUxM LCB0cnVlLCAnZGVsZXRlX2tleScpJCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0t LS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2NvbmNhdC1uYW1l JywgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBkIHx8ICd7Im5hbWUiOiAieCJ9JyQk KTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0K K1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdjb25jYXQtYXJyYXknLCAgICAgICAkJFVQREFURSBzdWJh dHRyIFNFVCBkID0gZCB8fCAnWzFdJyQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0t LS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdjb25jYXQtbGVm dCcsICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0gJ3sibmFtZSI6ICJ4In0nIHx8IGQk JCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisN CitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnd2hvbGUtcmVwbGFjZScsICAgICAgJCRVUERBVEUgc3Vi YXR0ciBTRVQgZCA9ICd7Im5hbWUiOiAieCJ9JyQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0t LS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdtdXRh dG9yLW90aGVyLWNvbCcsICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGpzb25i X2J1aWxkX29iamVjdCgnbmFtZScsICd6JyB8fCB4KSwgJ3thZ2V9JywgJzEnKSQkKTsNCisgc3Vi YXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBz dWJhdHRyX3Byb2JlKCdjYXNlLXdyYXAnLCAgICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBk ID0gQ0FTRSBXSEVOIGlkID4gMCBUSEVOIGpzb25iX3NldChkLCAne25hbWV9JywgJyJ4IicpIEVM U0UgZCBFTkQkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygx IHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LWxheC1uYW1lJywgICAgICAgJCRV UERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldF9sYXgoZCwgJ3tuYW1lfScsIE5VTEwsIHRy dWUsICdkZWxldGVfa2V5JykkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0t DQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc3Vic2NyaXB0LW5hbWUn LCAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZFsnbmFtZSddID0gJyJ4IickJCk7DQorIHN1YmF0 dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3Vi YXR0cl9wcm9iZSgnc3Vic2NyaXB0LXMnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZFsn cyddID0gJyJ4IickJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0K KygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc3Vic2NyaXB0LWludCcsICAgICAg JCRVUERBVEUgc3ViYXR0ciBTRVQgZFsndGFncyddWzBdID0gJzknJCQpOw0KKyBzdWJhdHRyX3By b2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJf cHJvYmUoJ3NldC1mbGFnJywgICAgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29u Yl9zZXQoZCwgJ3tmbGFnfScsICcib24iJykkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0t LS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LTEt a2V5JywgICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAnezF9 JywgJyJ0d28iJykkJCk7DQorIHN1YmF0dHJfcHJvYmUgDQorLS0tLS0tLS0tLS0tLS0tDQorIA0K KygxIHJvdykNCisNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgndHJpZ2dlci1yZW5hbWVzJywgICAg JCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne2FnZX0nLCAnMScpJCQpOw0K KyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VM RUNUIHN1YmF0dHJfcHJvYmUoJ2FycmF5LWEyJywgICAgICAgICAgICQkVVBEQVRFIHN1YmF0dHIg U0VUIGFbMl0gPSA5OSQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisg DQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdhcnJheS1hLW5lZycsICAgICAg ICAkJFVQREFURSBzdWJhdHRyIFNFVCBhWy01XSA9IDk5JCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0K Ky0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUo J2FycmF5LXdob2xlJywgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGEgPSBhIHx8IDk5JCQp Ow0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQor U0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3BhcmFtLXBhdGgtbmFtZScsICAgICQkVVBEQVRFIHN1YmF0 dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgQVJSQVlbJ25hbWUnXSwgJDEpJCQsICcieCInKTsNCisg c3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVD VCBzdWJhdHRyX3Byb2JlKCdwYXJhbS1kb2MnLCAgICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNF VCBkID0gJDEkJCwgJ3sibmFtZSI6IngifScpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0t LS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3NlbGYtcmVm LXZhbHVlJywgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3thZ2V9 JywgZC0+J25hbWUnKSQkKTsNCisgc3ViYXR0cl9wcm9iZSANCistLS0tLS0tLS0tLS0tLS0NCisg DQorKDEgcm93KQ0KKw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdudWxsLWRvYycsICAgICAgICAg ICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KE5VTEw6Ompzb25iLCAne2FnZX0n LCAnMScpJCQpOw0KKyBzdWJhdHRyX3Byb2JlIA0KKy0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSBy b3cpDQorDQorU0VMRUNUIG5hbWUsIHVwZCwgaG90LCBhbWNoZWNrIEZST00gc3ViYXR0cl9yZXN1 bHRzIE9SREVSIEJZIG5hbWUgQ09MTEFURSAiQyI7DQorICAgICAgICBuYW1lICAgICAgICB8IHVw ZCB8IGhvdCB8IGFtY2hlY2sgDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0t LS0tLS0tDQorIGFycmF5LWEtbmVnICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGFycmF5LWEy ICAgICAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIGFycmF5LWEzICAgICAgICAgICB8ICA1MCB8 ICA1MCB8IG9rDQorIGFycmF5LWE5LWV4dGVuZCAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGFycmF5 LXdob2xlICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGNhc2Utd3JhcCAgICAgICAgICB8ICA1 MCB8ICAgMCB8IG9rDQorIGNvYWxlc2NlLXdyYXAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGNv bmNhdC1hcnJheSAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIGNvbmNhdC1sZWZ0ICAgICAgICB8 ICA1MCB8ICA1MCB8IG9rDQorIGNvbmNhdC1uYW1lICAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQor IGNvbmNhdC1vdGhlciAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGRlbGV0ZS1hZ2UgICAgICAg ICB8ICA1MCB8ICA1MCB8IG9rDQorIGRlbGV0ZS1hcnItZWxlbSAgICB8ICA1MCB8ICAgMCB8IG9r DQorIGRlbGV0ZS1rZXlzICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGRlbGV0ZS1rZXlzLW5h bWUgICB8ICA1MCB8ICAgMCB8IG9rDQorIGRlbGV0ZS1uYW1lICAgICAgICB8ICA1MCB8ICAgMCB8 IG9rDQorIGRlbGV0ZS1wYXRoLWFnZSAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGRlbGV0ZS1wYXRo LW5hbWUgICB8ICA1MCB8ICAgMCB8IG9rDQorIGRlbGV0ZS1wYXRoLW8tayAgICB8ICA1MCB8ICAg MCB8IG9rDQorIGRlbGV0ZS1wYXRoLXRhZ3MtMCB8ICA1MCB8ICAgMCB8IG9rDQorIGZsYWctdW5j aGFuZ2VkICAgICB8ICAyNSB8ICAyNSB8IG9rDQorIGluc2VydC1vLW5ldyAgICAgICB8ICA1MCB8 ICA1MCB8IG9rDQorIGluc2VydC10YWdzLTAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIGluc2Vy dC10YWdzLTEgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIGluc2VydC10YWdzLW5lZyAgICB8ICA1 MCB8ICA1MCB8IG9rDQorIG11dGF0b3Itb3RoZXItY29sICB8ICA1MCB8ICAgMCB8IG9rDQorIG5l c3RlZC1tdXRhdG9ycyAgICB8ICA1MCB8ICA1MCB8IG9rDQorIG51bGwtZG9jICAgICAgICAgICB8 ICA1MCB8ICAgMCB8IG9rDQorIHBhcmFtLWRvYyAgICAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQor IHBhcmFtLXBhdGggICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIHBhcmFtLXBhdGgtbmFtZSAg ICB8ICA1MCB8ICAgMCB8IG9rDQorIHNlbGYtcmVmLXZhbHVlICAgICB8ICA1MCB8ICA1MCB8IG9r DQorIHNldC0xLWtleSAgICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIHNldC1hZ2UgICAgICAg ICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIHNldC1hcnItZWxlbSAgICAgICB8ICA1MCB8ICA1MCB8 IG9rDQorIHNldC1mbGFnICAgICAgICAgICB8ICA1MCB8ICAyNSB8IG9rDQorIHNldC1sYXgtYWdl ICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIHNldC1sYXgtbmFtZSAgICAgICB8ICA1MCB8ICAg MCB8IG9rDQorIHNldC1sYXgtdGFncy0wICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHNldC1uYW1l ICAgICAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHNldC1vICAgICAgICAgICAgICB8ICA1MCB8 ICAgMCB8IG9rDQorIHNldC1vLWsgICAgICAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHNldC1v LXogICAgICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIHNldC1wICAgICAgICAgICAgICB8ICA1 MCB8ICAgMCB8IG9rDQorIHNldC1wLW90aGVyICAgICAgICB8ICA1MCB8ICA1MCB8IG9rDQorIHNl dC10YWdzLTAgICAgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHNldC10YWdzLTAwICAgICAgICB8 ICA1MCB8ICAgMCB8IG9rDQorIHNldC10YWdzLW5lZzMgICAgICB8ICA1MCB8ICAgMCB8IG9rDQor IHNldC10YWdzLXBsdXMwICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHNldC10YWdzLXNwMCAgICAg ICB8ICA1MCB8ICAgMCB8IG9rDQorIHN1YnNjcmlwdC1hZ2UgICAgICB8ICA1MCB8ICA1MCB8IG9r DQorIHN1YnNjcmlwdC1pbnQgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHN1YnNjcmlwdC1uYW1l ICAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHN1YnNjcmlwdC1zICAgICAgICB8ICA1MCB8ICAgMCB8 IG9rDQorIHRyaWdnZXItcmVuYW1lcyAgICB8ICA1MCB8ICAgMCB8IG9rDQorIHdob2xlLXJlcGxh Y2UgICAgICB8ICA1MCB8ICAgMCB8IG9rDQorKDU2IHJvd3MpDQorDQorRFJPUCBUQUJMRSBzdWJh dHRyX3Jlc3VsdHM7DQorRFJPUCBGVU5DVElPTiBzdWJhdHRyX3Byb2JlOw0KKy0tIFNoYXBlcyB0 aGF0IG5lZWQgdGhlaXIgb3duIHRhYmxlczogY29tcG9zaXRlIGZpZWxkcywgZG9tYWlucywgZ2Vu ZXJpYw0KKy0tIHBsYW5zLCBhIHN0cmljdCBtb2RpZmllciB0aGF0IHJldHVybnMgbnVsbCwgYW5k IHJlZmVyZW5jZXMgdGhlIGFuYWx5c2lzDQorLS0gZG9lcyBub3QgZm9sbG93LiAgdC8wMDdfc3Vi YXR0cl9wcm9vZi5wbCBjaGVja3Mgd2hhdCBpcyBjb25jbHVkZWQuDQorQ1JFQVRFIFRZUEUgc3Vi YXR0cl9wYWlyIEFTIChrIGludCwgdiBpbnQpOw0KK0NSRUFURSBET01BSU4gc3ViYXR0cl9kb2Mg QVMganNvbmIgQ0hFQ0sgKFZBTFVFID8gJ25hbWUnKTsNCitDUkVBVEUgVEFCTEUgc3ViYXR0ciAo aWQgaW50IFBSSU1BUlkgS0VZLCBkIHN1YmF0dHJfZG9jLCBwIHN1YmF0dHJfcGFpciwNCisgICAg ICAgICAgICAgICAgICAgICAgciBqc29uYiwgbiBqc29uYikgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsNCitDUkVBVEUgSU5ERVggc3ViYXR0cl9uYW1lIE9OIHN1YmF0dHIgKChkLT4+J25hbWUnKSk7 DQorQ1JFQVRFIElOREVYIHN1YmF0dHJfcGsgT04gc3ViYXR0ciAoKChwKS5rKSk7DQorQ1JFQVRF IElOREVYIHN1YmF0dHJfd2hvbGUgT04gc3ViYXR0ciAoKHItPj4nbmFtZScpKSBXSEVSRSByIElT IE5PVCBOVUxMOw0KK0NSRUFURSBJTkRFWCBzdWJhdHRyX3JvdyBPTiBzdWJhdHRyIChpZCkgV0hF UkUgc3ViYXR0ciBJUyBOT1QgTlVMTDsNCitDUkVBVEUgSU5ERVggc3ViYXR0cl90ZXh0IE9OIHN1 YmF0dHIgKChuOjp0ZXh0KSk7DQorQ1JFQVRFIElOREVYIHN1YmF0dHJfZXAgT04gc3ViYXR0ciAo KGpzb25iX2V4dHJhY3RfcGF0aChuLCAnYScsICdiJykpKTsNCitJTlNFUlQgSU5UTyBzdWJhdHRy IFNFTEVDVCBnLCBqc29uYl9idWlsZF9vYmplY3QoJ25hbWUnLCAnbicgfHwgZyksDQorICAgIFJP VyhnLCBnKTo6c3ViYXR0cl9wYWlyLCBqc29uYl9idWlsZF9vYmplY3QoJ25hbWUnLCAncicgfHwg ZyksDQorICAgICd7ImEiOiB7ImIiOiAxfX0nDQorICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0 KSBnOw0KK1VQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7YWdlfScsICcxJyk7 DQorVVBEQVRFIHN1YmF0dHIgU0VUIHAudiA9IDA7DQorVVBEQVRFIHN1YmF0dHIgU0VUIHAuayA9 IChwKS5rICsgMTA7DQorVVBEQVRFIHN1YmF0dHIgU0VUIHIgPSBqc29uYl9zZXQociwgJ3thZ2V9 JywgJzEnKTsNCitVUERBVEUgc3ViYXR0ciBTRVQgbiA9IGpzb25iX3NldChuLCAne2N9JywgJzEn KTsNCitVUERBVEUgc3ViYXR0ciBTRVQgbiA9IGpzb25iX3NldChuLCAne2EsY30nLCAnMScpOw0K K1VQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsIEFSUkFZW05VTEwsICd4J10sICcx JykgV0hFUkUgZmFsc2U7DQorVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3th Z2V9JywgKFNFTEVDVCBkLT4nbmFtZScpKTsNCitQUkVQQVJFIHN1YmF0dHJfcCh0ZXh0W10sIGpz b25iKSBBUw0KKyAgVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJDEsICQyKTsN CitTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOw0KK0VYRUNVVEUgc3Vi YXR0cl9wKCd7YWdlfScsICcyJyk7DQorRVhFQ1VURSBzdWJhdHRyX3AoJ3tuYW1lfScsICcieCIn KTsNCitSRVNFVCBwbGFuX2NhY2hlX21vZGU7DQorREVBTExPQ0FURSBzdWJhdHRyX3A7DQorLS0g anNvbmJfc2V0IHJldHVybnMgbnVsbCBmb3IgYSBudWxsIG5ldyB2YWx1ZTsgc3VjaCByb3dzIGFy ZSBldmFsdWF0ZWQNCitVUERBVEUgc3ViYXR0ciBTRVQgciA9IGpzb25iX3NldChyLCAne2FnZX0n LCBOVUxMKSBXSEVSRSBpZCA8PSAyOw0KK1NFTEVDVCBpZCwgZCwgcCwgciBGUk9NIHN1YmF0dHIg T1JERVIgQlkgaWQ7DQorIGlkIHwgICAgICAgICAgICBkICAgICAgICAgICAgfCAgIHAgICAgfCAg ICAgICAgICAgIHIgICAgICAgICAgICAgDQorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAxIHwgeyJhZ2UiOiAyLCAi bmFtZSI6ICJ4In0gfCAoMTEsMCkgfCANCisgIDIgfCB7ImFnZSI6IDIsICJuYW1lIjogIngifSB8 ICgxMiwwKSB8IA0KKyAgMyB8IHsiYWdlIjogMiwgIm5hbWUiOiAieCJ9IHwgKDEzLDApIHwgeyJh Z2UiOiAxLCAibmFtZSI6ICJyMyJ9DQorICA0IHwgeyJhZ2UiOiAyLCAibmFtZSI6ICJ4In0gfCAo MTQsMCkgfCB7ImFnZSI6IDEsICJuYW1lIjogInI0In0NCisoNCByb3dzKQ0KKw0KK1NFTEVDVCBi dF9pbmRleF9jaGVjayhpbmRleHJlbGlkLCB0cnVlKSBGUk9NIHBnX2luZGV4DQorICBXSEVSRSBp bmRyZWxpZCA9ICdzdWJhdHRyJzo6cmVnY2xhc3MgT1JERVIgQlkgaW5kZXhyZWxpZDo6cmVnY2xh c3M6OnRleHQ7DQorIGJ0X2luZGV4X2NoZWNrIA0KKy0tLS0tLS0tLS0tLS0tLS0NCisgDQorIA0K KyANCisgDQorIA0KKyANCisgDQorKDcgcm93cykNCisNCitEUk9QIFRBQkxFIHN1YmF0dHI7DQor RFJPUCBET01BSU4gc3ViYXR0cl9kb2M7DQorRFJPUCBUWVBFIHN1YmF0dHJfcGFpcjsNCmRpZmYg LS1naXQgYS9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgYi9jb250cmliL2FtY2hlY2svbWVz b24uYnVpbGQNCmluZGV4IGQ1MTM3ZWY2OTFkLi5lMzlmYTIyMDA1NyAxMDA2NDQNCi0tLSBhL2Nv bnRyaWIvYW1jaGVjay9tZXNvbi5idWlsZA0KKysrIGIvY29udHJpYi9hbWNoZWNrL21lc29uLmJ1 aWxkDQpAQCAtNDAsNiArNDAsNyBAQCB0ZXN0cyArPSB7DQogICAgICAgJ2NoZWNrX2J0cmVlJywN CiAgICAgICAnY2hlY2tfZ2luJywNCiAgICAgICAnY2hlY2tfaGVhcCcsDQorICAgICAgJ2NoZWNr X3N1YmF0dHInLA0KICAgICBdLA0KICAgfSwNCiAgICd0YXAnOiB7DQpAQCAtNTAsNiArNTEsNyBA QCB0ZXN0cyArPSB7DQogICAgICAgJ3QvMDA0X3ZlcmlmeV9uYnRyZWVfdW5pcXVlLnBsJywNCiAg ICAgICAndC8wMDVfcGl0ci5wbCcsDQogICAgICAgJ3QvMDA2X3ZlcmlmeV9naW4ucGwnLA0KKyAg ICAgICd0LzAwN19zdWJhdHRyX3Byb29mLnBsJywNCiAgICAgXSwNCiAgIH0sDQogfQ0KZGlmZiAt LWdpdCBhL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfc3ViYXR0ci5zcWwgYi9jb250cmliL2Ft Y2hlY2svc3FsL2NoZWNrX3N1YmF0dHIuc3FsDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMDAuLmJkOThiZTNhZjU1DQotLS0gL2Rldi9udWxsDQorKysgYi9jb250cmliL2Ft Y2hlY2svc3FsL2NoZWNrX3N1YmF0dHIuc3FsDQpAQCAtMCwwICsxLDE2MiBAQA0KKy0tDQorLS0g VXBkYXRlcyBvZiBwYXJ0cyBvZiBqc29uYiwgYXJyYXkgYW5kIGNvbXBvc2l0ZSBjb2x1bW5zDQor LS0NCistLSBUaGUgZXhlY3V0b3Igd29ya3Mgb3V0IGZyb20gYW4gVVBEQVRFJ3MgU0VUIGV4cHJl c3Npb25zIHdoaWNoIHBhcnRzIG9mIGENCistLSBjb2x1bW4gaXQgY2FuIGNoYW5nZSwgYW5kIHNr aXBzIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gYW5kIHBhcnRpYWwNCistLSBpbmRleGVzIHRo YXQgcmVhZCBvbmx5IG90aGVyIHBhcnRzLiAgQSB3cm9uZyBjb25jbHVzaW9uIHdvdWxkIGxlYXZl IGFuDQorLS0gaW5kZXggd2l0aG91dCBhbiBlbnRyeSBmb3IgYSByb3csIHNvIGVhY2ggY2FzZSBj aGVja3MgZXZlcnkgaW5kZXggYWdhaW5zdA0KKy0tIHRoZSBoZWFwOyBhc3NlcnQtZW5hYmxlZCBi dWlsZHMgYWxzbyBldmFsdWF0ZSB0aGUgaW5kZXhlcyBhbnl3YXkgYW5kIGZhaWwNCistLSBpZiB0 aGUgY29uY2x1c2lvbiB3YXMgd3JvbmcuICBIT1QgY291bnRzIHNob3cgd2hpY2ggdXBkYXRlcyBh dm9pZGVkIG5ldw0KKy0tIGluZGV4IGVudHJpZXMsIHdoZXRoZXIgb3Igbm90IGFueXRoaW5nIHdh cyBza2lwcGVkLg0KKy0tDQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSB3YXJuaW5nOw0KK0NS RUFURSBUQUJMRSBzdWJhdHRyX3Jlc3VsdHMgKG5hbWUgdGV4dCwgaG90IGJpZ2ludCwgdXBkIGJp Z2ludCwgYW1jaGVjayB0ZXh0KTsNCitDUkVBVEUgRlVOQ1RJT04gc3ViYXR0cl9wcm9iZShuYW1l IHRleHQsIHVwZCB0ZXh0LCBhcmcganNvbmIgREVGQVVMVCBOVUxMKQ0KK1JFVFVSTlMgdm9pZCBM QU5HVUFHRSBwbHBnc3FsIEFTICRmJA0KK0RFQ0xBUkUgaDAgYmlnaW50OyB1MCBiaWdpbnQ7IGFj IHRleHQgOj0gJ29rJzsgaSByZWdjbGFzczsNCitCRUdJTg0KKyAgQ1JFQVRFIFRBQkxFIHN1YmF0 dHIgKGlkIGludCBQUklNQVJZIEtFWSwgZCBqc29uYiwgYSBpbnRbXSwgeCBpbnQpDQorICAgIFdJ VEggKGZpbGxmYWN0b3IgPSAxMCk7DQorICBDUkVBVEUgSU5ERVggc3ViYXR0cl9uYW1lIE9OIHN1 YmF0dHIgKChkLT4+J25hbWUnKSk7DQorICBDUkVBVEUgSU5ERVggc3ViYXR0cl9uZXN0ZWQgT04g c3ViYXR0ciAoKGQtPidvJy0+PidrJykpOw0KKyAgQ1JFQVRFIElOREVYIHN1YmF0dHJfcGF0aCBP TiBzdWJhdHRyICgoZCAjPj4gJ3twLHF9JykpOw0KKyAgQ1JFQVRFIElOREVYIHN1YmF0dHJfYXJy MCBPTiBzdWJhdHRyICgoZC0+J3RhZ3MnLT4+MCkpOw0KKyAgQ1JFQVRFIElOREVYIHN1YmF0dHJf c3ViIE9OIHN1YmF0dHIgKChkWydzJ10pKTsNCisgIENSRUFURSBJTkRFWCBzdWJhdHRyX3BhcnQg T04gc3ViYXR0ciAoaWQpIFdIRVJFIChkLT4+J2ZsYWcnKSA9ICdvbic7DQorICBDUkVBVEUgSU5E RVggc3ViYXR0cl9hMiBPTiBzdWJhdHRyICgoYVsyXSkpOw0KKyAgSU5TRVJUIElOVE8gc3ViYXR0 ciBTRUxFQ1QgZywNCisgICAganNvbmJfYnVpbGRfb2JqZWN0KCduYW1lJywgJ24nIHx8IGcsICdh Z2UnLCBnLCAndGFncycsICdbMSwyLDNdJzo6anNvbmIsDQorICAgICAgICAgICAgICAgICAgICAg ICAnbycsIGpzb25iX2J1aWxkX29iamVjdCgnaycsICdrJyB8fCBnLCAneicsIDEpLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgJ3AnLCBqc29uYl9idWlsZF9vYmplY3QoJ3EnLCAncScgfHwgZyks ICdzJywgJ3MnIHx8IGcsDQorICAgICAgICAgICAgICAgICAgICAgICAnZmxhZycsIENBU0UgV0hF TiBnICUgMiA9IDAgVEhFTiAnb24nIEVMU0UgJ29mZicgRU5ELA0KKyAgICAgICAgICAgICAgICAg ICAgICAgJzEnLCAnb25lJywgJ2FycicsICdbMTAsMjAsMzBdJzo6anNvbmIpLA0KKyAgICBBUlJB WVtnLCBnICsgMSwgZyArIDJdLCAwDQorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBn Ow0KKyAgSUYgbmFtZSBMSUtFICd0cmlnZ2VyJScgVEhFTg0KKyAgICBDUkVBVEUgRlVOQ1RJT04g c3ViYXR0cl90cmcoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBBUw0KKyAgICAg ICR0JEJFR0lOIE5FVy5kIDo9IGpzb25iX3NldChORVcuZCwgJ3tuYW1lfScsICcicmVuYW1lZCIn KTsgUkVUVVJOIE5FVzsgRU5EJHQkOw0KKyAgICBDUkVBVEUgVFJJR0dFUiBzdWJhdHRyX3RyZyBC RUZPUkUgVVBEQVRFIE9OIHN1YmF0dHINCisgICAgICBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5D VElPTiBzdWJhdHRyX3RyZygpOw0KKyAgRU5EIElGOw0KKyAgaDAgOj0gcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQoJ3N1YmF0dHInOjpyZWdjbGFzcyk7DQorICB1MCA6PSBwZ19z dGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKCdzdWJhdHRyJzo6cmVnY2xhc3MpOw0KKyAgSUYg YXJnIElTIE5VTEwgVEhFTiBFWEVDVVRFIHVwZDsgRUxTRSBFWEVDVVRFIHVwZCBVU0lORyBhcmc7 IEVORCBJRjsNCisgIEZPUiBpIElOIFNFTEVDVCBpbmRleHJlbGlkOjpyZWdjbGFzcyBGUk9NIHBn X2luZGV4DQorICAgICAgICAgICBXSEVSRSBpbmRyZWxpZCA9ICdzdWJhdHRyJzo6cmVnY2xhc3Mg T1JERVIgQlkgMSBMT09QDQorICAgIEJFR0lOIFBFUkZPUk0gYnRfaW5kZXhfY2hlY2soaSwgdHJ1 ZSk7DQorICAgIEVYQ0VQVElPTiBXSEVOIE9USEVSUyBUSEVODQorICAgICAgYWMgOj0gQ0FTRSBX SEVOIGFjID0gJ29rJyBUSEVOICcnIEVMU0UgYWMgfHwgJzsgJyBFTkQgfHwNCisgICAgICAgICAg ICBpOjp0ZXh0IHx8ICc6ICcgfHwgU1FMRVJSTTsNCisgICAgRU5EOw0KKyAgRU5EIExPT1A7DQor ICBJTlNFUlQgSU5UTyBzdWJhdHRyX3Jlc3VsdHMgVkFMVUVTIChuYW1lLA0KKyAgICBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnc3ViYXR0cic6OnJlZ2NsYXNzKSAtIGgwLA0K KyAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKCdzdWJhdHRyJzo6cmVnY2xhc3Mp IC0gdTAsIGFjKTsNCisgIERST1AgVEFCTEUgc3ViYXR0cjsNCisgIERST1AgRlVOQ1RJT04gSUYg RVhJU1RTIHN1YmF0dHJfdHJnKCk7DQorRU5EICRmJDsNCisNCistLSBOb3RoaW5nIGluZGV4ZWQg Y2hhbmdlcy4NCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LWFnZScsICAgICAgICAgICAgJCRV UERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne2FnZX0nLCAnMScpJCQpOw0KK1NF TEVDVCBzdWJhdHRyX3Byb2JlKCdzZXQtby16JywgICAgICAgICAgICAkJFVQREFURSBzdWJhdHRy IFNFVCBkID0ganNvbmJfc2V0KGQsICd7byx6fScsICcyJykkJCk7DQorU0VMRUNUIHN1YmF0dHJf cHJvYmUoJ3NldC1wLW90aGVyJywgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29u Yl9zZXQoZCwgJ3twLHJ9JywgJzInKSQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnZGVsZXRl LWFnZScsICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGQgLSAnYWdlJyQkKTsNCitT RUxFQ1Qgc3ViYXR0cl9wcm9iZSgnZGVsZXRlLWtleXMnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0 ciBTRVQgZCA9IGQgLSAne2FnZSx6en0nOjp0ZXh0W10kJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJv YmUoJ2RlbGV0ZS1wYXRoLWFnZScsICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBkICMtICd7 YWdlfSckJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2RlbGV0ZS1hcnItZWxlbScsICAgICQk VVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3t0YWdzfScsIChkLT4ndGFncycp IC0gMCkkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2NvbmNhdC1vdGhlcicsICAgICAgICQk VVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBkIHx8ICd7ImFnZSI6IDUsICJuZXciOiAxfSckJCk7DQor U0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3N1YnNjcmlwdC1hZ2UnLCAgICAgICQkVVBEQVRFIHN1YmF0 dHIgU0VUIGRbJ2FnZSddID0gJzcnJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCduZXN0ZWQt bXV0YXRvcnMnLCAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGpzb25iX3Nl dChkLCAne2FnZX0nLCAnMScpLCAne25ld30nLCAnMicpJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3By b2JlKCdzZXQtbGF4LWFnZScsICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJf c2V0X2xheChkLCAne2FnZX0nLCBOVUxMLCB0cnVlLCAnZGVsZXRlX2tleScpJCQpOw0KK1NFTEVD VCBzdWJhdHRyX3Byb2JlKCdpbnNlcnQtby1uZXcnLCAgICAgICAkJFVQREFURSBzdWJhdHRyIFNF VCBkID0ganNvbmJfaW5zZXJ0KGQsICd7byxuZXd9JywgJzEnKSQkKTsNCitTRUxFQ1Qgc3ViYXR0 cl9wcm9iZSgnYXJyYXktYTMnLCAgICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgYVszXSA9 IDk5JCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdhcnJheS1hOS1leHRlbmQnLCAgICAkJFVQ REFURSBzdWJhdHRyIFNFVCBhWzldID0gOTkkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3Nl dC1hcnItZWxlbScsICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwg J3thcnIsMX0nLCAnNScpJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdwYXJhbS1wYXRoJywg ICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsIEFSUkFZWydhZ2Un XSwgJDEpJCQsICczJyk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2NvYWxlc2NlLXdyYXAnLCAg ICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBDT0FMRVNDRShqc29uYl9zZXQoZCwgJ3thZ2V9 JywgJzEnKSwgZCkkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2ZsYWctdW5jaGFuZ2VkJywg ICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3thZ2V9JywgJzEnKSBX SEVSRSBpZCAlIDIgPSAwJCQpOw0KKw0KKy0tIEFuIGluZGV4ZWQgcGFydCBjaGFuZ2VzLCBvciBt aWdodC4NCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LW5hbWUnLCAgICAgICAgICAgJCRVUERB VEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne25hbWV9JywgJyJ4IicpJCQpOw0KK1NF TEVDVCBzdWJhdHRyX3Byb2JlKCdzZXQtbycsICAgICAgICAgICAgICAkJFVQREFURSBzdWJhdHRy IFNFVCBkID0ganNvbmJfc2V0KGQsICd7b30nLCAne30nKSQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9w cm9iZSgnc2V0LW8taycsICAgICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25i X3NldChkLCAne28sa30nLCAnIngiJykkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3NldC1w JywgICAgICAgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3tw fScsICcxJykkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2RlbGV0ZS1uYW1lJywgICAgICAg ICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBkIC0gJ25hbWUnJCQpOw0KK1NFTEVDVCBzdWJhdHRy X3Byb2JlKCdkZWxldGUta2V5cy1uYW1lJywgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0gZCAt ICd7YWdlLG5hbWV9Jzo6dGV4dFtdJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdkZWxldGUt cGF0aC1uYW1lJywgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0gZCAjLSAne25hbWV9JyQkKTsN CitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnZGVsZXRlLXBhdGgtby1rJywgICAgJCRVUERBVEUgc3Vi YXR0ciBTRVQgZCA9IGQgIy0gJ3tvLGt9JyQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnaW5z ZXJ0LXRhZ3MtMCcsICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX2luc2VydChk LCAne3RhZ3MsMH0nLCAnIngiJykkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2luc2VydC10 YWdzLTEnLCAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9pbnNlcnQoZCwgJ3t0 YWdzLDF9JywgJyJ4IicpJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdpbnNlcnQtdGFncy1u ZWcnLCAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfaW5zZXJ0KGQsICd7dGFncywt MX0nLCAnIngiJykkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3NldC10YWdzLTAnLCAgICAg ICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3t0YWdzLDB9JywgJzkn KSQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LXRhZ3MtbmVnMycsICAgICAgJCRVUERB VEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne3RhZ3MsLTN9JywgJzknKSQkKTsNCitT RUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LXRhZ3Mtc3AwJywgICAgICAgJCRVUERBVEUgc3ViYXR0 ciBTRVQgZCA9IGpzb25iX3NldChkLCBBUlJBWVsndGFncycsJyAwJ10sICc5JykkJCk7DQorU0VM RUNUIHN1YmF0dHJfcHJvYmUoJ3NldC10YWdzLXBsdXMwJywgICAgICQkVVBEQVRFIHN1YmF0dHIg U0VUIGQgPSBqc29uYl9zZXQoZCwgQVJSQVlbJ3RhZ3MnLCcrMCddLCAnOScpJCQpOw0KK1NFTEVD VCBzdWJhdHRyX3Byb2JlKCdzZXQtdGFncy0wMCcsICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNF VCBkID0ganNvbmJfc2V0KGQsIEFSUkFZWyd0YWdzJywnMDAnXSwgJzknKSQkKTsNCitTRUxFQ1Qg c3ViYXR0cl9wcm9iZSgnZGVsZXRlLXBhdGgtdGFncy0wJywgJCRVUERBVEUgc3ViYXR0ciBTRVQg ZCA9IGQgIy0gJ3t0YWdzLDB9JyQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2V0LWxheC10 YWdzLTAnLCAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldF9sYXgoZCwgJ3t0 YWdzLDB9JywgTlVMTCwgdHJ1ZSwgJ2RlbGV0ZV9rZXknKSQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9w cm9iZSgnY29uY2F0LW5hbWUnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGQgfHwg J3sibmFtZSI6ICJ4In0nJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdjb25jYXQtYXJyYXkn LCAgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0gZCB8fCAnWzFdJyQkKTsNCitTRUxFQ1Qg c3ViYXR0cl9wcm9iZSgnY29uY2F0LWxlZnQnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQg ZCA9ICd7Im5hbWUiOiAieCJ9JyB8fCBkJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCd3aG9s ZS1yZXBsYWNlJywgICAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0gJ3sibmFtZSI6ICJ4In0n JCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdtdXRhdG9yLW90aGVyLWNvbCcsICAkJFVQREFU RSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGpzb25iX2J1aWxkX29iamVjdCgnbmFtZScsICd6 JyB8fCB4KSwgJ3thZ2V9JywgJzEnKSQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnY2FzZS13 cmFwJywgICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9IENBU0UgV0hFTiBpZCA+IDAg VEhFTiBqc29uYl9zZXQoZCwgJ3tuYW1lfScsICcieCInKSBFTFNFIGQgRU5EJCQpOw0KK1NFTEVD VCBzdWJhdHRyX3Byb2JlKCdzZXQtbGF4LW5hbWUnLCAgICAgICAkJFVQREFURSBzdWJhdHRyIFNF VCBkID0ganNvbmJfc2V0X2xheChkLCAne25hbWV9JywgTlVMTCwgdHJ1ZSwgJ2RlbGV0ZV9rZXkn KSQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc3Vic2NyaXB0LW5hbWUnLCAgICAgJCRVUERB VEUgc3ViYXR0ciBTRVQgZFsnbmFtZSddID0gJyJ4IickJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJv YmUoJ3N1YnNjcmlwdC1zJywgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGRbJ3MnXSA9ICci eCInJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCdzdWJzY3JpcHQtaW50JywgICAgICAkJFVQ REFURSBzdWJhdHRyIFNFVCBkWyd0YWdzJ11bMF0gPSAnOSckJCk7DQorU0VMRUNUIHN1YmF0dHJf cHJvYmUoJ3NldC1mbGFnJywgICAgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29u Yl9zZXQoZCwgJ3tmbGFnfScsICcib24iJykkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3Nl dC0xLWtleScsICAgICAgICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwg J3sxfScsICcidHdvIicpJCQpOw0KK1NFTEVDVCBzdWJhdHRyX3Byb2JlKCd0cmlnZ2VyLXJlbmFt ZXMnLCAgICAkJFVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7YWdlfScsICcx JykkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ2FycmF5LWEyJywgICAgICAgICAgICQkVVBE QVRFIHN1YmF0dHIgU0VUIGFbMl0gPSA5OSQkKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnYXJy YXktYS1uZWcnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgYVstNV0gPSA5OSQkKTsNCitT RUxFQ1Qgc3ViYXR0cl9wcm9iZSgnYXJyYXktd2hvbGUnLCAgICAgICAgJCRVUERBVEUgc3ViYXR0 ciBTRVQgYSA9IGEgfHwgOTkkJCk7DQorU0VMRUNUIHN1YmF0dHJfcHJvYmUoJ3BhcmFtLXBhdGgt bmFtZScsICAgICQkVVBEQVRFIHN1YmF0dHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgQVJSQVlbJ25h bWUnXSwgJDEpJCQsICcieCInKTsNCitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgncGFyYW0tZG9jJywg ICAgICAgICAgJCRVUERBVEUgc3ViYXR0ciBTRVQgZCA9ICQxJCQsICd7Im5hbWUiOiJ4In0nKTsN CitTRUxFQ1Qgc3ViYXR0cl9wcm9iZSgnc2VsZi1yZWYtdmFsdWUnLCAgICAgJCRVUERBVEUgc3Vi YXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne2FnZX0nLCBkLT4nbmFtZScpJCQpOw0KK1NFTEVD VCBzdWJhdHRyX3Byb2JlKCdudWxsLWRvYycsICAgICAgICAgICAkJFVQREFURSBzdWJhdHRyIFNF VCBkID0ganNvbmJfc2V0KE5VTEw6Ompzb25iLCAne2FnZX0nLCAnMScpJCQpOw0KKw0KK1NFTEVD VCBuYW1lLCB1cGQsIGhvdCwgYW1jaGVjayBGUk9NIHN1YmF0dHJfcmVzdWx0cyBPUkRFUiBCWSBu YW1lIENPTExBVEUgIkMiOw0KK0RST1AgVEFCTEUgc3ViYXR0cl9yZXN1bHRzOw0KK0RST1AgRlVO Q1RJT04gc3ViYXR0cl9wcm9iZTsNCisNCistLSBTaGFwZXMgdGhhdCBuZWVkIHRoZWlyIG93biB0 YWJsZXM6IGNvbXBvc2l0ZSBmaWVsZHMsIGRvbWFpbnMsIGdlbmVyaWMNCistLSBwbGFucywgYSBz dHJpY3QgbW9kaWZpZXIgdGhhdCByZXR1cm5zIG51bGwsIGFuZCByZWZlcmVuY2VzIHRoZSBhbmFs eXNpcw0KKy0tIGRvZXMgbm90IGZvbGxvdy4gIHQvMDA3X3N1YmF0dHJfcHJvb2YucGwgY2hlY2tz IHdoYXQgaXMgY29uY2x1ZGVkLg0KK0NSRUFURSBUWVBFIHN1YmF0dHJfcGFpciBBUyAoayBpbnQs IHYgaW50KTsNCitDUkVBVEUgRE9NQUlOIHN1YmF0dHJfZG9jIEFTIGpzb25iIENIRUNLIChWQUxV RSA/ICduYW1lJyk7DQorQ1JFQVRFIFRBQkxFIHN1YmF0dHIgKGlkIGludCBQUklNQVJZIEtFWSwg ZCBzdWJhdHRyX2RvYywgcCBzdWJhdHRyX3BhaXIsDQorICAgICAgICAgICAgICAgICAgICAgIHIg anNvbmIsIG4ganNvbmIpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorQ1JFQVRFIElOREVYIHN1 YmF0dHJfbmFtZSBPTiBzdWJhdHRyICgoZC0+PiduYW1lJykpOw0KK0NSRUFURSBJTkRFWCBzdWJh dHRyX3BrIE9OIHN1YmF0dHIgKCgocCkuaykpOw0KK0NSRUFURSBJTkRFWCBzdWJhdHRyX3dob2xl IE9OIHN1YmF0dHIgKChyLT4+J25hbWUnKSkgV0hFUkUgciBJUyBOT1QgTlVMTDsNCitDUkVBVEUg SU5ERVggc3ViYXR0cl9yb3cgT04gc3ViYXR0ciAoaWQpIFdIRVJFIHN1YmF0dHIgSVMgTk9UIE5V TEw7DQorQ1JFQVRFIElOREVYIHN1YmF0dHJfdGV4dCBPTiBzdWJhdHRyICgobjo6dGV4dCkpOw0K K0NSRUFURSBJTkRFWCBzdWJhdHRyX2VwIE9OIHN1YmF0dHIgKChqc29uYl9leHRyYWN0X3BhdGgo biwgJ2EnLCAnYicpKSk7DQorSU5TRVJUIElOVE8gc3ViYXR0ciBTRUxFQ1QgZywganNvbmJfYnVp bGRfb2JqZWN0KCduYW1lJywgJ24nIHx8IGcpLA0KKyAgICBST1coZywgZyk6OnN1YmF0dHJfcGFp ciwganNvbmJfYnVpbGRfb2JqZWN0KCduYW1lJywgJ3InIHx8IGcpLA0KKyAgICAneyJhIjogeyJi IjogMX19Jw0KKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgZzsNCitVUERBVEUgc3ViYXR0 ciBTRVQgZCA9IGpzb25iX3NldChkLCAne2FnZX0nLCAnMScpOw0KK1VQREFURSBzdWJhdHRyIFNF VCBwLnYgPSAwOw0KK1VQREFURSBzdWJhdHRyIFNFVCBwLmsgPSAocCkuayArIDEwOw0KK1VQREFU RSBzdWJhdHRyIFNFVCByID0ganNvbmJfc2V0KHIsICd7YWdlfScsICcxJyk7DQorVVBEQVRFIHN1 YmF0dHIgU0VUIG4gPSBqc29uYl9zZXQobiwgJ3tjfScsICcxJyk7DQorVVBEQVRFIHN1YmF0dHIg U0VUIG4gPSBqc29uYl9zZXQobiwgJ3thLGN9JywgJzEnKTsNCitVUERBVEUgc3ViYXR0ciBTRVQg ZCA9IGpzb25iX3NldChkLCBBUlJBWVtOVUxMLCAneCddLCAnMScpIFdIRVJFIGZhbHNlOw0KK1VQ REFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7YWdlfScsIChTRUxFQ1QgZC0+J25h bWUnKSk7DQorUFJFUEFSRSBzdWJhdHRyX3AodGV4dFtdLCBqc29uYikgQVMNCisgIFVQREFURSBz dWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICQxLCAkMik7DQorU0VUIHBsYW5fY2FjaGVfbW9k ZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsNCitFWEVDVVRFIHN1YmF0dHJfcCgne2FnZX0nLCAnMicp Ow0KK0VYRUNVVEUgc3ViYXR0cl9wKCd7bmFtZX0nLCAnIngiJyk7DQorUkVTRVQgcGxhbl9jYWNo ZV9tb2RlOw0KK0RFQUxMT0NBVEUgc3ViYXR0cl9wOw0KKy0tIGpzb25iX3NldCByZXR1cm5zIG51 bGwgZm9yIGEgbnVsbCBuZXcgdmFsdWU7IHN1Y2ggcm93cyBhcmUgZXZhbHVhdGVkDQorVVBEQVRF IHN1YmF0dHIgU0VUIHIgPSBqc29uYl9zZXQociwgJ3thZ2V9JywgTlVMTCkgV0hFUkUgaWQgPD0g MjsNCitTRUxFQ1QgaWQsIGQsIHAsIHIgRlJPTSBzdWJhdHRyIE9SREVSIEJZIGlkOw0KK1NFTEVD VCBidF9pbmRleF9jaGVjayhpbmRleHJlbGlkLCB0cnVlKSBGUk9NIHBnX2luZGV4DQorICBXSEVS RSBpbmRyZWxpZCA9ICdzdWJhdHRyJzo6cmVnY2xhc3MgT1JERVIgQlkgaW5kZXhyZWxpZDo6cmVn Y2xhc3M6OnRleHQ7DQorRFJPUCBUQUJMRSBzdWJhdHRyOw0KK0RST1AgRE9NQUlOIHN1YmF0dHJf ZG9jOw0KK0RST1AgVFlQRSBzdWJhdHRyX3BhaXI7DQpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNo ZWNrL3QvMDA3X3N1YmF0dHJfcHJvb2YucGwgYi9jb250cmliL2FtY2hlY2svdC8wMDdfc3ViYXR0 cl9wcm9vZi5wbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi40NGM0 MWFiZTQ0Ng0KLS0tIC9kZXYvbnVsbA0KKysrIGIvY29udHJpYi9hbWNoZWNrL3QvMDA3X3N1YmF0 dHJfcHJvb2YucGwNCkBAIC0wLDAgKzEsMTIzIEBADQorDQorIyBDb3B5cmlnaHQgKGMpIDIwMjYs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwDQorDQorIyBXaGF0IGFuIFVQREFU RSdzIFNFVCBjbGF1c2UgcHJvdmVzIGFib3V0IHRoZSBpbmRleGVzIGl0IGNhbm5vdCBjaGFuZ2Uu DQorIyBUaGUgZXhlY3V0b3IgbG9ncyBlYWNoIGNvbmNsdXNpb24gYXQgREVCVUcxOyB0aGlzIHJl YWRzIHRoZSBzZXJ2ZXIgbG9nLA0KKyMgc28gdGhhdCBvdGhlciBtZXNzYWdlcyBjYW5ub3QgZGlz dHVyYiB0aGUgdGVzdC4gIGNoZWNrX3N1YmF0dHIgY2hlY2tzDQorIyB0aGF0IHRoZSBjb25jbHVz aW9ucyBhcmUgcmlnaHQuDQorDQordXNlIHN0cmljdDsNCit1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7DQorDQordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7DQordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOw0KKw0KK3VzZSBUZXN0OjpNb3JlOw0KKw0KK215ICRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJhdHRyJyk7DQorJG5vZGUtPmluaXQ7DQor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnYXV0b3ZhY3V1bSA9IG9mZicp Ow0KKyRub2RlLT5zdGFydDsNCisNCisjIFJ1biBvbmUgc3RhdGVtZW50IGF0IGxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEsIGFuZCByZXR1cm4gdGhlDQorIyBjb25jbHVzaW9ucyBpdCBsb2dnZWQs IGFzIHNvcnRlZCAiY29sdW1uL2luZGV4IiBwYWlycy4NCitzdWIgY29uY2x1ZGVkDQorew0KKwlt eSAoJHNxbCkgPSBAXzsNCisJbXkgJG9mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOw0KKwlteSBA Zm91bmQ7DQorDQorCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFVCBsb2dfbWluX21l c3NhZ2VzID0gZGVidWcxOyAkc3FsIik7DQorCW15ICRsb2cgPSBzbHVycF9maWxlKCRub2RlLT5s b2dmaWxlLCAkb2Zmc2V0KTsNCisJd2hpbGUgKCRsb2cgPX4gL1VQREFURSBvZiBjb2x1bW4gIihc dyspIiBjYW5ub3QgY2hhbmdlIGluZGV4ICIoXHcrKSIvZykNCisJew0KKwkJcHVzaCBAZm91bmQs ICIkMS8kMiI7DQorCX0NCisJcmV0dXJuIGpvaW4oJyAnLCBzb3J0IEBmb3VuZCk7DQorfQ0KKw0K KyRub2RlLT5zYWZlX3BzcWwoDQorCSdwb3N0Z3JlcycsIHF7DQorCUNSRUFURSBUQUJMRSBzdWJh dHRyIChpZCBpbnQgUFJJTUFSWSBLRVksIGQganNvbmIsIGEgaW50W10pOw0KKwlDUkVBVEUgSU5E RVggc3ViYXR0cl9uYW1lIE9OIHN1YmF0dHIgKChkLT4+J25hbWUnKSk7DQorCUNSRUFURSBJTkRF WCBzdWJhdHRyX3RhZ3MgT04gc3ViYXR0ciAoKGQtPid0YWdzJy0+PjApKTsNCisJQ1JFQVRFIElO REVYIHN1YmF0dHJfYTIgT04gc3ViYXR0ciAoKGFbMl0pKTsNCisJSU5TRVJUIElOVE8gc3ViYXR0 ciBWQUxVRVMgKDEsICd7Im5hbWUiOiAiYSIsICJ0YWdzIjogWzEsIDJdfScsICd7MSwyLDN9Jyk7 DQorfSk7DQorDQorIyBub3RoaW5nIGlzIGNvbmNsdWRlZCBmb3IgYW4gVVBEQVRFIG9mIGEgc2lu Z2xlIHJvdw0KK2lzKGNvbmNsdWRlZChxe1VQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJfc2V0 KGQsICd7YWdlfScsICcxJyl9KSwNCisJJycsICdzaW5nbGUgcm93OiBub3RoaW5nIGNvbmNsdWRl ZCcpOw0KKw0KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywNCisJcXtJTlNFUlQgSU5UTyBz dWJhdHRyIFZBTFVFUyAoMiwgJ3sibmFtZSI6ICJiIiwgInRhZ3MiOiBbMSwgMl19JywgJ3sxLDIs M30nKX0NCispOw0KKw0KK2lzKCBjb25jbHVkZWQocXtVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpz b25iX3NldChkLCAne2FnZX0nLCAnMScpfSksDQorCSdkL3N1YmF0dHJfbmFtZSBkL3N1YmF0dHJf dGFncycsDQorCSdhbiB1bmluZGV4ZWQga2V5IGNoYW5nZXMgbmVpdGhlciBpbmRleCcpOw0KK2lz KCBjb25jbHVkZWQocXtVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAne3RhZ3Ms MX0nLCAnOScpfSksDQorCSdkL3N1YmF0dHJfbmFtZScsICdhbm90aGVyIGFycmF5IGVsZW1lbnQ6 IHRoZSBuYW1lIGluZGV4IG9ubHknKTsNCitpcyggY29uY2x1ZGVkKHF7VVBEQVRFIHN1YmF0dHIg U0VUIGQgPSBkIC0gJ25hbWUnLCBhWzFdID0gMH0pLA0KKwknYS9zdWJhdHRyX2EyIGQvc3ViYXR0 cl90YWdzJywNCisJJ2RlbGV0aW5nIGEga2V5LCBhbmQgYW5vdGhlciBhcnJheSBlbGVtZW50Jyk7 DQoraXMoIGNvbmNsdWRlZChxe1VQREFURSBzdWJhdHRyIFNFVCBkID0gZCB8fCAneyJhZ2UiOiAy fSd9KSwNCisJJ2Qvc3ViYXR0cl9uYW1lIGQvc3ViYXR0cl90YWdzJywNCisJJ2NvbmNhdGVuYXRp bmcgYW4gb2JqZWN0IHdpdGggb3RoZXIga2V5cycpOw0KKw0KKyRub2RlLT5zYWZlX3BzcWwoDQor CSdwb3N0Z3JlcycsIHF7DQorCURST1AgVEFCTEUgc3ViYXR0cjsNCisJQ1JFQVRFIFRZUEUgc3Vi YXR0cl9wYWlyIEFTIChrIGludCwgdiBpbnQpOw0KKwlDUkVBVEUgRE9NQUlOIHN1YmF0dHJfZG9j IEFTIGpzb25iIENIRUNLIChWQUxVRSA/ICduYW1lJyk7DQorCUNSRUFURSBUQUJMRSBzdWJhdHRy IChpZCBpbnQgUFJJTUFSWSBLRVksIGQgc3ViYXR0cl9kb2MsIHAgc3ViYXR0cl9wYWlyLA0KKwkJ CQkJCSAgciBqc29uYiwgbiBqc29uYikgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisJQ1JFQVRF IElOREVYIHN1YmF0dHJfbmFtZSBPTiBzdWJhdHRyICgoZC0+PiduYW1lJykpOw0KKwlDUkVBVEUg SU5ERVggc3ViYXR0cl9wayBPTiBzdWJhdHRyICgoKHApLmspKTsNCisJQ1JFQVRFIElOREVYIHN1 YmF0dHJfd2hvbGUgT04gc3ViYXR0ciAoKHItPj4nbmFtZScpKSBXSEVSRSByIElTIE5PVCBOVUxM Ow0KKwlDUkVBVEUgSU5ERVggc3ViYXR0cl9yb3cgT04gc3ViYXR0ciAoaWQpIFdIRVJFIHN1YmF0 dHIgSVMgTk9UIE5VTEw7DQorCUNSRUFURSBJTkRFWCBzdWJhdHRyX3RleHQgT04gc3ViYXR0ciAo KG46OnRleHQpKTsNCisJQ1JFQVRFIElOREVYIHN1YmF0dHJfZXAgT04gc3ViYXR0ciAoKGpzb25i X2V4dHJhY3RfcGF0aChuLCAnYScsICdiJykpKTsNCisJSU5TRVJUIElOVE8gc3ViYXR0ciBTRUxF Q1QgZywganNvbmJfYnVpbGRfb2JqZWN0KCduYW1lJywgJ24nIHx8IGcpLA0KKwkJUk9XKGcsIGcp OjpzdWJhdHRyX3BhaXIsIGpzb25iX2J1aWxkX29iamVjdCgnbmFtZScsICdyJyB8fCBnKSwNCisJ CSd7ImEiOiB7ImIiOiAxfX0nDQorCSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgZzsNCit9 KTsNCisNCitpcyhjb25jbHVkZWQocXtVUERBVEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChk LCAne2FnZX0nLCAnMScpfSksDQorCSdkL3N1YmF0dHJfbmFtZScsICdhIGRvbWFpbiBvdmVyIGpz b25iJyk7DQoraXMoY29uY2x1ZGVkKHF7VVBEQVRFIHN1YmF0dHIgU0VUIHAudiA9IDB9KSwNCisJ J3Avc3ViYXR0cl9waycsICdhbm90aGVyIGZpZWxkIG9mIGEgY29tcG9zaXRlJyk7DQoraXMoY29u Y2x1ZGVkKHF7VVBEQVRFIHN1YmF0dHIgU0VUIHAuayA9IChwKS5rICsgMTB9KSwNCisJJycsICd0 aGUgaW5kZXhlZCBmaWVsZCBvZiBhIGNvbXBvc2l0ZScpOw0KK2lzKGNvbmNsdWRlZChxe1VQREFU RSBzdWJhdHRyIFNFVCByID0ganNvbmJfc2V0KHIsICd7YWdlfScsICcxJyl9KSwNCisJJycsICdh IGNvbHVtbiBhIHByZWRpY2F0ZSB0ZXN0cyBhcyBhIHdob2xlJyk7DQoraXMoY29uY2x1ZGVkKHF7 VVBEQVRFIHN1YmF0dHIgU0VUIG4gPSBqc29uYl9zZXQobiwgJ3tjfScsICcxJyl9KSwNCisJJ24v c3ViYXR0cl9lcCcsICdqc29uYl9leHRyYWN0X3BhdGgsIGFub3RoZXIga2V5Jyk7DQoraXMoY29u Y2x1ZGVkKHF7VVBEQVRFIHN1YmF0dHIgU0VUIG4gPSBqc29uYl9zZXQobiwgJ3thLGN9JywgJzEn KX0pLA0KKwknbi9zdWJhdHRyX2VwJywgJ2pzb25iX2V4dHJhY3RfcGF0aCwgYSBzaWJsaW5nIGtl eScpOw0KK2lzKCBjb25jbHVkZWQoDQorCQlxe1VQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJf c2V0KGQsIEFSUkFZW05VTEwsICd4J10sICcxJykgV0hFUkUgZmFsc2V9DQorCSksDQorCScnLA0K KwknYSBudWxsIHBhdGggZWxlbWVudCcpOw0KK2lzKCBjb25jbHVkZWQoDQorCQlxe1VQREFURSBz dWJhdHRyIFNFVCBkID0ganNvbmJfc2V0KGQsICd7YWdlfScsIChTRUxFQ1QgZC0+J25hbWUnKSl9 KSwNCisJJ2Qvc3ViYXR0cl9uYW1lJywgJ2Egc3VibGluayBpbiB0aGUgbmV3IHZhbHVlJyk7DQor aXMoIGNvbmNsdWRlZCgNCisJCXF7U0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNf cGxhbjsNCisJCSAgUFJFUEFSRSBzdWJhdHRyX3AodGV4dFtdLCBqc29uYikgQVMNCisJCQlVUERB VEUgc3ViYXR0ciBTRVQgZCA9IGpzb25iX3NldChkLCAkMSwgJDIpOw0KKwkJICBFWEVDVVRFIHN1 YmF0dHJfcCgne2FnZX0nLCAnMicpO30pLA0KKwknZC9zdWJhdHRyX25hbWUnLA0KKwknYSBnZW5l cmljIHBsYW4sIGEgcGFyYW1ldGVyIHBhdGgnKTsNCitpcyggY29uY2x1ZGVkKA0KKwkJcXtTRVQg cGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOw0KKwkJICBQUkVQQVJFIHN1YmF0 dHJfcCh0ZXh0W10sIGpzb25iKSBBUw0KKwkJCVVQREFURSBzdWJhdHRyIFNFVCBkID0ganNvbmJf c2V0KGQsICQxLCAkMik7DQorCQkgIEVYRUNVVEUgc3ViYXR0cl9wKCd7bmFtZX0nLCAnIngiJyk7 fSksDQorCScnLA0KKwknYSBnZW5lcmljIHBsYW4sIGEgcGFyYW1ldGVyIHBhdGggdG8gdGhlIGlu ZGV4ZWQga2V5Jyk7DQorDQorJG5vZGUtPnN0b3A7DQorZG9uZV90ZXN0aW5nKCk7DQpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNn bWwNCmluZGV4IDRkNjU1MjNlN2I5Li40NTIzZDA3M2ExOSAxMDA2NDQNCi0tLSBhL2RvYy9zcmMv c2dtbC9zdG9yYWdlLnNnbWwNCisrKyBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwNCkBAIC0x MTE2LDcgKzExMTYsMTEgQEAgZGF0YS4gRW1wdHkgaW4gb3JkaW5hcnkgdGFibGVzLjwvZW50cnk+ DQogICAgICBleHByZXNzaW9ucyBub3Igd2hldGhlciB0aGUgcm93IHNhdGlzZmllcyBpdHMgcHJl ZGljYXRlLiAgVGhlIHZhbHVlcyBhcmUNCiAgICAgIGNvbXBhcmVkIGFzIHN0b3JlZCwgc28gZXF1 YWwgdmFsdWVzIHdpdGggZGlmZmVyZW50IHJlcHJlc2VudGF0aW9ucywgc3VjaA0KICAgICAgYXMg PGxpdGVyYWw+MS4wPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+MS4wMDwvbGl0ZXJhbD4gb2YgdHlw ZQ0KLSAgICAgPHR5cGU+bnVtZXJpYzwvdHlwZT4sIGNvdW50IGFzIGRpZmZlcmVudC4NCisgICAg IDx0eXBlPm51bWVyaWM8L3R5cGU+LCBjb3VudCBhcyBkaWZmZXJlbnQuICBXaGVuIHRoZSB1cGRh dGUncw0KKyAgICAgPGxpdGVyYWw+U0VUPC9saXRlcmFsPiBjbGF1c2UgY2hhbmdlcyBvbmx5IHBh cnRzIG9mIHRoZSBjb2x1bW4gdGhhdCB0aGUNCisgICAgIGluZGV4ZXMgZG8gbm90IHJlYWQsIGZv ciBleGFtcGxlIHRocm91Z2ggPGZ1bmN0aW9uPmpzb25iX3NldDwvZnVuY3Rpb24+DQorICAgICBv ciBhcnJheSBzdWJzY3JpcHRpbmcsIHRoaXMgaXMga25vd24gd2l0aG91dCBldmFsdWF0aW5nIHRo ZSBpbmRleGVzJw0KKyAgICAgZXhwcmVzc2lvbnMuDQogICAgICA8L3BhcmE+DQogICAgPC9saXN0 aXRlbT4NCiAgICA8bGlzdGl0ZW0+DQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbA0KaW5kZXggYmMwNGQ5ZGZjMTMuLjM2NmJmOWFi ZDFjIDEwMDY0NA0KLS0tIGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwNCisrKyBiL2RvYy9zcmMv c2dtbC94ZnVuYy5zZ21sDQpAQCAtNDMwNCw0ICs0MzA0LDE5IEBAIHN1cHBvcnRmbihpbnRlcm5h bCkgcmV0dXJucyBpbnRlcm5hbA0KICAgICBUbyBjcmVhdGUgc3VjaCBjb25kaXRpb25zLCB0aGUg c3VwcG9ydCBmdW5jdGlvbiBtdXN0IGltcGxlbWVudA0KICAgICB0aGUgPGxpdGVyYWw+U3VwcG9y dFJlcXVlc3RJbmRleENvbmRpdGlvbjwvbGl0ZXJhbD4gcmVxdWVzdCB0eXBlLg0KICAgIDwvcGFy YT4NCisNCisgICA8cGFyYT4NCisgICAgRm9yIGZ1bmN0aW9ucyB0aGF0IHJlYWQgcGFydCBvZiBh IHN0cnVjdHVyZWQgdmFsdWUsIHN1Y2ggYXMgYSBtZW1iZXIgb2YgYQ0KKyAgICBkb2N1bWVudCwg b3IgdGhhdCByZXR1cm4gYSBjb3B5IG9mIGEgc3RydWN0dXJlZCB2YWx1ZSB3aXRoIHNvbWUgcGFy dHMNCisgICAgY2hhbmdlZCwgdGhlIGV4ZWN1dG9yIGNhbiB1c2UgYSBkZXNjcmlwdGlvbiBvZiB3 aGljaCBwYXJ0cyBhcmUgcmVhZCBvcg0KKyAgICBjaGFuZ2VkLiAgV2hlbiBhbiA8Y29tbWFuZD5V UERBVEU8L2NvbW1hbmQ+IGNoYW5nZXMgYSBjb2x1bW4gb25seSB0aHJvdWdoDQorICAgIHN1Y2gg ZnVuY3Rpb25zLCBhbmQgZXZlcnkgZXhwcmVzc2lvbiBpbmRleCBhbmQgcGFydGlhbC1pbmRleCBw cmVkaWNhdGUNCisgICAgdGhhdCB1c2VzIHRoZSBjb2x1bW4gcmVhZHMgb25seSBvdGhlciBwYXJ0 cyBvZiBpdCwgdGhlIGV4ZWN1dG9yIGtub3dzDQorICAgIHdpdGhvdXQgZXZhbHVhdGluZyB0aGVt IHRoYXQgdGhlIHVwZGF0ZSBsZWF2ZXMgdGhvc2UgaW5kZXhlcyB1bmFmZmVjdGVkDQorICAgIChz ZWUgPHhyZWYgbGlua2VuZD0ic3RvcmFnZS1ob3QiLz4pLiAgVG8gZGVzY3JpYmUgYSBjYWxsLCB0 aGUgc3VwcG9ydA0KKyAgICBmdW5jdGlvbiBtdXN0IGltcGxlbWVudCB0aGUgPGxpdGVyYWw+U3Vw cG9ydFJlcXVlc3RTdWJhdHRyPC9saXRlcmFsPg0KKyAgICByZXF1ZXN0IHR5cGUuICBJdHMgYW5z d2VyIG11c3QgYmUgZXhhY3QgZm9yIGV2ZXJ5IHZhbHVlIHRoZSBjYWxsIGNvdWxkIGJlDQorICAg IGdpdmVuOiBhbiBhbnN3ZXIgdGhhdCBvbWl0cyBhIHBhcnQgdGhlIGNhbGwgcmVhZHMgb3IgY2hh bmdlcyBjYW4gY2F1c2UNCisgICAgaW5kZXggZW50cmllcyB0byBiZSBtaXNzaW5nLg0KKyAgIDwv cGFyYT4NCiAgIDwvc2VjdDE+DQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFr ZWZpbGUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQ0KaW5kZXggMTExMThkMGNlMDIu Ljc3ZjA0NDhjZTc5IDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUN CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlDQpAQCAtMjgsNiArMjgsNyBAQCBP QkpTID0gXA0KIAlleGVjUmVwbGljYXRpb24ubyBcDQogCWV4ZWNTUkYubyBcDQogCWV4ZWNTY2Fu Lm8gXA0KKwlleGVjU3ViYXR0ci5vIFwNCiAJZXhlY1R1cGxlcy5vIFwNCiAJZXhlY1V0aWxzLm8g XA0KIAlmdW5jdGlvbnMubyBcDQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1N1YmF0dHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNTdWJhdHRyLmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMzVhNDk4NmJjODgNCi0tLSAvZGV2L251 bGwNCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNTdWJhdHRyLmMNCkBAIC0wLDAgKzEs NjMwIEBADQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICoNCisgKiBleGVjU3ViYXR0ci5jDQorICoJ ICBQcm92ZSB0aGF0IGFuIFVQREFURSBjYW5ub3QgY2hhbmdlIHdoYXQgYW4gZXhwcmVzc2lvbiBv ciBwYXJ0aWFsIGluZGV4DQorICoJICBzdG9yZXMsIGZyb20gdGhlIHNoYXBlIG9mIHRoZSBTRVQg ZXhwcmVzc2lvbnMgYW5kIHRoZSBpbmRleA0KKyAqCSAgZGVmaW5pdGlvbnMgYWxvbmUuDQorICoN CisgKiBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpIGZpbmRzIHRoZSBpbmRleGVkIGNvbHVt bnMgYW4gVVBEQVRFIGNoYW5nZWQNCisgKiBieSBjb21wYXJpbmcgdGhlIG9sZCBhbmQgbmV3IHJv d3MuICBGb3IgYSBjb2x1bW4gdXNlZCBvbmx5IHRocm91Z2ggaW5kZXgNCisgKiBleHByZXNzaW9u cyBvciBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZXMgaXQgdGhlbiBldmFsdWF0ZXMgdGhvc2UNCisg KiBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcyBvbiBib3RoIHJvd3MuICBUaGF0IGlzIGFsd2F5 cyByaWdodCwgYnV0IGZvciBhDQorICogbGFyZ2Ugc3RydWN0dXJlZCB2YWx1ZSAoYSBqc29uYiBk b2N1bWVudCwgYW4gYXJyYXksIGFuIGV4dGVuc2lvbidzDQorICogZG9jdW1lbnQgdHlwZSkgaXQg cmVhZHMgdGhlIHZhbHVlIHR3aWNlIHBlciBpbmRleCwgYW5kIG9mdGVuIHRoZSBTRVQNCisgKiBl eHByZXNzaW9uIGFscmVhZHkgdGVsbHMgdXMgdGhhdCB0aGUgcGFydHMgYW4gaW5kZXggcmVhZHMg Y2Fubm90IGhhdmUNCisgKiBjaGFuZ2VkOg0KKyAqDQorICoJCUNSRUFURSBJTkRFWCBPTiB0ICgo ZG9jLT4+J25hbWUnKSk7DQorICoJCVVQREFURSB0IFNFVCBkb2MgPSBqc29uYl9zZXQoZG9jLCAn e3Zpc2l0c30nLCAuLi4pOw0KKyAqDQorICogVGhpcyBtb2R1bGUgd29ya3MgdGhhdCBvdXQgb25j ZSBwZXIgc3RhdGVtZW50LCBmcm9tIHRoZSBwbGFuIHRyZWUsIHNvDQorICogdGhhdCBub3RoaW5n IGF0IHJ1biB0aW1lICh0aGUgZXhwcmVzc2lvbiBpbnRlcnByZXRlciwgSklULWNvbXBpbGVkIGNv ZGUsDQorICogdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzKSBoYXMgdG8gY29vcGVyYXRlLiAgRnVu Y3Rpb25zDQorICogdGFrZSBwYXJ0IHRocm91Z2ggdGhlaXIgc3VwcG9ydCBmdW5jdGlvbiBieSBh bnN3ZXJpbmcgYQ0KKyAqIFN1cHBvcnRSZXF1ZXN0U3ViYXR0cjogd2hpY2ggcGFydHMgb2Ygd2hp Y2ggYXJndW1lbnQgYSBjYWxsIHJlYWRzLCBvcg0KKyAqIHdoaWNoIHBhcnRzIG9mIGl0cyBzb3Vy Y2UgYXJndW1lbnQgaXQgbWF5IGNoYW5nZS4gIEFycmF5IGFuZCBqc29uYg0KKyAqIHN1YnNjcmlw dGluZyBhcmUgdW5kZXJzdG9vZCBkaXJlY3RseS4gIEFueXRoaW5nIHRoaXMgbW9kdWxlIGRvZXMg bm90DQorICogdW5kZXJzdGFuZCBtYWtlcyBpdCBnaXZlIHVwIGZvciB0aGF0IGluZGV4LCBhbmQg dGhlIGV4ZWN1dG9yIHRoZW4NCisgKiBldmFsdWF0ZXMgaXQgYXMgYmVmb3JlLg0KKyAqDQorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwDQorICoNCisgKiBJREVOVElGSUNBVElPTg0KKyAqCSAgc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1N1YmF0dHIuYw0KKyAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICovDQor I2luY2x1ZGUgInBvc3RncmVzLmgiDQorDQorI2luY2x1ZGUgPGN0eXBlLmg+DQorDQorI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHlwZS5oIg0KKyNpbmNsdWRlICJleGVjdXRvci9leGVjU3ViYXR0ci5o Ig0KKyNpbmNsdWRlICJtaXNjYWRtaW4uaCINCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgi DQorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIg0KKyNpbmNsdWRlICJub2Rlcy9wYXJhbXMu aCINCisjaW5jbHVkZSAibm9kZXMvc3VwcG9ydG5vZGVzLmgiDQorI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiDQorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiDQorI2luY2x1ZGUgInV0aWxzL2Zt Z3JvaWRzLmgiDQorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIg0KKyNpbmNsdWRlICJ1dGls cy9yZWwuaCINCisNCisvKiBUaGUgY29sdW1uIHRoZSB3YWxrZXJzIGxvb2sgZm9yLCBhbmQgd2hh dCB0aGV5IGhhdmUgZm91bmQuICovDQordHlwZWRlZiBzdHJ1Y3QgU3ViYXR0cldhbGsNCit7DQor CWludAkJCXZhcm5vOw0KKwlBdHRyTnVtYmVyCWF0dG51bTsNCisJYm9vbAkJa25vd247CQkJLyog ZmFsc2U6IGNvdWxkIG5vdCB0ZWxsICovDQorCUxpc3QJICAgKnBhdGhzOwkJCS8qIExpc3Qgb2Yg TGlzdCBvZiBTdWJhdHRyUGF0aEVsZW0gKi8NCit9IFN1YmF0dHJXYWxrOw0KKw0KK3N0YXRpYyBi b29sIHJlYWRfd2Fsa2VyKE5vZGUgKm5vZGUsIFN1YmF0dHJXYWxrICp3YWxrKTsNCisNCisvKg0K KyAqIE9ubHkgUmVsYWJlbFR5cGUgaXMgbG9va2VkIHRocm91Z2g6IGFueSBvdGhlciB3cmFwcGVy IGtlZXBzIGFuIGV4cHJlc3Npb24NCisgKiBmcm9tIG1hdGNoaW5nIHRoZSB0YXJnZXQgVmFyLCB3 aGljaCBqdXN0IGxvc2VzIHRoZSBwcm9vZi4NCisgKi8NCitzdGF0aWMgTm9kZSAqDQorc3RyaXBf cmVsYWJlbChOb2RlICpub2RlKQ0KK3sNCisJd2hpbGUgKG5vZGUgJiYgSXNBKG5vZGUsIFJlbGFi ZWxUeXBlKSkNCisJCW5vZGUgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIG5vZGUpLT5hcmc7 DQorCXJldHVybiBub2RlOw0KK30NCisNCitzdGF0aWMgYm9vbA0KK2lzX3RhcmdldF92YXIoTm9k ZSAqbm9kZSwgU3ViYXR0cldhbGsgKndhbGspDQorew0KKwlub2RlID0gc3RyaXBfcmVsYWJlbChu b2RlKTsNCisJcmV0dXJuIG5vZGUgJiYgSXNBKG5vZGUsIFZhcikgJiYNCisJCSgoVmFyICopIG5v ZGUpLT52YXJubyA9PSB3YWxrLT52YXJubyAmJg0KKwkJKChWYXIgKikgbm9kZSktPnZhcmF0dG5v ID09IHdhbGstPmF0dG51bSAmJg0KKwkJKChWYXIgKikgbm9kZSktPnZhcmxldmVsc3VwID09IDA7 DQorfQ0KKw0KK3N0YXRpYyBMaXN0ICoNCittYWtlX3BhdGhfZWxlbShTdWJhdHRyUGF0aEVsZW1L aW5kIGtpbmQsIGNvbnN0IGNoYXIgKmtleSwgaW50IHBvc2l0aW9uKQ0KK3sNCisJU3ViYXR0clBh dGhFbGVtICplID0gcGFsbG9jMF9vYmplY3QoU3ViYXR0clBhdGhFbGVtKTsNCisNCisJZS0+a2lu ZCA9IGtpbmQ7DQorCWUtPmtleSA9IGtleSA/IHBzdHJkdXAoa2V5KSA6IE5VTEw7DQorCWUtPnBv c2l0aW9uID0gcG9zaXRpb247DQorCXJldHVybiBsaXN0X21ha2UxKGUpOw0KK30NCisNCisvKiBU aGUgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBvZiBhIEZ1bmNFeHByIG9yIE9wRXhwciwgZWxzZSBJ bnZhbGlkT2lkLiAqLw0KK3N0YXRpYyBPaWQNCitjYWxsX29mKE5vZGUgKm5vZGUsIExpc3QgKiph cmdzKQ0KK3sNCisJaWYgKElzQShub2RlLCBGdW5jRXhwcikpDQorCXsNCisJCSphcmdzID0gKChG dW5jRXhwciAqKSBub2RlKS0+YXJnczsNCisJCXJldHVybiAoKEZ1bmNFeHByICopIG5vZGUpLT5m dW5jaWQ7DQorCX0NCisJaWYgKElzQShub2RlLCBPcEV4cHIpKQ0KKwl7DQorCQlPcEV4cHIJICAg Km9wID0gKE9wRXhwciAqKSBub2RlOw0KKw0KKwkJKmFyZ3MgPSBvcC0+YXJnczsNCisJCXJldHVy biBPaWRJc1ZhbGlkKG9wLT5vcGZ1bmNpZCkgPyBvcC0+b3BmdW5jaWQgOiBnZXRfb3Bjb2RlKG9w LT5vcG5vKTsNCisJfQ0KKwlyZXR1cm4gSW52YWxpZE9pZDsNCit9DQorDQorLyoNCisgKiBBc2sg dGhlIHN1cHBvcnQgZnVuY3Rpb24gb2YgZnVuY2lkIGFib3V0IGEgY2FsbCB3aXRoIHRoZXNlIGFy Z3VtZW50cy4NCisgKiBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vbmUgb3IgaXQgZGVjbGlu ZXMuDQorICovDQorc3RhdGljIGJvb2wNCithc2tfc3VwcG9ydChPaWQgZnVuY2lkLCBMaXN0ICph cmdzLCBTdWJhdHRyUmVxdWVzdEtpbmQga2luZCwNCisJCQlTdXBwb3J0UmVxdWVzdFN1YmF0dHIg KnJlcSkNCit7DQorCVJlZ1Byb2NlZHVyZSBwcm9zdXBwb3J0ID0gZ2V0X2Z1bmNfc3VwcG9ydChm dW5jaWQpOw0KKw0KKwlpZiAoIU9pZElzVmFsaWQocHJvc3VwcG9ydCkpDQorCQlyZXR1cm4gZmFs c2U7DQorDQorCW1lbXNldChyZXEsIDAsIHNpemVvZigqcmVxKSk7DQorCXJlcS0+dHlwZSA9IFRf U3VwcG9ydFJlcXVlc3RTdWJhdHRyOw0KKwlyZXEtPmtpbmQgPSBraW5kOw0KKwlyZXEtPmZ1bmNp ZCA9IGZ1bmNpZDsNCisJcmVxLT5hcmdzID0gYXJnczsNCisJcmVxLT5zb3VyY2UgPSAtMTsNCisN CisJaWYgKERhdHVtR2V0UG9pbnRlcihPaWRGdW5jdGlvbkNhbGwxKHByb3N1cHBvcnQsIFBvaW50 ZXJHZXREYXR1bShyZXEpKSkgIT0NCisJCShQb2ludGVyKSByZXEpDQorCQlyZXR1cm4gZmFsc2U7 DQorCWlmIChyZXEtPnNvdXJjZSA8IDAgfHwgcmVxLT5zb3VyY2UgPj0gbGlzdF9sZW5ndGgoYXJn cykpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCS8qIGFuIGFuc3dlciB3ZSBjYW4ndCByZWFkIGNv dW50cyBhcyBubyBhbnN3ZXIgKi8NCisJZm9yZWFjaF9wdHIoTGlzdCwgcGF0aCwgcmVxLT5wYXRo cykNCisJew0KKwkJZm9yZWFjaF9wdHIoU3ViYXR0clBhdGhFbGVtLCBlLCBwYXRoKQ0KKwkJew0K KwkJCWlmIChlID09IE5VTEwgfHwNCisJCQkJKGUtPmtpbmQgIT0gU1VCQVRUUl9FTEVNX0tFWSAm Jg0KKwkJCQkgZS0+a2luZCAhPSBTVUJBVFRSX0VMRU1fUE9TSVRJT04gJiYNCisJCQkJIGUtPmtp bmQgIT0gU1VCQVRUUl9FTEVNX0FOWV9QT1NJVElPTikgfHwNCisJCQkJKGUtPmtpbmQgPT0gU1VC QVRUUl9FTEVNX0tFWSAmJiBlLT5rZXkgPT0gTlVMTCkpDQorCQkJCXJldHVybiBmYWxzZTsNCisJ CX0NCisJfQ0KKwlyZXR1cm4gdHJ1ZTsNCit9DQorDQorLyoNCisgKiBUaGUgcGF0aCBuYW1lZCBi eSB0aGUgc3Vic2NyaXB0cyBvZiBhbiBhcnJheSBvciBqc29uYiBzdWJzY3JpcHRpbmcNCisgKiBl eHByZXNzaW9uLCBpZiB0aGV5IGFyZSBhbGwgY29uc3RhbnRzLg0KKyAqDQorICoganNvbmIgc3Vi c2NyaXB0aW5nIHR1cm5zIGFuIGludGVnZXIgc3Vic2NyaXB0IGludG8gaXRzIHRleHQgZm9ybSBh bmQgdGhlbg0KKyAqIHJlYWRzIGVhY2ggc3Vic2NyaXB0IGFzIGFuIG9iamVjdCBrZXkgb3IsIGlu IGFuIGFycmF5LCBhcyBhIHBvc2l0aW9uLCBzbw0KKyAqIGpzb25iIHN1YnNjcmlwdHMgYXJlIGFs d2F5cyBrZXlzIGhlcmU7IHNlZSBwYXRoc19tYXlfb3ZlcmxhcCgpIGZvciBob3cgYQ0KKyAqIGtl eSB0aGF0IHJlYWRzIGFzIGFuIGludGVnZXIgaXMgdHJlYXRlZC4NCisgKi8NCitzdGF0aWMgYm9v bA0KK3N1YnNjcmlwdF9wYXRoKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLCBMaXN0ICoqcGF0aCkN Cit7DQorCUxpc3RDZWxsICAgKmxjOw0KKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7DQorCVJlZ1By b2NlZHVyZSBoYW5kbGVyID0gZ2V0X3R5cHN1YnNjcmlwdChzYnNyZWYtPnJlZmNvbnRhaW5lcnR5 cGUsIE5VTEwpOw0KKw0KKwlpZiAoaGFuZGxlciAhPSBGX0FSUkFZX1NVQlNDUklQVF9IQU5ETEVS ICYmDQorCQloYW5kbGVyICE9IEZfSlNPTkJfU1VCU0NSSVBUX0hBTkRMRVIpDQorCQlyZXR1cm4g ZmFsc2U7DQorCWlmIChzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciAhPSBOSUwpDQorCQlyZXR1cm4g ZmFsc2U7CQkJLyogYSBzbGljZSAqLw0KKw0KKwlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZnVwcGVy aW5kZXhwcikNCisJew0KKwkJTm9kZQkgICAqc3ViID0gc3RyaXBfcmVsYWJlbChsZmlyc3QobGMp KTsNCisJCUNvbnN0CSAgICpjID0gKENvbnN0ICopIHN1YjsNCisNCisJCWlmICghc3ViIHx8ICFJ c0Eoc3ViLCBDb25zdCkgfHwgYy0+Y29uc3Rpc251bGwpDQorCQkJcmV0dXJuIGZhbHNlOw0KKwkJ aWYgKGhhbmRsZXIgPT0gRl9BUlJBWV9TVUJTQ1JJUFRfSEFORExFUiAmJiBjLT5jb25zdHR5cGUg PT0gSU5UNE9JRCkNCisJCQlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsDQorCQkJCQkJCQkg bWFrZV9wYXRoX2VsZW0oU1VCQVRUUl9FTEVNX1BPU0lUSU9OLCBOVUxMLA0KKwkJCQkJCQkJCQkJ CURhdHVtR2V0SW50MzIoYy0+Y29uc3R2YWx1ZSkpKTsNCisJCWVsc2UgaWYgKGhhbmRsZXIgPT0g Rl9KU09OQl9TVUJTQ1JJUFRfSEFORExFUiAmJg0KKwkJCQkgYy0+Y29uc3R0eXBlID09IElOVDRP SUQpDQorCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LA0KKwkJCQkJCQkJIG1ha2VfcGF0 aF9lbGVtKFNVQkFUVFJfRUxFTV9LRVksDQorCQkJCQkJCQkJCQkJcHNwcmludGYoIiVkIiwgRGF0 dW1HZXRJbnQzMihjLT5jb25zdHZhbHVlKSksDQorCQkJCQkJCQkJCQkJMCkpOw0KKwkJZWxzZSBp ZiAoaGFuZGxlciA9PSBGX0pTT05CX1NVQlNDUklQVF9IQU5ETEVSICYmDQorCQkJCSBjLT5jb25z dHR5cGUgPT0gVEVYVE9JRCkNCisJCQlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsDQorCQkJ CQkJCQkgbWFrZV9wYXRoX2VsZW0oU1VCQVRUUl9FTEVNX0tFWSwNCisJCQkJCQkJCQkJCQlUZXh0 RGF0dW1HZXRDU3RyaW5nKGMtPmNvbnN0dmFsdWUpLA0KKwkJCQkJCQkJCQkJCTApKTsNCisJCWVs c2UNCisJCQlyZXR1cm4gZmFsc2U7DQorCX0NCisJKnBhdGggPSByZXN1bHQ7DQorCXJldHVybiB0 cnVlOw0KK30NCisNCisvKg0KKyAqIElmIG5vZGUgaXMgYSBjaGFpbiBvZiBwYXJ0LXJlYWRpbmcg YWNjZXNzb3JzIGVuZGluZyBhdCB0aGUgdGFyZ2V0IGNvbHVtbiwNCisgKiByZXR1cm4gdGhlIHBh dGhzIGl0IHJlYWRzIGluICpwYXRocy4gICpzdWJ2YWx1ZSBzYXlzIHdoZXRoZXIgdGhlIHJlc3Vs dCBvZg0KKyAqIHRoZSBjaGFpbiBpcyBpdHNlbGYgdGhlIHBhcnQgYXQgdGhlIChzaW5nbGUpIHBh dGgsIHNvIHRoYXQgYW4gZW5jbG9zaW5nDQorICogYWNjZXNzb3IgY2FuIGV4dGVuZCB0aGUgcGF0 aC4NCisgKi8NCitzdGF0aWMgYm9vbA0KK2FjY2Vzc29yX3BhdGgoTm9kZSAqbm9kZSwgU3ViYXR0 cldhbGsgKndhbGssIExpc3QgKipwYXRocywgYm9vbCAqc3VidmFsdWUpDQorew0KKwlMaXN0CSAg ICphcmdzOw0KKwlPaWQJCQlmdW5jaWQ7DQorDQorCWNoZWNrX3N0YWNrX2RlcHRoKCk7DQorDQor CW5vZGUgPSBzdHJpcF9yZWxhYmVsKG5vZGUpOw0KKwlpZiAoaXNfdGFyZ2V0X3Zhcihub2RlLCB3 YWxrKSkNCisJew0KKwkJKnBhdGhzID0gbGlzdF9tYWtlMShOSUwpOw0KKwkJKnN1YnZhbHVlID0g dHJ1ZTsNCisJCXJldHVybiB0cnVlOw0KKwl9DQorDQorCWlmIChJc0Eobm9kZSwgU3Vic2NyaXB0 aW5nUmVmKSAmJg0KKwkJKChTdWJzY3JpcHRpbmdSZWYgKikgbm9kZSktPnJlZmFzc2duZXhwciA9 PSBOVUxMKQ0KKwl7DQorCQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChTdWJzY3JpcHRpbmdS ZWYgKikgbm9kZTsNCisJCUxpc3QJICAgKmlubmVyOw0KKwkJTGlzdAkgICAqbWluZTsNCisJCWJv b2wJCWlubmVyc3ViOw0KKw0KKwkJaWYgKCFhY2Nlc3Nvcl9wYXRoKChOb2RlICopIHNic3JlZi0+ cmVmZXhwciwgd2FsaywgJmlubmVyLCAmaW5uZXJzdWIpIHx8DQorCQkJIWlubmVyc3ViIHx8ICFz dWJzY3JpcHRfcGF0aChzYnNyZWYsICZtaW5lKSkNCisJCQlyZXR1cm4gZmFsc2U7DQorCQkqcGF0 aHMgPSBsaXN0X21ha2UxKGxpc3RfY29uY2F0KGxpbml0aWFsKGlubmVyKSwgbWluZSkpOw0KKwkJ KnN1YnZhbHVlID0gdHJ1ZTsJCS8qIGZldGNoaW5nIGFuIGVsZW1lbnQgeWllbGRzIHRoZSBlbGVt ZW50ICovDQorCQlyZXR1cm4gdHJ1ZTsNCisJfQ0KKw0KKwlpZiAoSXNBKG5vZGUsIEZpZWxkU2Vs ZWN0KSkNCisJew0KKwkJRmllbGRTZWxlY3QgKmZzZWxlY3QgPSAoRmllbGRTZWxlY3QgKikgbm9k ZTsNCisJCUxpc3QJICAgKmlubmVyOw0KKwkJYm9vbAkJaW5uZXJzdWI7DQorDQorCQlpZiAoIWFj Y2Vzc29yX3BhdGgoKE5vZGUgKikgZnNlbGVjdC0+YXJnLCB3YWxrLCAmaW5uZXIsICZpbm5lcnN1 YikgfHwNCisJCQkhaW5uZXJzdWIpDQorCQkJcmV0dXJuIGZhbHNlOw0KKwkJKnBhdGhzID0gbGlz dF9tYWtlMShsaXN0X2NvbmNhdChsaW5pdGlhbChpbm5lciksDQorCQkJCQkJCQkJCW1ha2VfcGF0 aF9lbGVtKFNVQkFUVFJfRUxFTV9QT1NJVElPTiwNCisJCQkJCQkJCQkJCQkJICAgTlVMTCwNCisJ CQkJCQkJCQkJCQkJICAgZnNlbGVjdC0+ZmllbGRudW0pKSk7DQorCQkqc3VidmFsdWUgPSB0cnVl Ow0KKwkJcmV0dXJuIHRydWU7DQorCX0NCisNCisJZnVuY2lkID0gY2FsbF9vZihub2RlLCAmYXJn cyk7DQorCWlmIChPaWRJc1ZhbGlkKGZ1bmNpZCkpDQorCXsNCisJCVN1cHBvcnRSZXF1ZXN0U3Vi YXR0ciByZXE7DQorCQlMaXN0CSAgICppbm5lcjsNCisJCWJvb2wJCWlubmVyc3ViOw0KKwkJTGlz dENlbGwgICAqbGM7DQorDQorCQkvKg0KKwkJICogQSBjYWxsIHRoYXQgcmVhZHMgc2V2ZXJhbCBw YXRocyBjYW5ub3QgY2xhaW0gdG8gcmV0dXJuIHRoZSBwYXJ0IGF0DQorCQkgKiBhIHBhdGgsIHNv IG5vdGhpbmcgY2FuIGV4dGVuZCB0aGVtLiAgQW4gZXh0ZW5kZWQgcGF0aCBpcyBvbmx5DQorCQkg KiB1bmRlcnN0b29kIGlmIHRoZSBpbm5lciBjaGFpbiBuYW1lcyBvbmUgcGFydC4NCisJCSAqLw0K KwkJaWYgKCFhc2tfc3VwcG9ydChmdW5jaWQsIGFyZ3MsIFNVQkFUVFJfUkVBRCwgJnJlcSkgfHwN CisJCQlyZXEucGF0aHMgPT0gTklMIHx8DQorCQkJKHJlcS5zdWJ2YWx1ZSAmJiBsaXN0X2xlbmd0 aChyZXEucGF0aHMpICE9IDEpIHx8DQorCQkJIWFjY2Vzc29yX3BhdGgobGlzdF9udGgoYXJncywg cmVxLnNvdXJjZSksIHdhbGssICZpbm5lciwgJmlubmVyc3ViKSB8fA0KKwkJCSFpbm5lcnN1YikN CisJCQlyZXR1cm4gZmFsc2U7DQorDQorCQkvKiBUaGUgb3RoZXIgYXJndW1lbnRzIG11c3Qgbm90 IHJlYWQgdGhlIGNvbHVtbiBhdCBhbGwuICovDQorCQlmb3IgKGludCBpID0gMDsgaSA8IGxpc3Rf bGVuZ3RoKGFyZ3MpOyBpKyspDQorCQl7DQorCQkJU3ViYXR0cldhbGsgb3RoZXIgPSB7d2Fsay0+ dmFybm8sIHdhbGstPmF0dG51bSwgdHJ1ZSwgTklMfTsNCisNCisJCQlpZiAoaSA9PSByZXEuc291 cmNlKQ0KKwkJCQljb250aW51ZTsNCisJCQlyZWFkX3dhbGtlcihsaXN0X250aChhcmdzLCBpKSwg Jm90aGVyKTsNCisJCQlpZiAob3RoZXIucGF0aHMgIT0gTklMIHx8ICFvdGhlci5rbm93bikNCisJ CQkJcmV0dXJuIGZhbHNlOw0KKwkJfQ0KKw0KKwkJKnBhdGhzID0gTklMOw0KKwkJZm9yZWFjaChs YywgcmVxLnBhdGhzKQ0KKwkJew0KKwkJCUxpc3QJICAgKnBhdGggPSBsaXN0X2NvbmNhdF9jb3B5 KGxpbml0aWFsKGlubmVyKSwgbGZpcnN0KGxjKSk7DQorDQorCQkJKnBhdGhzID0gbGFwcGVuZCgq cGF0aHMsIHBhdGgpOw0KKwkJfQ0KKwkJKnN1YnZhbHVlID0gcmVxLnN1YnZhbHVlOw0KKwkJcmV0 dXJuIHRydWU7DQorCX0NCisNCisJcmV0dXJuIGZhbHNlOw0KK30NCisNCisvKg0KKyAqIENvbGxl Y3QsIGludG8gd2Fsay0+cGF0aHMsIGV2ZXJ5IHBhcnQgb2YgdGhlIHRhcmdldCBjb2x1bW4gdGhh dCAibm9kZSINCisgKiByZWFkcy4gIEEgcmVmZXJlbmNlIHRvIHRoZSBjb2x1bW4gdGhhdCBpcyBu b3QgdGhlIHN0YXJ0IG9mIGFuIGFjY2Vzc29yDQorICogY2hhaW4gd2UgdW5kZXJzdGFuZCByZWFk cyB0aGUgd2hvbGUgdmFsdWUuDQorICovDQorc3RhdGljIGJvb2wNCityZWFkX3dhbGtlcihOb2Rl ICpub2RlLCBTdWJhdHRyV2FsayAqd2FsaykNCit7DQorCUxpc3QJICAgKnBhdGhzOw0KKwlib29s CQlzdWJ2YWx1ZTsNCisNCisJaWYgKG5vZGUgPT0gTlVMTCkNCisJCXJldHVybiBmYWxzZTsNCisN CisJaWYgKGFjY2Vzc29yX3BhdGgobm9kZSwgd2FsaywgJnBhdGhzLCAmc3VidmFsdWUpKQ0KKwl7 DQorCQl3YWxrLT5wYXRocyA9IGxpc3RfY29uY2F0KHdhbGstPnBhdGhzLCBwYXRocyk7DQorCQly ZXR1cm4gZmFsc2U7DQorCX0NCisNCisJaWYgKElzQShub2RlLCBWYXIpKQ0KKwl7DQorCQlWYXIJ CSAgICp2YXIgPSAoVmFyICopIG5vZGU7DQorDQorCQkvKiBhIHdob2xlLXJvdyByZWZlcmVuY2Ug cmVhZHMgZXZlcnkgY29sdW1uICovDQorCQlpZiAodmFyLT52YXJubyA9PSB3YWxrLT52YXJubyAm JiB2YXItPnZhcmF0dG5vID09IEludmFsaWRBdHRyTnVtYmVyICYmDQorCQkJdmFyLT52YXJsZXZl bHN1cCA9PSAwKQ0KKwkJCXdhbGstPmtub3duID0gZmFsc2U7DQorCQlyZXR1cm4gZmFsc2U7DQor CX0NCisNCisJaWYgKElzQShub2RlLCBTdWJMaW5rKSB8fCBJc0Eobm9kZSwgU3ViUGxhbikpDQor CXsNCisJCXdhbGstPmtub3duID0gZmFsc2U7CS8qIG5vdCBhdHRlbXB0aW5nIHRvIHNlZSBpbnNp ZGUgKi8NCisJCXJldHVybiB0cnVlOw0KKwl9DQorDQorCXJldHVybiBleHByZXNzaW9uX3RyZWVf d2Fsa2VyKG5vZGUsIHJlYWRfd2Fsa2VyLCB3YWxrKTsNCit9DQorDQorLyoNCisgKiBSZWNvcmQg dGhlIHBhcnRzIG9mIHRoZSB0YXJnZXQgY29sdW1uIHRoYXQgdGhlIFNFVCBleHByZXNzaW9uICJl eHByIiBtYXkNCisgKiBjaGFuZ2UuICBJdCBtdXN0IGJlIHRoZSBjb2x1bW4gaXRzZWxmLCBwYXNz ZWQgdGhyb3VnaCBtb2RpZmljYXRpb25zIHdlDQorICogdW5kZXJzdGFuZDsgYW55dGhpbmcgZWxz ZSBpcyB1bmtub3duLg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorY29sbGVjdF9tb2RpZmllcyhOb2Rl ICpleHByLCBTdWJhdHRyV2FsayAqd2FsaykNCit7DQorCU9pZAkJCWZ1bmNpZDsNCisJTGlzdAkg ICAqYXJnczsNCisNCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsNCisJZXhwciA9IHN0cmlwX3JlbGFi ZWwoZXhwcik7DQorCWlmICghd2Fsay0+a25vd24pDQorCQlyZXR1cm47DQorCWlmIChleHByID09 IE5VTEwpDQorCXsNCisJCXdhbGstPmtub3duID0gZmFsc2U7DQorCQlyZXR1cm47DQorCX0NCisN CisJaWYgKGlzX3RhcmdldF92YXIoZXhwciwgd2FsaykpDQorCQlyZXR1cm47CQkJCQkvKiB0aGlz IHBhcnQgaXMgdW5jaGFuZ2VkICovDQorDQorCS8qIGEgZG9tYWluIGNoZWNrIHBhc3NlcyB0aGUg dmFsdWUgdGhyb3VnaCBvciBmYWlscyAqLw0KKwlpZiAoSXNBKGV4cHIsIENvZXJjZVRvRG9tYWlu KSkNCisJew0KKwkJY29sbGVjdF9tb2RpZmllcygoTm9kZSAqKSAoKENvZXJjZVRvRG9tYWluICop IGV4cHIpLT5hcmcsIHdhbGspOw0KKwkJcmV0dXJuOw0KKwl9DQorDQorCWlmIChJc0EoZXhwciwg U3Vic2NyaXB0aW5nUmVmKSAmJg0KKwkJKChTdWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZmFz c2duZXhwciAhPSBOVUxMKQ0KKwl7DQorCQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChTdWJz Y3JpcHRpbmdSZWYgKikgZXhwcjsNCisJCUxpc3QJICAgKnBhdGg7DQorDQorCQkvKg0KKwkJICog Y29sW3N1YnNjcmlwdHNdIDo9IHZhbHVlLiAgQXNzaWduaW5nIGJleW9uZCB0aGUgYm91bmRzIG9m IGFuIGFycmF5DQorCQkgKiBmaWxscyB0aGUgZ2FwIHdpdGggbnVsbHMsIHdoaWNoIHJlYWQgdGhl IHNhbWUgYXMgdGhlIG1pc3NpbmcNCisJCSAqIGVsZW1lbnRzIGRpZDsganNvbmIgYXNzaWdubWVu dCBtYXkgY3JlYXRlIGNvbnRhaW5lcnMgb24gdGhlIHdheSB0bw0KKwkJICogdGhlIHBhdGgsIGJ1 dCB0aG9zZSBhcmUgYXQgYSBwcmVmaXggb2YgaXQsIHdoaWNoIG92ZXJsYXBzLg0KKwkJICovDQor CQlpZiAoIXN1YnNjcmlwdF9wYXRoKHNic3JlZiwgJnBhdGgpKQ0KKwkJew0KKwkJCXdhbGstPmtu b3duID0gZmFsc2U7DQorCQkJcmV0dXJuOw0KKwkJfQ0KKwkJd2Fsay0+cGF0aHMgPSBsYXBwZW5k KHdhbGstPnBhdGhzLCBwYXRoKTsNCisJCWNvbGxlY3RfbW9kaWZpZXMoKE5vZGUgKikgc2JzcmVm LT5yZWZleHByLCB3YWxrKTsNCisJCXJldHVybjsNCisJfQ0KKw0KKwlpZiAoSXNBKGV4cHIsIEZp ZWxkU3RvcmUpKQ0KKwl7DQorCQlGaWVsZFN0b3JlICpmc3RvcmUgPSAoRmllbGRTdG9yZSAqKSBl eHByOw0KKwkJTGlzdENlbGwgICAqbGM7DQorDQorCQkvKiBjb2wuZmllbGQgOj0gdmFsdWUsIGZv ciBvbmUgb3IgbW9yZSBmaWVsZHMgKi8NCisJCWZvcmVhY2gobGMsIGZzdG9yZS0+ZmllbGRudW1z KQ0KKwkJCXdhbGstPnBhdGhzID0gbGFwcGVuZCh3YWxrLT5wYXRocywNCisJCQkJCQkJCSAgbWFr ZV9wYXRoX2VsZW0oU1VCQVRUUl9FTEVNX1BPU0lUSU9OLCBOVUxMLA0KKwkJCQkJCQkJCQkJCSBs Zmlyc3RfaW50KGxjKSkpOw0KKwkJY29sbGVjdF9tb2RpZmllcygoTm9kZSAqKSBmc3RvcmUtPmFy Zywgd2Fsayk7DQorCQlyZXR1cm47DQorCX0NCisNCisJZnVuY2lkID0gY2FsbF9vZihleHByLCAm YXJncyk7DQorCWlmIChPaWRJc1ZhbGlkKGZ1bmNpZCkpDQorCXsNCisJCVN1cHBvcnRSZXF1ZXN0 U3ViYXR0ciByZXE7DQorDQorCQlpZiAoYXNrX3N1cHBvcnQoZnVuY2lkLCBhcmdzLCBTVUJBVFRS X01PRElGWSwgJnJlcSkpDQorCQl7DQorCQkJd2Fsay0+cGF0aHMgPSBsaXN0X2NvbmNhdCh3YWxr LT5wYXRocywgcmVxLnBhdGhzKTsNCisJCQljb2xsZWN0X21vZGlmaWVzKGxpc3RfbnRoKGFyZ3Ms IHJlcS5zb3VyY2UpLCB3YWxrKTsNCisJCQlyZXR1cm47DQorCQl9DQorCX0NCisNCisJLyogQ09B TEVTQ0UoZihjb2wsIC4uLiksIGNvbCk6IGVhY2ggYnJhbmNoIGlzIHRoZSBjb2x1bW4sIG1vZGlm aWVkICovDQorCWlmIChJc0EoZXhwciwgQ29hbGVzY2VFeHByKSkNCisJew0KKwkJTGlzdENlbGwg ICAqbGM7DQorDQorCQlmb3JlYWNoKGxjLCAoKENvYWxlc2NlRXhwciAqKSBleHByKS0+YXJncykN CisJCQljb2xsZWN0X21vZGlmaWVzKGxmaXJzdChsYyksIHdhbGspOw0KKwkJcmV0dXJuOw0KKwl9 DQorDQorCXdhbGstPmtub3duID0gZmFsc2U7DQorfQ0KKw0KKy8qDQorICogQ291bGQgdGhlIGtl eSBiZSByZWFkIGFzIGFuIGFycmF5IHBvc2l0aW9uPyAganNvbmIgcmVhZHMgYSBwYXRoIGVsZW1l bnQNCisgKiBhcyBhIHBvc2l0aW9uIHdpdGggc3RydG9pbnQoKSwgd2hpY2ggYWxsb3dzIGxlYWRp bmcgd2hpdGUgc3BhY2UgYW5kIGENCisgKiBzaWduLiAgVHJhaWxpbmcgd2hpdGUgc3BhY2UgaXMg YWxsb3dlZCB0b286IGFuc3dlcmluZyB5ZXMgdG9vIG9mdGVuIG9ubHkNCisgKiBtYWtlcyB0d28g cGF0aHMgb3ZlcmxhcCB0aGF0IG5lZWQgbm90LiAgV2hpdGUgc3BhY2UgaXMgd2hhdCBzdHJ0b2wo KQ0KKyAqIHNraXBzLCBpc3NwYWNlKCkgaW4gdGhlIGN1cnJlbnQgbG9jYWxlOyBkaWdpdHMgYXJl IG9ubHkgJzAnIHRvICc5Jw0KKyAqIHRoZXJlLCBzbyB0aGV5IGFyZSB0ZXN0ZWQgYnkgaGFuZC4N CisgKi8NCitzdGF0aWMgYm9vbA0KK2tleV9tYXlfYmVfcG9zaXRpb24oY29uc3QgY2hhciAqa2V5 KQ0KK3sNCisJY29uc3QgY2hhciAqcCA9IGtleTsNCisNCisJd2hpbGUgKGlzc3BhY2UoKHVuc2ln bmVkIGNoYXIpICpwKSkNCisJCXArKzsNCisJaWYgKCpwID09ICctJyB8fCAqcCA9PSAnKycpDQor CQlwKys7DQorCWlmICgqcCA8ICcwJyB8fCAqcCA+ICc5JykNCisJCXJldHVybiBmYWxzZTsNCisJ d2hpbGUgKCpwID49ICcwJyAmJiAqcCA8PSAnOScpDQorCQlwKys7DQorCXdoaWxlIChpc3NwYWNl KCh1bnNpZ25lZCBjaGFyKSAqcCkpDQorCQlwKys7DQorCXJldHVybiAqcCA9PSAnXDAnOw0KK30N CisNCisvKg0KKyAqIENhbiBwYXRocyBhIGFuZCBiIG5hbWUgb3ZlcmxhcHBpbmcgcGFydHM/ICBT ZWUgU3VwcG9ydFJlcXVlc3RTdWJhdHRyLg0KKyAqDQorICogVHdvIGtleXMgdGhhdCBib3RoIHJl YWQgYXMgaW50ZWdlcnMgYXJlIHRha2VuIHRvIG92ZXJsYXAgZXZlbiBpZiB0aGV5DQorICogZGlm ZmVyOiAiMDEiIGFuZCAiMSIgc2VsZWN0IHRoZSBzYW1lIGFycmF5IGVsZW1lbnQsIGFuZCBpbnNl cnRpbmcgaW50byBvcg0KKyAqIGRlbGV0aW5nIGZyb20gYW4gYXJyYXksIG9yIGFwcGVuZGluZyBw YXN0IGl0cyBlbmQsIG1vdmVzIG9yIGNyZWF0ZXMNCisgKiBlbGVtZW50cyBhdCBwb3NpdGlvbnMg b3RoZXIgdGhhbiB0aGUgb25lIG5hbWVkLg0KKyAqLw0KK3N0YXRpYyBib29sDQorcGF0aHNfbWF5 X292ZXJsYXAoTGlzdCAqYSwgTGlzdCAqYikNCit7DQorCUxpc3RDZWxsICAgKmxhLA0KKwkJCSAg ICpsYjsNCisNCisJZm9yYm90aChsYSwgYSwgbGIsIGIpDQorCXsNCisJCVN1YmF0dHJQYXRoRWxl bSAqZWEgPSBsZmlyc3QobGEpOw0KKwkJU3ViYXR0clBhdGhFbGVtICplYiA9IGxmaXJzdChsYik7 DQorDQorCQlpZiAoZWEtPmtpbmQgPT0gU1VCQVRUUl9FTEVNX0tFWSAmJiBlYi0+a2luZCA9PSBT VUJBVFRSX0VMRU1fS0VZKQ0KKwkJew0KKwkJCWlmIChzdHJjbXAoZWEtPmtleSwgZWItPmtleSkg IT0gMCAmJg0KKwkJCQkhKGtleV9tYXlfYmVfcG9zaXRpb24oZWEtPmtleSkgJiYNCisJCQkJICBr ZXlfbWF5X2JlX3Bvc2l0aW9uKGViLT5rZXkpKSkNCisJCQkJcmV0dXJuIGZhbHNlOw0KKwkJfQ0K KwkJZWxzZSBpZiAoZWEtPmtpbmQgPT0gU1VCQVRUUl9FTEVNX0tFWSB8fCBlYi0+a2luZCA9PSBT VUJBVFRSX0VMRU1fS0VZKQ0KKwkJew0KKwkJCS8qIGEga2V5IGFnYWluc3QgYSBwb3NpdGlvbiBv ciBhbnkgcG9zaXRpb24gKi8NCisJCQlTdWJhdHRyUGF0aEVsZW0gKmtleSA9IGVhLT5raW5kID09 IFNVQkFUVFJfRUxFTV9LRVkgPyBlYSA6IGViOw0KKw0KKwkJCWlmICgha2V5X21heV9iZV9wb3Np dGlvbihrZXktPmtleSkpDQorCQkJCXJldHVybiBmYWxzZTsNCisJCX0NCisJCWVsc2UgaWYgKGVh LT5raW5kID09IFNVQkFUVFJfRUxFTV9QT1NJVElPTiAmJg0KKwkJCQkgZWItPmtpbmQgPT0gU1VC QVRUUl9FTEVNX1BPU0lUSU9OKQ0KKwkJew0KKwkJCWlmIChlYS0+cG9zaXRpb24gIT0gZWItPnBv c2l0aW9uKQ0KKwkJCQlyZXR1cm4gZmFsc2U7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJLyog YW55IHBvc2l0aW9uIGFnYWluc3QgYSBwb3NpdGlvbiBvciBhbnkgcG9zaXRpb246IG92ZXJsYXAg Ki8NCisJCQlBc3NlcnQoZWEtPmtpbmQgPT0gU1VCQVRUUl9FTEVNX0FOWV9QT1NJVElPTiB8fA0K KwkJCQkgICBlYi0+a2luZCA9PSBTVUJBVFRSX0VMRU1fQU5ZX1BPU0lUSU9OKTsNCisJCX0NCisJ fQ0KKwlyZXR1cm4gdHJ1ZTsNCit9DQorDQorLyoNCisgKiBSZXBsYWNlIGV4dGVybmFsIFBhcmFt cyB3aG9zZSB2YWx1ZXMgYXJlIGZpeGVkIGZvciB0aGUgZXhlY3V0aW9uIGJ5DQorICogQ29uc3Rz LCBhcyBldmFsX2NvbnN0X2V4cHJlc3Npb25zKCkgZG9lcywgc28gdGhhdCBzdXBwb3J0IGZ1bmN0 aW9ucyBzZWUNCisgKiB0aGUgdmFsdWVzIG9mIHRoZSBhcmd1bWVudHMgb2YgYSBnZW5lcmljIHBs YW4uICBOb3RoaW5nIGlzIGV2YWx1YXRlZC4NCisgKi8NCitzdGF0aWMgTm9kZSAqDQorc3Vic3Rp dHV0ZV9wYXJhbXMoTm9kZSAqbm9kZSwgUGFyYW1MaXN0SW5mbyBwYXJhbXMpDQorew0KKwlpZiAo bm9kZSA9PSBOVUxMKQ0KKwkJcmV0dXJuIE5VTEw7DQorCWlmIChJc0Eobm9kZSwgUGFyYW0pICYm ICgoUGFyYW0gKikgbm9kZSktPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4pDQorCXsNCisJCVBh cmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOw0KKwkJUGFyYW1FeHRlcm5EYXRhIHBybWRh dGE7DQorCQlQYXJhbUV4dGVybkRhdGEgKnBybTsNCisNCisJCWlmIChwYXJhbS0+cGFyYW1pZCA8 PSAwIHx8IHBhcmFtLT5wYXJhbWlkID4gcGFyYW1zLT5udW1QYXJhbXMpDQorCQkJcmV0dXJuIG5v ZGU7DQorCQlpZiAocGFyYW1zLT5wYXJhbUZldGNoICE9IE5VTEwpDQorCQkJcHJtID0gcGFyYW1z LT5wYXJhbUZldGNoKHBhcmFtcywgcGFyYW0tPnBhcmFtaWQsIHRydWUsICZwcm1kYXRhKTsNCisJ CWVsc2UNCisJCQlwcm0gPSAmcGFyYW1zLT5wYXJhbXNbcGFyYW0tPnBhcmFtaWQgLSAxXTsNCisN CisJCWlmIChwcm0gIT0gTlVMTCAmJiBwcm0tPnB0eXBlID09IHBhcmFtLT5wYXJhbXR5cGUgJiYN CisJCQlPaWRJc1ZhbGlkKHBybS0+cHR5cGUpICYmDQorCQkJKHBybS0+cGZsYWdzICYgUEFSQU1f RkxBR19DT05TVCkpDQorCQl7DQorCQkJaW50MTYJCXR5cGxlbjsNCisJCQlib29sCQl0eXBieXZh bDsNCisNCisJCQlnZXRfdHlwbGVuYnl2YWwocGFyYW0tPnBhcmFtdHlwZSwgJnR5cGxlbiwgJnR5 cGJ5dmFsKTsNCisJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUNvbnN0KHBhcmFtLT5wYXJhbXR5cGUs IHBhcmFtLT5wYXJhbXR5cG1vZCwNCisJCQkJCQkJCQkgIHBhcmFtLT5wYXJhbWNvbGxpZCwgKGlu dCkgdHlwbGVuLA0KKwkJCQkJCQkJCSAgcHJtLT5pc251bGwgPyAoRGF0dW0pIDAgOg0KKwkJCQkJ CQkJCSAgZGF0dW1Db3B5KHBybS0+dmFsdWUsIHR5cGJ5dmFsLCB0eXBsZW4pLA0KKwkJCQkJCQkJ CSAgcHJtLT5pc251bGwsIHR5cGJ5dmFsKTsNCisJCX0NCisJCXJldHVybiBub2RlOw0KKwl9DQor CXJldHVybiBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihub2RlLCBzdWJzdGl0dXRlX3BhcmFtcywg cGFyYW1zKTsNCit9DQorDQorLyoNCisgKiBFeGVjU3ViYXR0clByb3ZlVW50b3VjaGVkDQorICoN CisgKiBzZXRleHByIGNvbXB1dGVzIGNvbHVtbiBhdHRudW0gb2YgdGhlIHJlc3VsdCByZWxhdGlv biBpbiBhbiBVUERBVEUsIHdpdGgNCisgKiBWYXJzIG9mIHZhcm5vIHJlZmVycmluZyB0byB0aGUg cm93IGJlaW5nIHVwZGF0ZWQsIGFuZCBQYXJhbXMgd2hvc2UgdmFsdWVzDQorICogYXJlIGluIHBh cmFtcy4gIFJldHVybiB0aGUgaW5kZXhlcywNCisgKiBhcyBwb3NpdGlvbnMgaW4gcmVzdWx0UmVs SW5mbydzIGluZGV4IGFycmF5cywgdGhhdCBwcm92YWJseSByZWFkIG5vdGhpbmcNCisgKiBvZiB0 aGUgY29sdW1uIHRoYXQgc2V0ZXhwciBtYXkgY2hhbmdlLCBwcm92aWRlZCB0aGUgY29sdW1uIGlz IG5vdCBudWxsIGluDQorICogdGhlIG9sZCBvciB0aGUgbmV3IHJvdy4gIEFuIGluZGV4IHRoYXQg dXNlcyB0aGUgY29sdW1uIGluIGFueSB3YXkgd2UgZG8NCisgKiBub3QgdW5kZXJzdGFuZCwgb3Ig YXMgYSBwbGFpbiBrZXkgb3IgSU5DTFVERSBjb2x1bW4sIGlzIG5ldmVyIGluY2x1ZGVkLg0KKyAq Lw0KK0JpdG1hcHNldCAqDQorRXhlY1N1YmF0dHJQcm92ZVVudG91Y2hlZChSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLCBOb2RlICpzZXRleHByLA0KKwkJCQkJCSAgaW50IHZhcm5vLCBBdHRy TnVtYmVyIGF0dG51bSwgUGFyYW1MaXN0SW5mbyBwYXJhbXMpDQorew0KKwlTdWJhdHRyV2FsayBt b2RzID0ge3Zhcm5vLCBhdHRudW0sIHRydWUsIE5JTH07DQorCUJpdG1hcHNldCAgKnJlc3VsdCA9 IE5VTEw7DQorDQorCWlmIChwYXJhbXMgIT0gTlVMTCAmJiBwYXJhbXMtPm51bVBhcmFtcyA+IDAp DQorCQlzZXRleHByID0gc3Vic3RpdHV0ZV9wYXJhbXMoc2V0ZXhwciwgcGFyYW1zKTsNCisJY29s bGVjdF9tb2RpZmllcyhzZXRleHByLCAmbW9kcyk7DQorCWlmICghbW9kcy5rbm93biB8fCBtb2Rz LnBhdGhzID09IE5JTCkNCisJCXJldHVybiBOVUxMOw0KKw0KKwlmb3IgKGludCBpID0gMDsgaSA8 IHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXM7IGkrKykNCisJew0KKwkJSW5kZXhJbmZvICAq aWkgPSByZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mb1tpXTsNCisJCVN1YmF0dHJX YWxrIHJlYWRzID0gezEsIGF0dG51bSwgdHJ1ZSwgTklMfTsNCisJCWJvb2wJCWRpc2pvaW50ID0g dHJ1ZTsNCisJCUxpc3RDZWxsICAgKmxyOw0KKw0KKwkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX0lu ZGV4UmVsYXRpb25EZXNjc1tpXSA9PSBOVUxMKQ0KKwkJCWNvbnRpbnVlOw0KKwkJZm9yIChpbnQg ayA9IDA7IGsgPCBpaS0+aWlfTnVtSW5kZXhBdHRyczsgaysrKQ0KKwkJew0KKwkJCWlmIChpaS0+ aWlfSW5kZXhBdHRyTnVtYmVyc1trXSA9PSBhdHRudW0pDQorCQkJCXJlYWRzLmtub3duID0gZmFs c2U7DQorCQl9DQorCQlpZiAoIXJlYWRzLmtub3duKQ0KKwkJCWNvbnRpbnVlOw0KKw0KKwkJLyog aW5kZXggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgcmVmZXIgdG8gdGhlIHRhYmxlIGFzIHZh cm5vIDEgKi8NCisJCXJlYWRfd2Fsa2VyKChOb2RlICopIGlpLT5paV9FeHByZXNzaW9ucywgJnJl YWRzKTsNCisJCXJlYWRfd2Fsa2VyKChOb2RlICopIGlpLT5paV9QcmVkaWNhdGUsICZyZWFkcyk7 DQorCQlpZiAoIXJlYWRzLmtub3duIHx8IHJlYWRzLnBhdGhzID09IE5JTCkNCisJCQljb250aW51 ZTsNCisNCisJCWZvcmVhY2gobHIsIHJlYWRzLnBhdGhzKQ0KKwkJew0KKwkJCUxpc3RDZWxsICAg KmxtOw0KKw0KKwkJCWZvcmVhY2gobG0sIG1vZHMucGF0aHMpDQorCQkJew0KKwkJCQlpZiAocGF0 aHNfbWF5X292ZXJsYXAobGZpcnN0KGxyKSwgbGZpcnN0KGxtKSkpDQorCQkJCXsNCisJCQkJCWRp c2pvaW50ID0gZmFsc2U7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0NCisJCQlpZiAoIWRp c2pvaW50KQ0KKwkJCQlicmVhazsNCisJCX0NCisJCWlmIChkaXNqb2ludCkNCisJCQlyZXN1bHQg PSBibXNfYWRkX21lbWJlcihyZXN1bHQsIGkpOw0KKwl9DQorDQorCXJldHVybiByZXN1bHQ7DQor fQ0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQNCmluZGV4IGRjNDViZTBiMmNlLi4wZDc1OGUyMzRh MiAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkDQorKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZA0KQEAgLTE2LDYgKzE2LDcgQEAgYmFja2Vu ZF9zb3VyY2VzICs9IGZpbGVzKA0KICAgJ2V4ZWNSZXBsaWNhdGlvbi5jJywNCiAgICdleGVjU1JG LmMnLA0KICAgJ2V4ZWNTY2FuLmMnLA0KKyAgJ2V4ZWNTdWJhdHRyLmMnLA0KICAgJ2V4ZWNUdXBs ZXMuYycsDQogICAnZXhlY1V0aWxzLmMnLA0KICAgJ2Z1bmN0aW9ucy5jJywNCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jDQppbmRleCA1YTA0MmViODNhMy4uMjViZmI5YmNlNTUg MTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYw0KKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMNCkBAIC02Myw2ICs2Myw3 IEBADQogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCINCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5oIg0KICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIg0KKyNpbmNs dWRlICJleGVjdXRvci9leGVjU3ViYXR0ci5oIg0KICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVt ZW50LmgiDQogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oIg0KICNpbmNsdWRl ICJmb3JlaWduL2Zkd2FwaS5oIg0KQEAgLTMzOCw2ICszMzksNTggQEAgSW5kZXhFeHByQXR0cnMo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgaW50IGksIEVTdGF0ZSAqZXN0YXRlKQ0KIAly ZXR1cm4gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhFeHByQXR0cnNbaV07DQogfQ0KIA0KKy8qDQor ICogSXMgdGhlIGkndGggaW5kZXggdW5hZmZlY3RlZCBieSB0aGUgdXBkYXRlIGZyb20gb2xkX3R0 cyB0byBuZXdfdHRzLCB3aGVyZQ0KKyAqICJtaW5lIiBhcmUgdGhlIGNoYW5nZWQgYXR0cmlidXRl cyBpdCB1c2VzPyAgVXNlIHRoZSBzdGF0ZW1lbnQtbGV2ZWwgcHJvb2YNCisgKiAocmlfSW5kZXhV bnRvdWNoZWRBdHRycykgd2hlbiBpdCBjb3ZlcnMgdGhlbSBhbGwgYW5kIG5vbmUgaXMgbnVsbCBp bg0KKyAqIGVpdGhlciByb3c7IG90aGVyd2lzZSBldmFsdWF0ZS4gIEFzc2VydCBidWlsZHMgZXZh bHVhdGUgYW55d2F5IGFuZCBjaGVjaw0KKyAqIHRoYXQgdGhlIHByb29mIGFncmVlcy4NCisgKi8N CitzdGF0aWMgYm9vbA0KK0luZGV4VW5hZmZlY3RlZChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLCBpbnQgaSwgQml0bWFwc2V0ICptaW5lLA0KKwkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkX3R0 cywgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMsDQorCQkJCUVTdGF0ZSAqZXN0YXRlKQ0KK3sNCisJ SW5kZXhJbmZvICAqaW5kZXhJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbklu Zm9baV07DQorCWJvb2wJCXByb3ZlbiA9IGZhbHNlOw0KKw0KKwlpZiAocmVzdWx0UmVsSW5mby0+ cmlfSW5kZXhVbnRvdWNoZWRBdHRycyAhPSBOVUxMICYmDQorCQlibXNfaXNfc3Vic2V0KG1pbmUs IHJlc3VsdFJlbEluZm8tPnJpX0luZGV4VW50b3VjaGVkQXR0cnNbaV0pKQ0KKwl7DQorCQlpbnQJ CQlhdHRpZHggPSAtMTsNCisNCisJCXByb3ZlbiA9IHRydWU7DQorCQl3aGlsZSAoKGF0dGlkeCA9 IGJtc19uZXh0X21lbWJlcihtaW5lLCBhdHRpZHgpKSA+PSAwKQ0KKwkJew0KKwkJCUF0dHJOdW1i ZXIJYXR0bnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsN CisNCisJCQlpZiAoc2xvdF9hdHRpc251bGwob2xkX3R0cywgYXR0bnVtKSB8fA0KKwkJCQlzbG90 X2F0dGlzbnVsbChuZXdfdHRzLCBhdHRudW0pKQ0KKwkJCXsNCisJCQkJcHJvdmVuID0gZmFsc2U7 DQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKyNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HDQorCWlmIChwcm92ZW4pDQorCXsNCisJCWlmIChJbmRleEVudHJ5Q2hhbmdlcyhyZXN1 bHRSZWxJbmZvLCBpbmRleEluZm8sIG9sZF90dHMsIG5ld190dHMsDQorCQkJCQkJCSAgZXN0YXRl KSkNCisJCQllbG9nKEVSUk9SLCAiaW5kZXggXCIlc1wiIHByb3ZlbiB1bmFmZmVjdGVkIGJ5IFVQ REFURSwgYnV0IGl0cyBlbnRyeSBjaGFuZ2VkIiwNCisJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25EZXNjc1tpXSkpOw0KKwkJcmV0dXJu IHRydWU7DQorCX0NCisjZWxzZQ0KKwlpZiAocHJvdmVuKQ0KKwkJcmV0dXJuIHRydWU7DQorI2Vu ZGlmDQorDQorCXJldHVybiAhSW5kZXhFbnRyeUNoYW5nZXMocmVzdWx0UmVsSW5mbywgaW5kZXhJ bmZvLCBvbGRfdHRzLCBuZXdfdHRzLA0KKwkJCQkJCQkgIGVzdGF0ZSk7DQorfQ0KKw0KIC8qDQog ICogRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMNCiAgKg0KQEAgLTQ1Niw4ICs1MDksOCBAQCBF eGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLA0K IA0KIAkJCWlmICghaW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMgfHwNCiAJCQkJIXJlc3Vs dFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25EZXNjc1tpXS0+cmRfaW5kZXgtPmluZGlzdmFsaWQg fHwNCi0JCQkJSW5kZXhFbnRyeUNoYW5nZXMocmVzdWx0UmVsSW5mbywgaW5kZXhJbmZvLA0KLQkJ CQkJCQkJICBvbGRfdHRzLCBuZXdfdHRzLCBlc3RhdGUpKQ0KKwkJCQkhSW5kZXhVbmFmZmVjdGVk KHJlc3VsdFJlbEluZm8sIGksIG1pbmUsIG9sZF90dHMsIG5ld190dHMsDQorCQkJCQkJCQkgZXN0 YXRlKSkNCiAJCQl7DQogCQkJCWtlZXAgPSBibXNfYWRkX21lbWJlcnMoa2VlcCwgbWluZSk7DQog CQkJCWlmIChibXNfaXNfc3Vic2V0KGNhbmRpZGF0ZXMsIGtlZXApKQ0KQEAgLTEwMDMsNiArMTA1 NiwxMzYgQEAgRXhlY0luaXRJbnNlcnRQcm9qZWN0aW9uKE1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUsDQogCXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3ROZXdJbmZvVmFsaWQgPSB0cnVlOw0KIH0N CiANCisvKg0KKyAqIEV4ZWNJbml0VXBkYXRlVW50b3VjaGVkDQorICoJCVdvcmsgb3V0LCBwZXIg aW5kZXgsIHdoaWNoIFNFVCB0YXJnZXQgY29sdW1ucyB0aGUgc3RhdGVtZW50IGNhbm5vdA0KKyAq CQljaGFuZ2UgaW4gYW55IHBhcnQgdGhlIGluZGV4IHJlYWRzLiAgU2VlIGV4ZWNTdWJhdHRyLmMu DQorICoNCisgKiBPbmx5IGZvciBhIHBsYWluIFVQREFURSB3aG9zZSBzdWJwbGFuIGlzIGEgc2Nh biBvZiB0aGUgcmVzdWx0IHJlbGF0aW9uDQorICogaXRzZWxmLCBzbyB0aGF0IGl0cyB0YXJnZXQg bGlzdCBjb21wdXRlcyBlYWNoIG5ldyB2YWx1ZSBmcm9tIFZhcnMgb2YgdGhlDQorICogcm93IGJl aW5nIHVwZGF0ZWQuICAoTUVSR0Uga2VlcHMgaXRzIFNFVCBleHByZXNzaW9ucyBlbHNld2hlcmUu KSAgSm9pbnMsDQorICogc3VicXVlcmllcyBhbmQgdGhlIGxpa2UgYnJpbmcgb3RoZXIgcm93cycg dmFsdWVzLCBhbmQgYXJlIGxlZnQgdG8NCisgKiBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycygp IHRvIGV2YWx1YXRlLg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorRXhlY0luaXRVcGRhdGVVbnRvdWNo ZWQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwNCisJCQkJCQlSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvKQ0KK3sNCisJRVN0YXRlCSAgICplc3RhdGUgPSBtdHN0YXRlLT5wcy5zdGF0ZTsN CisJUGxhbgkgICAqc3VicGxhbiA9IG91dGVyUGxhbihtdHN0YXRlLT5wcy5wbGFuKTsNCisJaW50 CQkJd2hpY2hyZWwgPSByZXN1bHRSZWxJbmZvIC0gbXRzdGF0ZS0+cmVzdWx0UmVsSW5mbzsNCisJ TGlzdAkgICAqdXBkYXRlQ29sbm9zOw0KKwlSZWxhdGlvbglyZWwgPSByZXN1bHRSZWxJbmZvLT5y aV9SZWxhdGlvbkRlc2M7DQorCUluZGV4CQlydGkgPSByZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRh YmxlSW5kZXg7DQorCUJpdG1hcHNldCAgKmV4cHJhdHRyczsNCisJTGlzdENlbGwgICAqbHQsDQor CQkJICAgKmxjOw0KKwlNZW1vcnlDb250ZXh0IHRtcGN4dDsNCisJTWVtb3J5Q29udGV4dCBvbGRj eHQ7DQorDQorCUFzc2VydCh3aGljaHJlbCA+PSAwICYmIHdoaWNocmVsIDwgbXRzdGF0ZS0+bXRf bnJlbHMpOw0KKwl1cGRhdGVDb2xub3MgPSAoTGlzdCAqKSBsaXN0X250aChtdHN0YXRlLT5tdF91 cGRhdGVDb2xub3NMaXN0cywgd2hpY2hyZWwpOw0KKw0KKwlyZXN1bHRSZWxJbmZvLT5yaV9JbmRl eFVudG91Y2hlZEF0dHJzID0gTlVMTDsNCisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGlj ZXMgPT0gMCB8fCBydGkgPT0gMCkNCisJCXJldHVybjsNCisNCisJLyoNCisJICogRm9yIGFuIGlu aGVyaXRhbmNlIHRyZWUgb3IgcGFydGl0aW9uZWQgdGFibGUsIGVhY2ggY2hpbGQncyByb3dzIGNv bWUNCisJICogZnJvbSBpdHMgb3duIHNjYW4gdW5kZXIgYW4gQXBwZW5kLCBsYWlkIG91dCB0aGUg c2FtZSB3YXkuDQorCSAqLw0KKwlpZiAoSXNBKHN1YnBsYW4sIEFwcGVuZCkpDQorCXsNCisJCVBs YW4JICAgKmZvdW5kID0gTlVMTDsNCisNCisJCWZvcmVhY2gobGMsICgoQXBwZW5kICopIHN1YnBs YW4pLT5hcHBlbmRwbGFucykNCisJCXsNCisJCQlQbGFuCSAgICpjaGlsZCA9IGxmaXJzdChsYyk7 DQorDQorCQkJaWYgKElzQShjaGlsZCwgU2VxU2NhbikgfHwgSXNBKGNoaWxkLCBJbmRleFNjYW4p IHx8DQorCQkJCUlzQShjaGlsZCwgQml0bWFwSGVhcFNjYW4pIHx8IElzQShjaGlsZCwgVGlkU2Nh bikgfHwNCisJCQkJSXNBKGNoaWxkLCBUaWRSYW5nZVNjYW4pKQ0KKwkJCXsNCisJCQkJaWYgKCgo U2NhbiAqKSBjaGlsZCktPnNjYW5yZWxpZCA9PSBydGkpDQorCQkJCXsNCisJCQkJCS8qIGEgcmVs YXRpb24gaXMgc2Nhbm5lZCBvbmNlIHBlciBBcHBlbmQgKi8NCisJCQkJCWlmIChmb3VuZCAhPSBO VUxMKQ0KKwkJCQkJCXJldHVybjsNCisJCQkJCWZvdW5kID0gY2hpbGQ7DQorCQkJCX0NCisJCQl9 DQorCQl9DQorCQlpZiAoZm91bmQgPT0gTlVMTCkNCisJCQlyZXR1cm47DQorCQlzdWJwbGFuID0g Zm91bmQ7DQorCX0NCisNCisJaWYgKCEoSXNBKHN1YnBsYW4sIFNlcVNjYW4pIHx8IElzQShzdWJw bGFuLCBJbmRleFNjYW4pIHx8DQorCQkgIElzQShzdWJwbGFuLCBCaXRtYXBIZWFwU2NhbikgfHwg SXNBKHN1YnBsYW4sIFRpZFNjYW4pIHx8DQorCQkgIElzQShzdWJwbGFuLCBUaWRSYW5nZVNjYW4p KSB8fA0KKwkJKChTY2FuICopIHN1YnBsYW4pLT5zY2FucmVsaWQgIT0gcnRpKQ0KKwkJcmV0dXJu Ow0KKw0KKwkvKg0KKwkgKiBBIEJFRk9SRSBST1cgdHJpZ2dlciBtYXkgY2hhbmdlIGFueSBjb2x1 bW4gb2YgdGhlIG5ldyByb3csIHdoaWNoIHRoZQ0KKwkgKiBTRVQgZXhwcmVzc2lvbnMgZG8gbm90 IHNob3cuDQorCSAqLw0KKwlpZiAocmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MgJiYNCisJCXJl c3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT50cmlnX3VwZGF0ZV9iZWZvcmVfcm93KQ0KKwkJcmV0 dXJuOw0KKw0KKwlleHByYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWwsIElO REVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04pOw0KKwlpZiAoYm1zX2lzX2VtcHR5KGV4cHJhdHRy cykpDQorCQlyZXR1cm47DQorDQorCS8qIHRoZSBhbmFseXNpcyBpcyB0aHJvd24gYXdheTsgb25s eSB0aGUgYml0bWFwcyBhcmUga2VwdCAqLw0KKwl0bXBjeHQgPSBBbGxvY1NldENvbnRleHRDcmVh dGUoQ3VycmVudE1lbW9yeUNvbnRleHQsICJzdWJhdHRyIHByb29mIiwNCisJCQkJCQkJCSAgIEFM TE9DU0VUX1NNQUxMX1NJWkVTKTsNCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHRt cGN4dCk7DQorDQorCS8qDQorCSAqIEV4ZWNCdWlsZFVwZGF0ZVByb2plY3Rpb24oKSBoYXMgY2hl Y2tlZCB0aGF0IHVwZGF0ZUNvbG5vcyBwYWlycyB3aXRoDQorCSAqIHRoZSB0YXJnZXQgbGlzdCdz IG5vbi1qdW5rIGVudHJpZXMsIHdoaWNoIGNvbWUgZmlyc3QuDQorCSAqLw0KKwlmb3Jib3RoKGx0 LCBzdWJwbGFuLT50YXJnZXRsaXN0LCBsYywgdXBkYXRlQ29sbm9zKQ0KKwl7DQorCQlUYXJnZXRF bnRyeSAqdGxlID0gbGZpcnN0X25vZGUoVGFyZ2V0RW50cnksIGx0KTsNCisJCUF0dHJOdW1iZXIJ YXR0bnVtID0gbGZpcnN0X2ludChsYyk7DQorCQlCaXRtYXBzZXQgICp1bnRvdWNoZWQ7DQorCQlp bnQJCQlpOw0KKw0KKwkJQXNzZXJ0KCF0bGUtPnJlc2p1bmspOw0KKwkJaWYgKCFibXNfaXNfbWVt YmVyKGF0dG51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsDQorCQkJCQkJ ICAgZXhwcmF0dHJzKSkNCisJCQljb250aW51ZTsNCisNCisJCXVudG91Y2hlZCA9IEV4ZWNTdWJh dHRyUHJvdmVVbnRvdWNoZWQocmVzdWx0UmVsSW5mbywNCisJCQkJCQkJCQkJCSAgKE5vZGUgKikg dGxlLT5leHByLA0KKwkJCQkJCQkJCQkJICBydGksIGF0dG51bSwNCisJCQkJCQkJCQkJCSAgZXN0 YXRlLT5lc19wYXJhbV9saXN0X2luZm8pOw0KKwkJaSA9IC0xOw0KKwkJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKHVudG91Y2hlZCwgaSkpID49IDApDQorCQl7DQorCQkJZXJlcG9ydChERUJV RzEsDQorCQkJCQllcnJtc2dfaW50ZXJuYWwoIlVQREFURSBvZiBjb2x1bW4gXCIlc1wiIGNhbm5v dCBjaGFuZ2UgaW5kZXggXCIlc1wiIiwNCisJCQkJCQkJCQlOYW1lU3RyKFR1cGxlRGVzY0F0dHIo UmVsYXRpb25HZXREZXNjcihyZWwpLA0KKwkJCQkJCQkJCQkJCQkJICBhdHRudW0gLSAxKS0+YXR0 bmFtZSksDQorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsSW5mby0+ cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldKSkpOw0KKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhl c3RhdGUtPmVzX3F1ZXJ5X2N4dCk7DQorCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX0luZGV4VW50 b3VjaGVkQXR0cnMgPT0gTlVMTCkNCisJCQkJcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhVbnRvdWNo ZWRBdHRycyA9DQorCQkJCQlwYWxsb2MwX2FycmF5KEJpdG1hcHNldCAqLCByZXN1bHRSZWxJbmZv LT5yaV9OdW1JbmRpY2VzKTsNCisJCQlyZXN1bHRSZWxJbmZvLT5yaV9JbmRleFVudG91Y2hlZEF0 dHJzW2ldID0NCisJCQkJYm1zX2FkZF9tZW1iZXIocmVzdWx0UmVsSW5mby0+cmlfSW5kZXhVbnRv dWNoZWRBdHRyc1tpXSwNCisJCQkJCQkJICAgYXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlcik7DQorCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHRtcGN4dCk7DQorCQl9 DQorCX0NCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7DQorCU1lbW9yeUNvbnRleHRE ZWxldGUodG1wY3h0KTsNCisJYm1zX2ZyZWUoZXhwcmF0dHJzKTsNCit9DQorDQogLyoNCiAgKiBF eGVjSW5pdFVwZGF0ZVByb2plY3Rpb24NCiAgKgkJRG8gb25lLXRpbWUgaW5pdGlhbGl6YXRpb24g b2YgcHJvamVjdGlvbiBkYXRhIGZvciBVUERBVEUgdHVwbGVzLg0KQEAgLTI2MjksNiArMjgxMiwx NiBAQCBscmVwbGFjZToNCiAJaWYgKHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIp DQogCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsNCiANCisJ LyoNCisJICogRnJvbSB0aGUgc2Vjb25kIHJvdyBvbiwgdXNlIHdoYXQgdGhlIFNFVCBjbGF1c2Ug c2hvd3MgYWJvdXQgd2hpY2gNCisJICogaW5kZXhlcyBpdCBjYW5ub3QgYWZmZWN0LiAgRm9yIGEg c2luZ2xlIHJvdywgd29ya2luZyB0aGF0IG91dCBjb3N0cw0KKwkgKiBtb3JlIHRoYW4gZXZhbHVh dGluZyB0aGUgaW5kZXhlcyBpdCB3b3VsZCBzYXZlLg0KKwkgKi8NCisJaWYgKHVubGlrZWx5KHJl c3VsdFJlbEluZm8tPnJpX1VwZGF0ZUNvdW50IDwgMikgJiYNCisJCSsrcmVzdWx0UmVsSW5mby0+ cmlfVXBkYXRlQ291bnQgPT0gMiAmJg0KKwkJY29udGV4dC0+bXRzdGF0ZS0+b3BlcmF0aW9uID09 IENNRF9VUERBVEUpDQorCQlFeGVjSW5pdFVwZGF0ZVVudG91Y2hlZChjb250ZXh0LT5tdHN0YXRl LCByZXN1bHRSZWxJbmZvKTsNCisNCiAJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1v ZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xvdCwNCiAJCQkJCQkJCQkJ CQkJZXN0YXRlKTsNCiANCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1 bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMNCmluZGV4IDI3NGVkOWQz MTg0Li45YjM5MzZiYjYwYSAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u ZnVuY3MuYw0KKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jDQpAQCAtMjks NiArMjksNyBAQA0KICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIg0KICNpbmNsdWRlICJtaXNjYWRt aW4uaCINCiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiDQorI2luY2x1ZGUgIm5vZGVzL3N1 cHBvcnRub2Rlcy5oIg0KICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiDQogI2luY2x1 ZGUgInV0aWxzL2FycmF5LmgiDQogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiDQpAQCAtNjE2 OSwzICs2MTcwLDI3NyBAQCBqc29uX2NoZWNrX211dGFiaWxpdHkoT2lkIHR5cG9pZCwgYm9vbCBp c19qc29uYiwgYm9vbCAqaGFzX211dGFibGUpDQogCQkJYnJlYWs7DQogCX0NCiB9DQorDQorLyoN CisgKiBUdXJuIGEgdGV4dFtdIENvbnN0IGludG8gYSBTdWJhdHRyUGF0aEVsZW0gcGF0aCwgb3Ig cmV0dXJuIGZhbHNlLg0KKyAqLw0KK3N0YXRpYyBib29sDQoranNvbmJfc3ViYXR0cl90ZXh0X3Bh dGgoTm9kZSAqYXJnLCBMaXN0ICoqcGF0aCkNCit7DQorCUNvbnN0CSAgICpjID0gKENvbnN0ICop IGFyZzsNCisJRGF0dW0JICAgKmVsZW1zOw0KKwlib29sCSAgICpudWxsczsNCisJaW50CQkJbmVs ZW1zOw0KKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7DQorDQorCWlmICghYXJnIHx8ICFJc0EoYXJn LCBDb25zdCkgfHwgYy0+Y29uc3Rpc251bGwgfHwNCisJCWMtPmNvbnN0dHlwZSAhPSBURVhUQVJS QVlPSUQpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4o RGF0dW1HZXRBcnJheVR5cGVQKGMtPmNvbnN0dmFsdWUpLCBURVhUT0lELA0KKwkJCQkJCQkgICZl bGVtcywgJm51bGxzLCAmbmVsZW1zKTsNCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuZWxlbXM7IGkr KykNCisJew0KKwkJU3ViYXR0clBhdGhFbGVtICplOw0KKw0KKwkJaWYgKG51bGxzW2ldKQ0KKwkJ CXJldHVybiBmYWxzZTsJCS8qIGFuIGVycm9yIGF0IHJ1biB0aW1lOyBjbGFpbSBub3RoaW5nICov DQorCQllID0gcGFsbG9jMF9vYmplY3QoU3ViYXR0clBhdGhFbGVtKTsNCisJCWUtPmtpbmQgPSBT VUJBVFRSX0VMRU1fS0VZOw0KKwkJZS0+a2V5ID0gVGV4dERhdHVtR2V0Q1N0cmluZyhlbGVtc1tp XSk7DQorCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgZSk7DQorCX0NCisJKnBhdGggPSByZXN1 bHQ7DQorCXJldHVybiB0cnVlOw0KK30NCisNCisvKiBBIG9uZS1rZXkgcGF0aCBmcm9tIGEgdGV4 dCBDb25zdCwgb3IgYW4gaW50NCBDb25zdCBpbiB0ZXh0IGZvcm0uICovDQorc3RhdGljIGJvb2wN Citqc29uYl9zdWJhdHRyX29uZV9lbGVtKE5vZGUgKmFyZywgTGlzdCAqKnBhdGgpDQorew0KKwlD b25zdAkgICAqYyA9IChDb25zdCAqKSBhcmc7DQorCVN1YmF0dHJQYXRoRWxlbSAqZTsNCisNCisJ aWYgKCFhcmcgfHwgIUlzQShhcmcsIENvbnN0KSB8fCBjLT5jb25zdGlzbnVsbCkNCisJCXJldHVy biBmYWxzZTsNCisJZSA9IHBhbGxvYzBfb2JqZWN0KFN1YmF0dHJQYXRoRWxlbSk7DQorCWUtPmtp bmQgPSBTVUJBVFRSX0VMRU1fS0VZOw0KKwlpZiAoYy0+Y29uc3R0eXBlID09IFRFWFRPSUQpDQor CQllLT5rZXkgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGMtPmNvbnN0dmFsdWUpOw0KKwllbHNlIGlm IChjLT5jb25zdHR5cGUgPT0gSU5UNE9JRCkNCisJCWUtPmtleSA9IHBzcHJpbnRmKCIlZCIsIERh dHVtR2V0SW50MzIoYy0+Y29uc3R2YWx1ZSkpOw0KKwllbHNlDQorCQlyZXR1cm4gZmFsc2U7DQor CSpwYXRoID0gbGlzdF9tYWtlMShlKTsNCisJcmV0dXJuIHRydWU7DQorfQ0KKw0KKy8qIHBhdGgg fHwgW2FueSBwb3NpdGlvbl0gKi8NCitzdGF0aWMgTGlzdCAqDQoranNvbmJfc3ViYXR0cl9hbnlf cG9zaXRpb24oTGlzdCAqcHJlZml4KQ0KK3sNCisJU3ViYXR0clBhdGhFbGVtICplID0gcGFsbG9j MF9vYmplY3QoU3ViYXR0clBhdGhFbGVtKTsNCisNCisJZS0+a2luZCA9IFNVQkFUVFJfRUxFTV9B TllfUE9TSVRJT047DQorCXJldHVybiBsYXBwZW5kKHByZWZpeCwgZSk7DQorfQ0KKw0KKy8qDQor ICoganNvbmJfc3ViYXR0cl9zdXBwb3J0DQorICoJCVN1cHBvcnQgZnVuY3Rpb24gZm9yIHRoZSBq c29uYiBhY2Nlc3NvcnMgYW5kIG1vZGlmaWVyczogdGVsbHMgdGhlDQorICoJCWV4ZWN1dG9yIHdo aWNoIHBhcnRzIG9mIHRoZSBkb2N1bWVudCBhIGNhbGwgcmVhZHMgb3IgbWF5IGNoYW5nZS4NCisg KgkJU2VlIFN1cHBvcnRSZXF1ZXN0U3ViYXR0ci4NCisgKg0KKyAqIFBhdGhzIGFyZSByZXBvcnRl ZCBhcyBrZXlzIHRocm91Z2hvdXQsIGFsc28gd2hlcmUgYSBmdW5jdGlvbiB0YWtlcyBhbg0KKyAq IGludGVnZXI6IGpzb25iIHJlYWRzIGV2ZXJ5IHBhdGggZWxlbWVudCBhcyBhbiBvYmplY3Qga2V5 IG9yLCBpbnNpZGUgYW4NCisgKiBhcnJheSwgYXMgYSBwb3NpdGlvbiwgYW5kIHRoZSBleGVjdXRv ciB0cmVhdHMgYW55IGtleSB0aGF0IHJlYWRzIGFzIGFuDQorICogaW50ZWdlciBhcyBwb3NzaWJs eSBldmVyeSBwb3NpdGlvbi4NCisgKg0KKyAqIEV2ZXJ5IHBhdGggYW4gYWNjZXNzb3IgcmVhZHMg aW5jbHVkZXMgdGhlIGNvbnRhaW5lcnMgb24gdGhlIHdheSB0byBpdDoNCisgKiAiYSItPiJiIiBy ZWFkcyAiYSIgdG9vLCBhbmQgc28gb3ZlcmxhcHMgYSBjaGFuZ2UgdG8gImEiLCBhcyBhIHByZWZp eC4NCisgKi8NCitEYXR1bQ0KK2pzb25iX3N1YmF0dHJfc3VwcG9ydChQR19GVU5DVElPTl9BUkdT KQ0KK3sNCisJTm9kZQkgICAqcmF3cmVxID0gKE5vZGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7 DQorCVN1cHBvcnRSZXF1ZXN0U3ViYXR0ciAqcmVxOw0KKwlMaXN0CSAgICphcmdzOw0KKwlMaXN0 CSAgICpwYXRoOw0KKw0KKwlpZiAoIUlzQShyYXdyZXEsIFN1cHBvcnRSZXF1ZXN0U3ViYXR0cikp DQorCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsNCisJcmVxID0gKFN1cHBvcnRSZXF1ZXN0U3Vi YXR0ciAqKSByYXdyZXE7DQorCWFyZ3MgPSByZXEtPmFyZ3M7DQorDQorCWlmIChyZXEtPmtpbmQg PT0gU1VCQVRUUl9SRUFEKQ0KKwl7DQorCQlzd2l0Y2ggKHJlcS0+ZnVuY2lkKQ0KKwkJew0KKwkJ CWNhc2UgRl9KU09OQl9PQkpFQ1RfRklFTEQ6DQorCQkJY2FzZSBGX0pTT05CX0FSUkFZX0VMRU1F TlQ6DQorCQkJCWlmICghanNvbmJfc3ViYXR0cl9vbmVfZWxlbShsc2Vjb25kKGFyZ3MpLCAmcGF0 aCkpDQorCQkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsNCisJCQkJcmVxLT5zdWJ2YWx1ZSA9 IHRydWU7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgRl9KU09OQl9PQkpFQ1RfRklFTERfVEVYVDoN CisJCQljYXNlIEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9URVhUOg0KKwkJCQlpZiAoIWpzb25iX3N1 YmF0dHJfb25lX2VsZW0obHNlY29uZChhcmdzKSwgJnBhdGgpKQ0KKwkJCQkJUEdfUkVUVVJOX1BP SU5URVIoTlVMTCk7DQorCQkJCXJlcS0+c3VidmFsdWUgPSBmYWxzZTsNCisJCQkJYnJlYWs7DQor CQkJY2FzZSBGX0pTT05CX0VYVFJBQ1RfUEFUSDoNCisJCQkJaWYgKCFqc29uYl9zdWJhdHRyX3Rl eHRfcGF0aChsc2Vjb25kKGFyZ3MpLCAmcGF0aCkpDQorCQkJCQlQR19SRVRVUk5fUE9JTlRFUihO VUxMKTsNCisJCQkJcmVxLT5zdWJ2YWx1ZSA9IHRydWU7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2Ug Rl9KU09OQl9FWFRSQUNUX1BBVEhfVEVYVDoNCisJCQkJaWYgKCFqc29uYl9zdWJhdHRyX3RleHRf cGF0aChsc2Vjb25kKGFyZ3MpLCAmcGF0aCkpDQorCQkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxM KTsNCisJCQkJcmVxLT5zdWJ2YWx1ZSA9IGZhbHNlOw0KKwkJCQlicmVhazsNCisJCQlkZWZhdWx0 Og0KKwkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsNCisJCX0NCisJCXJlcS0+c291cmNlID0g MDsNCisJCXJlcS0+cGF0aHMgPSBsaXN0X21ha2UxKHBhdGgpOw0KKwkJUEdfUkVUVVJOX1BPSU5U RVIocmVxKTsNCisJfQ0KKw0KKwlBc3NlcnQocmVxLT5raW5kID09IFNVQkFUVFJfTU9ESUZZKTsN CisJcmVxLT5zb3VyY2UgPSAwOw0KKwlzd2l0Y2ggKHJlcS0+ZnVuY2lkKQ0KKwl7DQorCQljYXNl IEZfSlNPTkJfU0VUOg0KKwkJY2FzZSBGX0pTT05CX1NFVF9MQVg6DQorDQorCQkJLyoNCisJCQkg KiBqc29uYl9zZXQodGFyZ2V0LCBwYXRoLCBuZXcsIGNyZWF0ZV9pZl9taXNzaW5nKSByZXBsYWNl cyBvcg0KKwkJCSAqIGNyZWF0ZXMgdGhlIHBhcnQgYXQgcGF0aC4gIEluIGFuIGFycmF5IGl0IG1h eSBpbnN0ZWFkIGFkZCBhbg0KKwkJCSAqIGVsZW1lbnQgYXQgZWl0aGVyIGVuZCwgYW5kIGpzb25i X3NldF9sYXgoKSB3aXRoIGEgbnVsbCBuZXcNCisJCQkgKiB2YWx1ZSBtYXkgZGVsZXRlIHRoZSBw YXJ0LCBtb3ZpbmcgbGF0ZXIgZWxlbWVudHM7IGJ1dCBhbiBhcnJheQ0KKwkJCSAqIHBvc2l0aW9u IGlzIG5hbWVkIGJ5IGEga2V5IHRoYXQgcmVhZHMgYXMgYW4gaW50ZWdlciwgd2hpY2ggdGhlDQor CQkJICogZXhlY3V0b3IgdGFrZXMgdG8gb3ZlcmxhcCBldmVyeSBwb3NpdGlvbi4NCisJCQkgKi8N CisJCQlpZiAoIWpzb25iX3N1YmF0dHJfdGV4dF9wYXRoKGxzZWNvbmQoYXJncyksICZwYXRoKSkN CisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7DQorCQkJcmVxLT5wYXRocyA9IGxpc3RfbWFr ZTEocGF0aCk7DQorCQkJYnJlYWs7DQorDQorCQljYXNlIEZfSlNPTkJfREVMRVRFX1BBVEg6DQor CQkJLyoganNvbmIgIy0gcGF0aCBkZWxldGVzIHRoZSBwYXJ0IGF0IHBhdGg7IGFzIGFib3ZlICov DQorCQkJaWYgKCFqc29uYl9zdWJhdHRyX3RleHRfcGF0aChsc2Vjb25kKGFyZ3MpLCAmcGF0aCkp DQorCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOw0KKwkJCXJlcS0+cGF0aHMgPSBsaXN0X21h a2UxKHBhdGgpOw0KKwkJCWJyZWFrOw0KKw0KKwkJY2FzZSBGX0pTT05CX0lOU0VSVDoNCisNCisJ CQkvKg0KKwkJCSAqIGpzb25iX2luc2VydCh0YXJnZXQsIHBhdGgsIG5ldywgYWZ0ZXIpIGFkZHMg YSBtZW1iZXIgYXQgcGF0aCB0bw0KKwkJCSAqIGFuIG9iamVjdCwgb3IgYW4gZWxlbWVudCBuZXh0 IHRvIHRoZSBvbmUgYXQgcGF0aCBpbiBhbiBhcnJheSwNCisJCQkgKiBtb3ZpbmcgdGhlIGxhdGVy IGVsZW1lbnRzOiB0aGUgY29udGFpbmVyIG1heSBjaGFuZ2UgaW4gYSBrZXkgYXQNCisJCQkgKiBw YXRoIG9yIGluIGFueSBvZiBpdHMgcG9zaXRpb25zLg0KKwkJCSAqLw0KKwkJCWlmICghanNvbmJf c3ViYXR0cl90ZXh0X3BhdGgobHNlY29uZChhcmdzKSwgJnBhdGgpIHx8DQorCQkJCXBhdGggPT0g TklMKQ0KKwkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsNCisJCQlyZXEtPnBhdGhzID0gbGlz dF9tYWtlMihwYXRoLA0KKwkJCQkJCQkJCWpzb25iX3N1YmF0dHJfYW55X3Bvc2l0aW9uKGxpc3Rf Y29weV9oZWFkKHBhdGgsDQorCQkJCQkJCQkJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgocGF0aCkg LSAxKSkpOw0KKwkJCWJyZWFrOw0KKw0KKwkJY2FzZSBGX0pTT05CX0RFTEVURV9KU09OQl9URVhU Og0KKwkJY2FzZSBGX0pTT05CX0RFTEVURV9KU09OQl9fVEVYVDoNCisJCQl7DQorCQkJCS8qDQor CQkJCSAqIGpzb25iIC0ga2V5IGFuZCBqc29uYiAtIGtleXNbXSBkZWxldGUgdG9wLWxldmVsIG1l bWJlcnMgb2YNCisJCQkJICogYW4gb2JqZWN0LCBvciBtYXRjaGluZyBzdHJpbmcgZWxlbWVudHMg b2YgYW4gYXJyYXksIG1vdmluZw0KKwkJCQkgKiB0aGUgb3RoZXJzLg0KKwkJCQkgKi8NCisJCQkJ Q29uc3QJICAgKmMgPSAoQ29uc3QgKikgbHNlY29uZChhcmdzKTsNCisJCQkJRGF0dW0JICAgKmVs ZW1zOw0KKwkJCQlib29sCSAgICpudWxsczsNCisJCQkJaW50CQkJbmVsZW1zOw0KKw0KKwkJCQlp ZiAoIWMgfHwgIUlzQShjLCBDb25zdCkgfHwgYy0+Y29uc3Rpc251bGwpDQorCQkJCQlQR19SRVRV Uk5fUE9JTlRFUihOVUxMKTsNCisJCQkJaWYgKHJlcS0+ZnVuY2lkID09IEZfSlNPTkJfREVMRVRF X0pTT05CX1RFWFQpDQorCQkJCXsNCisJCQkJCS8qIGEgb25lLWVsZW1lbnQgYXJyYXkgb2Yga2V5 cyAqLw0KKwkJCQkJZWxlbXMgPSBwYWxsb2Nfb2JqZWN0KERhdHVtKTsNCisJCQkJCW51bGxzID0g cGFsbG9jMF9vYmplY3QoYm9vbCk7DQorCQkJCQllbGVtc1swXSA9IGMtPmNvbnN0dmFsdWU7DQor CQkJCQluZWxlbXMgPSAxOw0KKwkJCQl9DQorCQkJCWVsc2UNCisJCQkJCWRlY29uc3RydWN0X2Fy cmF5X2J1aWx0aW4oRGF0dW1HZXRBcnJheVR5cGVQKGMtPmNvbnN0dmFsdWUpLA0KKwkJCQkJCQkJ CQkJICBURVhUT0lELCAmZWxlbXMsICZudWxscywNCisJCQkJCQkJCQkJCSAgJm5lbGVtcyk7DQor CQkJCXJlcS0+cGF0aHMgPSBsaXN0X21ha2UxKGpzb25iX3N1YmF0dHJfYW55X3Bvc2l0aW9uKE5J TCkpOw0KKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IG5lbGVtczsgaSsrKQ0KKwkJCQl7DQorCQkJ CQlTdWJhdHRyUGF0aEVsZW0gKmU7DQorDQorCQkJCQlpZiAobnVsbHNbaV0pDQorCQkJCQkJY29u dGludWU7CS8qIGRlbGV0ZXMgbm90aGluZyAqLw0KKwkJCQkJZSA9IHBhbGxvYzBfb2JqZWN0KFN1 YmF0dHJQYXRoRWxlbSk7DQorCQkJCQllLT5raW5kID0gU1VCQVRUUl9FTEVNX0tFWTsNCisJCQkJ CWUtPmtleSA9IFRleHREYXR1bUdldENTdHJpbmcoZWxlbXNbaV0pOw0KKwkJCQkJcmVxLT5wYXRo cyA9IGxhcHBlbmQocmVxLT5wYXRocywgbGlzdF9tYWtlMShlKSk7DQorCQkJCX0NCisJCQkJYnJl YWs7DQorCQkJfQ0KKw0KKwkJY2FzZSBGX0pTT05CX0RFTEVURV9KU09OQl9JTlQ0Og0KKwkJCS8q IGpzb25iIC0gaW50IGRlbGV0ZXMgYW4gYXJyYXkgZWxlbWVudCwgbW92aW5nIGxhdGVyIG9uZXMg Ki8NCisJCQlyZXEtPnBhdGhzID0gbGlzdF9tYWtlMShqc29uYl9zdWJhdHRyX2FueV9wb3NpdGlv bihOSUwpKTsNCisJCQlicmVhazsNCisNCisJCWNhc2UgRl9KU09OQl9DT05DQVQ6DQorCQkJew0K KwkJCQkvKg0KKwkJCQkgKiBkb2MgfHwgJ3siayI6IHYsIC4uLn0nIHdpdGggYSBjb25zdGFudCBv YmplY3QsIG9yIHRoZSBvdGhlcg0KKwkJCQkgKiB3YXkgYXJvdW5kLiAgRm9yIGFuIG9iamVjdCBk b2MsIG9ubHkgdGhlIGNvbnN0YW50J3MNCisJCQkJICogdG9wLWxldmVsIGtleXMgY2hhbmdlLiAg Rm9yIGFuIGFycmF5IG9yIHNjYWxhciBkb2MsIHRoZQ0KKwkJCQkgKiByZXN1bHQgaXMgYW4gYXJy YXkgb2YgaXRzIGVsZW1lbnRzIChvciB0aGUgc2NhbGFyKSBhbmQgdGhlDQorCQkJCSAqIG9iamVj dCwgaW4gc29tZSBvcmRlcjogcG9zaXRpb25zIGNoYW5nZSwgYW5kIG5vIGtleSB0aGF0DQorCQkJ CSAqIGRvZXMgbm90IHJlYWQgYXMgYW4gaW50ZWdlciByZWFkcyBhbnl0aGluZyBiZWZvcmUgb3Ig YWZ0ZXIuDQorCQkJCSAqIEFueSBvdGhlciBjb25zdGFudCAoYW4gYXJyYXksIGEgc2NhbGFyKSB0 dXJucyBhbiBvYmplY3QgZG9jDQorCQkJCSAqIGludG8gYW4gYXJyYXksIHdoaWNoIGNoYW5nZXMg ZXZlcnkga2V5OyBnaXZlIHVwLg0KKwkJCQkgKi8NCisJCQkJQ29uc3QJICAgKmM7DQorCQkJCUpz b25iCSAgICpqYjsNCisJCQkJSnNvbmJJdGVyYXRvciAqaXQ7DQorCQkJCUpzb25iVmFsdWUJdjsN CisJCQkJSnNvbmJJdGVyYXRvclRva2VuIHI7DQorDQorCQkJCWlmIChJc0EobHNlY29uZChhcmdz KSwgQ29uc3QpKQ0KKwkJCQl7DQorCQkJCQljID0gKENvbnN0ICopIGxzZWNvbmQoYXJncyk7DQor CQkJCQlyZXEtPnNvdXJjZSA9IDA7DQorCQkJCX0NCisJCQkJZWxzZSBpZiAoSXNBKGxpbml0aWFs KGFyZ3MpLCBDb25zdCkpDQorCQkJCXsNCisJCQkJCWMgPSAoQ29uc3QgKikgbGluaXRpYWwoYXJn cyk7DQorCQkJCQlyZXEtPnNvdXJjZSA9IDE7DQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQkJUEdf UkVUVVJOX1BPSU5URVIoTlVMTCk7DQorCQkJCWlmIChjLT5jb25zdGlzbnVsbCkNCisJCQkJCVBH X1JFVFVSTl9QT0lOVEVSKE5VTEwpOw0KKwkJCQlqYiA9IERhdHVtR2V0SnNvbmJQKGMtPmNvbnN0 dmFsdWUpOw0KKwkJCQlpZiAoIUpCX1JPT1RfSVNfT0JKRUNUKGpiKSkNCisJCQkJCVBHX1JFVFVS Tl9QT0lOVEVSKE5VTEwpOw0KKw0KKwkJCQlyZXEtPnBhdGhzID0gbGlzdF9tYWtlMShqc29uYl9z dWJhdHRyX2FueV9wb3NpdGlvbihOSUwpKTsNCisJCQkJaXQgPSBKc29uYkl0ZXJhdG9ySW5pdCgm amItPnJvb3QpOw0KKwkJCQl3aGlsZSAoKHIgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2LCB0 cnVlKSkgIT0gV0pCX0RPTkUpDQorCQkJCXsNCisJCQkJCWlmIChyID09IFdKQl9LRVkpDQorCQkJ CQl7DQorCQkJCQkJU3ViYXR0clBhdGhFbGVtICplID0gcGFsbG9jMF9vYmplY3QoU3ViYXR0clBh dGhFbGVtKTsNCisNCisJCQkJCQllLT5raW5kID0gU1VCQVRUUl9FTEVNX0tFWTsNCisJCQkJCQll LT5rZXkgPSBwbnN0cmR1cCh2LnZhbC5zdHJpbmcudmFsLCB2LnZhbC5zdHJpbmcubGVuKTsNCisJ CQkJCQlyZXEtPnBhdGhzID0gbGFwcGVuZChyZXEtPnBhdGhzLCBsaXN0X21ha2UxKGUpKTsNCisJ CQkJCX0NCisJCQkJfQ0KKwkJCQlicmVhazsNCisJCQl9DQorDQorCQlkZWZhdWx0Og0KKwkJCVBH X1JFVFVSTl9QT0lOVEVSKE5VTEwpOw0KKwl9DQorDQorCVBHX1JFVFVSTl9QT0lOVEVSKHJlcSk7 DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0DQppbmRleCAxZjIxYThlYjZkNC4uMDZlMTRkZjlk ODcgMTAwNjQ0DQotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0DQorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0DQpAQCAtMTA1NDEsMzEgKzEwNTQxLDM1IEBA DQogICBwcm9hcmdkZWZhdWx0cyA9PiAne2ZhbHNlfScsIHByb3NyYyA9PiAnanNvbmJfc3RyaXBf bnVsbHMnIH0sDQogDQogeyBvaWQgPT4gJzM0NzgnLA0KLSAgcHJvbmFtZSA9PiAnanNvbmJfb2Jq ZWN0X2ZpZWxkJywgcHJvcmV0dHlwZSA9PiAnanNvbmInLA0KLSAgcHJvYXJndHlwZXMgPT4gJ2pz b25iIHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbiwgZmllbGRfbmFtZX0nLA0KLSAg cHJvc3JjID0+ICdqc29uYl9vYmplY3RfZmllbGQnIH0sDQorICBwcm9uYW1lID0+ICdqc29uYl9v YmplY3RfZmllbGQnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9zdWJhdHRyX3N1cHBvcnQnLA0KKyAg cHJvcmV0dHlwZSA9PiAnanNvbmInLCBwcm9hcmd0eXBlcyA9PiAnanNvbmIgdGV4dCcsDQorICBw cm9hcmduYW1lcyA9PiAne2Zyb21fanNvbiwgZmllbGRfbmFtZX0nLCBwcm9zcmMgPT4gJ2pzb25i X29iamVjdF9maWVsZCcgfSwNCiB7IG9pZCA9PiAnMzIxNCcsDQotICBwcm9uYW1lID0+ICdqc29u Yl9vYmplY3RfZmllbGRfdGV4dCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLA0KLSAgcHJvYXJndHlw ZXMgPT4gJ2pzb25iIHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbiwgZmllbGRfbmFt ZX0nLA0KKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX3RleHQnLCBwcm9zdXBwb3J0 ID0+ICdqc29uYl9zdWJhdHRyX3N1cHBvcnQnLA0KKyAgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHBy b2FyZ3R5cGVzID0+ICdqc29uYiB0ZXh0JywNCisgIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29u LCBmaWVsZF9uYW1lfScsDQogICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9maWVsZF90ZXh0JyB9 LA0KIHsgb2lkID0+ICczMjE1JywNCi0gIHByb25hbWUgPT4gJ2pzb25iX2FycmF5X2VsZW1lbnQn LCBwcm9yZXR0eXBlID0+ICdqc29uYicsDQotICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgaW50NCcs IHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLCBlbGVtZW50X2luZGV4fScsDQorICBwcm9uYW1l ID0+ICdqc29uYl9hcnJheV9lbGVtZW50JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfc3ViYXR0cl9z dXBwb3J0JywNCisgIHByb3JldHR5cGUgPT4gJ2pzb25iJywgcHJvYXJndHlwZXMgPT4gJ2pzb25i IGludDQnLA0KKyAgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sIGVsZW1lbnRfaW5kZXh9JywN CiAgIHByb3NyYyA9PiAnanNvbmJfYXJyYXlfZWxlbWVudCcgfSwNCiB7IG9pZCA9PiAnMzIxNics DQotICBwcm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X3RleHQnLCBwcm9yZXR0eXBlID0+ ICd0ZXh0JywNCi0gIHByb2FyZ3R5cGVzID0+ICdqc29uYiBpbnQ0JywgcHJvYXJnbmFtZXMgPT4g J3tmcm9tX2pzb24sIGVsZW1lbnRfaW5kZXh9JywNCisgIHByb25hbWUgPT4gJ2pzb25iX2FycmF5 X2VsZW1lbnRfdGV4dCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX3N1YmF0dHJfc3VwcG9ydCcsDQor ICBwcm9yZXR0eXBlID0+ICd0ZXh0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLA0KKyAg cHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sIGVsZW1lbnRfaW5kZXh9JywNCiAgIHByb3NyYyA9 PiAnanNvbmJfYXJyYXlfZWxlbWVudF90ZXh0JyB9LA0KIHsgb2lkID0+ICczMjE3JywgZGVzY3Ig PT4gJ2dldCB2YWx1ZSBmcm9tIGpzb25iIHdpdGggcGF0aCBlbGVtZW50cycsDQotICBwcm9uYW1l ID0+ICdqc29uYl9leHRyYWN0X3BhdGgnLCBwcm92YXJpYWRpYyA9PiAndGV4dCcsIHByb3JldHR5 cGUgPT4gJ2pzb25iJywNCisgIHByb25hbWUgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aCcsIHByb3Zh cmlhZGljID0+ICd0ZXh0JywNCisgIHByb3N1cHBvcnQgPT4gJ2pzb25iX3N1YmF0dHJfc3VwcG9y dCcsIHByb3JldHR5cGUgPT4gJ2pzb25iJywNCiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4 dCcsIHByb2FsbGFyZ3R5cGVzID0+ICd7anNvbmIsX3RleHR9JywNCiAgIHByb2FyZ21vZGVzID0+ ICd7aSx2fScsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLHBhdGhfZWxlbXN9JywNCiAgIHBy b3NyYyA9PiAnanNvbmJfZXh0cmFjdF9wYXRoJyB9LA0KIHsgb2lkID0+ICczOTQwJywgZGVzY3Ig PT4gJ2dldCB2YWx1ZSBmcm9tIGpzb25iIGFzIHRleHQgd2l0aCBwYXRoIGVsZW1lbnRzJywNCiAg IHByb25hbWUgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aF90ZXh0JywgcHJvdmFyaWFkaWMgPT4gJ3Rl eHQnLA0KLSAgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4 dCcsDQotICBwcm9hbGxhcmd0eXBlcyA9PiAne2pzb25iLF90ZXh0fScsIHByb2FyZ21vZGVzID0+ ICd7aSx2fScsDQotICBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixwYXRoX2VsZW1zfScsDQor ICBwcm9zdXBwb3J0ID0+ICdqc29uYl9zdWJhdHRyX3N1cHBvcnQnLCBwcm9yZXR0eXBlID0+ICd0 ZXh0JywNCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCcsIHByb2FsbGFyZ3R5cGVzID0+ ICd7anNvbmIsX3RleHR9JywNCisgIHByb2FyZ21vZGVzID0+ICd7aSx2fScsIHByb2FyZ25hbWVz ID0+ICd7ZnJvbV9qc29uLHBhdGhfZWxlbXN9JywNCiAgIHByb3NyYyA9PiAnanNvbmJfZXh0cmFj dF9wYXRoX3RleHQnIH0sDQogeyBvaWQgPT4gJzMyMTknLCBkZXNjciA9PiAnZWxlbWVudHMgb2Yg YSBqc29uYiBhcnJheScsDQogICBwcm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50cycsIHBy b3Jvd3MgPT4gJzEwMCcsIHByb3JldHNldCA9PiAndCcsDQpAQCAtMTA2OTQsMzggKzEwNjk4LDQ0 IEBADQogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50MiBqc29uYiBpbnQ0IGludGVybmFs IGludGVybmFsIGludGVybmFsJywNCiAgIHByb3NyYyA9PiAnZ2luX3RyaWNvbnNpc3RlbnRfanNv bmJfcGF0aCcgfSwNCiB7IG9pZCA9PiAnMzMwMScsDQotICBwcm9uYW1lID0+ICdqc29uYl9jb25j YXQnLCBwcm9yZXR0eXBlID0+ICdqc29uYicsDQotICBwcm9hcmd0eXBlcyA9PiAnanNvbmIganNv bmInLCBwcm9zcmMgPT4gJ2pzb25iX2NvbmNhdCcgfSwNCisgIHByb25hbWUgPT4gJ2pzb25iX2Nv bmNhdCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX3N1YmF0dHJfc3VwcG9ydCcsDQorICBwcm9yZXR0 eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29uYicsDQorICBwcm9zcmMg PT4gJ2pzb25iX2NvbmNhdCcgfSwNCiB7IG9pZCA9PiAnMzMwMicsDQotICBwcm9uYW1lID0+ICdq c29uYl9kZWxldGUnLCBwcm9yZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ICdqc29u YiB0ZXh0JywNCisgIHByb25hbWUgPT4gJ2pzb25iX2RlbGV0ZScsIHByb3N1cHBvcnQgPT4gJ2pz b25iX3N1YmF0dHJfc3VwcG9ydCcsDQorICBwcm9yZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5 cGVzID0+ICdqc29uYiB0ZXh0JywNCiAgIHByb3NyYyA9PiAnanNvbmJfZGVsZXRlJyB9LA0KIHsg b2lkID0+ICczMzAzJywNCi0gIHByb25hbWUgPT4gJ2pzb25iX2RlbGV0ZScsIHByb3JldHR5cGUg PT4gJ2pzb25iJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLA0KKyAgcHJvbmFtZSA9PiAn anNvbmJfZGVsZXRlJywgcHJvc3VwcG9ydCA9PiAnanNvbmJfc3ViYXR0cl9zdXBwb3J0JywNCisg IHByb3JldHR5cGUgPT4gJ2pzb25iJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLA0KICAg cHJvc3JjID0+ICdqc29uYl9kZWxldGVfaWR4JyB9LA0KIHsgb2lkID0+ICczMzQzJywNCi0gIHBy b25hbWUgPT4gJ2pzb25iX2RlbGV0ZScsIHByb3ZhcmlhZGljID0+ICd0ZXh0JywgcHJvcmV0dHlw ZSA9PiAnanNvbmInLA0KKyAgcHJvbmFtZSA9PiAnanNvbmJfZGVsZXRlJywgcHJvdmFyaWFkaWMg PT4gJ3RleHQnLA0KKyAgcHJvc3VwcG9ydCA9PiAnanNvbmJfc3ViYXR0cl9zdXBwb3J0JywgcHJv cmV0dHlwZSA9PiAnanNvbmInLA0KICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIF90ZXh0JywgcHJv YWxsYXJndHlwZXMgPT4gJ3tqc29uYixfdGV4dH0nLA0KICAgcHJvYXJnbW9kZXMgPT4gJ3tpLHZ9 JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLA0KICAgcHJvc3JjID0+ ICdqc29uYl9kZWxldGVfYXJyYXknIH0sDQogeyBvaWQgPT4gJzMzMDQnLA0KLSAgcHJvbmFtZSA9 PiAnanNvbmJfZGVsZXRlX3BhdGgnLCBwcm9yZXR0eXBlID0+ICdqc29uYicsDQotICBwcm9hcmd0 eXBlcyA9PiAnanNvbmIgX3RleHQnLCBwcm9zcmMgPT4gJ2pzb25iX2RlbGV0ZV9wYXRoJyB9LA0K KyAgcHJvbmFtZSA9PiAnanNvbmJfZGVsZXRlX3BhdGgnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9z dWJhdHRyX3N1cHBvcnQnLA0KKyAgcHJvcmV0dHlwZSA9PiAnanNvbmInLCBwcm9hcmd0eXBlcyA9 PiAnanNvbmIgX3RleHQnLA0KKyAgcHJvc3JjID0+ICdqc29uYl9kZWxldGVfcGF0aCcgfSwNCiB7 IG9pZCA9PiAnNTA1NCcsIGRlc2NyID0+ICdTZXQgcGFydCBvZiBhIGpzb25iLCBoYW5kbGUgTlVM TCB2YWx1ZScsDQotICBwcm9uYW1lID0+ICdqc29uYl9zZXRfbGF4JywgcHJvaXNzdHJpY3QgPT4g J2YnLCBwcm9yZXR0eXBlID0+ICdqc29uYicsDQorICBwcm9uYW1lID0+ICdqc29uYl9zZXRfbGF4 JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfc3ViYXR0cl9zdXBwb3J0JywNCisgIHByb2lzc3RyaWN0 ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnanNvbmInLA0KICAgcHJvYXJndHlwZXMgPT4gJ2pzb25i IF90ZXh0IGpzb25iIGJvb2wgdGV4dCcsDQogICBwcm9hcmduYW1lcyA9PiAne2pzb25iX2luLHBh dGgscmVwbGFjZW1lbnQsY3JlYXRlX2lmX21pc3NpbmcsbnVsbF92YWx1ZV90cmVhdG1lbnR9JywN CiAgIHByb2FyZ2RlZmF1bHRzID0+ICd7dHJ1ZSx1c2VfanNvbl9udWxsfScsIHByb3NyYyA9PiAn anNvbmJfc2V0X2xheCcgfSwNCiB7IG9pZCA9PiAnMzMwNScsIGRlc2NyID0+ICdTZXQgcGFydCBv ZiBhIGpzb25iJywNCi0gIHByb25hbWUgPT4gJ2pzb25iX3NldCcsIHByb3JldHR5cGUgPT4gJ2pz b25iJywNCi0gIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCBqc29uYiBib29sJywNCisgIHBy b25hbWUgPT4gJ2pzb25iX3NldCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX3N1YmF0dHJfc3VwcG9y dCcsDQorICBwcm9yZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4 dCBqc29uYiBib29sJywNCiAgIHByb2FyZ25hbWVzID0+ICd7anNvbmJfaW4scGF0aCxyZXBsYWNl bWVudCxjcmVhdGVfaWZfbWlzc2luZ30nLA0KICAgcHJvYXJnZGVmYXVsdHMgPT4gJ3t0cnVlfScs IHByb3NyYyA9PiAnanNvbmJfc2V0JyB9LA0KIHsgb2lkID0+ICczMzA2JywgZGVzY3IgPT4gJ0lu ZGVudGVkIHRleHQgZnJvbSBqc29uYicsDQogICBwcm9uYW1lID0+ICdqc29uYl9wcmV0dHknLCBw cm9yZXR0eXBlID0+ICd0ZXh0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywNCiAgIHByb3NyYyA9 PiAnanNvbmJfcHJldHR5JyB9LA0KIHsgb2lkID0+ICczNTc5JywgZGVzY3IgPT4gJ0luc2VydCB2 YWx1ZSBpbnRvIGEganNvbmInLA0KLSAgcHJvbmFtZSA9PiAnanNvbmJfaW5zZXJ0JywgcHJvcmV0 dHlwZSA9PiAnanNvbmInLA0KLSAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIF90ZXh0IGpzb25iIGJv b2wnLA0KKyAgcHJvbmFtZSA9PiAnanNvbmJfaW5zZXJ0JywgcHJvc3VwcG9ydCA9PiAnanNvbmJf c3ViYXR0cl9zdXBwb3J0JywNCisgIHByb3JldHR5cGUgPT4gJ2pzb25iJywgcHJvYXJndHlwZXMg PT4gJ2pzb25iIF90ZXh0IGpzb25iIGJvb2wnLA0KICAgcHJvYXJnbmFtZXMgPT4gJ3tqc29uYl9p bixwYXRoLHJlcGxhY2VtZW50LGluc2VydF9hZnRlcn0nLA0KICAgcHJvYXJnZGVmYXVsdHMgPT4g J3tmYWxzZX0nLCBwcm9zcmMgPT4gJ2pzb25iX2luc2VydCcgfSwNCiANCkBAIC0xMjQ2OSw2ICsx MjQ3OSw5IEBADQogICBwcm9uYW1lID0+ICdyYXdfYXJyYXlfc3Vic2NyaXB0X2hhbmRsZXInLCBw cm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsDQogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBw cm9zcmMgPT4gJ3Jhd19hcnJheV9zdWJzY3JpcHRfaGFuZGxlcicgfSwNCiAjIHR5cGUgc3Vic2Ny aXB0aW5nIHN1cHBvcnQNCit7IG9pZCA9PiAnODAwOCcsIGRlc2NyID0+ICdzdXBwb3J0IGZvciBq c29uYiBhY2Nlc3NvcnMgYW5kIG1vZGlmaWVycycsDQorICBwcm9uYW1lID0+ICdqc29uYl9zdWJh dHRyX3N1cHBvcnQnLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsDQorICBwcm9hcmd0eXBlcyA9 PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2pzb25iX3N1YmF0dHJfc3VwcG9ydCcgfSwNCiB7IG9p ZCA9PiAnNjA5OCcsIGRlc2NyID0+ICdqc29uYiBzdWJzY3JpcHRpbmcgbG9naWMnLA0KICAgcHJv bmFtZSA9PiAnanNvbmJfc3Vic2NyaXB0X2hhbmRsZXInLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5h bCcsDQogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2pzb25iX3N1YnNj cmlwdF9oYW5kbGVyJyB9LA0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNT dWJhdHRyLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjU3ViYXR0ci5oDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjYxYzBmYjU4NDA0DQotLS0gL2Rldi9udWxs DQorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjU3ViYXR0ci5oDQpAQCAtMCwwICsxLDIy IEBADQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICoNCisgKiBleGVjU3ViYXR0ci5oDQorICoJICBQ cm92ZSB0aGF0IGFuIFVQREFURSBjYW5ub3QgY2hhbmdlIHdoYXQgYW4gaW5kZXggcmVhZHMgb2Yg YSBjb2x1bW4uDQorICoNCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXANCisgKg0KKyAqIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNTdWJhdHRyLmgNCisgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAqLw0KKyNp Zm5kZWYgRVhFQ1NVQkFUVFJfSA0KKyNkZWZpbmUgRVhFQ1NVQkFUVFJfSA0KKw0KKyNpbmNsdWRl ICJub2Rlcy9leGVjbm9kZXMuaCINCisNCitleHRlcm4gQml0bWFwc2V0ICpFeGVjU3ViYXR0clBy b3ZlVW50b3VjaGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sDQorCQkJCQkJCQkJCQlO b2RlICpzZXRleHByLCBpbnQgdmFybm8sDQorCQkJCQkJCQkJCQlBdHRyTnVtYmVyIGF0dG51bSwN CisJCQkJCQkJCQkJCVBhcmFtTGlzdEluZm8gcGFyYW1zKTsNCisNCisjZW5kaWYJCQkJCQkJLyog RVhFQ1NVQkFUVFJfSCAqLw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgNCmluZGV4IDIyMGFhYThiOTY1Li43 MTY2NjhjNWFhZCAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oDQor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaA0KQEAgLTUxMCw2ICs1MTAsMTggQEAg dHlwZWRlZiBzdHJ1Y3QgUmVzdWx0UmVsSW5mbw0KIAkgKi8NCiAJQml0bWFwc2V0ICoqcmlfSW5k ZXhFeHByQXR0cnM7DQogDQorCS8qDQorCSAqIEZvciBVUERBVEUsIHBlciBpbmRleCwgdGhlIHRh YmxlIGF0dHJpYnV0ZXMgKG9mZnNldCBhcyBhYm92ZSkgdGhhdCB0aGUNCisJICogc3RhdGVtZW50 J3MgU0VUIGV4cHJlc3Npb25zIHByb3ZhYmx5IGNhbm5vdCBjaGFuZ2UgYW55IHBhcnQgb2YgdGhh dCB0aGUNCisJICogaW5kZXggcmVhZHMsIGFzIGxvbmcgYXMgdGhlIGF0dHJpYnV0ZSBpcyBub3Qg bnVsbCBiZWZvcmUgb3IgYWZ0ZXIuDQorCSAqIFdvcmtlZCBvdXQgd2hlbiByaV9VcGRhdGVDb3Vu dCwgd2hpY2ggY291bnRzIHVwZGF0ZWQgcm93cyB1cCB0byB0aGVuLA0KKwkgKiByZWFjaGVzIDI7 IE5VTEwgaWYgbm90aGluZyB3YXMgcHJvdmVuLiAgSXQgaG9sZHMgZm9yIHRoZSB3aG9sZQ0KKwkg KiBzdGF0ZW1lbnQsIGFjcm9zcyByZXNjYW5zOiBpdCBkZXBlbmRzIG9ubHkgb24gdGhlIHBsYW4g YW5kIG9uIFBhcmFtcw0KKwkgKiB3aG9zZSB2YWx1ZXMgYXJlIGZpeGVkIGZvciB0aGUgZXhlY3V0 aW9uLg0KKwkgKi8NCisJQml0bWFwc2V0ICoqcmlfSW5kZXhVbnRvdWNoZWRBdHRyczsNCisJaW50 CQkJcmlfVXBkYXRlQ291bnQ7DQorDQogCS8qDQogCSAqIEZvciBVUERBVEUvREVMRVRFL01FUkdF IHJlc3VsdCByZWxhdGlvbnMsIHRoZSBhdHRyaWJ1dGUgbnVtYmVyIG9mIHRoZQ0KIAkgKiByb3cg aWRlbnRpdHkganVuayBhdHRyaWJ1dGUgaW4gdGhlIHNvdXJjZSBwbGFuJ3Mgb3V0cHV0IHR1cGxl cw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3N1cHBvcnRub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvc3VwcG9ydG5vZGVzLmgNCmluZGV4IDEzMmEyYmNkOGFmLi43NzlkNjVjOGJj ZSAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3N1cHBvcnRub2Rlcy5oDQorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9zdXBwb3J0bm9kZXMuaA0KQEAgLTQ0NSw0ICs0NDUsNzggQEAgdHlw ZWRlZiBzdHJ1Y3QgU3VwcG9ydFJlcXVlc3RNb2RpZnlJblBsYWNlDQogCWludAkJCXBhcmFtaWQ7 CQkvKiBJRCBvZiBQYXJhbShzKSByZXByZXNlbnRpbmcgdmFyaWFibGUgKi8NCiB9IFN1cHBvcnRS ZXF1ZXN0TW9kaWZ5SW5QbGFjZTsNCiANCisvKg0KKyAqIFRoZSBTdXBwb3J0UmVxdWVzdFN1YmF0 dHIgcmVxdWVzdCBsZXRzIHRoZSBleGVjdXRvciBsZWFybiwgd2l0aG91dCBydW5uaW5nDQorICog YW55dGhpbmcsIHdoaWNoIHBhcnRzIG9mIGEgc3RydWN0dXJlZCB2YWx1ZSAoYSBqc29uYiBkb2N1 bWVudCwgYW4gYXJyYXksDQorICogYW4gZXh0ZW5zaW9uJ3Mgb3duIGRvY3VtZW50IHR5cGUpIGEg ZnVuY3Rpb24gY2FsbCByZWFkcyBvciBtYXkgY2hhbmdlLg0KKyAqIFRoZSBleGVjdXRvciB1c2Vz IHRoZSBhbnN3ZXJzIHRvIHNraXAgd29yayB3aGVuIGFuIFVQREFURSBjYW5ub3QgY2hhbmdlDQor ICogd2hhdCBhbiBpbmRleCBzdG9yZXMuICBBIHdyb25nIGFuc3dlciBjYW4gbGVhdmUgYW4gaW5k ZXggd2l0aG91dCBhbiBlbnRyeQ0KKyAqIGZvciBhIHJvdywgc28gYSBzdXBwb3J0IGZ1bmN0aW9u IG11c3QgYW5zd2VyIG9ubHkgd2hhdCBpdCBjYW4gZ3VhcmFudGVlLA0KKyAqIGFuZCBvdGhlcndp c2UgZGVjbGluZSBieSByZXR1cm5pbmcgTlVMTC4NCisgKg0KKyAqIEEgcGFydCBpcyBuYW1lZCBi eSBhIHBhdGg6IGEgTGlzdCBvZiBTdWJhdHRyUGF0aEVsZW0sIGZyb20gdGhlIG91dGVybW9zdA0K KyAqIGxldmVsIGluLiAgQW4gZW1wdHkgcGF0aCAoTklMKSBuYW1lcyB0aGUgd2hvbGUgdmFsdWUu DQorICoNCisgKiBUaGUgc3VwcG9ydCBmdW5jdGlvbiBzZXRzICJzb3VyY2UiIHRvIHRoZSBpbmRl eCBpbiAiYXJncyIgb2YgdGhlIGFyZ3VtZW50DQorICogdGhlIGNhbGwgcmVhZHMgKFNVQkFUVFJf UkVBRCkgb3IgY29waWVzIGZyb20gKFNVQkFUVFJfTU9ESUZZKS4gIEl0IG1heQ0KKyAqIHJlbHkg b24gdGhlIHZhbHVlcyBvZiBvdGhlciBhcmd1bWVudHMgb25seSBpZiB0aGV5IGFyZSBDb25zdHM7 IHRoZQ0KKyAqIGV4ZWN1dG9yIHJlcGxhY2VzIGV4dGVybmFsIFBhcmFtcyBieSBDb25zdHMgaG9s ZGluZyB0aGVpciB2YWx1ZXMgYmVmb3JlDQorICogYXNraW5nLiAgSWYgdGhlIGFuc3dlciBkZXBl bmRzIG9uIGFueXRoaW5nIGVsc2UsIGRlY2xpbmUuDQorICoNCisgKiBTVUJBVFRSX1JFQUQ6IHRo ZSBjYWxsJ3MgcmVzdWx0IGlzIGNvbXB1dGVkIG9ubHkgZnJvbSB0aGUgcGFydHMgb2YNCisgKiBh cmdzW3NvdXJjZV0gbmFtZWQgaW4gInBhdGhzIiwgYW5kIGZyb20gaXRzIG90aGVyIGFyZ3VtZW50 cy4gIEEgY2FsbCBtYXkNCisgKiBuYW1lIHNldmVyYWwgcGF0aHMuICBTZXQgInN1YnZhbHVlIiBp ZiB0aGUgY2FsbCBoYXMgYSBzaW5nbGUgcGF0aCBhbmQNCisgKiByZXR1cm5zIGV4YWN0bHkgdGhl IHBhcnQgdGhhdCBwYXRoIG5hbWVzLCBhcyBhIHZhbHVlIG9mIGEgdHlwZSB3aG9zZSBwYXJ0cw0K KyAqIGFyZSBuYW1lZCB0aGUgc2FtZSB3YXkgKGpzb25iJ3MgLT4gZG9lczsgLT4+IHJldHVybnMg dGV4dCBhbmQgZG9lcyBub3QpLA0KKyAqIHNvIHRoYXQgcmVhZGluZyBhIHBhcnQgb2YgdGhlIHJl c3VsdCByZWFkcyB0aGUgcGFydCBhdCB0aGUgY29tYmluZWQgcGF0aC4NCisgKg0KKyAqIFNVQkFU VFJfTU9ESUZZOiB0aGUgY2FsbCByZXR1cm5zIGFyZ3Nbc291cmNlXSBjaGFuZ2VkIGF0IG1vc3Qg YXQgdGhlDQorICogcGFydHMgbmFtZWQgaW4gInBhdGhzIjogZXZlcnkgb3RoZXIgcGFydCByZWFk cyB0aGUgc2FtZSwgYnl0ZSBmb3IgYnl0ZSwNCisgKiB0aHJvdWdoIGFueSBTVUJBVFRSX1JFQUQg Y2FsbC4gIEEgY2hhbmdlIHRoYXQgbW92ZXMgb3RoZXIgcGFydHMsIGFzDQorICogaW5zZXJ0aW5n IGludG8gb3IgZGVsZXRpbmcgZnJvbSBhbiBhcnJheSBtb3ZlcyBsYXRlciBlbGVtZW50cywgbXVz dCBuYW1lDQorICogdGhlbTogU1VCQVRUUl9FTEVNX0FOWV9QT1NJVElPTiBuYW1lcyBldmVyeSBl bGVtZW50IG9mIGFuIGFycmF5LiAgSWYgdGhlDQorICogc291cmNlIGFyZ3VtZW50IGlzIG51bGws IG9yIHRoZSByZXN1bHQgaXMgbnVsbCwgdGhlIGV4ZWN1dG9yIGRvZXMgbm90DQorICogcmVseSBv biB0aGUgYW5zd2VyLg0KKyAqDQorICogVHdvIHBhdGhzIGFyZSB0YWtlbiB0byBuYW1lIG92ZXJs YXBwaW5nIHBhcnRzIHVubGVzcywgYXQgc29tZSBkZXB0aCwgYm90aA0KKyAqIGhhdmUgYW4gZWxl bWVudCBhbmQgdGhvc2UgZWxlbWVudHMgY2Fubm90IG5hbWUgdGhlIHNhbWUgcGFydDogdHdvDQor ICogZGlmZmVyZW50IGtleXMgdGhhdCBkbyBub3QgYm90aCByZWFkIGFzIGludGVnZXJzICgiMSIg YW5kICIwMSIgbWF5IG5hbWUNCisgKiB0aGUgc2FtZSBhcnJheSBlbGVtZW50KSwgdHdvIGRpZmZl cmVudCBwb3NpdGlvbnMsIG9yIGEgcG9zaXRpb24gb3INCisgKiBTVUJBVFRSX0VMRU1fQU5ZX1BP U0lUSU9OIGFnYWluc3QgYSBrZXkgdGhhdCBkb2VzIG5vdCByZWFkIGFzIGFuIGludGVnZXIuDQor ICogQSBwYXRoIG92ZXJsYXBzIGV2ZXJ5IHBhdGggaXQgaXMgYSBwcmVmaXggb2YuDQorICovDQor dHlwZWRlZiBlbnVtIFN1YmF0dHJQYXRoRWxlbUtpbmQNCit7DQorCVNVQkFUVFJfRUxFTV9LRVks CQkJLyogb2JqZWN0IG1lbWJlciBieSBuYW1lICovDQorCVNVQkFUVFJfRUxFTV9QT1NJVElPTiwJ CS8qIGFycmF5IGVsZW1lbnQgYnkgcG9zaXRpb24gKi8NCisJU1VCQVRUUl9FTEVNX0FOWV9QT1NJ VElPTiwJLyogYW55IGFycmF5IGVsZW1lbnQgKi8NCit9IFN1YmF0dHJQYXRoRWxlbUtpbmQ7DQor DQordHlwZWRlZiBzdHJ1Y3QgU3ViYXR0clBhdGhFbGVtDQorew0KKwlTdWJhdHRyUGF0aEVsZW1L aW5kIGtpbmQ7DQorCWNoYXIJICAgKmtleTsJCQkvKiBTVUJBVFRSX0VMRU1fS0VZOiBudWxsLXRl cm1pbmF0ZWQgbmFtZSAqLw0KKwlpbnQJCQlwb3NpdGlvbjsJCS8qIFNVQkFUVFJfRUxFTV9QT1NJ VElPTiAqLw0KK30gU3ViYXR0clBhdGhFbGVtOw0KKw0KK3R5cGVkZWYgZW51bSBTdWJhdHRyUmVx dWVzdEtpbmQNCit7DQorCVNVQkFUVFJfUkVBRCwNCisJU1VCQVRUUl9NT0RJRlksDQorfSBTdWJh dHRyUmVxdWVzdEtpbmQ7DQorDQordHlwZWRlZiBzdHJ1Y3QgU3VwcG9ydFJlcXVlc3RTdWJhdHRy DQorew0KKwlOb2RlVGFnCQl0eXBlOw0KKw0KKwlTdWJhdHRyUmVxdWVzdEtpbmQga2luZDsJLyog d2hhdCB0aGUgZXhlY3V0b3IgYXNrcyAqLw0KKwlPaWQJCQlmdW5jaWQ7CQkJLyogUEdfUFJPQyBP SUQgb2YgdGhlIHRhcmdldCBmdW5jdGlvbiAqLw0KKwlMaXN0CSAgICphcmdzOwkJCS8qIGFyZ3Vt ZW50cyB0byB0aGUgZnVuY3Rpb24gKi8NCisNCisJLyogU2V0IGJ5IHRoZSBzdXBwb3J0IGZ1bmN0 aW9uIGJlZm9yZSByZXR1cm5pbmcgdGhlIHJlcXVlc3Q6ICovDQorCWludAkJCXNvdXJjZTsJCQkv KiBpbmRleCBpbnRvIGFyZ3Mgb2YgdGhlIHZhbHVlIHJlYWQvY29waWVkICovDQorCUxpc3QJICAg KnBhdGhzOwkJCS8qIExpc3Qgb2YgTGlzdCBvZiBTdWJhdHRyUGF0aEVsZW0gKi8NCisJYm9vbAkJ c3VidmFsdWU7CQkvKiBTVUJBVFRSX1JFQUQ6IHJldHVybnMgdGhlIHBhcnQgYXQgcGF0aHMgKi8N Cit9IFN1cHBvcnRSZXF1ZXN0U3ViYXR0cjsNCisNCiAjZW5kaWYJCQkJCQkJLyogU1VQUE9SVE5P REVTX0ggKi8NCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvdXBkYXRl LXN1YmF0dHItZXBxLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC91cGRhdGUtc3Vi YXR0ci1lcHEub3V0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmQ1 NGUyNjZlNDBlDQotLS0gL2Rldi9udWxsDQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0 ZWQvdXBkYXRlLXN1YmF0dHItZXBxLm91dA0KQEAgLTAsMCArMSw2NSBAQA0KK1BhcnNlZCB0ZXN0 IHNwZWMgd2l0aCAyIHNlc3Npb25zDQorDQorc3RhcnRpbmcgcGVybXV0YXRpb246IHMyX2JlZ2lu IHMyX3N0YXR1cyBzMV9uIHMyX2NvbW1pdCBzMV9jaGVjaw0KK3N0ZXAgczJfYmVnaW46IEJFR0lO Ow0KK3N0ZXAgczJfc3RhdHVzOiBVUERBVEUgc3ViYXR0cl9lcHEgU0VUIGRvYyA9IGpzb25iX3Nl dChkb2MsIEFSUkFZWydzdGF0dXMnXSwgdG9fanNvbmIoJ2InOjp0ZXh0KSkgV0hFUkUgaWQgPSAy Ow0KK3N0ZXAgczFfbjogVVBEQVRFIHN1YmF0dHJfZXBxIFNFVCBkb2MgPSBqc29uYl9zZXQoZG9j LCBBUlJBWVsnbiddLCAnMScpOyA8d2FpdGluZyAuLi4+DQorc3RlcCBzMl9jb21taXQ6IENPTU1J VDsNCitzdGVwIHMxX246IDwuLi4gY29tcGxldGVkPg0KK3N0ZXAgczFfY2hlY2s6IA0KKwlTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorCVNFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsNCisJ U0VMRUNUIGlkIEZST00gc3ViYXR0cl9lcHEgV0hFUkUgZG9jLT4+J3N0YXR1cycgPSAnYic7DQor CVNFTEVDVCBpZCBGUk9NIHN1YmF0dHJfZXBxIFdIRVJFIChkb2MtPj4ndmlwJykgPSAneWVzJyBB TkQgaWQgSU4gKDEsIDIpOw0KKwlSRVNFVCBlbmFibGVfc2Vxc2NhbjsNCisJUkVTRVQgZW5hYmxl X2JpdG1hcHNjYW47DQorCVNFTEVDVCBpZCwgZG9jIEZST00gc3ViYXR0cl9lcHEgT1JERVIgQlkg aWQ7DQorDQoraWQNCistLQ0KKyAyDQorKDEgcm93KQ0KKw0KK2lkDQorLS0NCisgMQ0KKyAyDQor KDIgcm93cykNCisNCitpZHxkb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQor LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAxfHsibiI6IDEsICJ2 aXAiOiAieWVzIiwgInN0YXR1cyI6ICJhIn0NCisgMnx7Im4iOiAxLCAidmlwIjogInllcyIsICJz dGF0dXMiOiAiYiJ9DQorKDIgcm93cykNCisNCisNCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJf YmVnaW4gczJfdmlwIHMxX24gczJfY29tbWl0IHMxX2NoZWNrDQorc3RlcCBzMl9iZWdpbjogQkVH SU47DQorc3RlcCBzMl92aXA6IFVQREFURSBzdWJhdHRyX2VwcSBTRVQgZG9jID0ganNvbmJfc2V0 KGRvYywgQVJSQVlbJ3ZpcCddLCB0b19qc29uYignbm8nOjp0ZXh0KSkgV0hFUkUgaWQgPSAyOw0K K3N0ZXAgczFfbjogVVBEQVRFIHN1YmF0dHJfZXBxIFNFVCBkb2MgPSBqc29uYl9zZXQoZG9jLCBB UlJBWVsnbiddLCAnMScpOyA8d2FpdGluZyAuLi4+DQorc3RlcCBzMl9jb21taXQ6IENPTU1JVDsN CitzdGVwIHMxX246IDwuLi4gY29tcGxldGVkPg0KK3N0ZXAgczFfY2hlY2s6IA0KKwlTRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7DQorCVNFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsNCisJU0VM RUNUIGlkIEZST00gc3ViYXR0cl9lcHEgV0hFUkUgZG9jLT4+J3N0YXR1cycgPSAnYic7DQorCVNF TEVDVCBpZCBGUk9NIHN1YmF0dHJfZXBxIFdIRVJFIChkb2MtPj4ndmlwJykgPSAneWVzJyBBTkQg aWQgSU4gKDEsIDIpOw0KKwlSRVNFVCBlbmFibGVfc2Vxc2NhbjsNCisJUkVTRVQgZW5hYmxlX2Jp dG1hcHNjYW47DQorCVNFTEVDVCBpZCwgZG9jIEZST00gc3ViYXR0cl9lcHEgT1JERVIgQlkgaWQ7 DQorDQoraWQNCistLQ0KKygwIHJvd3MpDQorDQoraWQNCistLQ0KKyAxDQorKDEgcm93KQ0KKw0K K2lkfGRvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCistLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIDF8eyJuIjogMSwgInZpcCI6ICJ5ZXMiLCAi c3RhdHVzIjogImEifQ0KKyAyfHsibiI6IDEsICJ2aXAiOiAibm8iLCAic3RhdHVzIjogImEifSAN CisoMiByb3dzKQ0KKw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlDQppbmRleCAy ZTk5Y2EwNDMwNS4uYjc2YTg4NGQ2NDYgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9uX3NjaGVkdWxlDQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3Nj aGVkdWxlDQpAQCAtNDQsNiArNDQsNyBAQCB0ZXN0OiBzdWJ4aWQtb3ZlcmZsb3cNCiB0ZXN0OiBl dmFsLXBsYW4tcXVhbA0KIHRlc3Q6IGV2YWwtcGxhbi1xdWFsLXRyaWdnZXINCiB0ZXN0OiB1cGRh dGUtZXBxLWluZGV4ZXMNCit0ZXN0OiB1cGRhdGUtc3ViYXR0ci1lcHENCiB0ZXN0OiBldmFsLXBs YW4tcXVhbC1wYXJ0aXRpb24tcHJ1bmUNCiB0ZXN0OiBpbnBsYWNlLWludmFsDQogdGVzdDogaW50 cmEtZ3JhbnQtaW5wbGFjZQ0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy91 cGRhdGUtc3ViYXR0ci1lcHEuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy91cGRhdGUt c3ViYXR0ci1lcHEuc3BlYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAw Li5jNjExYzJjYWQ0NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3VwZGF0ZS1zdWJhdHRyLWVwcS5zcGVjDQpAQCAtMCwwICsxLDQ0IEBADQorIyBBbiBVUERB VEUgd2hvc2UgU0VUIGNsYXVzZSBjYW5ub3QgY2hhbmdlIHdoYXQgYW4gaW5kZXggcmVhZHMsIHdh aXRpbmcgb24NCisjIGEgY29uY3VycmVudCBVUERBVEUgdGhhdCBkb2VzIGNoYW5nZSBpdC4gIFRo ZSB3YWl0aW5nIFVQREFURSByZWNvbXB1dGVzDQorIyBpdHMgbmV3IHJvdyBmcm9tIHRoZSB2ZXJz aW9uIHRoZSBvdGhlciBvbmUgd3JvdGUsIGFuZCBtdXN0IGxlYXZlIHRoZQ0KKyMgaW5kZXggZW50 cnkgZm9yIHRoYXQgdmVyc2lvbiBpbiBwbGFjZS4gIFRoZSB3YWl0aW5nIHJvdyBpcyB0aGUgc2Vj b25kDQorIyByb3cgb2YgdGhlIFVQREFURSwgc28gdGhhdCB0aGUgY29uY2x1c2lvbiBkcmF3biBm cm9tIHRoZSBTRVQgY2xhdXNlIGlzDQorIyB1c2VkIGZvciBpdC4NCisNCitzZXR1cA0KK3sNCisJ Q1JFQVRFIFRBQkxFIHN1YmF0dHJfZXBxIChpZCBpbnQgUFJJTUFSWSBLRVksIGRvYyBqc29uYikN CisJCVdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorCUNSRUFURSBJTkRFWCBzdWJhdHRyX2VwcV9z dGF0dXMgT04gc3ViYXR0cl9lcHEgKChkb2MtPj4nc3RhdHVzJykpOw0KKwlDUkVBVEUgSU5ERVgg c3ViYXR0cl9lcHFfdmlwIE9OIHN1YmF0dHJfZXBxIChpZCkgV0hFUkUgKGRvYy0+Pid2aXAnKSA9 ICd5ZXMnOw0KKwlJTlNFUlQgSU5UTyBzdWJhdHRyX2VwcQ0KKwkJU0VMRUNUIGcsIGpzb25iX2J1 aWxkX29iamVjdCgnc3RhdHVzJywgJ2EnLCAndmlwJywgJ3llcycsICduJywgMCkNCisJCUZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIpIGc7DQorfQ0KKw0KK3RlYXJkb3duDQorew0KKwlEUk9QIFRB QkxFIHN1YmF0dHJfZXBxOw0KK30NCisNCitzZXNzaW9uIHMxDQorc3RlcCBzMV9uCQl7IFVQREFU RSBzdWJhdHRyX2VwcSBTRVQgZG9jID0ganNvbmJfc2V0KGRvYywgQVJSQVlbJ24nXSwgJzEnKTsg fQ0KK3N0ZXAgczFfY2hlY2sNCit7DQorCVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCisJU0VU IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOw0KKwlTRUxFQ1QgaWQgRlJPTSBzdWJhdHRyX2VwcSBX SEVSRSBkb2MtPj4nc3RhdHVzJyA9ICdiJzsNCisJU0VMRUNUIGlkIEZST00gc3ViYXR0cl9lcHEg V0hFUkUgKGRvYy0+Pid2aXAnKSA9ICd5ZXMnIEFORCBpZCBJTiAoMSwgMik7DQorCVJFU0VUIGVu YWJsZV9zZXFzY2FuOw0KKwlSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsNCisJU0VMRUNUIGlkLCBk b2MgRlJPTSBzdWJhdHRyX2VwcSBPUkRFUiBCWSBpZDsNCit9DQorDQorc2Vzc2lvbiBzMg0KK3N0 ZXAgczJfYmVnaW4JeyBCRUdJTjsgfQ0KK3N0ZXAgczJfc3RhdHVzCXsgVVBEQVRFIHN1YmF0dHJf ZXBxIFNFVCBkb2MgPSBqc29uYl9zZXQoZG9jLCBBUlJBWVsnc3RhdHVzJ10sIHRvX2pzb25iKCdi Jzo6dGV4dCkpIFdIRVJFIGlkID0gMjsgfQ0KK3N0ZXAgczJfdmlwCQl7IFVQREFURSBzdWJhdHRy X2VwcSBTRVQgZG9jID0ganNvbmJfc2V0KGRvYywgQVJSQVlbJ3ZpcCddLCB0b19qc29uYignbm8n Ojp0ZXh0KSkgV0hFUkUgaWQgPSAyOyB9DQorc3RlcCBzMl9jb21taXQJeyBDT01NSVQ7IH0NCisN CitwZXJtdXRhdGlvbiBzMl9iZWdpbiBzMl9zdGF0dXMgczFfbiBzMl9jb21taXQgczFfY2hlY2sN CitwZXJtdXRhdGlvbiBzMl9iZWdpbiBzMl92aXAgczFfbiBzMl9jb21taXQgczFfY2hlY2sNCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0DQppbmRleCAzNWQ2 ZWUyY2U5ZS4uMjkxYjMxN2NjZjAgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL21pc2NfZnVuY3Rpb25zLm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9t aXNjX2Z1bmN0aW9ucy5vdXQNCkBAIC02MzEsNiArNjMxLDc0IEBAIFNFTEVDVCAqIEZST00gdGVu azEgYSBKT0lOIG15X2dlbl9zZXJpZXMoMSwxMCkgZyBPTiBhLnVuaXF1ZTEgPSBnOw0KICAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gZy5nKQ0KICg0IHJvd3MpDQogDQorLS0NCistLSBU ZXN0IFN1cHBvcnRSZXF1ZXN0U3ViYXR0ciB3aXRoIGEgZnVuY3Rpb24gdGhhdCByZWFkcyB0d28g cGFydHMgb2YgYQ0KKy0tIGRvY3VtZW50LiAgQW4gVVBEQVRFIHRoYXQgY2hhbmdlcyBuZWl0aGVy IG5lZWQgbm90IGV2YWx1YXRlIGFuIGluZGV4IG9uDQorLS0gaXQ7IG9uZSB0aGF0IGNoYW5nZXMg ZWl0aGVyIG11c3QsIGFuZCBtdXN0IGdpdmUgdGhlIGluZGV4IGEgbmV3IGVudHJ5Lg0KKy0tIE9u bHkgYXNzZXJ0LWVuYWJsZWQgYnVpbGRzIGNoZWNrIHRoYXQgbm8gaW5kZXggc2tpcHBlZCB0aGlz IHdheSBjaGFuZ2VzOw0KKy0tIGFtY2hlY2sncyBjaGVja19zdWJhdHRyIHRlc3Qgc2hvd3MgdGhl IHNraXBzLCBhdCBERUJVRzEuDQorLS0NCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9zdWJhdHRyX3N1 cHBvcnQoaW50ZXJuYWwpDQorICAgIFJFVFVSTlMgaW50ZXJuYWwNCisgICAgQVMgOidyZWdyZXNz bGliJywgJ3Rlc3Rfc3ViYXR0cl9zdXBwb3J0Jw0KKyAgICBMQU5HVUFHRSBDIFNUUklDVDsNCist LSAocGxwZ3NxbCwgc28gdGhhdCBpdCBpcyBub3QgaW5saW5lZCBhbmQgdGhlIHN1cHBvcnQgZnVu Y3Rpb24gaXMgYXNrZWQpDQorQ1JFQVRFIEZVTkNUSU9OIHR3b19rZXlzKGpzb25iLCB0ZXh0LCB0 ZXh0KSBSRVRVUk5TIHRleHQNCisgICAgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNU DQorICAgIEFTICQkIEJFR0lOIFJFVFVSTiAoJDEtPj4kMikgfHwgJy8nIHx8ICgkMS0+PiQzKTsg RU5EICQkDQorICAgIFNVUFBPUlQgdGVzdF9zdWJhdHRyX3N1cHBvcnQ7DQorQ1JFQVRFIFRBQkxF IHN1YmF0dHJfdHdvIChpZCBpbnQsIGQganNvbmIpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQor Q1JFQVRFIElOREVYIHN1YmF0dHJfdHdvX2lkeCBPTiBzdWJhdHRyX3R3byAodHdvX2tleXMoZCwg J2EnLCAnYicpKTsNCitJTlNFUlQgSU5UTyBzdWJhdHRyX3R3byBTRUxFQ1QgZywganNvbmJfYnVp bGRfb2JqZWN0KCdhJywgZywgJ2InLCBnLCAnYycsIGcpDQorICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyKSBnOw0KK0JFR0lOOw0KK1VQREFURSBzdWJhdHRyX3R3byBTRVQgZCA9IGpzb25iX3Nl dChkLCAne2N9JywgJzAnKTsNCistLSBib3RoIHJvd3MgSE9UOiB0aGUgaW5kZXgncyB2YWx1ZSBk aWRuJ3QgY2hhbmdlDQorU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdzdWJhdHRyX3R3byc6OnJlZ2NsYXNzKSBBUyBob3Q7DQorIGhvdCANCistLS0tLQ0KKyAgIDIN CisoMSByb3cpDQorDQorVVBEQVRFIHN1YmF0dHJfdHdvIFNFVCBkID0ganNvbmJfc2V0KGQsICd7 Yn0nLCAnMCcpOw0KKy0tIHN0aWxsIDI6IG5laXRoZXIgcm93IEhPVCwgdGhlIGluZGV4IG5lZWRz IG5ldyBlbnRyaWVzDQorU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdzdWJhdHRyX3R3byc6OnJlZ2NsYXNzKSBBUyBob3Q7DQorIGhvdCANCistLS0tLQ0KKyAgIDIN CisoMSByb3cpDQorDQorQ09NTUlUOw0KKy0tIHRocm91Z2ggdGhlIGluZGV4LCB3aGljaCBoYXMg bm8gZW50cnkgZm9yICcyLzAnIHVubGVzcyB0aGUgc2Vjb25kDQorLS0gdXBkYXRlIG1hZGUgb25l DQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0KK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9m ZjsNCitFWFBMQUlOIChDT1NUUyBPRkYpDQorU0VMRUNUIGlkIEZST00gc3ViYXR0cl90d28gV0hF UkUgdHdvX2tleXMoZCwgJ2EnLCAnYicpID0gJzIvMCc7DQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K KyBJbmRleCBTY2FuIHVzaW5nIHN1YmF0dHJfdHdvX2lkeCBvbiBzdWJhdHRyX3R3bw0KKyAgIElu ZGV4IENvbmQ6ICh0d29fa2V5cyhkLCAnYSc6OnRleHQsICdiJzo6dGV4dCkgPSAnMi8wJzo6dGV4 dCkNCisoMiByb3dzKQ0KKw0KK1NFTEVDVCBpZCBGUk9NIHN1YmF0dHJfdHdvIFdIRVJFIHR3b19r ZXlzKGQsICdhJywgJ2InKSA9ICcyLzAnOw0KKyBpZCANCistLS0tDQorICAyDQorKDEgcm93KQ0K Kw0KK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOw0KK1JFU0VUIGVuYWJsZV9zZXFzY2FuOw0KK1NF TEVDVCBpZCwgdHdvX2tleXMoZCwgJ2EnLCAnYicpIEZST00gc3ViYXR0cl90d28gT1JERVIgQlkg aWQ7DQorIGlkIHwgdHdvX2tleXMgDQorLS0tLSstLS0tLS0tLS0tDQorICAxIHwgMS8wDQorICAy IHwgMi8wDQorKDIgcm93cykNCisNCitEUk9QIFRBQkxFIHN1YmF0dHJfdHdvOw0KK0RST1AgRlVO Q1RJT04gdHdvX2tleXM7DQorRFJPUCBGVU5DVElPTiB0ZXN0X3N1YmF0dHJfc3VwcG9ydDsNCiAt LQ0KIC0tIFRlc3QgU3VwcG9ydFJlcXVlc3RJbmxpbmVJbkZyb20gcmVxdWVzdA0KIC0tDQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMgYi9zcmMvdGVzdC9yZWdyZXNzL3Jl Z3Jlc3MuYw0KaW5kZXggM2RlYjRlZDcyMDMuLjA2MGFjOTU0NGE1IDEwMDY0NA0KLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5j DQpAQCAtNzUwLDYgKzc1MCw0NCBAQCBpc19jYXRhbG9nX3RleHRfdW5pcXVlX2luZGV4X29pZChQ R19GVU5DVElPTl9BUkdTKQ0KIAlyZXR1cm4gQm9vbEdldERhdHVtKElzQ2F0YWxvZ1RleHRVbmlx dWVJbmRleE9pZChQR19HRVRBUkdfT0lEKDApKSk7DQogfQ0KIA0KKy8qDQorICogdGVzdF9zdWJh dHRyX3N1cHBvcnQ6IFN1cHBvcnRSZXF1ZXN0U3ViYXR0ciBmb3IgYSBmdW5jdGlvbiBvZg0KKyAq IChqc29uYiwgdGV4dCwgdGV4dCkgdGhhdCByZWFkcyB0aGUgdHdvIHRvcC1sZXZlbCBrZXlzIGl0 cyBjb25zdGFudA0KKyAqIGFyZ3VtZW50cyBuYW1lLCBhbmQgcmV0dXJucyBzb21ldGhpbmcgdGhh dCBpcyBub3QgYSBwYXJ0IG9mIHRoZSBkb2N1bWVudA0KKyAqIChzbyBzdWJ2YWx1ZSBpcyBmYWxz ZSkuDQorICovDQorUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X3N1YmF0dHJfc3VwcG9ydCk7DQor RGF0dW0NCit0ZXN0X3N1YmF0dHJfc3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQ0KK3sNCisJTm9k ZQkgICAqcmF3cmVxID0gKE5vZGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7DQorCVN1cHBvcnRS ZXF1ZXN0U3ViYXR0ciAqcmVxOw0KKwlMaXN0CSAgICpwYXRocyA9IE5JTDsNCisNCisJaWYgKCFJ c0EocmF3cmVxLCBTdXBwb3J0UmVxdWVzdFN1YmF0dHIpKQ0KKwkJUEdfUkVUVVJOX1BPSU5URVIo TlVMTCk7DQorCXJlcSA9IChTdXBwb3J0UmVxdWVzdFN1YmF0dHIgKikgcmF3cmVxOw0KKwlpZiAo cmVxLT5raW5kICE9IFNVQkFUVFJfUkVBRCB8fCBsaXN0X2xlbmd0aChyZXEtPmFyZ3MpICE9IDMp DQorCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsNCisNCisJZm9yIChpbnQgaSA9IDE7IGkgPD0g MjsgaSsrKQ0KKwl7DQorCQlDb25zdAkgICAqYyA9IChDb25zdCAqKSBsaXN0X250aChyZXEtPmFy Z3MsIGkpOw0KKwkJU3ViYXR0clBhdGhFbGVtICplOw0KKw0KKwkJaWYgKCFJc0EoYywgQ29uc3Qp IHx8IGMtPmNvbnN0aXNudWxsIHx8IGMtPmNvbnN0dHlwZSAhPSBURVhUT0lEKQ0KKwkJCVBHX1JF VFVSTl9QT0lOVEVSKE5VTEwpOw0KKwkJZSA9IHBhbGxvYzBfb2JqZWN0KFN1YmF0dHJQYXRoRWxl bSk7DQorCQllLT5raW5kID0gU1VCQVRUUl9FTEVNX0tFWTsNCisJCWUtPmtleSA9IFRleHREYXR1 bUdldENTdHJpbmcoYy0+Y29uc3R2YWx1ZSk7DQorCQlwYXRocyA9IGxhcHBlbmQocGF0aHMsIGxp c3RfbWFrZTEoZSkpOw0KKwl9DQorCXJlcS0+c291cmNlID0gMDsNCisJcmVxLT5wYXRocyA9IHBh dGhzOw0KKwlyZXEtPnN1YnZhbHVlID0gZmFsc2U7DQorCVBHX1JFVFVSTl9QT0lOVEVSKHJlcSk7 DQorfQ0KKw0KIFBHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9zdXBwb3J0X2Z1bmMpOw0KIERhdHVt DQogdGVzdF9zdXBwb3J0X2Z1bmMoUEdfRlVOQ1RJT05fQVJHUykNCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9taXNjX2Z1bmN0aW9ucy5zcWwNCmluZGV4IDk0YjkxOTY0YzA0Li44Yjc4N2U2Njc2OCAxMDA2 NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbA0KKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsDQpAQCAtMjM2LDYgKzIzNiw0 OCBAQCBTRUxFQ1QgKiBGUk9NIHRlbmsxIGEgSk9JTiBteV9nZW5fc2VyaWVzKDEsMTAwMCkgZyBP TiBhLnVuaXF1ZTEgPSBnOw0KIEVYUExBSU4gKENPU1RTIE9GRikNCiBTRUxFQ1QgKiBGUk9NIHRl bmsxIGEgSk9JTiBteV9nZW5fc2VyaWVzKDEsMTApIGcgT04gYS51bmlxdWUxID0gZzsNCiANCist LQ0KKy0tIFRlc3QgU3VwcG9ydFJlcXVlc3RTdWJhdHRyIHdpdGggYSBmdW5jdGlvbiB0aGF0IHJl YWRzIHR3byBwYXJ0cyBvZiBhDQorLS0gZG9jdW1lbnQuICBBbiBVUERBVEUgdGhhdCBjaGFuZ2Vz IG5laXRoZXIgbmVlZCBub3QgZXZhbHVhdGUgYW4gaW5kZXggb24NCistLSBpdDsgb25lIHRoYXQg Y2hhbmdlcyBlaXRoZXIgbXVzdCwgYW5kIG11c3QgZ2l2ZSB0aGUgaW5kZXggYSBuZXcgZW50cnku DQorLS0gT25seSBhc3NlcnQtZW5hYmxlZCBidWlsZHMgY2hlY2sgdGhhdCBubyBpbmRleCBza2lw cGVkIHRoaXMgd2F5IGNoYW5nZXM7DQorLS0gYW1jaGVjaydzIGNoZWNrX3N1YmF0dHIgdGVzdCBz aG93cyB0aGUgc2tpcHMsIGF0IERFQlVHMS4NCistLQ0KK0NSRUFURSBGVU5DVElPTiB0ZXN0X3N1 YmF0dHJfc3VwcG9ydChpbnRlcm5hbCkNCisgICAgUkVUVVJOUyBpbnRlcm5hbA0KKyAgICBBUyA6 J3JlZ3Jlc3NsaWInLCAndGVzdF9zdWJhdHRyX3N1cHBvcnQnDQorICAgIExBTkdVQUdFIEMgU1RS SUNUOw0KKy0tIChwbHBnc3FsLCBzbyB0aGF0IGl0IGlzIG5vdCBpbmxpbmVkIGFuZCB0aGUgc3Vw cG9ydCBmdW5jdGlvbiBpcyBhc2tlZCkNCitDUkVBVEUgRlVOQ1RJT04gdHdvX2tleXMoanNvbmIs IHRleHQsIHRleHQpIFJFVFVSTlMgdGV4dA0KKyAgICBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJM RSBTVFJJQ1QNCisgICAgQVMgJCQgQkVHSU4gUkVUVVJOICgkMS0+PiQyKSB8fCAnLycgfHwgKCQx LT4+JDMpOyBFTkQgJCQNCisgICAgU1VQUE9SVCB0ZXN0X3N1YmF0dHJfc3VwcG9ydDsNCitDUkVB VEUgVEFCTEUgc3ViYXR0cl90d28gKGlkIGludCwgZCBqc29uYikgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsNCitDUkVBVEUgSU5ERVggc3ViYXR0cl90d29faWR4IE9OIHN1YmF0dHJfdHdvICh0d29f a2V5cyhkLCAnYScsICdiJykpOw0KK0lOU0VSVCBJTlRPIHN1YmF0dHJfdHdvIFNFTEVDVCBnLCBq c29uYl9idWlsZF9vYmplY3QoJ2EnLCBnLCAnYicsIGcsICdjJywgZykNCisgIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIpIGc7DQorQkVHSU47DQorVVBEQVRFIHN1YmF0dHJfdHdvIFNFVCBkID0g anNvbmJfc2V0KGQsICd7Y30nLCAnMCcpOw0KKy0tIGJvdGggcm93cyBIT1Q6IHRoZSBpbmRleCdz IHZhbHVlIGRpZG4ndCBjaGFuZ2UNCitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQoJ3N1YmF0dHJfdHdvJzo6cmVnY2xhc3MpIEFTIGhvdDsNCitVUERBVEUgc3ViYXR0 cl90d28gU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3tifScsICcwJyk7DQorLS0gc3RpbGwgMjogbmVp dGhlciByb3cgSE9ULCB0aGUgaW5kZXggbmVlZHMgbmV3IGVudHJpZXMNCitTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3N1YmF0dHJfdHdvJzo6cmVnY2xhc3MpIEFT IGhvdDsNCitDT01NSVQ7DQorLS0gdGhyb3VnaCB0aGUgaW5kZXgsIHdoaWNoIGhhcyBubyBlbnRy eSBmb3IgJzIvMCcgdW5sZXNzIHRoZSBzZWNvbmQNCistLSB1cGRhdGUgbWFkZSBvbmUNCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOw0KK0VY UExBSU4gKENPU1RTIE9GRikNCitTRUxFQ1QgaWQgRlJPTSBzdWJhdHRyX3R3byBXSEVSRSB0d29f a2V5cyhkLCAnYScsICdiJykgPSAnMi8wJzsNCitTRUxFQ1QgaWQgRlJPTSBzdWJhdHRyX3R3byBX SEVSRSB0d29fa2V5cyhkLCAnYScsICdiJykgPSAnMi8wJzsNCitSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsNCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsNCitTRUxFQ1QgaWQsIHR3b19rZXlzKGQsICdh JywgJ2InKSBGUk9NIHN1YmF0dHJfdHdvIE9SREVSIEJZIGlkOw0KK0RST1AgVEFCTEUgc3ViYXR0 cl90d287DQorRFJPUCBGVU5DVElPTiB0d29fa2V5czsNCitEUk9QIEZVTkNUSU9OIHRlc3Rfc3Vi YXR0cl9zdXBwb3J0Ow0KKw0KIC0tDQogLS0gVGVzdCBTdXBwb3J0UmVxdWVzdElubGluZUluRnJv bSByZXF1ZXN0DQogLS0NCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0DQppbmRleCBhN2E4ZGJkZDIz Zi4uYmNjZDNjYWM0NjUgMTAwNjQ0DQotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdA0KKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QNCkBAIC0zMDIxLDYg KzMwMjEsMTAgQEAgU3ViWGFjdENhbGxiYWNrDQogU3ViWGFjdENhbGxiYWNrSXRlbQ0KIFN1Ylhh Y3RFdmVudA0KIFN1YlhhY3RJbmZvDQorU3ViYXR0clBhdGhFbGVtDQorU3ViYXR0clBhdGhFbGVt S2luZA0KK1N1YmF0dHJSZXF1ZXN0S2luZA0KK1N1YmF0dHJXYWxrDQogU3VicXVlcnlTY2FuDQog U3VicXVlcnlTY2FuUGF0aA0KIFN1YnF1ZXJ5U2NhblN0YXRlDQpAQCAtMzA0NCw2ICszMDQ4LDcg QEAgU3VwcG9ydFJlcXVlc3RSb3dzDQogU3VwcG9ydFJlcXVlc3RTZWxlY3Rpdml0eQ0KIFN1cHBv cnRSZXF1ZXN0U2ltcGxpZnkNCiBTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5QWdncmVmDQorU3VwcG9y dFJlcXVlc3RTdWJhdHRyDQogU3VwcG9ydFJlcXVlc3RXRnVuY01vbm90b25pYw0KIFN5bg0KIFN5 bmNPcHMNCi0tIA0KMi41MC4xDQoNCg== --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0007-GIN-implement-amcomparedatums.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0007-GIN-implement-amcomparedatums.patch RnJvbSAxYjEwNTBiMzA3NzdiYzQ1NGM3ZTZhNzBjMjUwYmJmZWNiNWVjOGRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBGcmks IDE2IE9jdCAyMDI2IDEyOjM1OjE2IC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDcvOF0gR0lO OiBpbXBsZW1lbnQgYW1jb21wYXJlZGF0dW1zDQoNCkEgR0lOIGluZGV4IHN0b3JlcywgZm9yIGVh Y2ggcm93LCB0aGUga2V5cyBpdHMgb3BlcmF0b3IgY2xhc3MgZXh0cmFjdHMgZnJvbQ0KdGhlIGlu ZGV4ZWQgdmFsdWUsIGFuZCBub3RoaW5nIGVsc2UgYWJvdXQgdGhlIHZhbHVlLiAgU2NhbnMgc2Vl IGEgcm93IG9ubHkNCmFzIGl0cyBzZXQgb2Yga2V5czogdGhhdCBpcyBhbGwgdGhlIGNvbnNpc3Rl bnQgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFuZCB3aGF0DQppdCBjYW5ub3QgZGVjaWRlIGZyb20gdGhl bSBpdCBsZWF2ZXMgdG8gYSByZWNoZWNrIGFnYWluc3QgdGhlIGhlYXAgdHVwbGUuDQpTbyBhbiB1 cGRhdGVkIHJvdyBnaXZlcyB0aGUgc2FtZSBlbnRyaWVzIGV4YWN0bHkgd2hlbiBleHRyYWN0VmFs dWUgZ2l2ZXMNCnRoZSBzYW1lIGtleXMgZm9yIHRoZSBuZXcgdmFsdWUsIGNvbXBhcmVkIGFzIEdJ TiBjb21wYXJlcyBrZXlzLiAgS2V5cyBlcXVhbA0KdW5kZXIgdGhlIGNvbXBhcmUgZnVuY3Rpb24g c2hhcmUgb25lIGVudHJ5IHdoaWNoZXZlciBjYW1lIGZpcnN0LCBzbyB0aGUNCmNvbXBhcmUgZnVu Y3Rpb24gaXMgdGhlIHJpZ2h0IHRlc3QuDQoNClJ1biBnaW5FeHRyYWN0RW50cmllcygpIG9uIGJv dGggdmFsdWVzLCB3aGljaCBzb3J0cyBhbmQgZGVkdXBsaWNhdGVzIHRoZW0NCmFuZCByZXByZXNl bnRzIGVtcHR5IGl0ZW1zIGFuZCBudWxsIGtleXMgYXMgR0lOIGRvZXMsIGFuZCBjb21wYXJlLiAg VGhlDQpHaW5TdGF0ZSBpcyBjYWNoZWQgaW4gaWlfQW1DYWNoZSwgYXMgZ2luaW5zZXJ0KCkgY2Fj aGVzIGl0LCBzbyBpdCBpcyBidWlsdA0Kb25jZSBwZXIgc3RhdGVtZW50Lg0KDQpVcGRhdGVzIHRo YXQgYmVjb21lIEhPVCBpbmNsdWRlIHJlb3JkZXJpbmcgb3IgcmVwZWF0aW5nIHRoZSBlbGVtZW50 cyBvZiBhbg0KYXJyYXkgY29sdW1uIHVuZGVyIGFycmF5X29wcywgYW5kIGNoYW5naW5nIGEgdHN2 ZWN0b3IsIG9yIGEgdGV4dCBjb2x1bW4NCnVuZGVyIGEgdG9fdHN2ZWN0b3IoKSBleHByZXNzaW9u IGluZGV4LCBpbiB3YXlzIHRoYXQga2VlcCBpdHMgbGV4ZW1lcywgc3VjaA0KYXMgbW92aW5nIHdv cmRzIGFyb3VuZC4NCi0tLQ0KIGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19naW4ub3V0 IHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysNCiBjb250cmliL2FtY2hlY2svc3FsL2No ZWNrX2dpbi5zcWwgICAgICB8ICA3MSArKysrKysrKysrKysrKw0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2ludXRpbC5jICAgICAgIHwgIDYxICsrKysrKysrKysrLQ0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9naW5fcHJpdmF0ZS5oICAgICAgIHwgICAzICsNCiA0IGZpbGVzIGNoYW5nZWQsIDI1OSBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQoNCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hl Y2svZXhwZWN0ZWQvY2hlY2tfZ2luLm91dCBiL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVj a19naW4ub3V0DQppbmRleCA4ZGQwMWNlZDhkMS4uY2I1Y2I3NzcyMTkgMTAwNjQ0DQotLS0gYS9j b250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfZ2luLm91dA0KKysrIGIvY29udHJpYi9hbWNo ZWNrL2V4cGVjdGVkL2NoZWNrX2dpbi5vdXQNCkBAIC04OCwzICs4OCwxMjggQEAgU0VMRUNUIGdp bl9pbmRleF9jaGVjaygnZ2luX2NoZWNrX211bHRpY29sdW1uX2lkeCcpOw0KIA0KIC0tIGNsZWFu dXANCiBEUk9QIFRBQkxFIGdpbl9jaGVja19tdWx0aWNvbHVtbjsNCistLSBBbiBVUERBVEUgdGhh dCBsZWF2ZXMgYSBHSU4gaW5kZXgncyBrZXlzIGZvciB0aGUgcm93IGFzIHRoZXkgYXJlIGlzIEhP VDoNCistLSByZW9yZGVyaW5nIG9yIHJlcGVhdGluZyBhcnJheSBlbGVtZW50cywgb3IgY2hhbmdp bmcgdGhlIHBvc2l0aW9ucyBpbiBhDQorLS0gdHN2ZWN0b3IgYnV0IG5vdCBpdHMgbGV4ZW1lcy4g IFNjYW5zIHRocm91Z2ggdGhlIGluZGV4IG11c3Qgc3RpbGwgZmluZA0KKy0tIGV4YWN0bHkgdGhl IHJvd3MgYSBzZXF1ZW50aWFsIHNjYW4gZmluZHMuDQorQ1JFQVRFIFRBQkxFIGdpbl9ob3QgKGlk IGludCwgdGFncyBpbnRbXSwgdHN2IHRzdmVjdG9yLCBib2R5IHRleHQpDQorICBXSVRIIChmaWxs ZmFjdG9yID0gMTApOw0KK0NSRUFURSBJTkRFWCBnaW5faG90X3RhZ3MgT04gZ2luX2hvdCBVU0lO RyBnaW4gKHRhZ3MpOw0KK0NSRUFURSBJTkRFWCBnaW5faG90X3RzdiBPTiBnaW5faG90IFVTSU5H IGdpbiAodHN2KTsNCitDUkVBVEUgSU5ERVggZ2luX2hvdF9ib2R5IE9OIGdpbl9ob3QgVVNJTkcg Z2luICh0b190c3ZlY3Rvcignc2ltcGxlJywgYm9keSkpOw0KK0lOU0VSVCBJTlRPIGdpbl9ob3QN CisgIFNFTEVDVCBnLCBBUlJBWVtnICUgNywgZyAlIDExLCBnICUgMTNdLCB0b190c3ZlY3Rvcign c2ltcGxlJywgJ2EgYiBjICcgfHwgZyksDQorICAgICAgICAgJ29uZSB0d28gJyB8fCBnDQorICAg IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgZzsNCitDUkVBVEUgRlVOQ1RJT04gZ2luX2hv dF9jb3VudChPVVQgdXBkYXRlZCBiaWdpbnQsIE9VVCBob3QgYmlnaW50KQ0KK0xBTkdVQUdFIHNx bCBBUyAkJA0KKyAgU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoJ2dpbl9o b3QnOjpyZWdjbGFzcyksDQorICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ2dpbl9ob3QnOjpyZWdjbGFzcykgJCQ7DQorLS0gSG93IG1hbnkgcm93cyBlYWNoIHRh ZywgbGV4ZW1lIGFuZCB3b3JkIG1hdGNoZXMgdGhyb3VnaCB0aGUgaW5kZXggKGENCistLSBiaXRt YXAgc2NhbiwgYXMgR0lOIGhhcyBubyBvdGhlcikgYW5kIG5vdCAoYSBzZXF1ZW50aWFsIHNjYW4p LCBhbmQgdGhlDQorLS0gbnVtYmVyIG9mIG1pc21hdGNoZXMuDQorQ1JFQVRFIEZVTkNUSU9OIGdp bl9ob3RfY291bnRfdmlhKHZpYV9pbmRleCBib29sLCBxIHRleHQpIFJFVFVSTlMgYmlnaW50DQor TEFOR1VBR0UgcGxwZ3NxbCBBUyAkJA0KK0RFQ0xBUkUgYyBiaWdpbnQ7DQorQkVHSU4NCisgIFBF UkZPUk0gc2V0X2NvbmZpZygnZW5hYmxlX3NlcXNjYW4nLCBDQVNFIFdIRU4gdmlhX2luZGV4IFRI RU4gJ29mZicgRUxTRSAnb24nIEVORCwgdHJ1ZSk7DQorICBQRVJGT1JNIHNldF9jb25maWcoJ2Vu YWJsZV9iaXRtYXBzY2FuJywgQ0FTRSBXSEVOIHZpYV9pbmRleCBUSEVOICdvbicgRUxTRSAnb2Zm JyBFTkQsIHRydWUpOw0KKyAgUEVSRk9STSBzZXRfY29uZmlnKCdlbmFibGVfaW5kZXhzY2FuJywg J29mZicsIHRydWUpOw0KKyAgRVhFQ1VURSAnU0VMRUNUIGNvdW50KCopIEZST00gZ2luX2hvdCBX SEVSRSAnIHx8IHEgSU5UTyBjOw0KKyAgUkVUVVJOIGM7DQorRU5EICQkOw0KK0NSRUFURSBGVU5D VElPTiBnaW5faG90X21pc21hdGNoZXMoKSBSRVRVUk5TIGJpZ2ludCBMQU5HVUFHRSBzcWwgQVMg JCQNCisgIFNFTEVDVCBjb3VudCgqKSBGUk9NDQorICAgIChTRUxFQ1QgZm9ybWF0KCd0YWdzIEA+ IEFSUkFZWyVzXScsIGspIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDEzKSBrDQorICAgICBVTklP TiBBTEwNCisgICAgIFNFTEVDVCBmb3JtYXQoJ3RzdiBAQCB0b190c3F1ZXJ5KCcnc2ltcGxlJycs ICVMKScsIHcpDQorICAgICAgIEZST00gdW5uZXN0KEFSUkFZWydhJywgJ2InLCAnYycsICdkJywg J29uZScsICd0d28nLCAndGhyZWUnLCAnNyddKSB3DQorICAgICBVTklPTiBBTEwNCisgICAgIFNF TEVDVCBmb3JtYXQoJ3RvX3RzdmVjdG9yKCcnc2ltcGxlJycsIGJvZHkpIEBAIHRvX3RzcXVlcnko JydzaW1wbGUnJywgJUwpJywgdykNCisgICAgICAgRlJPTSB1bm5lc3QoQVJSQVlbJ2EnLCAnYics ICdjJywgJ2QnLCAnb25lJywgJ3R3bycsICd0aHJlZScsICc3J10pIHcpIHEocSkNCisgIFdIRVJF IGdpbl9ob3RfY291bnRfdmlhKHRydWUsIHEpIDw+IGdpbl9ob3RfY291bnRfdmlhKGZhbHNlLCBx KQ0KKyQkOw0KK0JFR0lOOw0KKy0tIHNhbWUga2V5czogSE9UDQorVVBEQVRFIGdpbl9ob3QgU0VU IHRhZ3MgPSBBUlJBWVt0YWdzWzNdLCB0YWdzWzFdLCB0YWdzWzJdLCB0YWdzWzFdXTsNCitTRUxF Q1QgKiBGUk9NIGdpbl9ob3RfY291bnQoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0r LS0tLS0NCisgICAgIDEwMCB8IDEwMA0KKygxIHJvdykNCisNCitVUERBVEUgZ2luX2hvdCBTRVQg dHN2ID0gdG9fdHN2ZWN0b3IoJ3NpbXBsZScsICdjIGIgYSBhICcgfHwgaWQpOw0KK1NFTEVDVCAq IEZST00gZ2luX2hvdF9jb3VudCgpOw0KKyB1cGRhdGVkIHwgaG90IA0KKy0tLS0tLS0tLSstLS0t LQ0KKyAgICAgMjAwIHwgMjAwDQorKDEgcm93KQ0KKw0KK1VQREFURSBnaW5faG90IFNFVCBib2R5 ID0gaWQgfHwgJyB0d28gb25lIG9uZSc7DQorU0VMRUNUICogRlJPTSBnaW5faG90X2NvdW50KCk7 DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAzMDAgfCAzMDANCiso MSByb3cpDQorDQorLS0gZGlmZmVyZW50IGtleXM6IG5vdCBIT1QNCitVUERBVEUgZ2luX2hvdCBT RVQgdGFncyA9IHRhZ3MgfHwgMCBXSEVSRSBpZCA8PSAxMDsNCitTRUxFQ1QgKiBGUk9NIGdpbl9o b3RfY291bnQoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgIDMx MCB8IDMwMQ0KKygxIHJvdykNCisNCitVUERBVEUgZ2luX2hvdCBTRVQgdHN2ID0gdG9fdHN2ZWN0 b3IoJ3NpbXBsZScsICdhIGIgZCAnIHx8IGlkKSBXSEVSRSBpZCA8PSAxMDsNCitTRUxFQ1QgKiBG Uk9NIGdpbl9ob3RfY291bnQoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0N CisgICAgIDMyMCB8IDMwMQ0KKygxIHJvdykNCisNCitVUERBVEUgZ2luX2hvdCBTRVQgYm9keSA9 ICd0aHJlZSAnIHx8IGJvZHkgV0hFUkUgaWQgPD0gMTA7DQorU0VMRUNUICogRlJPTSBnaW5faG90 X2NvdW50KCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAzMzAg fCAzMDENCisoMSByb3cpDQorDQorLS0gdG8gYW5kIGZyb20gbm8ga2V5cywgYW5kIG51bGwNCitV UERBVEUgZ2luX2hvdCBTRVQgdGFncyA9ICd7fScgV0hFUkUgaWQgPSAxMTsNCitVUERBVEUgZ2lu X2hvdCBTRVQgdGFncyA9IE5VTEwgV0hFUkUgaWQgPSAxMTsNCitVUERBVEUgZ2luX2hvdCBTRVQg dGFncyA9ICd7MX0nIFdIRVJFIGlkID0gMTE7DQorU0VMRUNUICogRlJPTSBnaW5faG90X2NvdW50 KCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAzMzMgfCAzMDEN CisoMSByb3cpDQorDQorQ09NTUlUOw0KK1NFTEVDVCBnaW5faG90X21pc21hdGNoZXMoKTsNCisg Z2luX2hvdF9taXNtYXRjaGVzIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAgICAgICAgICAg ICAgICAgMA0KKygxIHJvdykNCisNCitTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCdnaW5faG90X3Rh Z3MnKTsNCisgZ2luX2luZGV4X2NoZWNrIA0KKy0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJv dykNCisNCitTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCdnaW5faG90X3RzdicpOw0KKyBnaW5faW5k ZXhfY2hlY2sgDQorLS0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBn aW5faW5kZXhfY2hlY2soJ2dpbl9ob3RfYm9keScpOw0KKyBnaW5faW5kZXhfY2hlY2sgDQorLS0t LS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK0RST1AgVEFCTEUgZ2luX2hvdDsNCitE Uk9QIEZVTkNUSU9OIGdpbl9ob3RfY291bnQ7DQorRFJPUCBGVU5DVElPTiBnaW5faG90X21pc21h dGNoZXM7DQorRFJPUCBGVU5DVElPTiBnaW5faG90X2NvdW50X3ZpYTsNCmRpZmYgLS1naXQgYS9j b250cmliL2FtY2hlY2svc3FsL2NoZWNrX2dpbi5zcWwgYi9jb250cmliL2FtY2hlY2svc3FsL2No ZWNrX2dpbi5zcWwNCmluZGV4IDExY2FlZDNkNmE4Li5hNGI1MjliYTIwMCAxMDA2NDQNCi0tLSBh L2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfZ2luLnNxbA0KKysrIGIvY29udHJpYi9hbWNoZWNr L3NxbC9jaGVja19naW4uc3FsDQpAQCAtNjAsMyArNjAsNzQgQEAgU0VMRUNUIGdpbl9pbmRleF9j aGVjaygnZ2luX2NoZWNrX211bHRpY29sdW1uX2lkeCcpOw0KIA0KIC0tIGNsZWFudXANCiBEUk9Q IFRBQkxFIGdpbl9jaGVja19tdWx0aWNvbHVtbjsNCisNCistLSBBbiBVUERBVEUgdGhhdCBsZWF2 ZXMgYSBHSU4gaW5kZXgncyBrZXlzIGZvciB0aGUgcm93IGFzIHRoZXkgYXJlIGlzIEhPVDoNCist LSByZW9yZGVyaW5nIG9yIHJlcGVhdGluZyBhcnJheSBlbGVtZW50cywgb3IgY2hhbmdpbmcgdGhl IHBvc2l0aW9ucyBpbiBhDQorLS0gdHN2ZWN0b3IgYnV0IG5vdCBpdHMgbGV4ZW1lcy4gIFNjYW5z IHRocm91Z2ggdGhlIGluZGV4IG11c3Qgc3RpbGwgZmluZA0KKy0tIGV4YWN0bHkgdGhlIHJvd3Mg YSBzZXF1ZW50aWFsIHNjYW4gZmluZHMuDQorQ1JFQVRFIFRBQkxFIGdpbl9ob3QgKGlkIGludCwg dGFncyBpbnRbXSwgdHN2IHRzdmVjdG9yLCBib2R5IHRleHQpDQorICBXSVRIIChmaWxsZmFjdG9y ID0gMTApOw0KK0NSRUFURSBJTkRFWCBnaW5faG90X3RhZ3MgT04gZ2luX2hvdCBVU0lORyBnaW4g KHRhZ3MpOw0KK0NSRUFURSBJTkRFWCBnaW5faG90X3RzdiBPTiBnaW5faG90IFVTSU5HIGdpbiAo dHN2KTsNCitDUkVBVEUgSU5ERVggZ2luX2hvdF9ib2R5IE9OIGdpbl9ob3QgVVNJTkcgZ2luICh0 b190c3ZlY3Rvcignc2ltcGxlJywgYm9keSkpOw0KK0lOU0VSVCBJTlRPIGdpbl9ob3QNCisgIFNF TEVDVCBnLCBBUlJBWVtnICUgNywgZyAlIDExLCBnICUgMTNdLCB0b190c3ZlY3Rvcignc2ltcGxl JywgJ2EgYiBjICcgfHwgZyksDQorICAgICAgICAgJ29uZSB0d28gJyB8fCBnDQorICAgIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgZzsNCitDUkVBVEUgRlVOQ1RJT04gZ2luX2hvdF9jb3Vu dChPVVQgdXBkYXRlZCBiaWdpbnQsIE9VVCBob3QgYmlnaW50KQ0KK0xBTkdVQUdFIHNxbCBBUyAk JA0KKyAgU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoJ2dpbl9ob3QnOjpy ZWdjbGFzcyksDQorICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2dpbl9ob3QnOjpyZWdjbGFzcykgJCQ7DQorLS0gSG93IG1hbnkgcm93cyBlYWNoIHRhZywgbGV4 ZW1lIGFuZCB3b3JkIG1hdGNoZXMgdGhyb3VnaCB0aGUgaW5kZXggKGENCistLSBiaXRtYXAgc2Nh biwgYXMgR0lOIGhhcyBubyBvdGhlcikgYW5kIG5vdCAoYSBzZXF1ZW50aWFsIHNjYW4pLCBhbmQg dGhlDQorLS0gbnVtYmVyIG9mIG1pc21hdGNoZXMuDQorQ1JFQVRFIEZVTkNUSU9OIGdpbl9ob3Rf Y291bnRfdmlhKHZpYV9pbmRleCBib29sLCBxIHRleHQpIFJFVFVSTlMgYmlnaW50DQorTEFOR1VB R0UgcGxwZ3NxbCBBUyAkJA0KK0RFQ0xBUkUgYyBiaWdpbnQ7DQorQkVHSU4NCisgIFBFUkZPUk0g c2V0X2NvbmZpZygnZW5hYmxlX3NlcXNjYW4nLCBDQVNFIFdIRU4gdmlhX2luZGV4IFRIRU4gJ29m ZicgRUxTRSAnb24nIEVORCwgdHJ1ZSk7DQorICBQRVJGT1JNIHNldF9jb25maWcoJ2VuYWJsZV9i aXRtYXBzY2FuJywgQ0FTRSBXSEVOIHZpYV9pbmRleCBUSEVOICdvbicgRUxTRSAnb2ZmJyBFTkQs IHRydWUpOw0KKyAgUEVSRk9STSBzZXRfY29uZmlnKCdlbmFibGVfaW5kZXhzY2FuJywgJ29mZics IHRydWUpOw0KKyAgRVhFQ1VURSAnU0VMRUNUIGNvdW50KCopIEZST00gZ2luX2hvdCBXSEVSRSAn IHx8IHEgSU5UTyBjOw0KKyAgUkVUVVJOIGM7DQorRU5EICQkOw0KK0NSRUFURSBGVU5DVElPTiBn aW5faG90X21pc21hdGNoZXMoKSBSRVRVUk5TIGJpZ2ludCBMQU5HVUFHRSBzcWwgQVMgJCQNCisg IFNFTEVDVCBjb3VudCgqKSBGUk9NDQorICAgIChTRUxFQ1QgZm9ybWF0KCd0YWdzIEA+IEFSUkFZ WyVzXScsIGspIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDEzKSBrDQorICAgICBVTklPTiBBTEwN CisgICAgIFNFTEVDVCBmb3JtYXQoJ3RzdiBAQCB0b190c3F1ZXJ5KCcnc2ltcGxlJycsICVMKScs IHcpDQorICAgICAgIEZST00gdW5uZXN0KEFSUkFZWydhJywgJ2InLCAnYycsICdkJywgJ29uZScs ICd0d28nLCAndGhyZWUnLCAnNyddKSB3DQorICAgICBVTklPTiBBTEwNCisgICAgIFNFTEVDVCBm b3JtYXQoJ3RvX3RzdmVjdG9yKCcnc2ltcGxlJycsIGJvZHkpIEBAIHRvX3RzcXVlcnkoJydzaW1w bGUnJywgJUwpJywgdykNCisgICAgICAgRlJPTSB1bm5lc3QoQVJSQVlbJ2EnLCAnYicsICdjJywg J2QnLCAnb25lJywgJ3R3bycsICd0aHJlZScsICc3J10pIHcpIHEocSkNCisgIFdIRVJFIGdpbl9o b3RfY291bnRfdmlhKHRydWUsIHEpIDw+IGdpbl9ob3RfY291bnRfdmlhKGZhbHNlLCBxKQ0KKyQk Ow0KK0JFR0lOOw0KKy0tIHNhbWUga2V5czogSE9UDQorVVBEQVRFIGdpbl9ob3QgU0VUIHRhZ3Mg PSBBUlJBWVt0YWdzWzNdLCB0YWdzWzFdLCB0YWdzWzJdLCB0YWdzWzFdXTsNCitTRUxFQ1QgKiBG Uk9NIGdpbl9ob3RfY291bnQoKTsNCitVUERBVEUgZ2luX2hvdCBTRVQgdHN2ID0gdG9fdHN2ZWN0 b3IoJ3NpbXBsZScsICdjIGIgYSBhICcgfHwgaWQpOw0KK1NFTEVDVCAqIEZST00gZ2luX2hvdF9j b3VudCgpOw0KK1VQREFURSBnaW5faG90IFNFVCBib2R5ID0gaWQgfHwgJyB0d28gb25lIG9uZSc7 DQorU0VMRUNUICogRlJPTSBnaW5faG90X2NvdW50KCk7DQorLS0gZGlmZmVyZW50IGtleXM6IG5v dCBIT1QNCitVUERBVEUgZ2luX2hvdCBTRVQgdGFncyA9IHRhZ3MgfHwgMCBXSEVSRSBpZCA8PSAx MDsNCitTRUxFQ1QgKiBGUk9NIGdpbl9ob3RfY291bnQoKTsNCitVUERBVEUgZ2luX2hvdCBTRVQg dHN2ID0gdG9fdHN2ZWN0b3IoJ3NpbXBsZScsICdhIGIgZCAnIHx8IGlkKSBXSEVSRSBpZCA8PSAx MDsNCitTRUxFQ1QgKiBGUk9NIGdpbl9ob3RfY291bnQoKTsNCitVUERBVEUgZ2luX2hvdCBTRVQg Ym9keSA9ICd0aHJlZSAnIHx8IGJvZHkgV0hFUkUgaWQgPD0gMTA7DQorU0VMRUNUICogRlJPTSBn aW5faG90X2NvdW50KCk7DQorLS0gdG8gYW5kIGZyb20gbm8ga2V5cywgYW5kIG51bGwNCitVUERB VEUgZ2luX2hvdCBTRVQgdGFncyA9ICd7fScgV0hFUkUgaWQgPSAxMTsNCitVUERBVEUgZ2luX2hv dCBTRVQgdGFncyA9IE5VTEwgV0hFUkUgaWQgPSAxMTsNCitVUERBVEUgZ2luX2hvdCBTRVQgdGFn cyA9ICd7MX0nIFdIRVJFIGlkID0gMTE7DQorU0VMRUNUICogRlJPTSBnaW5faG90X2NvdW50KCk7 DQorQ09NTUlUOw0KK1NFTEVDVCBnaW5faG90X21pc21hdGNoZXMoKTsNCitTRUxFQ1QgZ2luX2lu ZGV4X2NoZWNrKCdnaW5faG90X3RhZ3MnKTsNCitTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCdnaW5f aG90X3RzdicpOw0KK1NFTEVDVCBnaW5faW5kZXhfY2hlY2soJ2dpbl9ob3RfYm9keScpOw0KK0RS T1AgVEFCTEUgZ2luX2hvdDsNCitEUk9QIEZVTkNUSU9OIGdpbl9ob3RfY291bnQ7DQorRFJPUCBG VU5DVElPTiBnaW5faG90X21pc21hdGNoZXM7DQorRFJPUCBGVU5DVElPTiBnaW5faG90X2NvdW50 X3ZpYTsNCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jDQppbmRleCBiNTdjMDE2YWVhMi4uOGZiZGIz NWU2YWYgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYw0KKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMNCkBAIC0yMyw2ICsyMyw3IEBADQog I2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiDQogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1 bS5oIg0KICNpbmNsdWRlICJtaXNjYWRtaW4uaCINCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVz LmgiDQogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20uaCINCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCINCiAjaW5jbHVkZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCINCkBAIC05MCw3ICs5 MSw3IEBAIGdpbmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykNCiAJCS5hbWVzdGltYXRlcGFyYWxs ZWxzY2FuID0gTlVMTCwNCiAJCS5hbWluaXRwYXJhbGxlbHNjYW4gPSBOVUxMLA0KIAkJLmFtcGFy YWxsZWxyZXNjYW4gPSBOVUxMLA0KLQkJLmFtY29tcGFyZWRhdHVtcyA9IE5VTEwsDQorCQkuYW1j b21wYXJlZGF0dW1zID0gZ2luY29tcGFyZWRhdHVtcywNCiAJfTsNCiANCiAJUEdfUkVUVVJOX1BP SU5URVIoJmFtcm91dGluZSk7DQpAQCAtNjgwLDMgKzY4MSw2MSBAQCBnaW5idWlsZHBoYXNlbmFt ZShpbnQ2NCBwaGFzZW51bSkNCiAJCQlyZXR1cm4gTlVMTDsNCiAJfQ0KIH0NCisNCisvKg0KKyAq IGdpbmNvbXBhcmVkYXR1bXMoKSAtLSB3b3VsZCBuZXdWYWx1ZSBnaXZlIHRoZSBzYW1lIGVudHJp ZXMgYXMgb2xkVmFsdWU/DQorICoNCisgKiBBIEdJTiBpbmRleCBzdG9yZXMsIGZvciBlYWNoIGl0 ZW0sIHRoZSBrZXlzIGl0cyBvcGVyYXRvciBjbGFzcyBleHRyYWN0cywNCisgKiBhbmQgbm90aGlu ZyBlbHNlIGFib3V0IHRoZSBpdGVtOiBzY2FucyBzZWUgYW4gaXRlbSBvbmx5IGFzIHRoZSBzZXQg b2YgaXRzDQorICoga2V5cywgd2hpY2ggaXMgYWxsIHRoZSBjb25zaXN0ZW50IGZ1bmN0aW9uIGlz IHNob3duIGFuZCBhbGwgYSBsb3NzeSBtYXRjaA0KKyAqIGxlYXZlcyB0byByZWNoZWNrLiAgU28g dHdvIHZhbHVlcyBnaXZlIHRoZSBzYW1lIGVudHJpZXMgaWYgdGhleSBoYXZlIHRoZQ0KKyAqIHNh bWUga2V5cywgYXMgR0lOIGNvbXBhcmVzIHRoZW0uICBLZXlzIGVxdWFsIHVuZGVyIHRoZSBjb21w YXJlIGZ1bmN0aW9uDQorICogc2hhcmUgb25lIGVudHJ5IGluIHRoZSBpbmRleCB3aGljaGV2ZXIg b2YgdGhlbSBjYW1lIGZpcnN0LCBzbyB0aGUgY29tcGFyZQ0KKyAqIGZ1bmN0aW9uIGlzIHRoZSBy aWdodCB0ZXN0LiAgVGhlbiwgZm9yIGV4YW1wbGUsIHJlb3JkZXJpbmcgb3IgcmVwZWF0aW5nDQor ICogdGhlIGVsZW1lbnRzIG9mIGFuIGFycmF5LCBvciBjaGFuZ2luZyBhIHRzdmVjdG9yJ3MgcG9z aXRpb25zIGJ1dCBub3QgaXRzDQorICogbGV4ZW1lcywgbWFrZXMgbm8gbmV3IGVudHJpZXMuDQor ICovDQorYm9vbA0KK2dpbmNvbXBhcmVkYXR1bXMoUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAq aW5kZXhJbmZvLCBpbnQgYXR0bnVtLA0KKwkJCQkgT2lkIHR5cGlkLCBpbnQxNiB0eXBsZW4sIGJv b2wgdHlwYnl2YWwsDQorCQkJCSBEYXR1bSBvbGRWYWx1ZSwgRGF0dW0gbmV3VmFsdWUpDQorew0K KwlHaW5TdGF0ZSAgICpnaW5zdGF0ZSA9IChHaW5TdGF0ZSAqKSBpbmRleEluZm8tPmlpX0FtQ2Fj aGU7DQorCURhdHVtCSAgICpvbGRFbnRyaWVzOw0KKwlEYXR1bQkgICAqbmV3RW50cmllczsNCisJ R2luTnVsbENhdGVnb3J5ICpvbGRDYXRlZ29yaWVzOw0KKwlHaW5OdWxsQ2F0ZWdvcnkgKm5ld0Nh dGVnb3JpZXM7DQorCWludDMyCQlub2xkRW50cmllczsNCisJaW50MzIJCW5uZXdFbnRyaWVzOw0K Kw0KKwkvKiB0aGUgc2FtZSBjYWNoZSBhcyBnaW5pbnNlcnQoKSwgZm9yIHRoZSBzYW1lIHN0YXRl bWVudCAqLw0KKwlpZiAoZ2luc3RhdGUgPT0gTlVMTCkNCisJew0KKwkJTWVtb3J5Q29udGV4dCBv bGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5kZXhJbmZvLT5paV9Db250ZXh0KTsNCisN CisJCWdpbnN0YXRlID0gcGFsbG9jX29iamVjdChHaW5TdGF0ZSk7DQorCQlpbml0R2luU3RhdGUo Z2luc3RhdGUsIGluZGV4KTsNCisJCWluZGV4SW5mby0+aWlfQW1DYWNoZSA9IGdpbnN0YXRlOw0K KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7DQorCX0NCisNCisJb2xkRW50cmllcyA9 IGdpbkV4dHJhY3RFbnRyaWVzKGdpbnN0YXRlLCAoT2Zmc2V0TnVtYmVyKSBhdHRudW0sDQorCQkJ CQkJCQkgICBvbGRWYWx1ZSwgZmFsc2UsDQorCQkJCQkJCQkgICAmbm9sZEVudHJpZXMsICZvbGRD YXRlZ29yaWVzKTsNCisJbmV3RW50cmllcyA9IGdpbkV4dHJhY3RFbnRyaWVzKGdpbnN0YXRlLCAo T2Zmc2V0TnVtYmVyKSBhdHRudW0sDQorCQkJCQkJCQkgICBuZXdWYWx1ZSwgZmFsc2UsDQorCQkJ CQkJCQkgICAmbm5ld0VudHJpZXMsICZuZXdDYXRlZ29yaWVzKTsNCisNCisJaWYgKG5vbGRFbnRy aWVzICE9IG5uZXdFbnRyaWVzKQ0KKwkJcmV0dXJuIGZhbHNlOw0KKwlmb3IgKGludDMyIGkgPSAw OyBpIDwgbm9sZEVudHJpZXM7IGkrKykNCisJew0KKwkJLyogdGhlcmUgY291bGQgYmUgbWFueSBl bnRyaWVzLCBzbyBiZSB3aWxsaW5nIHRvIGFib3J0IGhlcmUgKi8NCisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7DQorCQlpZiAoZ2luQ29tcGFyZUVudHJpZXMoZ2luc3RhdGUsIChPZmZzZXROdW1i ZXIpIGF0dG51bSwNCisJCQkJCQkJICBvbGRFbnRyaWVzW2ldLCBvbGRDYXRlZ29yaWVzW2ldLA0K KwkJCQkJCQkgIG5ld0VudHJpZXNbaV0sIG5ld0NhdGVnb3JpZXNbaV0pICE9IDApDQorCQkJcmV0 dXJuIGZhbHNlOw0KKwl9DQorCXJldHVybiB0cnVlOw0KK30NCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2luX3ByaXZhdGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naW5fcHJpdmF0 ZS5oDQppbmRleCAzYzVmZDZiYTgxNy4uMTE1ZjI5ZWRiNmYgMTAwNjQ0DQotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2luX3ByaXZhdGUuaA0KKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpbl9w cml2YXRlLmgNCkBAIC0xMDYsNiArMTA2LDkgQEAgZXh0ZXJuIE9mZnNldE51bWJlciBnaW50dXBs ZV9nZXRfYXR0cm51bShHaW5TdGF0ZSAqZ2luc3RhdGUsIEluZGV4VHVwbGUgdHVwbGUpOw0KIGV4 dGVybiBEYXR1bSBnaW50dXBsZV9nZXRfa2V5KEdpblN0YXRlICpnaW5zdGF0ZSwgSW5kZXhUdXBs ZSB0dXBsZSwNCiAJCQkJCQkJICBHaW5OdWxsQ2F0ZWdvcnkgKmNhdGVnb3J5KTsNCiBleHRlcm4g Y2hhciAqZ2luYnVpbGRwaGFzZW5hbWUoaW50NjQgcGhhc2VudW0pOw0KK2V4dGVybiBib29sIGdp bmNvbXBhcmVkYXR1bXMoUmVsYXRpb24gaW5kZXgsIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5m bywNCisJCQkJCQkJIGludCBhdHRudW0sIE9pZCB0eXBpZCwgaW50MTYgdHlwbGVuLA0KKwkJCQkJ CQkgYm9vbCB0eXBieXZhbCwgRGF0dW0gb2xkVmFsdWUsIERhdHVtIG5ld1ZhbHVlKTsNCiANCiAv KiBnaW5pbnNlcnQuYyAqLw0KIGV4dGVybiBJbmRleEJ1aWxkUmVzdWx0ICpnaW5idWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwNCi0tIA0KMi41MC4xDQoNCg== --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0001-Improve-test-coverage-for-heap-only-tuple-HOT-up.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0001-Improve-test-coverage-for-heap-only-tuple-HOT-up.patch RnJvbSA0ODFiYTE1MDdlNmNhZDNmMDQxMTBjMmVkMDZjYzE5MzgyZTZhYTYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBUdWUs IDEwIE1hciAyMDI2IDA5OjI4OjE1IC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDEvOF0gSW1w cm92ZSB0ZXN0IGNvdmVyYWdlIGZvciBoZWFwLW9ubHkgdHVwbGUgKEhPVCkNCiB1cGRhdGUgYmVo YXZpb3INCg0KQWRkIHJlZ3Jlc3Npb24gY292ZXJhZ2UgZm9yIHRoZSBleGlzdGluZyBIZWFwLU9u bHkgVHVwbGUgKEhPVCkgdXBkYXRlDQpydWxlcywgc28gdGhhdCBsYXRlciBjaGFuZ2VzIHRvIHRo ZW0gc2hvdyB1cCBhcyBjaGFuZ2VzIHRvIHRoZSBleHBlY3RlZA0Kb3V0cHV0LiAgVGhlIG5ldyBo b3RfdXBkYXRlcyByZWdyZXNzaW9uIHRlc3QgY292ZXJzOg0KDQotIEhPVCBhbmQgbm9uLUhPVCB1 cGRhdGVzDQotIHN1bW1hcml6aW5nIChCUklOKSBpbmRleGVzLCB3aGljaCBkbyBub3QgYmxvY2sg SE9UDQotIFRPQVNUIGNvbHVtbnMNCi0gcGFydGlhbCwgbXVsdGktY29sdW1uIGFuZCB1bmlxdWUg aW5kZXhlcw0KLSBwYXJ0aXRpb25lZCB0YWJsZXMNCi0gZXhwcmVzc2lvbiBpbmRleGVzIHdob3Nl IGlucHV0IGNoYW5nZXMgd2hpbGUgdGhlIGV4cHJlc3Npb24ncyB2YWx1ZQ0KICBkb2VzIG9yIGRv ZXMgbm90LCBpbmNsdWRpbmcgZXhwcmVzc2lvbnMgc3RvcmVkIGFzIGFub3RoZXIgdHlwZQ0KLSBw YXJ0aWFsIGluZGV4ZXMsIHdpdGggdGhlIHJvdyBpbnNpZGUsIG91dHNpZGUsIGVudGVyaW5nIG9y IGxlYXZpbmcgdGhlDQogIHByZWRpY2F0ZQ0KLSBCRUZPUkUgUk9XIHRyaWdnZXJzIHRoYXQgY2hh bmdlIGFuIGluZGV4ZWQgY29sdW1uDQoNCkEgaG90X3VwZGF0ZXMgdGVzdCBpbiBjb250cmliL3Bh Z2VpbnNwZWN0IGNoZWNrcyB0aGUgSE9UIGNoYWluIGFuIHVwZGF0ZQ0KbGVhdmVzIG9uIHRoZSBw YWdlLCBhbmQgdGhhdCBWQUNVVU0gY29sbGFwc2VzIGl0Lg0KDQpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tLzc4NTc0QjI0LUJFMEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQ0BhbWF6b24u Y29tDQotLS0NCiBjb250cmliL3BhZ2VpbnNwZWN0L01ha2VmaWxlICAgICAgICAgICAgICAgICAg fCAgIDMgKy0NCiBjb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCAg fCAxMzAgKysrKw0KIGNvbnRyaWIvcGFnZWluc3BlY3QvbWVzb24uYnVpbGQgICAgICAgICAgICAg ICB8ICAgMSArDQogY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAg IHwgMTEyICsrKw0KIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvdXBkYXRlLWVwcS1pbmRleGVzLm91 dCB8ICA5NCArKysNCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAg ICAgfCAgIDEgKw0KIC4uLi9pc29sYXRpb24vc3BlY3MvdXBkYXRlLWVwcS1pbmRleGVzLnNwZWMg ICB8ICA1NSArKw0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0ICAg ICB8IDcyMyArKysrKysrKysrKysrKysrKysNCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0NCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBk YXRlcy5zcWwgICAgICAgICAgfCA0NjggKysrKysrKysrKysrDQogMTAgZmlsZXMgY2hhbmdlZCwg MTU4NyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBj b250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dA0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb250cmliL3BhZ2VpbnNwZWN0L3NxbC9ob3RfdXBkYXRlcy5zcWwNCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3VwZGF0ZS1lcHEtaW5kZXhl cy5vdXQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3VwZGF0 ZS1lcHEtaW5kZXhlcy5zcGVjDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0DQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbA0KDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5z cGVjdC9NYWtlZmlsZSBiL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUNCmluZGV4IGVhZTk4 OTU2OWQwLi4yMzFiZDgyMTM3ZSAxMDA2NDQNCi0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFr ZWZpbGUNCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUNCkBAIC0zMiw3ICszMiw4 IEBAIFJFR1JFU1MgPSBcDQogCWdpbiBcDQogCWdpc3QgXA0KIAloYXNoIFwNCi0Jb2xkZXh0dmVy c2lvbnMNCisJb2xkZXh0dmVyc2lvbnMgXA0KKwlob3RfdXBkYXRlcw0KIA0KIGlmZGVmIFVTRV9Q R1hTDQogUEdfQ09ORklHID0gcGdfY29uZmlnDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5z cGVjdC9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgYi9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVj dGVkL2hvdF91cGRhdGVzLm91dA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwLi45Y2U2YTM0ZjRlMw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvY29udHJpYi9wYWdlaW5zcGVj dC9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQNCkBAIC0wLDAgKzEsMTMwIEBADQorLS0NCistLSBI T1RfVVBEQVRFUw0KKy0tIFRoZSBIT1QgY2hhaW4gYW4gdXBkYXRlIGxlYXZlcyBvbiB0aGUgcGFn ZS4gIHNyYy90ZXN0L3JlZ3Jlc3Mncw0KKy0tIGhvdF91cGRhdGVzIHRlc3QgY292ZXJzIHdoaWNo IHVwZGF0ZXMgYXJlIEhPVC4NCistLQ0KKy0tIG9sZGV4dHZlcnNpb25zLCB3aGljaCBydW5zIGp1 c3QgYmVmb3JlIHRoaXMsIGRyb3BzIHRoZSBleHRlbnNpb247IHRoaXMNCistLSBjcmVhdGVzIGl0 IGFnYWluIGFuZCBkcm9wcyBpdCBhdCB0aGUgZW5kLCBsZWF2aW5nIHRoaW5ncyBhcyB0aGV5IHdl cmUNCitDUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Ow0KKy0tIFN1bSBvZiBjb21taXR0ZWQg YW5kIGluLXByb2dyZXNzIChub24tSE9ULCBIT1QpIHVwZGF0ZSBjb3VudGVycy4NCitDUkVBVEUg RlVOQ1RJT04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQ0KK1JFVFVSTlMgVEFCTEUgKA0K KyAgICB1cGRhdGVzIEJJR0lOVCwNCisgICAgaG90IEJJR0lOVA0KKykgQVMgJCQNCitERUNMQVJF DQorICAgIHJlbF9vaWQgb2lkOw0KK0JFR0lODQorICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJl Z2NsYXNzOjpvaWQ7DQorICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVz X3VwZGF0ZWQocmVsX29pZCksIDApICsNCisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0 X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsNCisgICAgaG90IDo9IENPQUxF U0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKw0KKyAgICAg ICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29p ZCksIDApOw0KKyAgICBSRVRVUk4gTkVYVDsNCitFTkQ7DQorJCQgTEFOR1VBR0UgcGxwZ3NxbDsN CistLSBUcnVlIGlmZiBhbm90aGVyIGxpdmUgdHVwbGUgb24gdGhlIHNhbWUgcGFnZSBoYXMgaXRz IHRfY3RpZCBwb2ludGluZyBhdA0KKy0tIHRhcmdldF9jdGlkLCBpLmUuIHRhcmdldF9jdGlkIGlz IGEgbGF0ZXIgbWVtYmVyIG9mIGEgSE9UIGNoYWluLg0KK0NSRUFURSBGVU5DVElPTiBoYXNfaG90 X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkNCitSRVRVUk5TIGJvb2xlYW4g TEFOR1VBR0Ugc3FsIEFTICQkDQorICAgIFNFTEVDVCBFWElTVFMgKA0KKyAgICAgICAgU0VMRUNU IEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkX2Jsb2NrKHRhcmdldF9j dGlkKTo6aW50KSkNCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMSBBTkQgdF9jdGlkID0gdGFy Z2V0X2N0aWQNCisgICAgICAgICAgQU5EIGxwIDw+IHRpZF9vZmZzZXQodGFyZ2V0X2N0aWQpKQ0K KyQkOw0KKy0tIFRoZSBIT1QgY2hhaW4gdGhyb3VnaCBzdGFydF9jdGlkLCBmcm9tIHRoZSBsaXZl IHR1cGxlIHBvaW50aW5nIGF0IGl0IGlmDQorLS0gdGhlcmUgaXMgb25lLCBmb2xsb3dpbmcgdF9j dGlkIG9uIHRoZSBwYWdlIHVudGlsIGEgdHVwbGUgcG9pbnRzIGF0IGl0c2VsZi4NCitDUkVBVEUg RlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHN0YXJ0X2N0aWQgdGlkKQ0K K1JFVFVSTlMgVEFCTEUgKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRl eHQsIHRfY3RpZCB0aWQpDQorTEFOR1VBR0Ugc3FsIEFTICQkDQorICAgIFdJVEggUkVDVVJTSVZF IGl0ZW1zIEFTICgNCisgICAgICAgIFNFTEVDVCAqIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZShyZWxfbmFtZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aWRfYmxvY2soc3RhcnRfY3RpZCk6OmludCkpDQorICAgICksIGNoYWlu IChjaGFpbl9wb3NpdGlvbiwgbHApIEFTICgNCisgICAgICAgIFNFTEVDVCAwLCBjb2FsZXNjZSgo U0VMRUNUIGxwIEZST00gaXRlbXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUg bHBfZmxhZ3MgPSAxIEFORCB0X2N0aWQgPSBzdGFydF9jdGlkDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQU5EIGxwIDw+IHRpZF9vZmZzZXQoc3RhcnRfY3RpZCkpLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpZF9vZmZzZXQoc3RhcnRfY3RpZCkpDQorICAgICAgICBVTklP TiBBTEwNCisgICAgICAgIFNFTEVDVCBjLmNoYWluX3Bvc2l0aW9uICsgMSwgdGlkX29mZnNldChp LnRfY3RpZCkNCisgICAgICAgIEZST00gY2hhaW4gYyBKT0lOIGl0ZW1zIGkgT04gaS5scCA9IGMu bHANCisgICAgICAgIFdIRVJFIHRpZF9ibG9jayhpLnRfY3RpZCkgPSB0aWRfYmxvY2soc3RhcnRf Y3RpZCkNCisgICAgICAgICAgQU5EIHRpZF9vZmZzZXQoaS50X2N0aWQpIDw+IGMubHANCisgICAg KQ0KKyAgICBTRUxFQ1QgYy5jaGFpbl9wb3NpdGlvbiwNCisgICAgICAgICAgIGZvcm1hdCgnKCVz LCVzKScsIHRpZF9ibG9jayhzdGFydF9jdGlkKSwgYy5scCk6OnRpZCwNCisgICAgICAgICAgIENB U0UgaS5scF9mbGFncyBXSEVOIDAgVEhFTiAndW51c2VkICgwKScgV0hFTiAxIFRIRU4gJ25vcm1h bCAoMSknDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0 ICgyKScgV0hFTiAzIFRIRU4gJ2RlYWQgKDMpJyBFTkQsDQorICAgICAgICAgICBpLnRfY3RpZA0K KyAgICBGUk9NIGNoYWluIGMgSk9JTiBpdGVtcyBpIE9OIGkubHAgPSBjLmxwDQorICAgIE9SREVS IEJZIGMuY2hhaW5fcG9zaXRpb24NCiskJDsNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBC YXNpYyBIT1Q6IHVwZGF0ZSBvZiBhIG5vbi1pbmRleGVkIGNvbHVtbg0KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KKy0tIChObyBhdXRvdmFjdXVtOiB0aGUgY2hhaW4gcHJpbnRlZCBiZWxvdyBtdXN0 IG5vdCBiZSBwcnVuZWQgZmlyc3QuKQ0KK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoDQorICAgIGlk IGludCBQUklNQVJZIEtFWSwNCisgICAgaW5kZXhlZF9jb2wgaW50LA0KKyAgICBub25faW5kZXhl ZF9jb2wgdGV4dA0KKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQg PSBvZmYpOw0KK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pbmRleGVkX2lkeCBPTiBob3RfdGVzdChp bmRleGVkX2NvbCk7DQorSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0 aWFsJyk7DQorSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7 DQorSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAzMDAsICdpbml0aWFsJyk7DQorU0VM RUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0KKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsNCisgdXBkYXRlcyB8IGhvdCANCist LS0tLS0tLS0rLS0tLS0NCisgICAgICAgMCB8ICAgMA0KKygxIHJvdykNCisNCistLSBUaHJlZSBj bGFzc2ljIEhPVCB1cGRhdGVzIChub24taW5kZXhlZCBjb2wpLg0KK1VQREFURSBob3RfdGVzdCBT RVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7DQorVVBEQVRFIGhv dF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsNCitV UERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hFUkUgaWQg PSAzOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykN CisNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7DQorIHVwZGF0ZXMg fCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgIDMgfCAgIDMNCisoMSByb3cpDQorDQor LS0gQ2hhaW4tb2YtMSBvbiBpZD0xIHN0aWxsIGhhcyBhIHByZWRlY2Vzc29yIGxpbmUgcG9pbnRl ci4NCitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hF UkUgaWQgPSAxKQ0KK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVw bGUuY3RpZCkgQVMgaGFzX2NoYWluLA0KKyAgICAgICBjaGFpbl9wb3NpdGlvbiwgcHJpbnRfaG90 X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQNCitGUk9NIGN1cnJlbnRfdHVwbGUsIExBVEVS QUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7DQorIGhh c19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAgfCAgbHBfZmxhZ3MgIHwgdF9jdGlkIA0K Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0NCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCwxKSB8IG5vcm1hbCAoMSkgfCAo MCw0KQ0KKyB0ICAgICAgICAgfCAgICAgICAgICAgICAgMSB8ICgwLDQpIHwgbm9ybWFsICgxKSB8 ICgwLDQpDQorKDIgcm93cykNCisNCistLSBWQUNVVU0gY29sbGFwc2VzIHRoZSBjaGFpbi4NCitW QUNVVU0gaG90X3Rlc3Q7DQorV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9N IGhvdF90ZXN0IFdIRVJFIGlkID0gMSkNCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3Qn LCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwNCisgICAgICAgY2hhaW5fcG9zaXRp b24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkDQorRlJPTSBjdXJyZW50 X3R1cGxlLCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxl LmN0aWQpOw0KKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2ZsYWdz ICB8IHRfY3RpZCANCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tDQorIGYgICAgICAgICB8ICAgICAgICAgICAgICAwIHwgKDAsNCkgfCBu b3JtYWwgKDEpIHwgKDAsNCkNCisoMSByb3cpDQorDQorRFJPUCBUQUJMRSBob3RfdGVzdDsNCitE Uk9QIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsNCitEUk9QIEZVTkNUSU9OIHBy aW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOw0KK0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0 ZXh0KTsNCitEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsNCmRpZmYgLS1naXQgYS9jb250cmli L3BhZ2VpbnNwZWN0L21lc29uLmJ1aWxkIGIvY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWls ZA0KaW5kZXggYzQzZWE0MDBhNGQuLjEwNWE1YjdkNjhlIDEwMDY0NA0KLS0tIGEvY29udHJpYi9w YWdlaW5zcGVjdC9tZXNvbi5idWlsZA0KKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5i dWlsZA0KQEAgLTU2LDYgKzU2LDcgQEAgdGVzdHMgKz0gew0KICAgICAgICdoYXNoJywNCiAgICAg ICAnY2hlY2tzdW0nLA0KICAgICAgICdvbGRleHR2ZXJzaW9ucycsDQorICAgICAgJ2hvdF91cGRh dGVzJywNCiAgICAgXSwNCiAgIH0sDQogfQ0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3Bl Y3Qvc3FsL2hvdF91cGRhdGVzLnNxbCBiL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2hvdF91cGRh dGVzLnNxbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4xNGRmNWJk YjE4MA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvaG90X3Vw ZGF0ZXMuc3FsDQpAQCAtMCwwICsxLDExMiBAQA0KKy0tDQorLS0gSE9UX1VQREFURVMNCistLSBU aGUgSE9UIGNoYWluIGFuIHVwZGF0ZSBsZWF2ZXMgb24gdGhlIHBhZ2UuICBzcmMvdGVzdC9yZWdy ZXNzJ3MNCistLSBob3RfdXBkYXRlcyB0ZXN0IGNvdmVycyB3aGljaCB1cGRhdGVzIGFyZSBIT1Qu DQorLS0NCisNCistLSBvbGRleHR2ZXJzaW9ucywgd2hpY2ggcnVucyBqdXN0IGJlZm9yZSB0aGlz LCBkcm9wcyB0aGUgZXh0ZW5zaW9uOyB0aGlzDQorLS0gY3JlYXRlcyBpdCBhZ2FpbiBhbmQgZHJv cHMgaXQgYXQgdGhlIGVuZCwgbGVhdmluZyB0aGluZ3MgYXMgdGhleSB3ZXJlDQorQ1JFQVRFIEVY VEVOU0lPTiBwYWdlaW5zcGVjdDsNCisNCistLSBTdW0gb2YgY29tbWl0dGVkIGFuZCBpbi1wcm9n cmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291bnRlcnMuDQorQ1JFQVRFIEZVTkNUSU9OIGdl dF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkNCitSRVRVUk5TIFRBQkxFICgNCisgICAgdXBkYXRl cyBCSUdJTlQsDQorICAgIGhvdCBCSUdJTlQNCispIEFTICQkDQorREVDTEFSRQ0KKyAgICByZWxf b2lkIG9pZDsNCitCRUdJTg0KKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lk Ow0KKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJl bF9vaWQpLCAwKSArDQorICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7DQorICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsNCisgICAgICAgICAgIENPQUxF U0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsNCisg ICAgUkVUVVJOIE5FWFQ7DQorRU5EOw0KKyQkIExBTkdVQUdFIHBscGdzcWw7DQorDQorLS0gVHJ1 ZSBpZmYgYW5vdGhlciBsaXZlIHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgaGFzIGl0cyB0X2N0aWQg cG9pbnRpbmcgYXQNCistLSB0YXJnZXRfY3RpZCwgaS5lLiB0YXJnZXRfY3RpZCBpcyBhIGxhdGVy IG1lbWJlciBvZiBhIEhPVCBjaGFpbi4NCitDUkVBVEUgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbihy ZWxfbmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpDQorUkVUVVJOUyBib29sZWFuIExBTkdVQUdF IHNxbCBBUyAkJA0KKyAgICBTRUxFQ1QgRVhJU1RTICgNCisgICAgICAgIFNFTEVDVCBGUk9NIGhl YXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZF9ibG9jayh0YXJnZXRfY3RpZCk6Omlu dCkpDQorICAgICAgICBXSEVSRSBscF9mbGFncyA9IDEgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlk DQorICAgICAgICAgIEFORCBscCA8PiB0aWRfb2Zmc2V0KHRhcmdldF9jdGlkKSkNCiskJDsNCisN CistLSBUaGUgSE9UIGNoYWluIHRocm91Z2ggc3RhcnRfY3RpZCwgZnJvbSB0aGUgbGl2ZSB0dXBs ZSBwb2ludGluZyBhdCBpdCBpZg0KKy0tIHRoZXJlIGlzIG9uZSwgZm9sbG93aW5nIHRfY3RpZCBv biB0aGUgcGFnZSB1bnRpbCBhIHR1cGxlIHBvaW50cyBhdCBpdHNlbGYuDQorQ1JFQVRFIEZVTkNU SU9OIHByaW50X2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkNCitSRVRV Uk5TIFRBQkxFIChjaGFpbl9wb3NpdGlvbiBpbnQsIGN0aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0 X2N0aWQgdGlkKQ0KK0xBTkdVQUdFIHNxbCBBUyAkJA0KKyAgICBXSVRIIFJFQ1VSU0lWRSBpdGVt cyBBUyAoDQorICAgICAgICBTRUxFQ1QgKiBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3Bh Z2UocmVsX25hbWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGlkX2Jsb2NrKHN0YXJ0X2N0aWQpOjppbnQpKQ0KKyAgICApLCBjaGFpbiAoY2hh aW5fcG9zaXRpb24sIGxwKSBBUyAoDQorICAgICAgICBTRUxFQ1QgMCwgY29hbGVzY2UoKFNFTEVD VCBscCBGUk9NIGl0ZW1zDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGxwX2Zs YWdzID0gMSBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFORCBscCA8PiB0aWRfb2Zmc2V0KHN0YXJ0X2N0aWQpKSwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aWRfb2Zmc2V0KHN0YXJ0X2N0aWQpKQ0KKyAgICAgICAgVU5JT04gQUxM DQorICAgICAgICBTRUxFQ1QgYy5jaGFpbl9wb3NpdGlvbiArIDEsIHRpZF9vZmZzZXQoaS50X2N0 aWQpDQorICAgICAgICBGUk9NIGNoYWluIGMgSk9JTiBpdGVtcyBpIE9OIGkubHAgPSBjLmxwDQor ICAgICAgICBXSEVSRSB0aWRfYmxvY2soaS50X2N0aWQpID0gdGlkX2Jsb2NrKHN0YXJ0X2N0aWQp DQorICAgICAgICAgIEFORCB0aWRfb2Zmc2V0KGkudF9jdGlkKSA8PiBjLmxwDQorICAgICkNCisg ICAgU0VMRUNUIGMuY2hhaW5fcG9zaXRpb24sDQorICAgICAgICAgICBmb3JtYXQoJyglcywlcykn LCB0aWRfYmxvY2soc3RhcnRfY3RpZCksIGMubHApOjp0aWQsDQorICAgICAgICAgICBDQVNFIGku bHBfZmxhZ3MgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknIFdIRU4gMSBUSEVOICdub3JtYWwgKDEp Jw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMikn IFdIRU4gMyBUSEVOICdkZWFkICgzKScgRU5ELA0KKyAgICAgICAgICAgaS50X2N0aWQNCisgICAg RlJPTSBjaGFpbiBjIEpPSU4gaXRlbXMgaSBPTiBpLmxwID0gYy5scA0KKyAgICBPUkRFUiBCWSBj LmNoYWluX3Bvc2l0aW9uDQorJCQ7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gQmFz aWMgSE9UOiB1cGRhdGUgb2YgYSBub24taW5kZXhlZCBjb2x1bW4NCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCistLSAoTm8gYXV0b3ZhY3V1bTogdGhlIGNoYWluIHByaW50ZWQgYmVsb3cgbXVzdCBu b3QgYmUgcHJ1bmVkIGZpcnN0LikNCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKA0KKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksDQorICAgIGluZGV4ZWRfY29sIGludCwNCisgICAgbm9uX2luZGV4ZWRf Y29sIHRleHQNCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVkID0g b2ZmKTsNCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5k ZXhlZF9jb2wpOw0KKw0KK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5p dGlhbCcpOw0KK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnaW5pdGlhbCcp Ow0KK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOw0KKw0K K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7DQorDQorLS0gVGhyZWUgY2xhc3NpYyBIT1QgdXBkYXRlcyAo bm9uLWluZGV4ZWQgY29sKS4NCitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9 ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOw0KK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4 ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7DQorVVBEQVRFIGhvdF90ZXN0IFNFVCBu b25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDMnIFdIRVJFIGlkID0gMzsNCitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOw0KKw0KKy0tIENoYWluLW9mLTEgb24gaWQ9MSBzdGlsbCBoYXMgYSBwcmVkZWNlc3Nv ciBsaW5lIHBvaW50ZXIuDQorV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9N IGhvdF90ZXN0IFdIRVJFIGlkID0gMSkNCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3Qn LCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwNCisgICAgICAgY2hhaW5fcG9zaXRp b24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkDQorRlJPTSBjdXJyZW50 X3R1cGxlLCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxl LmN0aWQpOw0KKw0KKy0tIFZBQ1VVTSBjb2xsYXBzZXMgdGhlIGNoYWluLg0KK1ZBQ1VVTSBob3Rf dGVzdDsNCisNCitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZST00gaG90X3Rl c3QgV0hFUkUgaWQgPSAxKQ0KK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJl bnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLA0KKyAgICAgICBjaGFpbl9wb3NpdGlvbiwgcHJp bnRfaG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQNCitGUk9NIGN1cnJlbnRfdHVwbGUs IExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7 DQorDQorRFJPUCBUQUJMRSBob3RfdGVzdDsNCisNCitEUk9QIEZVTkNUSU9OIGhhc19ob3RfY2hh aW4odGV4dCwgdGlkKTsNCitEUk9QIEZVTkNUSU9OIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQp Ow0KK0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsNCitEUk9QIEVYVEVOU0lPTiBw YWdlaW5zcGVjdDsNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvdXBk YXRlLWVwcS1pbmRleGVzLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC91cGRhdGUt ZXBxLWluZGV4ZXMub3V0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu LjNhMjhiZmZhNTk2DQotLS0gL2Rldi9udWxsDQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvdXBkYXRlLWVwcS1pbmRleGVzLm91dA0KQEAgLTAsMCArMSw5NCBAQA0KK1BhcnNlZCB0 ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zDQorDQorc3RhcnRpbmcgcGVybXV0YXRpb246IHMyX2Jl Z2luIHMyX3N0YXR1cyBzMV9zdGF0dXMgczJfY29tbWl0IHMxX2NoZWNrDQorc3RlcCBzMl9iZWdp bjogQkVHSU47DQorc3RlcCBzMl9zdGF0dXM6IFVQREFURSBob3RfZXBxIFNFVCBzdGF0dXMgPSAn YicgV0hFUkUgaWQgPSAxOw0KK3N0ZXAgczFfc3RhdHVzOiBVUERBVEUgaG90X2VwcSBTRVQgc3Rh dHVzID0gJ2EnIFdIRVJFIGlkID0gMTsgPHdhaXRpbmcgLi4uPg0KK3N0ZXAgczJfY29tbWl0OiBD T01NSVQ7DQorc3RlcCBzMV9zdGF0dXM6IDwuLi4gY29tcGxldGVkPg0KK3N0ZXAgczFfY2hlY2s6 IA0KKwlTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorCVNFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsNCisJU0VMRUNUIGNvdW50KCopIEFTIHN0YXR1c19hIEZST00gaG90X2VwcSBXSEVSRSBz dGF0dXMgPSAnYSc7DQorCVNFTEVDVCBjb3VudCgqKSBBUyBkb2NfYSBGUk9NIGhvdF9lcHEgV0hF UkUgZG9jLT4+J3N0YXR1cycgPSAnYSc7DQorCVNFTEVDVCBjb3VudCgqKSBBUyB2aXAgRlJPTSBo b3RfZXBxIFdIRVJFIHZpcCBBTkQgaWQgPSAxOw0KKwlSRVNFVCBlbmFibGVfc2Vxc2NhbjsNCisJ UkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47DQorDQorc3RhdHVzX2ENCistLS0tLS0tLQ0KKyAgICAg ICAxDQorKDEgcm93KQ0KKw0KK2RvY19hDQorLS0tLS0NCisgICAgMQ0KKygxIHJvdykNCisNCit2 aXANCistLS0NCisgIDENCisoMSByb3cpDQorDQorDQorc3RhcnRpbmcgcGVybXV0YXRpb246IHMy X2JlZ2luIHMyX2RvYyBzMV9kb2MgczJfY29tbWl0IHMxX2NoZWNrDQorc3RlcCBzMl9iZWdpbjog QkVHSU47DQorc3RlcCBzMl9kb2M6IFVQREFURSBob3RfZXBxIFNFVCBkb2MgPSBqc29uYl9zZXQo ZG9jLCBBUlJBWVsnc3RhdHVzJ10sIHRvX2pzb25iKCdiJzo6dGV4dCkpIFdIRVJFIGlkID0gMTsN CitzdGVwIHMxX2RvYzogVVBEQVRFIGhvdF9lcHEgU0VUIGRvYyA9IGpzb25iX3NldChkb2MsIEFS UkFZWydzdGF0dXMnXSwgdG9fanNvbmIoJ2EnOjp0ZXh0KSkgV0hFUkUgaWQgPSAxOyA8d2FpdGlu ZyAuLi4+DQorc3RlcCBzMl9jb21taXQ6IENPTU1JVDsNCitzdGVwIHMxX2RvYzogPC4uLiBjb21w bGV0ZWQ+DQorc3RlcCBzMV9jaGVjazogDQorCVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCisJ U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOw0KKwlTRUxFQ1QgY291bnQoKikgQVMgc3RhdHVz X2EgRlJPTSBob3RfZXBxIFdIRVJFIHN0YXR1cyA9ICdhJzsNCisJU0VMRUNUIGNvdW50KCopIEFT IGRvY19hIEZST00gaG90X2VwcSBXSEVSRSBkb2MtPj4nc3RhdHVzJyA9ICdhJzsNCisJU0VMRUNU IGNvdW50KCopIEFTIHZpcCBGUk9NIGhvdF9lcHEgV0hFUkUgdmlwIEFORCBpZCA9IDE7DQorCVJF U0VUIGVuYWJsZV9zZXFzY2FuOw0KKwlSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsNCisNCitzdGF0 dXNfYQ0KKy0tLS0tLS0tDQorICAgICAgIDENCisoMSByb3cpDQorDQorZG9jX2ENCistLS0tLQ0K KyAgICAxDQorKDEgcm93KQ0KKw0KK3ZpcA0KKy0tLQ0KKyAgMQ0KKygxIHJvdykNCisNCisNCitz dGFydGluZyBwZXJtdXRhdGlvbjogczJfYmVnaW4gczJfdmlwIHMxX3ZpcCBzMl9jb21taXQgczFf Y2hlY2sNCitzdGVwIHMyX2JlZ2luOiBCRUdJTjsNCitzdGVwIHMyX3ZpcDogVVBEQVRFIGhvdF9l cHEgU0VUIHZpcCA9IGZhbHNlIFdIRVJFIGlkID0gMTsNCitzdGVwIHMxX3ZpcDogVVBEQVRFIGhv dF9lcHEgU0VUIHZpcCA9IHRydWUgV0hFUkUgaWQgPSAxOyA8d2FpdGluZyAuLi4+DQorc3RlcCBz Ml9jb21taXQ6IENPTU1JVDsNCitzdGVwIHMxX3ZpcDogPC4uLiBjb21wbGV0ZWQ+DQorc3RlcCBz MV9jaGVjazogDQorCVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCisJU0VUIGVuYWJsZV9iaXRt YXBzY2FuID0gb2ZmOw0KKwlTRUxFQ1QgY291bnQoKikgQVMgc3RhdHVzX2EgRlJPTSBob3RfZXBx IFdIRVJFIHN0YXR1cyA9ICdhJzsNCisJU0VMRUNUIGNvdW50KCopIEFTIGRvY19hIEZST00gaG90 X2VwcSBXSEVSRSBkb2MtPj4nc3RhdHVzJyA9ICdhJzsNCisJU0VMRUNUIGNvdW50KCopIEFTIHZp cCBGUk9NIGhvdF9lcHEgV0hFUkUgdmlwIEFORCBpZCA9IDE7DQorCVJFU0VUIGVuYWJsZV9zZXFz Y2FuOw0KKwlSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsNCisNCitzdGF0dXNfYQ0KKy0tLS0tLS0t DQorICAgICAgIDENCisoMSByb3cpDQorDQorZG9jX2ENCistLS0tLQ0KKyAgICAxDQorKDEgcm93 KQ0KKw0KK3ZpcA0KKy0tLQ0KKyAgMQ0KKygxIHJvdykNCisNCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZQ0KaW5kZXggYmY5YTIwMzdjNzAuLmQ3ZGE4OTlhYTg1IDEwMDY0NA0KLS0t IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQ0KKysrIGIvc3JjL3Rlc3Qv aXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQ0KQEAgLTQzLDYgKzQzLDcgQEAgdGVzdDogZmst ZmFzdHBhdGgtbnVsbC1rZXkNCiB0ZXN0OiBzdWJ4aWQtb3ZlcmZsb3cNCiB0ZXN0OiBldmFsLXBs YW4tcXVhbA0KIHRlc3Q6IGV2YWwtcGxhbi1xdWFsLXRyaWdnZXINCit0ZXN0OiB1cGRhdGUtZXBx LWluZGV4ZXMNCiB0ZXN0OiBldmFsLXBsYW4tcXVhbC1wYXJ0aXRpb24tcHJ1bmUNCiB0ZXN0OiBp bnBsYWNlLWludmFsDQogdGVzdDogaW50cmEtZ3JhbnQtaW5wbGFjZQ0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy91cGRhdGUtZXBxLWluZGV4ZXMuc3BlYyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy91cGRhdGUtZXBxLWluZGV4ZXMuc3BlYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4wOTQyMGMxYTA2MA0KLS0tIC9kZXYvbnVsbA0KKysr IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3VwZGF0ZS1lcHEtaW5kZXhlcy5zcGVjDQpAQCAt MCwwICsxLDU1IEBADQorIyBVUERBVEVzIHdob3NlIHRhcmdldCByb3cgaXMgdXBkYXRlZCBjb25j dXJyZW50bHksIHdpdGggYSBCRUZPUkUgUk9XIFVQREFURQ0KKyMgdHJpZ2dlci4gIFRoZSB0cmln Z2VyIGNvZGUgbG9ja3MgdGhlIGxhdGVzdCB2ZXJzaW9uIGFuZCByZWJ1aWxkcyB0aGUgbmV3DQor IyByb3cgZnJvbSBpdCwgc28gZGVjaWRpbmcgd2hpY2ggaW5kZXhlcyB0aGUgVVBEQVRFIGNoYW5n ZXMgbXVzdCBjb21wYXJlIHRoZQ0KKyMgbmV3IHJvdyB3aXRoIHRoYXQgbGF0ZXN0IHZlcnNpb24s IG5vdCB3aXRoIHRoZSBvbmUgdGhlIFVQREFURSBmaXJzdCByZWFkLg0KKyMNCisjIFRoZSByb3cg c3RhcnRzIHdpdGggc3RhdHVzIGEsIGluc2lkZSB0aGUgcGFydGlhbCBpbmRleC4gIHMyIGNoYW5n ZXMgaXQgYW5kDQorIyBob2xkcyB0aGUgbG9jazsgczEgdGhlbiBzZXRzIGl0IGJhY2sgYW5kIHdh aXRzLiAgQ29tcGFyZWQgd2l0aCB0aGUgdmVyc2lvbg0KKyMgczEgZmlyc3QgcmVhZCwgczEgd291 bGQgY2hhbmdlIG5vdGhpbmcsIGFuZCBldmVyeSBpbmRleCB3b3VsZCBrZWVwIHRoZQ0KKyMgZW50 cnkgZm9yIHRoZSB2ZXJzaW9uIHMyIHdyb3RlLg0KKw0KK3NldHVwDQorew0KKwlDUkVBVEUgVEFC TEUgaG90X2VwcSAoaWQgaW50IFBSSU1BUlkgS0VZLCBzdGF0dXMgdGV4dCwgZG9jIGpzb25iLCB2 aXAgYm9vbCkNCisJCVdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorCUNSRUFURSBJTkRFWCBob3Rf ZXBxX3N0YXR1cyBPTiBob3RfZXBxIChzdGF0dXMpOw0KKwlDUkVBVEUgSU5ERVggaG90X2VwcV9k b2MgT04gaG90X2VwcSAoKGRvYy0+PidzdGF0dXMnKSk7DQorCUNSRUFURSBJTkRFWCBob3RfZXBx X3ZpcCBPTiBob3RfZXBxIChpZCkgV0hFUkUgdmlwOw0KKwlJTlNFUlQgSU5UTyBob3RfZXBxIFZB TFVFUyAoMSwgJ2EnLCBqc29uYl9idWlsZF9vYmplY3QoJ3N0YXR1cycsICdhJyksIHRydWUpOw0K KwlDUkVBVEUgRlVOQ1RJT04gaG90X2VwcV90cmlnKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdF IHBscGdzcWwgQVMNCisJCSQkQkVHSU4gUkVUVVJOIE5FVzsgRU5EJCQ7DQorCUNSRUFURSBUUklH R0VSIGhvdF9lcHFfYmVmb3JlIEJFRk9SRSBVUERBVEUgT04gaG90X2VwcQ0KKwkJRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gaG90X2VwcV90cmlnKCk7DQorfQ0KKw0KK3RlYXJkb3duDQor ew0KKwlEUk9QIFRBQkxFIGhvdF9lcHE7DQorCURST1AgRlVOQ1RJT04gaG90X2VwcV90cmlnKCk7 DQorfQ0KKw0KK3Nlc3Npb24gczENCitzdGVwIHMxX3N0YXR1cwl7IFVQREFURSBob3RfZXBxIFNF VCBzdGF0dXMgPSAnYScgV0hFUkUgaWQgPSAxOyB9DQorc3RlcCBzMV9kb2MJCXsgVVBEQVRFIGhv dF9lcHEgU0VUIGRvYyA9IGpzb25iX3NldChkb2MsIEFSUkFZWydzdGF0dXMnXSwgdG9fanNvbmIo J2EnOjp0ZXh0KSkgV0hFUkUgaWQgPSAxOyB9DQorc3RlcCBzMV92aXAJCXsgVVBEQVRFIGhvdF9l cHEgU0VUIHZpcCA9IHRydWUgV0hFUkUgaWQgPSAxOyB9DQorc3RlcCBzMV9jaGVjaw0KK3sNCisJ U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0KKwlTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 DQorCVNFTEVDVCBjb3VudCgqKSBBUyBzdGF0dXNfYSBGUk9NIGhvdF9lcHEgV0hFUkUgc3RhdHVz ID0gJ2EnOw0KKwlTRUxFQ1QgY291bnQoKikgQVMgZG9jX2EgRlJPTSBob3RfZXBxIFdIRVJFIGRv Yy0+PidzdGF0dXMnID0gJ2EnOw0KKwlTRUxFQ1QgY291bnQoKikgQVMgdmlwIEZST00gaG90X2Vw cSBXSEVSRSB2aXAgQU5EIGlkID0gMTsNCisJUkVTRVQgZW5hYmxlX3NlcXNjYW47DQorCVJFU0VU IGVuYWJsZV9iaXRtYXBzY2FuOw0KK30NCisNCitzZXNzaW9uIHMyDQorc3RlcCBzMl9iZWdpbgl7 IEJFR0lOOyB9DQorc3RlcCBzMl9zdGF0dXMJeyBVUERBVEUgaG90X2VwcSBTRVQgc3RhdHVzID0g J2InIFdIRVJFIGlkID0gMTsgfQ0KK3N0ZXAgczJfZG9jCQl7IFVQREFURSBob3RfZXBxIFNFVCBk b2MgPSBqc29uYl9zZXQoZG9jLCBBUlJBWVsnc3RhdHVzJ10sIHRvX2pzb25iKCdiJzo6dGV4dCkp IFdIRVJFIGlkID0gMTsgfQ0KK3N0ZXAgczJfdmlwCQl7IFVQREFURSBob3RfZXBxIFNFVCB2aXAg PSBmYWxzZSBXSEVSRSBpZCA9IDE7IH0NCitzdGVwIHMyX2NvbW1pdAl7IENPTU1JVDsgfQ0KKw0K K3Blcm11dGF0aW9uIHMyX2JlZ2luIHMyX3N0YXR1cyBzMV9zdGF0dXMgczJfY29tbWl0IHMxX2No ZWNrDQorcGVybXV0YXRpb24gczJfYmVnaW4gczJfZG9jIHMxX2RvYyBzMl9jb21taXQgczFfY2hl Y2sNCitwZXJtdXRhdGlvbiBzMl9iZWdpbiBzMl92aXAgczFfdmlwIHMyX2NvbW1pdCBzMV9jaGVj aw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uZjgzYTY4NmYzYTkNCi0tLSAvZGV2L251bGwN CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0DQpAQCAtMCww ICsxLDcyMyBAQA0KKy0tDQorLS0gSE9UX1VQREFURVMNCistLSBUZXN0IEhlYXAtT25seSBUdXBs ZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zDQorLS0NCistLSBFeHBlY3RlZCBvdXRwdXQgcmVjb3Jk cyB3aGljaCBVUERBVEVzIGFyZSBIT1QsIHNvIHRoYXQgYSBjaGFuZ2UgdG8gdGhlDQorLS0gcnVs ZXMgc2hvd3MgdXAgYXMgYSBjaGFuZ2UgdG8gdGhpcyBmaWxlLiAgY29udHJpYi9wYWdlaW5zcGVj dCdzDQorLS0gaG90X3VwZGF0ZXMgdGVzdCBsb29rcyBhdCB0aGUgSE9UIGNoYWluIGl0c2VsZi4N CistLQ0KKy0tIFN1bSBvZiBjb21taXR0ZWQgYW5kIGluLXByb2dyZXNzIChub24tSE9ULCBIT1Qp IHVwZGF0ZSBjb3VudGVycy4NCitDUkVBVEUgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudChyZWxfbmFt ZSB0ZXh0KQ0KK1JFVFVSTlMgVEFCTEUgKA0KKyAgICB1cGRhdGVzIEJJR0lOVCwNCisgICAgaG90 IEJJR0lOVA0KKykgQVMgJCQNCitERUNMQVJFDQorICAgIHJlbF9vaWQgb2lkOw0KK0JFR0lODQor ICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7DQorICAgIHVwZGF0ZXMgOj0g Q09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsNCisgICAg ICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9v aWQpLCAwKTsNCisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZChyZWxfb2lkKSwgMCkgKw0KKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOw0KKyAgICBSRVRVUk4gTkVYVDsNCitF TkQ7DQorJCQgTEFOR1VBR0UgcGxwZ3NxbDsNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBT dW1tYXJpemluZyBpbmRleGVzIChCUklOKSBkbyBub3QgYmxvY2sgSE9UDQorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgNCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLA0KKyAgICB0cyB0aW1lc3RhbXAsDQorICAgIHZhbHVlIGludCwNCisgICAgYnJpbl9jb2wg aW50DQorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KK0NSRUFURSBJTkRFWCBob3RfdGVzdF90 c19icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4odHMpOw0KK0NSRUFURSBJTkRFWCBob3RfdGVz dF9icmluX2NvbF9icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4oYnJpbl9jb2wpOw0KK0lOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOw0KKy0t IEJSSU4gY29sdW1ucyBhcmUgc3VtbWFyaXppbmc7IHVwZGF0aW5nIHRoZW0gc3RheXMgY2xhc3Np YyBIT1QgZXZlbg0KKy0tIHRob3VnaCB0aGVpciB2YWx1ZXMgY2hhbmdlLg0KK1VQREFURSBob3Rf dGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7 DQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0KKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0K K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsNCisgdXBkYXRlcyB8IGhv dCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAgMSB8ICAgMQ0KKygxIHJvdykNCisNCistLSBO b24taW5kZXhlZCBjb2x1bW46IGFsc28gSE9ULg0KK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUg PSAyMDAgV0hFUkUgaWQgPSAxOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsN CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorIA0KKygxIHJvdykNCisNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7DQorIHVwZGF0ZXMgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgIDIgfCAgIDIN CisoMSByb3cpDQorDQorRFJPUCBUQUJMRSBob3RfdGVzdDsNCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCistLSBUT0FTVCBwYXJ0aWNpcGF0ZXMgaW4gSE9UIChub24taW5kZXhlZCBjb2x1bW4gcGF0 aHMgb25seSkNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KA0KKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksDQorICAgIGluZGV4ZWRfY29sIGludCwNCisgICAg bGFyZ2VfdGV4dCB0ZXh0LA0KKyAgICBzbWFsbF90ZXh0IHRleHQNCispIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7DQorQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVk X2NvbCk7DQorLS0gc3RvcmVkIG91dCBvZiBsaW5lIGF0IGFueSBibG9jayBzaXplDQorQUxURVIg VEFCTEUgaG90X3Rlc3QgQUxURVIgQ09MVU1OIGxhcmdlX3RleHQgU0VUIFNUT1JBR0UgRVhURVJO QUw7DQorU0VMRUNUIGN1cnJlbnRfc2V0dGluZygnYmxvY2tfc2l6ZScpOjppbnQgLyAyIEFTIGxh cmdlX2xlbiBcZ3NldA0KK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCByZXBl YXQoJ3gnLCA6bGFyZ2VfbGVuKSwgJ3NtYWxsJyk7DQorU0VMRUNUIHBnX2NvbHVtbl90b2FzdF9j aHVua19pZChsYXJnZV90ZXh0KSBJUyBOT1QgTlVMTCBBUyB0b2FzdGVkDQorICBGUk9NIGhvdF90 ZXN0Ow0KKyB0b2FzdGVkIA0KKy0tLS0tLS0tLQ0KKyB0DQorKDEgcm93KQ0KKw0KKy0tIE5vbi1p bmRleGVkLCBub24tVE9BU1QgY29sdW1uOiBIT1QuDQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFs bF90ZXh0ID0gJ3VwZGF0ZWQnOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsN CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorIA0KKygxIHJvdykNCisNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7DQorIHVwZGF0ZXMgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgIDEgfCAgIDEN CisoMSByb3cpDQorDQorLS0gVE9BU1QgY29sdW1uLCBpbmRleGVkX2NvbCB1bmNoYW5nZWQ6IEhP VC4NCitVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQoJ3knLCA6bGFyZ2Vf bGVuKTsNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cp DQorDQorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOw0KKyB1cGRhdGVz IHwgaG90IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgICAyIHwgICAyDQorKDEgcm93KQ0KKw0K K0RST1AgVEFCTEUgaG90X3Rlc3Q7DQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gUGFydGlh bCBpbmRleCB3aGVyZSB1cGRhdGUgbGVhdmVzIGluZGV4ZWQgYXR0cnMgdW5jaGFuZ2VkDQorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgNCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLA0KKyAgICBzdGF0dXMgdGV4dCwNCisgICAgZGF0YSB0ZXh0DQorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOw0KK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hY3RpdmVfaWR4IE9O IGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7DQorSU5TRVJUIElOVE8g aG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7DQorSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsNCitJTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7DQorLS0gVXBkYXRlIGRhdGEgb24g YSByb3cgd2hvc2Ugc3RhdHVzIG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRlOiBIT1QuDQor VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7DQorU0VM RUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0KKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsNCisgdXBkYXRlcyB8IGhvdCANCist LS0tLS0tLS0rLS0tLS0NCisgICAgICAgMSB8ICAgMQ0KKygxIHJvdykNCisNCistLSBVcGRhdGUg ZGF0YSBvbiBhIHJvdyBvdXRzaWRlIHRoZSBwcmVkaWNhdGU6IEhPVC4NCitVUERBVEUgaG90X3Rl c3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsNCitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCANCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOw0KKyB1cGRhdGVzIHwgaG90IA0KKy0tLS0tLS0tLSstLS0t LQ0KKyAgICAgICAyIHwgICAyDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBpZCwgc3RhdHVzIEZST00g aG90X3Rlc3QgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7DQorIGlkIHwgc3RhdHVzIA0KKy0tLS0r LS0tLS0tLS0NCisgIDEgfCBhY3RpdmUNCisoMSByb3cpDQorDQorRFJPUCBUQUJMRSBob3RfdGVz dDsNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBNdWx0aS1jb2x1bW4gYnRyZWU6IHVwZGF0 ZSBvZiBub24taW5kZXhlZCBjb2x1bW4NCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUg VEFCTEUgaG90X3Rlc3QgKA0KKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksDQorICAgIGNvbF9hIGlu dCwNCisgICAgY29sX2IgaW50LA0KKyAgICBjb2xfYyBpbnQsDQorICAgIGRhdGEgdGV4dA0KKykg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9O IGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7DQorSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgx LCAxMCwgMjAsIDMwLCAnZGF0YScpOw0KKy0tIGNvbF9jIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4N CitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7DQorLS0gZGF0YSBub3QgaW4gYW55IGlu ZGV4OiBIT1QuDQorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOw0KK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7DQorIHVwZGF0ZXMgfCBob3QgDQorLS0t LS0tLS0tKy0tLS0tDQorICAgICAgIDIgfCAgIDINCisoMSByb3cpDQorDQorRFJPUCBUQUJMRSBo b3RfdGVzdDsNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBVbmlxdWUgaW5kZXg6IHVwZGF0 ZSBvZiBub24taW5kZXhlZCBjb2x1bW4gKyB1bmlxdWVuZXNzIGVuZm9yY2VtZW50DQorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgNCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLA0KKyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsDQorICAgIGRhdGEgdGV4dA0K KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsIDEwMCwgJ2RhdGExJyk7DQorSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAs ICdkYXRhMicpOw0KK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsNCitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOw0KKyB1cGRhdGVzIHwgaG90IA0KKy0t LS0tLS0tLSstLS0tLQ0KKyAgICAgICAyIHwgICAyDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBpZCwg dW5pcXVlX2NvbCwgZGF0YSBGUk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOw0KKyBpZCB8IHVuaXF1 ZV9jb2wgfCAgZGF0YSAgIA0KKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQ0KKyAgMSB8ICAg ICAgICAxMDAgfCB1cGRhdGVkDQorICAyIHwgICAgICAgIDIwMCB8IHVwZGF0ZWQNCisoMiByb3dz KQ0KKw0KKy0tIFVuaXF1ZSBjb25zdHJhaW50IHN0aWxsIGVuZm9yY2VkIG9uIGFueSBwYXRoLg0K K1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7DQorRVJS T1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJob3Rf dGVzdF91bmlxdWVfY29sX2tleSINCitERVRBSUw6ICBLZXkgKHVuaXF1ZV9jb2wpPSgxMDApIGFs cmVhZHkgZXhpc3RzLg0KK0RST1AgVEFCTEUgaG90X3Rlc3Q7DQorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQorLS0gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd2l0aGluIGEgcGFydGl0aW9uDQorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkICgN CisgICAgaWQgaW50LA0KKyAgICBwYXJ0aXRpb25fa2V5IGludCwNCisgICAgaW5kZXhlZF9jb2wg aW50LA0KKyAgICBkYXRhIHRleHQsDQorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tl eSkNCispIFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGl0aW9uX2tleSk7DQorQ1JFQVRFIFRBQkxF IGhvdF90ZXN0X3BhcnQxIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZA0KKyAgICBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorQ1JF QVRFIFRBQkxFIGhvdF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25l ZA0KKyAgICBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCkgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsNCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0 aW9uZWQoaW5kZXhlZF9jb2wpOw0KK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZB TFVFUyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7DQorSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFy dGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7DQorVVBEQVRFIGhvdF90 ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7DQorVVBE QVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9 IDI7DQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0KKyBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2ggDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0K Kw0KK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsNCisgdXBk YXRlcyB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAgMSB8ICAgMQ0KKygxIHJvdykN CisNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7DQorIHVw ZGF0ZXMgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgIDEgfCAgIDENCisoMSByb3cp DQorDQorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9j b2wgPSAxMDA7DQorIGlkIA0KKy0tLS0NCisgIDENCisoMSByb3cpDQorDQorU0VMRUNUIGlkIEZS T00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7DQorIGlkIA0K Ky0tLS0NCisgIDINCisoMSByb3cpDQorDQorRFJPUCBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBDQVNDQURFOw0KKy0tIEFuIHVwZGF0ZSB0aHJvdWdoIHRoZSBwYXJlbnQgdGhhdCB3cml0ZXMg YmFjayBhbiBpbmRleGVkIGNvbHVtbidzIHZhbHVlDQorLS0gaXMgSE9ULiAgUm91dGluZyBoYW5k cyB0aGUgcGFydGl0aW9uIGEgbmV3IHR1cGxlIHdob3NlIHNob3J0IHRleHQgdmFsdWUNCistLSBo YXMgbm90IGJlZW4gcGFja2VkIHlldDsgaXQgaXMgc3RpbGwgdGhlIHNhbWUgdmFsdWUuDQorQ1JF QVRFIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIChpZCBpbnQgVU5JUVVFLCB0YWcgY2hhciwg biBpbnQpDQorICAgIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7DQorQ1JFQVRFIFRBQkxFIGhvdF90 ZXN0X3BhcnQxIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZA0KKyAgICAodGFnIFVO SVFVRSkgRk9SIFZBTFVFUyBJTiAoMSwgMikgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCitJTlNF UlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBWQUxVRVMgKDEsICdhJywgMCksICgyLCAnYics IDApOw0KK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMSwgJ2EnLCAx KQ0KKyAgICBPTiBDT05GTElDVCAoaWQpIERPIFVQREFURSBTRVQgdGFnID0gZXhjbHVkZWQudGFn LCBuID0gZXhjbHVkZWQubjsNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQor IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K KyANCisoMSByb3cpDQorDQorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9w YXJ0MScpOw0KKyB1cGRhdGVzIHwgaG90IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgICAxIHwg ICAxDQorKDEgcm93KQ0KKw0KK0RST1AgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FE RTsNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBFeHByZXNzaW9uIGluZGV4IG9uIGEgSlNP TkIgZmllbGQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgaG90X2pzb25i X3Rlc3QgKA0KKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksDQorICAgIGRhdGEganNvbmINCispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7DQorQ1JFQVRFIElOREVYIGhvdF9qc29uYl9uYW1lX2lkeCBP TiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFtZScpKTsNCitJTlNFUlQgSU5UTyBob3RfanNv bmJfdGVzdCBWQUxVRVMNCisgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzAsImNpdHki OiJOWUMifScpLA0KKyAgICAoMiwgJ3sibmFtZSI6IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9 Jyk7DQorLS0gRWFjaCBVUERBVEUgY2hhbmdlcyB0aGUgaW5kZXhlZCBjb2x1bW4gYnV0IG5vdCB0 aGUgaW5kZXhlZCBleHByZXNzaW9uLg0KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7DQorU0VMRUNUIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0KKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggDQor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsNCisgdXBkYXRlcyB8IGhvdCANCist LS0tLS0tLS0rLS0tLS0NCisgICAgICAgMSB8ICAgMA0KKygxIHJvdykNCisNCitVUERBVEUgaG90 X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRhIC0gJ2NpdHknIFdIRVJFIGlkID0gMjsNCitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOw0KKyB1cGRhdGVzIHwgaG90 IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgICAyIHwgICAwDQorKDEgcm93KQ0KKw0KK1VQREFU RSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX2luc2VydChkYXRhLCAne2NvdW50cnl9 JywgJyJVU0EiJykgV0hFUkUgaWQgPSAyOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsNCisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF9qc29uYl90ZXN0Jyk7DQorIHVwZGF0ZXMgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAg ICAgIDMgfCAgIDANCisoMSByb3cpDQorDQorRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsNCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBFeHByZXNzaW9uIGFuZCBwYXJ0aWFsIGluZGV4ZXMN CistLQ0KKy0tIHVwZGF0ZV9jYXNlKCkgcnVucyBvbmUgVVBEQVRFIG9uIGEgZnJlc2ggdGFibGUg YW5kIHJlcG9ydHMgaG93IG1hbnkgcm93cw0KKy0tIGl0IHVwZGF0ZWQsIGFuZCBob3cgbWFueSBv ZiB0aG9zZSB3aXRoIEhPVC4NCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgRlVOQ1RJ T04gdXBkYXRlX2Nhc2Uoc2V0dXAgdGV4dCwgdXBkIHRleHQsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9VVCB1cGRhdGVkIGJpZ2ludCwgT1VUIGhvdCBiaWdpbnQpDQorTEFOR1VBR0Ug cGxwZ3NxbCBBUyAkJA0KK0JFR0lODQorICAgIEVYRUNVVEUgJ0RST1AgVEFCTEUgSUYgRVhJU1RT IGhvdF9leHByX3Rlc3QnOw0KKyAgICBFWEVDVVRFIHNldHVwOw0KKyAgICB1cGRhdGVkIDo9IHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoJ2hvdF9leHByX3Rlc3QnOjpyZWdjbGFzcyk7 DQorICAgIGhvdCA6PSBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnaG90X2V4 cHJfdGVzdCc6OnJlZ2NsYXNzKTsNCisgICAgRVhFQ1VURSB1cGQ7DQorICAgIHVwZGF0ZWQgOj0g cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZCgnaG90X2V4cHJfdGVzdCc6OnJlZ2NsYXNz KSAtIHVwZGF0ZWQ7DQorICAgIGhvdCA6PSBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCgnaG90X2V4cHJfdGVzdCc6OnJlZ2NsYXNzKSAtIGhvdDsNCitFTkQ7DQorJCQ7DQorLS0g RXhwcmVzc2lvbiB2YWx1ZSB1bmNoYW5nZWQuDQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgN CisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgcyB0 ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4 cHJfdGVzdCAobG93ZXIocykpOw0KKyAgICBJTlNFUlQgSU5UTyBob3RfZXhwcl90ZXN0IFNFTEVD VCBnLCAnYWJjJyB8fCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQ REFURSBob3RfZXhwcl90ZXN0IFNFVCBzID0gdXBwZXIocykkJCk7DQorTk9USUNFOiAgdGFibGUg ImhvdF9leHByX3Rlc3QiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZw0KKyB1cGRhdGVkIHwgaG90 IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDEwIHwgICAwDQorKDEgcm93KQ0KKw0KK1NFTEVD VCAqIEZST00gdXBkYXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChp ZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsN CisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rlc3QgKChhICsgYikpOw0KKyAgICBJTlNF UlQgSU5UTyBob3RfZXhwcl90ZXN0IFNFTEVDVCBnLCBnLCAwIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBhID0gYSAtIDEsIGIg PSBiICsgMSQkKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAx MCB8ICAgMA0KKygxIHJvdykNCisNCistLSBFeHByZXNzaW9uIHZhbHVlIGNoYW5nZWQuDQorU0VM RUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3Qg KGlkIGludCBQUklNQVJZIEtFWSwgZCBqc29uYikgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisg ICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rlc3QgKChkLT4+J25hbWUnKSk7DQorICAgIElO U0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsIGpzb25iX2J1aWxkX29iamVjdCgnbmFt ZScsICduJyB8fCBnKQ0KKyAgICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQor ICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBkID0ganNvbmJfc2V0KGQsICd7bmFtZX0nLCAn IngiJykkJCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgMTAg fCAgIDANCisoMSByb3cpDQorDQorLS0gRXF1YWwgdmFsdWVzIHRoYXQgYXJlIHN0b3JlZCBkaWZm ZXJlbnRseS4NCitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUg aG90X2V4cHJfdGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBuIG51bWVyaWMpIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0ICgobiArIDAp KTsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgMyBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgbiA9 IDMuMCQkKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAxMCB8 ICAgMA0KKygxIHJvdykNCisNCistLSBUaGUgaW5kZXggc3RvcmVzIGEgdHlwZSBvdGhlciB0aGFu IHRoZSBleHByZXNzaW9uJ3M6IG5hbWVfb3BzIHN0b3Jlcw0KKy0tIGNzdHJpbmcsIGFuZCBnaXN0 IHBvaW50X29wcyBzdG9yZXMgYm94Lg0KK1NFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQorICAk JENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFSWSBLRVksIHMgdGV4dCkg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rl c3QgKChsb3dlcihzKTo6bmFtZSkpOw0KKyAgICBJTlNFUlQgSU5UTyBob3RfZXhwcl90ZXN0IFNF TEVDVCBnLCAnYWJjJyB8fCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAk JFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBzID0gdXBwZXIocykkJCk7DQorIHVwZGF0ZWQgfCBo b3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgMTAgfCAgIDANCisoMSByb3cpDQorDQorU0VM RUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3Qg KGlkIGludCBQUklNQVJZIEtFWSwgcCBwb2ludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisg ICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rlc3QgVVNJTkcgZ2lzdCAoKHBvaW50KHBbMF0s IDApKSk7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsIHBvaW50KGcs IGcpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhw cl90ZXN0IFNFVCBwID0gcG9pbnQocFswXSwgcFsxXSArIDEpJCQpOw0KKyB1cGRhdGVkIHwgaG90 IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDEwIHwgICAwDQorKDEgcm93KQ0KKw0KKy0tIEFu IGV4cHJlc3Npb24gdGhhdCBpcyBhIHBvaW50LCBzdG9yZWQgYnkgdGhlIGdpc3QgaW5kZXggYXMg YSBib3guDQorLS0gQ29tcGFyaW5nIGl0IGFzIHRoZSBib3ggdGhlIGluZGV4IHN0b3JlcyByYXRo ZXIgdGhhbiBhcyB0aGUgcG9pbnQgaXQgaXMNCistLSBjcmFzaGVkIHRoZSBzZXJ2ZXIgaW4gMjAx OCAoMjg3Ny4xNTQxNTM4ODM4QHNzcy5wZ2gucGEudXMpLg0KK1NFTEVDVCAqIEZST00gdXBkYXRl X2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFSWSBL RVksIGQgc21hbGxpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRF WCBPTiBob3RfZXhwcl90ZXN0IFVTSU5HIGdpc3QgKChwb2ludChkOjppbnRlZ2VyICUgNywgMCkp KTsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgMSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgZCA9 IGQgKyA3JCQpOw0KKyB1cGRhdGVkIHwgaG90IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDEw IHwgICAwDQorKDEgcm93KQ0KKw0KKy0tIEEgcGxhaW4gaW5kZXggb24gdGhlIHNhbWUgY29sdW1u IGFzIGFuIGV4cHJlc3Npb24gaW5kZXguDQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisg ICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgcyB0ZXh0 KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJf dGVzdCAobG93ZXIocykpOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAocyk7 DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsICdhYmMnIHx8IGcgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGckJCwNCisgICQkVVBEQVRFIGhvdF9leHByX3Rlc3Qg U0VUIHMgPSB1cHBlcihzKSQkKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0N CisgICAgICAxMCB8ICAgMA0KKygxIHJvdykNCisNCistLSBBIEJSSU4gaW5kZXggd2hvc2UgY29s dW1uIGNoYW5nZWQsIGFuZCBhbiBleHByZXNzaW9uIGluZGV4IHdob3NlIHZhbHVlDQorLS0gZGlk IG5vdC4NCitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90 X2V4cHJfdGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBzIHRleHQsIGIgaW50KSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAobG93ZXIo cykpOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCBVU0lORyBicmluIChiKTsN CisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgJ2FiYycgfHwgZywgZyBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVz dCBTRVQgcyA9IHVwcGVyKHMpLCBiID0gYiArIDEkJCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0t LS0tLS0tKy0tLS0tDQorICAgICAgMTAgfCAgIDANCisoMSByb3cpDQorDQorLS0gQSBCRUZPUkUg Uk9XIHRyaWdnZXIgdGhhdCBjaGFuZ2VzIHRoZSBleHByZXNzaW9uJ3MgdmFsdWUuDQorQ1JFQVRF IEZVTkNUSU9OIGhvdF9leHByX3RyaWcoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3Nx bCBBUw0KKyAgJCRCRUdJTiBORVcucyA6PSBORVcucyB8fCAneic7IFJFVFVSTiBORVc7IEVORCQk Ow0KK1NFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhw cl90ZXN0IChpZCBpbnQgUFJJTUFSWSBLRVksIHMgdGV4dCwgeCBpbnQpIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0IChsb3dlcihzKSk7 DQorICAgIENSRUFURSBUUklHR0VSIHQgQkVGT1JFIFVQREFURSBPTiBob3RfZXhwcl90ZXN0DQor ICAgICAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gaG90X2V4cHJfdHJpZygpOw0KKyAg ICBJTlNFUlQgSU5UTyBob3RfZXhwcl90ZXN0IFNFTEVDVCBnLCAnYWJjJyB8fCBnLCAwIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNF VCB4ID0gMSQkKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAx MCB8ICAgMA0KKygxIHJvdykNCisNCitEUk9QIEZVTkNUSU9OIGhvdF9leHByX3RyaWcoKSBDQVND QURFOw0KK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdHJpZ2dlciB0IG9uIHRhYmxlIGhvdF9l eHByX3Rlc3QNCistLSBQYXJ0aWFsIGluZGV4LCBib3RoIHZlcnNpb25zIG91dHNpZGUgdGhlIHBy ZWRpY2F0ZSwgY2hhbmdpbmcgdGhlIGtleSBvcg0KKy0tIHRoZSBwcmVkaWNhdGUncyBjb2x1bW4u DQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHBy X3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgc3RhdHVzIHRleHQsIHYgaW50KSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAodikgV0hF UkUgc3RhdHVzID0gJ2FjdGl2ZSc7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VM RUNUIGcsICdkb25lJywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRV UERBVEUgaG90X2V4cHJfdGVzdCBTRVQgdiA9IHYgKyAxJCQpOw0KKyB1cGRhdGVkIHwgaG90IA0K Ky0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDEwIHwgICAwDQorKDEgcm93KQ0KKw0KK1NFTEVDVCAq IEZST00gdXBkYXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBp bnQgUFJJTUFSWSBLRVksIHN0YXR1cyB0ZXh0LCB2IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rlc3QgKHYpIFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOw0KKyAgICBJTlNFUlQgSU5UTyBob3RfZXhwcl90ZXN0IFNFTEVDVCBnLCAnZG9u ZScsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGckJCwNCisgICQkVVBEQVRFIGhvdF9l eHByX3Rlc3QgU0VUIHN0YXR1cyA9ICdhcmNoaXZlZCckJCk7DQorIHVwZGF0ZWQgfCBob3QgDQor LS0tLS0tLS0tKy0tLS0tDQorICAgICAgMTAgfCAgIDANCisoMSByb3cpDQorDQorLS0gQm90aCB2 ZXJzaW9ucyBpbnNpZGUgdGhlIHByZWRpY2F0ZSB3aXRoIHRoZSBrZXkgdW5jaGFuZ2VkLg0KK1NF TEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0 IChpZCBpbnQgUFJJTUFSWSBLRVksIHN0YXR1cyB0ZXh0LCB2IGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rlc3QgKHYpIFdIRVJFIHN0 YXR1cyA8PiAneCc7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsICdh JywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4 cHJfdGVzdCBTRVQgc3RhdHVzID0gJ2InJCQpOw0KKyB1cGRhdGVkIHwgaG90IA0KKy0tLS0tLS0t LSstLS0tLQ0KKyAgICAgIDEwIHwgICAwDQorKDEgcm93KQ0KKw0KKy0tIEVudGVyaW5nIG9yIGxl YXZpbmcgdGhlIHByZWRpY2F0ZSwgb3IgY2hhbmdpbmcgdGhlIGtleSBpbnNpZGUgaXQuDQorU0VM RUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3Qg KGlkIGludCBQUklNQVJZIEtFWSwgc3RhdHVzIHRleHQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAodikgV0hFUkUgc3Rh dHVzID0gJ2FjdGl2ZSc7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcs ICdhY3RpdmUnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFU RSBob3RfZXhwcl90ZXN0IFNFVCBzdGF0dXMgPSAnZG9uZSckJCk7DQorIHVwZGF0ZWQgfCBob3Qg DQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgMTAgfCAgIDANCisoMSByb3cpDQorDQorU0VMRUNU ICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3QgKGlk IGludCBQUklNQVJZIEtFWSwgc3RhdHVzIHRleHQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0g NTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAodikgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsICdk b25lJywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90 X2V4cHJfdGVzdCBTRVQgc3RhdHVzID0gJ2FjdGl2ZSckJCk7DQorIHVwZGF0ZWQgfCBob3QgDQor LS0tLS0tLS0tKy0tLS0tDQorICAgICAgMTAgfCAgIDANCisoMSByb3cpDQorDQorU0VMRUNUICog RlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGlu dCBQUklNQVJZIEtFWSwgc3RhdHVzIHRleHQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAp Ow0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAodikgV0hFUkUgc3RhdHVzID0g J2FjdGl2ZSc7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsICdhY3Rp dmUnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3Rf ZXhwcl90ZXN0IFNFVCB2ID0gdiArIDEwMDAkJCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0t LS0tKy0tLS0tDQorICAgICAgMTAgfCAgIDANCisoMSByb3cpDQorDQorLS0gUm93cyB1cGRhdGVk IG91dHNpZGUgYSBwYXJ0aWFsIGluZGV4IG11c3Qgbm90IGJlIGZvdW5kIHRocm91Z2ggaXQuDQor U0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rl c3QgKGlkIGludCBQUklNQVJZIEtFWSwgc3RhdHVzIHRleHQsIHYgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggaG90X2V4cHJfdGVzdF92IE9OIGhvdF9leHBy X3Rlc3QgKHYpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOw0KKyAgICBJTlNFUlQgSU5UTyBob3Rf ZXhwcl90ZXN0IFNFTEVDVCBnLCBDQVNFIFdIRU4gZyA8PSA1IFRIRU4gJ2FjdGl2ZScgRUxTRSAn ZG9uZScgRU5ELCBnDQorICAgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGckJCwNCisg ICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VUIHYgPSB2ICsgMTAwIFdIRVJFIHN0YXR1cyA9ICdk b25lJyQkKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAgNSB8 ICAgMA0KKygxIHJvdykNCisNCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorU0VUIGVuYWJs ZV9iaXRtYXBzY2FuID0gb2ZmOw0KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00g aG90X2V4cHJfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJyBBTkQgdiA+IDA7DQorICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgDQorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIEluZGV4IFNjYW4g dXNpbmcgaG90X2V4cHJfdGVzdF92IG9uIGhvdF9leHByX3Rlc3QNCisgICBJbmRleCBDb25kOiAo diA+IDApDQorKDIgcm93cykNCisNCitTRUxFQ1QgaWQgRlJPTSBob3RfZXhwcl90ZXN0IFdIRVJF IHN0YXR1cyA9ICdhY3RpdmUnIEFORCB2ID4gMCBPUkRFUiBCWSB2Ow0KKyBpZCANCistLS0tDQor ICAxDQorICAyDQorICAzDQorICA0DQorICA1DQorKDUgcm93cykNCisNCitSRVNFVCBlbmFibGVf c2Vxc2NhbjsNCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsNCitTRUxFQ1QgaWQgRlJPTSBob3Rf ZXhwcl90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnIEFORCB2ID4gMCBPUkRFUiBCWSB2Ow0K KyBpZCANCistLS0tDQorICAxDQorICAyDQorICAzDQorICA0DQorICA1DQorKDUgcm93cykNCisN CitEUk9QIFRBQkxFIGhvdF9leHByX3Rlc3Q7DQorLS0gT25lIFVQREFURSB3aG9zZSByb3dzIGVh Y2ggbmVlZCBhIGRpZmZlcmVudCBpbmRleCB0byBkZWNpZGU6IHNvbWUgY2hhbmdlDQorLS0gdGhl IGV4cHJlc3Npb24gaW5kZXgsIHNvbWUgb25seSBlbnRlciBvciBsZWF2ZSB0aGUgcGFydGlhbCBp bmRleCBjcmVhdGVkDQorLS0gYWZ0ZXIgaXQsIHNvbWUgY2hhbmdlIG5laXRoZXIuICBUaGUgcGFy dGlhbCBpbmRleCBtdXN0IGhvbGQgZXhhY3RseSB0aGUNCistLSByb3dzIHRoYXQgc2F0aXNmeSBp dHMgcHJlZGljYXRlLg0KK0NSRUFURSBUQUJMRSBob3RfZXhwcl9tdWx0aSAoaWQgaW50IFBSSU1B UlkgS0VZLCBkb2MganNvbmIpIFdJVEggKGZpbGxmYWN0b3IgPSAzMCk7DQorQ1JFQVRFIElOREVY IGhvdF9leHByX211bHRpX3N0YXR1cyBPTiBob3RfZXhwcl9tdWx0aSAoKGRvYy0+PidzdGF0dXMn KSk7DQorQ1JFQVRFIElOREVYIGhvdF9leHByX211bHRpX3ZpcCBPTiBob3RfZXhwcl9tdWx0aSAo KGRvYy0+PidlbWFpbCcpKQ0KKyAgV0hFUkUgKGRvYy0+Pid2aXAnKTo6Ym9vbDsNCitJTlNFUlQg SU5UTyBob3RfZXhwcl9tdWx0aQ0KKyAgU0VMRUNUIGcsIGpzb25iX2J1aWxkX29iamVjdCgnc3Rh dHVzJywgJ2EnLCAnZW1haWwnLCAnZScgfHwgZywNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3ZpcCcsIGcgJSAyID0gMCwgJ24nLCAwKQ0KKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMDApIGc7DQorVVBEQVRFIGhvdF9leHByX211bHRpIFNFVCBkb2MgPSBDQVNFDQorICAg IFdIRU4gaWQgJSA0ID0gMCBUSEVOIGpzb25iX3NldChkb2MsICd7c3RhdHVzfScsICciYiInKQ0K KyAgICBXSEVOIGlkICUgNCA9IDEgVEhFTiBqc29uYl9zZXQoZG9jLCAne3ZpcH0nLCB0b19qc29u YihOT1QgKGRvYy0+Pid2aXAnKTo6Ym9vbCkpDQorICAgIFdIRU4gaWQgJSA0ID0gMiBUSEVOIGpz b25iX3NldChqc29uYl9zZXQoZG9jLCAne3N0YXR1c30nLCAnImMiJyksDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAne3ZpcH0nLCB0b19qc29uYihOT1QgKGRvYy0+Pid2aXAn KTo6Ym9vbCkpDQorICAgIEVMU0UganNvbmJfc2V0KGRvYywgJ3tufScsICcxJykgRU5EOw0KK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7DQor U0VMRUNUIGNvdW50KCopIEZST00gaG90X2V4cHJfbXVsdGkNCisgV0hFUkUgKGRvYy0+Pid2aXAn KTo6Ym9vbCBBTkQgZG9jLT4+J2VtYWlsJyA+PSAnZSc7DQorIGNvdW50IA0KKy0tLS0tLS0NCisg ICAxNTANCisoMSByb3cpDQorDQorUkVTRVQgZW5hYmxlX3NlcXNjYW47DQorUkVTRVQgZW5hYmxl X2JpdG1hcHNjYW47DQorU0VMRUNUIGNvdW50KCopIEZST00gaG90X2V4cHJfbXVsdGkgV0hFUkUg KGRvYy0+Pid2aXAnKTo6Ym9vbDsNCisgY291bnQgDQorLS0tLS0tLQ0KKyAgIDE1MA0KKygxIHJv dykNCisNCitEUk9QIFRBQkxFIGhvdF9leHByX211bHRpOw0KKy0tIEFuIGluZGV4IHdob3NlIGNv bmN1cnJlbnQgYnVpbGQgZmFpbGVkIGlzIG5vdCByZWFkeSBmb3IgaW5zZXJ0cywgYW5kIGl0cw0K Ky0tIGV4cHJlc3Npb24gbmVlZCBub3QgYmUgY29tcHV0YWJsZSBmb3IgZXZlcnkgcm93LiAgQW4g VVBEQVRFIG11c3Qgbm90DQorLS0gZXZhbHVhdGUgaXQuDQorQ1JFQVRFIFRBQkxFIGhvdF9leHBy X2NpYyAoaWQgaW50IFBSSU1BUlkgS0VZLCB4IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsN CitJTlNFUlQgSU5UTyBob3RfZXhwcl9jaWMgVkFMVUVTICgxLCAxKSwgKDIsIDApOw0KK0NSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaG90X2V4cHJfY2ljX2lkeCBPTiBob3RfZXhwcl9jaWMgKCgx MDAgLyB4KSk7DQorRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQorU0VMRUNUIGluZGlzcmVhZHks IGluZGlzdmFsaWQgRlJPTSBwZ19pbmRleA0KKyBXSEVSRSBpbmRleHJlbGlkID0gJ2hvdF9leHBy X2NpY19pZHgnOjpyZWdjbGFzczsNCisgaW5kaXNyZWFkeSB8IGluZGlzdmFsaWQgDQorLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQ0KKyBmICAgICAgICAgIHwgZg0KKygxIHJvdykNCisNCitVUERB VEUgaG90X2V4cHJfY2ljIFNFVCB4ID0gMCBXSEVSRSBpZCA9IDE7DQorVVBEQVRFIGhvdF9leHBy X2NpYyBTRVQgeCA9IDEgV0hFUkUgaWQgPSAyOw0KK1NFTEVDVCAqIEZST00gaG90X2V4cHJfY2lj IE9SREVSIEJZIGlkOw0KKyBpZCB8IHggDQorLS0tLSstLS0NCisgIDEgfCAwDQorICAyIHwgMQ0K KygyIHJvd3MpDQorDQorRFJPUCBUQUJMRSBob3RfZXhwcl9jaWM7DQorLS0gV3JpdGluZyBiYWNr IGEgdmFsdWUgdGhhdCBpcyBzdG9yZWQgY29tcHJlc3NlZCBpbiB0aGUgb2xkIHJvdywgYW5kIG5v dA0KKy0tIHlldCBpbiB0aGUgbmV3IG9uZS4gIEFuIFNQLUdpU1QgaW5kZXgsIHdob3NlIGFjY2Vz cyBtZXRob2QgY2Fubm90IGNvbXBhcmUNCistLSBlbnRyaWVzLCBhbmQgd2hpY2ggcmV0dXJucyB0 aGUgdmFsdWUgaW4gaW5kZXgtb25seSBzY2Fucy4NCitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNl KA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCB0 IHRleHQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBob3Rf ZXhwcl90ZXN0IFVTSU5HIHNwZ2lzdCAodCk7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rl c3QgU0VMRUNUIGcsIHJlcGVhdCgneCcsIDMwMDApIHx8IGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTApIGckJCwNCisgICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VUIHQgPSByZXBlYXQoJ3gn LCAzMDAwKSB8fCBpZCQkKTsNCitOT1RJQ0U6ICB0YWJsZSAiaG90X2V4cHJfdGVzdCIgZG9lcyBu b3QgZXhpc3QsIHNraXBwaW5nDQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQor ICAgICAgMTAgfCAgIDANCisoMSByb3cpDQorDQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0K K1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsNCitTRUxFQ1QgY291bnQoKikgRlJPTSBob3Rf ZXhwcl90ZXN0IFdIRVJFIHQgPSByZXBlYXQoJ3gnLCAzMDAwKSB8fCA3Ow0KKyBjb3VudCANCist LS0tLS0tDQorICAgICAxDQorKDEgcm93KQ0KKw0KK1JFU0VUIGVuYWJsZV9zZXFzY2FuOw0KK1JF U0VUIGVuYWJsZV9iaXRtYXBzY2FuOw0KKy0tIFRoZSBzYW1lIGluIGEgcGFydGlhbCBpbmRleCBl dmFsdWF0ZWQgZm9yIGFub3RoZXIgY29sdW1uJ3MgY2hhbmdlLg0KK1NFTEVDVCAqIEZST00gdXBk YXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFS WSBLRVksIHQgdGV4dCwgeCBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFU RSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0ICh0KSBXSEVSRSB4ID49IDA7DQorICAgIElOU0VSVCBJ TlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsIHJlcGVhdCgneCcsIDMwMDApIHx8IGcsIDAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGckJCwNCisgICQkVVBEQVRFIGhvdF9leHByX3Rlc3Qg U0VUIHQgPSByZXBlYXQoJ3gnLCAzMDAwKSB8fCBpZCwgeCA9IHggKyAxJCQpOw0KKyB1cGRhdGVk IHwgaG90IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDEwIHwgICAwDQorKDEgcm93KQ0KKw0K Ky0tIFRoZSBzYW1lIHRocm91Z2ggYW4gZXhwcmVzc2lvbiB0aGF0IHJldHVybnMgdGhlIGNvbHVt bidzIHZhbHVlIGFzIGlzLg0KK1NFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQorICAkJENSRUFU RSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFSWSBLRVksIHQgdGV4dCwgeCBpbnQp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBob3RfZXhwcl90 ZXN0ICgoY29hbGVzY2UodCwgJycpKSkgV0hFUkUgeCA+PSAwOw0KKyAgICBJTlNFUlQgSU5UTyBo b3RfZXhwcl90ZXN0IFNFTEVDVCBnLCByZXBlYXQoJ3gnLCAzMDAwKSB8fCBnLCAwIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCB0 ID0gcmVwZWF0KCd4JywgMzAwMCkgfHwgaWQsIHggPSB4ICsgMSQkKTsNCisgdXBkYXRlZCB8IGhv dCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAxMCB8ICAgMA0KKygxIHJvdykNCisNCistLSAu Li4gYnV0IG5vdCBmb3IgYSBjb2x1bW4gb2YgYSB1bmlxdWUgaW5kZXgsIHdoaWNoIHRoZSB0YWJs ZSdzIGxvY2sNCistLSBzdHJlbmd0aCBpcyBkZWNpZGVkIGJ5IGFzIHN0b3JlZC4NCitTRUxFQ1Qg KiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVzdCAoaWQg aW50LCB0IHRleHQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBVTklRVUUg SU5ERVggT04gaG90X2V4cHJfdGVzdCAodCk7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rl c3QgU0VMRUNUIGcsIHJlcGVhdCgneCcsIDMwMDApIHx8IGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTApIGckJCwNCisgICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VUIHQgPSByZXBlYXQoJ3gn LCAzMDAwKSB8fCBpZCQkKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisg ICAgICAxMCB8ICAgMA0KKygxIHJvdykNCisNCitEUk9QIFRBQkxFIGhvdF9leHByX3Rlc3Q7DQor RFJPUCBGVU5DVElPTiB1cGRhdGVfY2FzZSh0ZXh0LCB0ZXh0KTsNCitEUk9QIEZVTkNUSU9OIGdl dF9ob3RfY291bnQodGV4dCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUNCmluZGV4IDc1 MDYzZjg3YTRhLi5iYjhlNWY5NThjMSAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUN CkBAIC04MSw3ICs4MSw3IEBAIHRlc3Q6IGNyZWF0ZV90YWJsZV9saWtlIGFsdGVyX2dlbmVyaWMg YWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBkYnNpemUgbWVyZ2UgbWlzDQogIyBjb2xsYXRlLmxp bnV4LnV0ZjggYW5kIGNvbGxhdGUuaWN1LnV0ZjggdGVzdHMgY2Fubm90IGJlIHJ1biBpbiBwYXJh bGxlbCB3aXRoIGVhY2ggb3RoZXINCiAjIHBzcWwgZGVwZW5kcyBvbiBjcmVhdGVfYW0NCiAjIGFt dXRpbHMgZGVwZW5kcyBvbiBnZW9tZXRyeSwgY3JlYXRlX2luZGV4X3NwZ2lzdCwgaGFzaF9pbmRl eCwgYnJpbg0KLXRlc3Q6IHJ1bGVzIHBzcWwgcHNxbF9jcm9zc3RhYiBwc3FsX3BpcGVsaW5lIGFt dXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUubGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1 Mg0KK3Rlc3Q6IHJ1bGVzIHBzcWwgcHNxbF9jcm9zc3RhYiBwc3FsX3BpcGVsaW5lIGFtdXRpbHMg c3RhdHNfZXh0IGNvbGxhdGUubGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1MiBob3Rf dXBkYXRlcw0KIA0KICMgLS0tLS0tLS0tLQ0KICMgUnVuIHRoZXNlIGFsb25lIHNvIHRoZXkgZG9u J3QgcnVuIG91dCBvZiBwYXJhbGxlbCB3b3JrZXJzDQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0 ZXMuc3FsDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmM1MjNjOTA4 YzZiDQotLS0gL2Rldi9udWxsDQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRl cy5zcWwNCkBAIC0wLDAgKzEsNDY4IEBADQorLS0NCistLSBIT1RfVVBEQVRFUw0KKy0tIFRlc3Qg SGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMNCistLQ0KKy0tIEV4cGVjdGVk IG91dHB1dCByZWNvcmRzIHdoaWNoIFVQREFURXMgYXJlIEhPVCwgc28gdGhhdCBhIGNoYW5nZSB0 byB0aGUNCistLSBydWxlcyBzaG93cyB1cCBhcyBhIGNoYW5nZSB0byB0aGlzIGZpbGUuICBjb250 cmliL3BhZ2VpbnNwZWN0J3MNCistLSBob3RfdXBkYXRlcyB0ZXN0IGxvb2tzIGF0IHRoZSBIT1Qg Y2hhaW4gaXRzZWxmLg0KKy0tDQorDQorLS0gU3VtIG9mIGNvbW1pdHRlZCBhbmQgaW4tcHJvZ3Jl c3MgKG5vbi1IT1QsIEhPVCkgdXBkYXRlIGNvdW50ZXJzLg0KK0NSRUFURSBGVU5DVElPTiBnZXRf aG90X2NvdW50KHJlbF9uYW1lIHRleHQpDQorUkVUVVJOUyBUQUJMRSAoDQorICAgIHVwZGF0ZXMg QklHSU5ULA0KKyAgICBob3QgQklHSU5UDQorKSBBUyAkJA0KK0RFQ0xBUkUNCisgICAgcmVsX29p ZCBvaWQ7DQorQkVHSU4NCisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsN CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxf b2lkKSwgMCkgKw0KKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX3VwZGF0ZWQocmVsX29pZCksIDApOw0KKyAgICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9n ZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArDQorICAgICAgICAgICBDT0FMRVND RShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7DQorICAg IFJFVFVSTiBORVhUOw0KK0VORDsNCiskJCBMQU5HVUFHRSBwbHBnc3FsOw0KKw0KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KKy0tIFN1bW1hcml6aW5nIGluZGV4ZXMgKEJSSU4pIGRvIG5vdCBibG9j ayBIT1QNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKA0K KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksDQorICAgIHRzIHRpbWVzdGFtcCwNCisgICAgdmFsdWUg aW50LA0KKyAgICBicmluX2NvbCBpbnQNCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorQ1JF QVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7DQor Q1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bihicmluX2NvbCk7DQorDQorSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnMjAyNC0w MS0wMScsIDEwMCwgMTAwMCk7DQorDQorLS0gQlJJTiBjb2x1bW5zIGFyZSBzdW1tYXJpemluZzsg dXBkYXRpbmcgdGhlbSBzdGF5cyBjbGFzc2ljIEhPVCBldmVuDQorLS0gdGhvdWdoIHRoZWlyIHZh bHVlcyBjaGFuZ2UuDQorVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJp bl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7DQorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOw0KKw0KKy0t IE5vbi1pbmRleGVkIGNvbHVtbjogYWxzbyBIT1QuDQorVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1 ZSA9IDIwMCBXSEVSRSBpZCA9IDE7DQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp Ow0KK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsNCisNCitEUk9QIFRB QkxFIGhvdF90ZXN0Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRPQVNUIHBhcnRp Y2lwYXRlcyBpbiBIT1QgKG5vbi1pbmRleGVkIGNvbHVtbiBwYXRocyBvbmx5KQ0KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoDQorICAgIGlkIGludCBQUklN QVJZIEtFWSwNCisgICAgaW5kZXhlZF9jb2wgaW50LA0KKyAgICBsYXJnZV90ZXh0IHRleHQsDQor ICAgIHNtYWxsX3RleHQgdGV4dA0KKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCitDUkVBVEUg SU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsNCistLSBzdG9yZWQg b3V0IG9mIGxpbmUgYXQgYW55IGJsb2NrIHNpemUNCitBTFRFUiBUQUJMRSBob3RfdGVzdCBBTFRF UiBDT0xVTU4gbGFyZ2VfdGV4dCBTRVQgU1RPUkFHRSBFWFRFUk5BTDsNCitTRUxFQ1QgY3VycmVu dF9zZXR0aW5nKCdibG9ja19zaXplJyk6OmludCAvIDIgQVMgbGFyZ2VfbGVuIFxnc2V0DQorDQor SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDpsYXJnZV9s ZW4pLCAnc21hbGwnKTsNCitTRUxFQ1QgcGdfY29sdW1uX3RvYXN0X2NodW5rX2lkKGxhcmdlX3Rl eHQpIElTIE5PVCBOVUxMIEFTIHRvYXN0ZWQNCisgIEZST00gaG90X3Rlc3Q7DQorDQorLS0gTm9u LWluZGV4ZWQsIG5vbi1UT0FTVCBjb2x1bW46IEhPVC4NCitVUERBVEUgaG90X3Rlc3QgU0VUIHNt YWxsX3RleHQgPSAndXBkYXRlZCc7DQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp Ow0KK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsNCisNCistLSBUT0FT VCBjb2x1bW4sIGluZGV4ZWRfY29sIHVuY2hhbmdlZDogSE9ULg0KK1VQREFURSBob3RfdGVzdCBT RVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScsIDpsYXJnZV9sZW4pOw0KK1NFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7DQorDQorRFJPUCBUQUJMRSBob3RfdGVzdDsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCistLSBQYXJ0aWFsIGluZGV4IHdoZXJlIHVwZGF0ZSBsZWF2ZXMgaW5kZXhlZCBhdHRycyB1 bmNoYW5nZWQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KA0KKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksDQorICAgIHN0YXR1cyB0ZXh0LA0KKyAgICBkYXRh IHRleHQNCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorQ1JFQVRFIElOREVYIGhvdF90ZXN0 X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsN CisNCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsN CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFjdGl2ZScsICdkYXRhMicpOw0K K0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsNCisN CistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyB3aG9zZSBzdGF0dXMgbWF0Y2hlcyB0aGUgcGFydGlh bCBwcmVkaWNhdGU6IEhPVC4NCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEn IFdIRVJFIGlkID0gMTsNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOw0KKw0KKy0tIFVwZGF0ZSBkYXRh IG9uIGEgcm93IG91dHNpZGUgdGhlIHByZWRpY2F0ZTogSE9ULg0KK1VQREFURSBob3RfdGVzdCBT RVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 DQorDQorU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0 aXZlJzsNCisNCitEUk9QIFRBQkxFIGhvdF90ZXN0Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KKy0tIE11bHRpLWNvbHVtbiBidHJlZTogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbg0K Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoDQorICAgIGlk IGludCBQUklNQVJZIEtFWSwNCisgICAgY29sX2EgaW50LA0KKyAgICBjb2xfYiBpbnQsDQorICAg IGNvbF9jIGludCwNCisgICAgZGF0YSB0ZXh0DQorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0K K0NSRUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsN CisNCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7 DQorDQorLS0gY29sX2Mgbm90IGluIGFueSBpbmRleDogSE9ULg0KK1VQREFURSBob3RfdGVzdCBT RVQgY29sX2MgPSAzNTsNCistLSBkYXRhIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4NCitVUERBVEUg aG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7DQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOw0KK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsNCisN CitEUk9QIFRBQkxFIGhvdF90ZXN0Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFVu aXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbiArIHVuaXF1ZW5lc3MgZW5m b3JjZW1lbnQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KA0KKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksDQorICAgIHVuaXF1ZV9jb2wgaW50IFVOSVFVRSwN CisgICAgZGF0YSB0ZXh0DQorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KKw0KK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsNCitJTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2RhdGEyJyk7DQorDQorVVBEQVRFIGhvdF90ZXN0IFNFVCBk YXRhID0gJ3VwZGF0ZWQnOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7DQorDQorU0VMRUNUIGlkLCB1 bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7DQorDQorLS0gVW5pcXVl IGNvbnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQgb24gYW55IHBhdGguDQorVVBEQVRFIGhvdF90ZXN0 IFNFVCB1bmlxdWVfY29sID0gMTAwIFdIRVJFIGlkID0gMjsNCisNCitEUk9QIFRBQkxFIGhvdF90 ZXN0Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFBhcnRpdGlvbmVkIHRhYmxlczog SE9UIHdpdGhpbiBhIHBhcnRpdGlvbg0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBU QUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoDQorICAgIGlkIGludCwNCisgICAgcGFydGl0aW9u X2tleSBpbnQsDQorICAgIGluZGV4ZWRfY29sIGludCwNCisgICAgZGF0YSB0ZXh0LA0KKyAgICBQ UklNQVJZIEtFWSAoaWQsIHBhcnRpdGlvbl9rZXkpDQorKSBQQVJUSVRJT04gQlkgUkFOR0UgKHBh cnRpdGlvbl9rZXkpOw0KKw0KK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0MSBQQVJUSVRJT04g T0YgaG90X3Rlc3RfcGFydGl0aW9uZWQNCisgICAgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTAw KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0MiBQ QVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQNCisgICAgRk9SIFZBTFVFUyBGUk9NICgx MDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorDQorQ1JFQVRFIElOREVYIGhv dF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3BhcnRpdGlvbmVkKGluZGV4ZWRfY29sKTsNCisN CitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBWQUxVRVMgKDEsIDUwLCAxMDAsICdp bml0aWFsMScpOw0KK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwg MTUwLCAyMDAsICdpbml0aWFsMicpOw0KKw0KK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBT RVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOw0KK1VQREFURSBob3RfdGVzdF9wYXJ0 aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOw0KKw0KK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0X3BhcnQxJyk7DQorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dF9wYXJ0MicpOw0KKw0KK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTAwOw0KK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVk IFdIRVJFIGluZGV4ZWRfY29sID0gMjAwOw0KKw0KK0RST1AgVEFCTEUgaG90X3Rlc3RfcGFydGl0 aW9uZWQgQ0FTQ0FERTsNCisNCistLSBBbiB1cGRhdGUgdGhyb3VnaCB0aGUgcGFyZW50IHRoYXQg d3JpdGVzIGJhY2sgYW4gaW5kZXhlZCBjb2x1bW4ncyB2YWx1ZQ0KKy0tIGlzIEhPVC4gIFJvdXRp bmcgaGFuZHMgdGhlIHBhcnRpdGlvbiBhIG5ldyB0dXBsZSB3aG9zZSBzaG9ydCB0ZXh0IHZhbHVl DQorLS0gaGFzIG5vdCBiZWVuIHBhY2tlZCB5ZXQ7IGl0IGlzIHN0aWxsIHRoZSBzYW1lIHZhbHVl Lg0KK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoaWQgaW50IFVOSVFVRSwgdGFn IGNoYXIsIG4gaW50KQ0KKyAgICBQQVJUSVRJT04gQlkgTElTVCAoaWQpOw0KK0NSRUFURSBUQUJM RSBob3RfdGVzdF9wYXJ0MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQNCisgICAg KHRhZyBVTklRVUUpIEZPUiBWQUxVRVMgSU4gKDEsIDIpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 DQorSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCAnYScsIDApLCAo MiwgJ2InLCAwKTsNCitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBWQUxVRVMgKDEs ICdhJywgMSkNCisgICAgT04gQ09ORkxJQ1QgKGlkKSBETyBVUERBVEUgU0VUIHRhZyA9IGV4Y2x1 ZGVkLnRhZywgbiA9IGV4Y2x1ZGVkLm47DQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOw0KK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsNCitE Uk9QIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7DQorDQorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorLS0gRXhwcmVzc2lvbiBpbmRleCBvbiBhIEpTT05CIGZpZWxkDQorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIGhvdF9qc29uYl90ZXN0ICgNCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLA0KKyAgICBkYXRhIGpzb25iDQorKSBXSVRIIChmaWxsZmFjdG9yID0g NTApOw0KK0NSRUFURSBJTkRFWCBob3RfanNvbmJfbmFtZV9pZHggT04gaG90X2pzb25iX3Rlc3Qg KChkYXRhLT4+J25hbWUnKSk7DQorDQorSU5TRVJUIElOVE8gaG90X2pzb25iX3Rlc3QgVkFMVUVT DQorICAgICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5IjoiTllDIn0nKSwNCisg ICAgKDIsICd7Im5hbWUiOiJCb2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScpOw0KKw0KKy0tIEVh Y2ggVVBEQVRFIGNoYW5nZXMgdGhlIGluZGV4ZWQgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQg ZXhwcmVzc2lvbi4NCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQo ZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsNCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90 ZXN0Jyk7DQorDQorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAtICdjaXR5 JyBXSEVSRSBpZCA9IDI7DQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0KK1NF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsNCisNCitVUERBVEUg aG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3VudHJ5fScs ICciVVNBIicpIFdIRVJFIGlkID0gMjsNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7DQorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOw0KKw0K K0RST1AgVEFCTEUgaG90X2pzb25iX3Rlc3Q7DQorDQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorLS0gRXhwcmVzc2lvbiBhbmQgcGFydGlhbCBpbmRleGVzDQorLS0NCistLSB1cGRhdGVfY2Fz ZSgpIHJ1bnMgb25lIFVQREFURSBvbiBhIGZyZXNoIHRhYmxlIGFuZCByZXBvcnRzIGhvdyBtYW55 IHJvd3MNCistLSBpdCB1cGRhdGVkLCBhbmQgaG93IG1hbnkgb2YgdGhvc2Ugd2l0aCBIT1QuDQor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIEZVTkNUSU9OIHVwZGF0ZV9jYXNlKHNldHVw IHRleHQsIHVwZCB0ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgdXBkYXRl ZCBiaWdpbnQsIE9VVCBob3QgYmlnaW50KQ0KK0xBTkdVQUdFIHBscGdzcWwgQVMgJCQNCitCRUdJ Tg0KKyAgICBFWEVDVVRFICdEUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfZXhwcl90ZXN0JzsNCisg ICAgRVhFQ1VURSBzZXR1cDsNCisgICAgdXBkYXRlZCA6PSBwZ19zdGF0X2dldF94YWN0X3R1cGxl c191cGRhdGVkKCdob3RfZXhwcl90ZXN0Jzo6cmVnY2xhc3MpOw0KKyAgICBob3QgOj0gcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2hvdF9leHByX3Rlc3QnOjpyZWdjbGFzcyk7 DQorICAgIEVYRUNVVEUgdXBkOw0KKyAgICB1cGRhdGVkIDo9IHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX3VwZGF0ZWQoJ2hvdF9leHByX3Rlc3QnOjpyZWdjbGFzcykgLSB1cGRhdGVkOw0KKyAgICBo b3QgOj0gcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2hvdF9leHByX3Rlc3Qn OjpyZWdjbGFzcykgLSBob3Q7DQorRU5EOw0KKyQkOw0KKw0KKy0tIEV4cHJlc3Npb24gdmFsdWUg dW5jaGFuZ2VkLg0KK1NFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJM RSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFSWSBLRVksIHMgdGV4dCkgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rlc3QgKGxvd2VyKHMp KTsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgJ2FiYycgfHwgZyBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVz dCBTRVQgcyA9IHVwcGVyKHMpJCQpOw0KKw0KK1NFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQor ICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50 LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhv dF9leHByX3Rlc3QgKChhICsgYikpOw0KKyAgICBJTlNFUlQgSU5UTyBob3RfZXhwcl90ZXN0IFNF TEVDVCBnLCBnLCAwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFU RSBob3RfZXhwcl90ZXN0IFNFVCBhID0gYSAtIDEsIGIgPSBiICsgMSQkKTsNCisNCistLSBFeHBy ZXNzaW9uIHZhbHVlIGNoYW5nZWQuDQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQk Q1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgZCBqc29uYikg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rl c3QgKChkLT4+J25hbWUnKSk7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNU IGcsIGpzb25iX2J1aWxkX29iamVjdCgnbmFtZScsICduJyB8fCBnKQ0KKyAgICAgIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBk ID0ganNvbmJfc2V0KGQsICd7bmFtZX0nLCAnIngiJykkJCk7DQorDQorLS0gRXF1YWwgdmFsdWVz IHRoYXQgYXJlIHN0b3JlZCBkaWZmZXJlbnRseS4NCitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNl KA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBu IG51bWVyaWMpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBo b3RfZXhwcl90ZXN0ICgobiArIDApKTsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBT RUxFQ1QgZywgMyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUg aG90X2V4cHJfdGVzdCBTRVQgbiA9IDMuMCQkKTsNCisNCistLSBUaGUgaW5kZXggc3RvcmVzIGEg dHlwZSBvdGhlciB0aGFuIHRoZSBleHByZXNzaW9uJ3M6IG5hbWVfb3BzIHN0b3Jlcw0KKy0tIGNz dHJpbmcsIGFuZCBnaXN0IHBvaW50X29wcyBzdG9yZXMgYm94Lg0KK1NFTEVDVCAqIEZST00gdXBk YXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFS WSBLRVksIHMgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisgICAgQ1JFQVRFIElOREVY IE9OIGhvdF9leHByX3Rlc3QgKChsb3dlcihzKTo6bmFtZSkpOw0KKyAgICBJTlNFUlQgSU5UTyBo b3RfZXhwcl90ZXN0IFNFTEVDVCBnLCAnYWJjJyB8fCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBzID0gdXBwZXIocykkJCk7 DQorDQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9l eHByX3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgcCBwb2ludCkgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9leHByX3Rlc3QgVVNJTkcgZ2lzdCAoKHBv aW50KHBbMF0sIDApKSk7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcs IHBvaW50KGcsIGcpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFU RSBob3RfZXhwcl90ZXN0IFNFVCBwID0gcG9pbnQocFswXSwgcFsxXSArIDEpJCQpOw0KKw0KKy0t IEFuIGV4cHJlc3Npb24gdGhhdCBpcyBhIHBvaW50LCBzdG9yZWQgYnkgdGhlIGdpc3QgaW5kZXgg YXMgYSBib3guDQorLS0gQ29tcGFyaW5nIGl0IGFzIHRoZSBib3ggdGhlIGluZGV4IHN0b3JlcyBy YXRoZXIgdGhhbiBhcyB0aGUgcG9pbnQgaXQgaXMNCistLSBjcmFzaGVkIHRoZSBzZXJ2ZXIgaW4g MjAxOCAoMjg3Ny4xNTQxNTM4ODM4QHNzcy5wZ2gucGEudXMpLg0KK1NFTEVDVCAqIEZST00gdXBk YXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFS WSBLRVksIGQgc21hbGxpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJ TkRFWCBPTiBob3RfZXhwcl90ZXN0IFVTSU5HIGdpc3QgKChwb2ludChkOjppbnRlZ2VyICUgNywg MCkpKTsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgMSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQg ZCA9IGQgKyA3JCQpOw0KKw0KKy0tIEEgcGxhaW4gaW5kZXggb24gdGhlIHNhbWUgY29sdW1uIGFz IGFuIGV4cHJlc3Npb24gaW5kZXguDQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQk Q1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgcyB0ZXh0KSBX SVRIIChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVz dCAobG93ZXIocykpOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAocyk7DQor ICAgIElOU0VSVCBJTlRPIGhvdF9leHByX3Rlc3QgU0VMRUNUIGcsICdhYmMnIHx8IGcgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGckJCwNCisgICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VU IHMgPSB1cHBlcihzKSQkKTsNCisNCistLSBBIEJSSU4gaW5kZXggd2hvc2UgY29sdW1uIGNoYW5n ZWQsIGFuZCBhbiBleHByZXNzaW9uIGluZGV4IHdob3NlIHZhbHVlDQorLS0gZGlkIG5vdC4NCitT RUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVz dCAoaWQgaW50IFBSSU1BUlkgS0VZLCBzIHRleHQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0g NTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAobG93ZXIocykpOw0KKyAg ICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCBVU0lORyBicmluIChiKTsNCisgICAgSU5T RVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgJ2FiYycgfHwgZywgZyBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgcyA9 IHVwcGVyKHMpLCBiID0gYiArIDEkJCk7DQorDQorLS0gQSBCRUZPUkUgUk9XIHRyaWdnZXIgdGhh dCBjaGFuZ2VzIHRoZSBleHByZXNzaW9uJ3MgdmFsdWUuDQorQ1JFQVRFIEZVTkNUSU9OIGhvdF9l eHByX3RyaWcoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBBUw0KKyAgJCRCRUdJ TiBORVcucyA6PSBORVcucyB8fCAneic7IFJFVFVSTiBORVc7IEVORCQkOw0KK1NFTEVDVCAqIEZS T00gdXBkYXRlX2Nhc2UoDQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQg UFJJTUFSWSBLRVksIHMgdGV4dCwgeCBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAg IENSRUFURSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0IChsb3dlcihzKSk7DQorICAgIENSRUFURSBU UklHR0VSIHQgQkVGT1JFIFVQREFURSBPTiBob3RfZXhwcl90ZXN0DQorICAgICAgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gaG90X2V4cHJfdHJpZygpOw0KKyAgICBJTlNFUlQgSU5UTyBo b3RfZXhwcl90ZXN0IFNFTEVDVCBnLCAnYWJjJyB8fCBnLCAwIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCB4ID0gMSQkKTsNCitE Uk9QIEZVTkNUSU9OIGhvdF9leHByX3RyaWcoKSBDQVNDQURFOw0KKw0KKy0tIFBhcnRpYWwgaW5k ZXgsIGJvdGggdmVyc2lvbnMgb3V0c2lkZSB0aGUgcHJlZGljYXRlLCBjaGFuZ2luZyB0aGUga2V5 IG9yDQorLS0gdGhlIHByZWRpY2F0ZSdzIGNvbHVtbi4NCitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9j YXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZ LCBzdGF0dXMgdGV4dCwgdiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFU RSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0ICh2KSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsNCisg ICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgJ2RvbmUnLCBnIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCB2 ID0gdiArIDEkJCk7DQorDQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRF IFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgc3RhdHVzIHRleHQsIHYg aW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4 cHJfdGVzdCAodikgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7DQorICAgIElOU0VSVCBJTlRPIGhv dF9leHByX3Rlc3QgU0VMRUNUIGcsICdkb25lJywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgc3RhdHVzID0gJ2FyY2hpdmVk JyQkKTsNCisNCistLSBCb3RoIHZlcnNpb25zIGluc2lkZSB0aGUgcHJlZGljYXRlIHdpdGggdGhl IGtleSB1bmNoYW5nZWQuDQorU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCisgICQkQ1JFQVRF IFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGludCBQUklNQVJZIEtFWSwgc3RhdHVzIHRleHQsIHYg aW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4 cHJfdGVzdCAodikgV0hFUkUgc3RhdHVzIDw+ICd4JzsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4 cHJfdGVzdCBTRUxFQ1QgZywgJ2EnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQs DQorICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBzdGF0dXMgPSAnYickJCk7DQorDQorLS0g RW50ZXJpbmcgb3IgbGVhdmluZyB0aGUgcHJlZGljYXRlLCBvciBjaGFuZ2luZyB0aGUga2V5IGlu c2lkZSBpdC4NCitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUg aG90X2V4cHJfdGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBzdGF0dXMgdGV4dCwgdiBpbnQpIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0 ICh2KSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJf dGVzdCBTRUxFQ1QgZywgJ2FjdGl2ZScsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGck JCwNCisgICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VUIHN0YXR1cyA9ICdkb25lJyQkKTsNCisN CitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJf dGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBzdGF0dXMgdGV4dCwgdiBpbnQpIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0ICh2KSBXSEVS RSBzdGF0dXMgPSAnYWN0aXZlJzsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxF Q1QgZywgJ2RvbmUnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQ REFURSBob3RfZXhwcl90ZXN0IFNFVCBzdGF0dXMgPSAnYWN0aXZlJyQkKTsNCisNCitTRUxFQ1Qg KiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVzdCAoaWQg aW50IFBSSU1BUlkgS0VZLCBzdGF0dXMgdGV4dCwgdiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7DQorICAgIENSRUFURSBJTkRFWCBPTiBob3RfZXhwcl90ZXN0ICh2KSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVzdCBTRUxFQ1QgZywgJ2Fj dGl2ZScsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGckJCwNCisgICQkVVBEQVRFIGhv dF9leHByX3Rlc3QgU0VUIHYgPSB2ICsgMTAwMCQkKTsNCisNCistLSBSb3dzIHVwZGF0ZWQgb3V0 c2lkZSBhIHBhcnRpYWwgaW5kZXggbXVzdCBub3QgYmUgZm91bmQgdGhyb3VnaCBpdC4NCitTRUxF Q1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVzdCAo aWQgaW50IFBSSU1BUlkgS0VZLCBzdGF0dXMgdGV4dCwgdiBpbnQpIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7DQorICAgIENSRUFURSBJTkRFWCBob3RfZXhwcl90ZXN0X3YgT04gaG90X2V4cHJfdGVz dCAodikgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7DQorICAgIElOU0VSVCBJTlRPIGhvdF9leHBy X3Rlc3QgU0VMRUNUIGcsIENBU0UgV0hFTiBnIDw9IDUgVEhFTiAnYWN0aXZlJyBFTFNFICdkb25l JyBFTkQsIGcNCisgICAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRV UERBVEUgaG90X2V4cHJfdGVzdCBTRVQgdiA9IHYgKyAxMDAgV0hFUkUgc3RhdHVzID0gJ2RvbmUn JCQpOw0KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvZmY7DQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBob3RfZXhwcl90ZXN0 IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnIEFORCB2ID4gMDsNCitTRUxFQ1QgaWQgRlJPTSBob3Rf ZXhwcl90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnIEFORCB2ID4gMCBPUkRFUiBCWSB2Ow0K K1JFU0VUIGVuYWJsZV9zZXFzY2FuOw0KK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOw0KK1NFTEVD VCBpZCBGUk9NIGhvdF9leHByX3Rlc3QgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZScgQU5EIHYgPiAw IE9SREVSIEJZIHY7DQorDQorRFJPUCBUQUJMRSBob3RfZXhwcl90ZXN0Ow0KKw0KKy0tIE9uZSBV UERBVEUgd2hvc2Ugcm93cyBlYWNoIG5lZWQgYSBkaWZmZXJlbnQgaW5kZXggdG8gZGVjaWRlOiBz b21lIGNoYW5nZQ0KKy0tIHRoZSBleHByZXNzaW9uIGluZGV4LCBzb21lIG9ubHkgZW50ZXIgb3Ig bGVhdmUgdGhlIHBhcnRpYWwgaW5kZXggY3JlYXRlZA0KKy0tIGFmdGVyIGl0LCBzb21lIGNoYW5n ZSBuZWl0aGVyLiAgVGhlIHBhcnRpYWwgaW5kZXggbXVzdCBob2xkIGV4YWN0bHkgdGhlDQorLS0g cm93cyB0aGF0IHNhdGlzZnkgaXRzIHByZWRpY2F0ZS4NCitDUkVBVEUgVEFCTEUgaG90X2V4cHJf bXVsdGkgKGlkIGludCBQUklNQVJZIEtFWSwgZG9jIGpzb25iKSBXSVRIIChmaWxsZmFjdG9yID0g MzApOw0KK0NSRUFURSBJTkRFWCBob3RfZXhwcl9tdWx0aV9zdGF0dXMgT04gaG90X2V4cHJfbXVs dGkgKChkb2MtPj4nc3RhdHVzJykpOw0KK0NSRUFURSBJTkRFWCBob3RfZXhwcl9tdWx0aV92aXAg T04gaG90X2V4cHJfbXVsdGkgKChkb2MtPj4nZW1haWwnKSkNCisgIFdIRVJFIChkb2MtPj4ndmlw Jyk6OmJvb2w7DQorSU5TRVJUIElOVE8gaG90X2V4cHJfbXVsdGkNCisgIFNFTEVDVCBnLCBqc29u Yl9idWlsZF9vYmplY3QoJ3N0YXR1cycsICdhJywgJ2VtYWlsJywgJ2UnIHx8IGcsDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICd2aXAnLCBnICUgMiA9IDAsICduJywgMCkNCisgICAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwKSBnOw0KK1VQREFURSBob3RfZXhwcl9tdWx0aSBT RVQgZG9jID0gQ0FTRQ0KKyAgICBXSEVOIGlkICUgNCA9IDAgVEhFTiBqc29uYl9zZXQoZG9jLCAn e3N0YXR1c30nLCAnImIiJykNCisgICAgV0hFTiBpZCAlIDQgPSAxIFRIRU4ganNvbmJfc2V0KGRv YywgJ3t2aXB9JywgdG9fanNvbmIoTk9UIChkb2MtPj4ndmlwJyk6OmJvb2wpKQ0KKyAgICBXSEVO IGlkICUgNCA9IDIgVEhFTiBqc29uYl9zZXQoanNvbmJfc2V0KGRvYywgJ3tzdGF0dXN9JywgJyJj IicpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3t2aXB9JywgdG9fanNv bmIoTk9UIChkb2MtPj4ndmlwJyk6OmJvb2wpKQ0KKyAgICBFTFNFIGpzb25iX3NldChkb2MsICd7 bn0nLCAnMScpIEVORDsNCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorU0VUIGVuYWJsZV9i aXRtYXBzY2FuID0gb2ZmOw0KK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhvdF9leHByX211bHRpDQor IFdIRVJFIChkb2MtPj4ndmlwJyk6OmJvb2wgQU5EIGRvYy0+PidlbWFpbCcgPj0gJ2UnOw0KK1JF U0VUIGVuYWJsZV9zZXFzY2FuOw0KK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOw0KK1NFTEVDVCBj b3VudCgqKSBGUk9NIGhvdF9leHByX211bHRpIFdIRVJFIChkb2MtPj4ndmlwJyk6OmJvb2w7DQor RFJPUCBUQUJMRSBob3RfZXhwcl9tdWx0aTsNCisNCistLSBBbiBpbmRleCB3aG9zZSBjb25jdXJy ZW50IGJ1aWxkIGZhaWxlZCBpcyBub3QgcmVhZHkgZm9yIGluc2VydHMsIGFuZCBpdHMNCistLSBl eHByZXNzaW9uIG5lZWQgbm90IGJlIGNvbXB1dGFibGUgZm9yIGV2ZXJ5IHJvdy4gIEFuIFVQREFU RSBtdXN0IG5vdA0KKy0tIGV2YWx1YXRlIGl0Lg0KK0NSRUFURSBUQUJMRSBob3RfZXhwcl9jaWMg KGlkIGludCBQUklNQVJZIEtFWSwgeCBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorSU5T RVJUIElOVE8gaG90X2V4cHJfY2ljIFZBTFVFUyAoMSwgMSksICgyLCAwKTsNCitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGhvdF9leHByX2NpY19pZHggT04gaG90X2V4cHJfY2ljICgoMTAwIC8g eCkpOw0KK1NFTEVDVCBpbmRpc3JlYWR5LCBpbmRpc3ZhbGlkIEZST00gcGdfaW5kZXgNCisgV0hF UkUgaW5kZXhyZWxpZCA9ICdob3RfZXhwcl9jaWNfaWR4Jzo6cmVnY2xhc3M7DQorVVBEQVRFIGhv dF9leHByX2NpYyBTRVQgeCA9IDAgV0hFUkUgaWQgPSAxOw0KK1VQREFURSBob3RfZXhwcl9jaWMg U0VUIHggPSAxIFdIRVJFIGlkID0gMjsNCitTRUxFQ1QgKiBGUk9NIGhvdF9leHByX2NpYyBPUkRF UiBCWSBpZDsNCitEUk9QIFRBQkxFIGhvdF9leHByX2NpYzsNCisNCistLSBXcml0aW5nIGJhY2sg YSB2YWx1ZSB0aGF0IGlzIHN0b3JlZCBjb21wcmVzc2VkIGluIHRoZSBvbGQgcm93LCBhbmQgbm90 DQorLS0geWV0IGluIHRoZSBuZXcgb25lLiAgQW4gU1AtR2lTVCBpbmRleCwgd2hvc2UgYWNjZXNz IG1ldGhvZCBjYW5ub3QgY29tcGFyZQ0KKy0tIGVudHJpZXMsIGFuZCB3aGljaCByZXR1cm5zIHRo ZSB2YWx1ZSBpbiBpbmRleC1vbmx5IHNjYW5zLg0KK1NFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2Uo DQorICAkJENSRUFURSBUQUJMRSBob3RfZXhwcl90ZXN0IChpZCBpbnQgUFJJTUFSWSBLRVksIHQg dGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCisgICAgQ1JFQVRFIElOREVYIE9OIGhvdF9l eHByX3Rlc3QgVVNJTkcgc3BnaXN0ICh0KTsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4cHJfdGVz dCBTRUxFQ1QgZywgcmVwZWF0KCd4JywgMzAwMCkgfHwgZyBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgdCA9IHJlcGVhdCgneCcs IDMwMDApIHx8IGlkJCQpOw0KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCitTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7DQorU0VMRUNUIGNvdW50KCopIEZST00gaG90X2V4cHJfdGVzdCBX SEVSRSB0ID0gcmVwZWF0KCd4JywgMzAwMCkgfHwgNzsNCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsN CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsNCistLSBUaGUgc2FtZSBpbiBhIHBhcnRpYWwgaW5k ZXggZXZhbHVhdGVkIGZvciBhbm90aGVyIGNvbHVtbidzIGNoYW5nZS4NCitTRUxFQ1QgKiBGUk9N IHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFCTEUgaG90X2V4cHJfdGVzdCAoaWQgaW50IFBS SU1BUlkgS0VZLCB0IHRleHQsIHggaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBD UkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAodCkgV0hFUkUgeCA+PSAwOw0KKyAgICBJTlNF UlQgSU5UTyBob3RfZXhwcl90ZXN0IFNFTEVDVCBnLCByZXBlYXQoJ3gnLCAzMDAwKSB8fCBnLCAw IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQorICAkJFVQREFURSBob3RfZXhwcl90 ZXN0IFNFVCB0ID0gcmVwZWF0KCd4JywgMzAwMCkgfHwgaWQsIHggPSB4ICsgMSQkKTsNCistLSBU aGUgc2FtZSB0aHJvdWdoIGFuIGV4cHJlc3Npb24gdGhhdCByZXR1cm5zIHRoZSBjb2x1bW4ncyB2 YWx1ZSBhcyBpcy4NCitTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KKyAgJCRDUkVBVEUgVEFC TEUgaG90X2V4cHJfdGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCB0IHRleHQsIHggaW50KSBXSVRI IChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgSU5ERVggT04gaG90X2V4cHJfdGVzdCAo KGNvYWxlc2NlKHQsICcnKSkpIFdIRVJFIHggPj0gMDsNCisgICAgSU5TRVJUIElOVE8gaG90X2V4 cHJfdGVzdCBTRUxFQ1QgZywgcmVwZWF0KCd4JywgMzAwMCkgfHwgZywgMCBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMCkgZyQkLA0KKyAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgdCA9IHJl cGVhdCgneCcsIDMwMDApIHx8IGlkLCB4ID0geCArIDEkJCk7DQorLS0gLi4uIGJ1dCBub3QgZm9y IGEgY29sdW1uIG9mIGEgdW5pcXVlIGluZGV4LCB3aGljaCB0aGUgdGFibGUncyBsb2NrDQorLS0g c3RyZW5ndGggaXMgZGVjaWRlZCBieSBhcyBzdG9yZWQuDQorU0VMRUNUICogRlJPTSB1cGRhdGVf Y2FzZSgNCisgICQkQ1JFQVRFIFRBQkxFIGhvdF9leHByX3Rlc3QgKGlkIGludCwgdCB0ZXh0KSBX SVRIIChmaWxsZmFjdG9yID0gNTApOw0KKyAgICBDUkVBVEUgVU5JUVVFIElOREVYIE9OIGhvdF9l eHByX3Rlc3QgKHQpOw0KKyAgICBJTlNFUlQgSU5UTyBob3RfZXhwcl90ZXN0IFNFTEVDVCBnLCBy ZXBlYXQoJ3gnLCAzMDAwKSB8fCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnJCQsDQor ICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCB0ID0gcmVwZWF0KCd4JywgMzAwMCkgfHwgaWQk JCk7DQorRFJPUCBUQUJMRSBob3RfZXhwcl90ZXN0Ow0KKw0KK0RST1AgRlVOQ1RJT04gdXBkYXRl X2Nhc2UodGV4dCwgdGV4dCk7DQorDQorRFJPUCBGVU5DVElPTiBnZXRfaG90X2NvdW50KHRleHQp Ow0KDQpiYXNlLWNvbW1pdDogODcxZGVlMGNjYmUyOTJjZjRjMjg3NGFhN2I0NjBkMjQyMjYyZDI0 Mg0KLS0gDQoyLjUwLjENCg0K --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0003-Allow-HOT-updates-when-expression-and-partial-in.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0003-Allow-HOT-updates-when-expression-and-partial-in.patch RnJvbSBkNzQ2MjRjMDZiYWE4MzFlMTI2NTVhN2IzMTliMWZiZDVkZmI1NDhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBNb24s IDE5IE9jdCAyMDI2IDE4OjU1OjQxIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDMvOF0gQWxs b3cgSE9UIHVwZGF0ZXMgd2hlbiBleHByZXNzaW9uIGFuZCBwYXJ0aWFsIGluZGV4ZXMNCiBhcmUg dW5hZmZlY3RlZA0KDQpBbiBVUERBVEUgdGhhdCBjaGFuZ2VzIGEgY29sdW1uIHVzZWQgYnkgYW4g ZXhwcmVzc2lvbiBpbmRleCBjYW5ub3QgYmUNCkhPVCB0b2RheSwgZXZlbiB3aGVuIHRoZSBleHBy ZXNzaW9uJ3MgdmFsdWUgZG9lcyBub3QgY2hhbmdlOiBhbiBpbmRleA0Kb24gKGRhdGEtPj4nbmFt ZScpIGJsb2NrcyBIT1QgZm9yIGV2ZXJ5IGNoYW5nZSB0byBkYXRhLiAgUGFydGlhbA0KaW5kZXhl cyBhcmUgdHJlYXRlZCB0aGUgc2FtZSB3YXksIHNvIGFuIGluZGV4IFdIRVJFIHN0YXR1cyA9ICdh Y3RpdmUnDQpibG9ja3MgSE9UIGZvciBhIHJvdyB0aGF0IGlzIG91dHNpZGUgdGhlIHByZWRpY2F0 ZSBiZWZvcmUgYW5kIGFmdGVyDQp0aGUgdXBkYXRlLiAgRm9yIEpTT05CIGRvY3VtZW50cyB3aXRo IGEgZmV3IGluZGV4ZWQgZmllbGRzIHRoYXQgaXMNCm1vc3QgVVBEQVRFcy4NCg0KU2luY2UgdGhl IHByZXZpb3VzIGNvbW1pdCB0aGUgZXhlY3V0b3IgY29tcHV0ZXMgd2hpY2ggaW5kZXhlZA0KYXR0 cmlidXRlcyBhbiBVUERBVEUgY2hhbmdlZCBiZWZvcmUgY2FsbGluZyB0aGUgdGFibGUgQU0sIG91 dHNpZGUgYW55DQpidWZmZXIgbG9jaywgc28gaXQgY2FuIG5vdyBsb29rIGF0IHdoYXQgdGhlIGlu ZGV4ZXMgd291bGQgc3RvcmUuDQpJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OLCBhIG5ldyBy ZWxjYWNoZSBiaXRtYXAsIGhvbGRzIHRoZQ0KYXR0cmlidXRlcyB0aGF0IG5vbi1zdW1tYXJpemlu ZyBpbmRleGVzIHJlZmVyZW5jZSBvbmx5IHRocm91Z2gNCmV4cHJlc3Npb25zIG9yIGFzIHBhcnRp YWwgaW5kZXhlcy4gIFdoZW4gdGhlIGNoYW5nZWQgYXR0cmlidXRlcyBhcmUgYWxsDQppbiB0aGF0 IHNldCwgb3IgYXJlIHJlZmVyZW5jZWQgb3RoZXJ3aXNlIG9ubHkgYnkgc3VtbWFyaXppbmcgaW5k ZXhlcywNCkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgZXZhbHVhdGVzIGVhY2ggYWZmZWN0 ZWQgaW5kZXgncyBwcmVkaWNhdGUNCmFuZCBpbmRleCBkYXR1bXMgZm9yIHRoZSBvbGQgYW5kIG5l dyByb3dzLCBhbmQgZHJvcHMgZnJvbSB0aGUgY2hhbmdlZA0Kc2V0IGV2ZXJ5IGF0dHJpYnV0ZSB3 aG9zZSBjaGFuZ2Ugbm8gaW5kZXggc2Vlcy4gIFRoZSB0YWJsZSBBTSBkZWNpZGVzDQp0aGUgcmVz dCBhcyBiZWZvcmUsIHNvIGZvciBoZWFwIHRoZSB1cGRhdGUgY2FuIGJlIEhPVC4NCg0KQW4gaW5k ZXggc2VlcyB0aGUgY2hhbmdlIGlmOg0KDQotIHRoZSByb3cgZW50ZXJzIG9yIGxlYXZlcyBpdHMg cHJlZGljYXRlLiAgQSBIT1QgY2hhaW4gd291bGQgbGVhdmUgdGhlDQogIGluZGV4IHBvaW50aW5n IGF0IGEgcm93IG91dHNpZGUgdGhlIHByZWRpY2F0ZSwgd2hpY2ggdGhlIHBsYW5uZXINCiAgcmVs aWVzIG9uIG5vdCBoYXBwZW5pbmc7DQotIHRoZSByb3cgaXMgaW5zaWRlIHRoZSBwcmVkaWNhdGUg YW5kIGFueSBpbmRleCBkYXR1bSBkaWZmZXJzLiAgRGF0dW1zDQogIGFyZSBjb21wYXJlZCBieXRl IGZvciBieXRlIGFzIHN0b3JlZCwgdXNpbmcgdGhlIHR5cGUgb2YgdGhlIHZhbHVlDQogIEZvcm1J bmRleERhdHVtKCkgcHJvZHVjZWQgKHRoZSBleHByZXNzaW9uJ3MgdHlwZSwgbm90IHRoZSBpbmRl eA0KICBjb2x1bW4ncywgd2hpY2ggY2FuIGRpZmZlciB0aHJvdWdoIG9wY2tleXR5cGUpLCBzbyBl cXVhbCB2YWx1ZXMgd2l0aA0KICBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zIHN0aWxsIGNvdW50 IGFzIGNoYW5nZWQ7DQotIHRoZSBpbmRleCBpcyBub3QgeWV0IHJlYWR5IGZvciBpbnNlcnRzIG9y IG5vdCB2YWxpZC4gIFJFQURNRS5IT1QNCiAgcmVxdWlyZXMgc3VjaCBhbiBpbmRleCB0byBjb25z dHJhaW4gSE9ULCBhbmQgYSBmYWlsZWQgYnVpbGQncw0KICBleHByZXNzaW9uIG5lZWQgbm90IGJl IGNvbXB1dGFibGUgZm9yIGV2ZXJ5IHJvdy4NCg0KVGhlIGNvbXBhcmlzb24gaXMgbWFkZSBwZXIg cm93LCBhZnRlciBCRUZPUkUgUk9XIHRyaWdnZXJzIGFuZCBhZnRlcg0KRXZhbFBsYW5RdWFsIGhh cyByZXBsYWNlZCB0aGUgb2xkIGFuZCBuZXcgcm93cyB3aXRoIHRob3NlIGJ1aWx0IGZyb20gdGhl DQpsYXRlc3QgdmVyc2lvbiwgc28gbmVpdGhlciBhIGNvbmN1cnJlbnQgdXBkYXRlIG5vciBhbiBl YXJsaWVyIHJvdyBvZiB0aGUNCnNhbWUgc3RhdGVtZW50IGNhbiBzdXBwbHkgdGhlIGFuc3dlci4g IHVwZGF0ZS1lcHEtaW5kZXhlcywgYWRkZWQgd2l0aA0KdGhlIHRlc3RzLCBjb3ZlcnMgdGhlIGNv bmN1cnJlbnQgY2FzZSB3aXRoIGEgQkVGT1JFIFJPVyB0cmlnZ2VyLg0KDQpOb3RoaW5nIGlzIGV2 YWx1YXRlZCB3aGVuIGFuIHVwZGF0ZSBjaGFuZ2VzIGEgY29sdW1uIHRoYXQgYSBwbGFpbg0KaW5k ZXggdXNlcywgc28gdGhlIGNvc3Qgb2YgYW4gdXBkYXRlIHRoYXQgY2Fubm90IGJlIEhPVCBpcyB0 aGUNCmF0dHJpYnV0ZSBjb21wYXJpc29uIGl0IGFscmVhZHkgcGFpZC4gIEtleSBhbmQgcmVwbGlj YSBpZGVudGl0eSBpbmRleGVzDQpoYXZlIG5laXRoZXIgZXhwcmVzc2lvbnMgbm9yIHByZWRpY2F0 ZXMsIHNvIHRoZSBsb2NrIG1vZGUgYW5kIHRoZQ0KcmVwbGljYSBpZGVudGl0eSBkZWNpc2lvbiBz ZWUgdGhlIHNhbWUgYXR0cmlidXRlcyBhcyBiZWZvcmU7IGFuDQphc3NlcnRpb24gY2hlY2tzIHRo aXMuDQoNClRoaXMgaXMgdGhlIHNlY29uZCBhdHRlbXB0LiAgQ29tbWl0IGMyMDNkNmNmOCBjb21w YXJlZCBpbmRleCBkYXR1bXMNCnVzaW5nIHRoZSBpbmRleCdzIHN0b3JhZ2UgdHlwZSBhbmQgY3Jh c2hlZCBmb3IgYW4gaW5kZXggd2hvc2Ugc3RvcmVkDQp0eXBlIGRpZmZlcnMgZnJvbSB0aGUgZXhw cmVzc2lvbidzOyBpdCB3YXMgZGlzYWJsZWQgaW4gNWQyOGM5YmQ3IGFuZA0KcmV2ZXJ0ZWQgaW4g MWM1M2M0ZGVjLiAgVGhlIGhvdF91cGRhdGVzIHRlc3Qgbm93IGNvdmVycyBzdWNoIGluZGV4ZXMN CihuYW1lX29wcywgZ2lzdCBwb2ludF9vcHMpLiAgSXRzIGV4cGVjdGVkIG91dHB1dCBjaGFuZ2Vz IGZvciB0aGUNCmV4cHJlc3Npb24gYW5kIHBhcnRpYWwgaW5kZXggY2FzZXMgdGhpcyBtYWtlcyBI T1QsIGFuZCBmb3Igbm8gb3RoZXJzLg0KDQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t Lzc4NTc0QjI0LUJFMEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQ0BhbWF6b24uY29tDQpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzIwMTgxMTA2MTg1MjU1Ljc3Nm1zdGN5ZWhuYzYzdHlA YWx2aGVycmUucGdzcWwNCg0KIyBDb25mbGljdHM6DQojCWNvbnRyaWIvcGFnZWluc3BlY3QvZXhw ZWN0ZWQvaG90X3VwZGF0ZXMub3V0DQojCXNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jDQojCXNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMNCiMJc3JjL2luY2x1 ZGUvdXRpbHMvcmVsLmgNCiMJc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaA0KLS0tDQogY29u dHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2J0cmVlLm91dCAgICAgIHwgIDgzICsrKysrKw0K IGNvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnRyZWUuc3FsICAgICAgICAgICB8ICA1MCArKysr DQogZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgICA5ICst DQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDE4ICst DQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDE0ICst DQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAgICAgIHwgICAzICst DQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgICAgIHwgICAzICst DQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMjczICsr KysrKysrKysrKysrKysrLQ0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAg ICAgICAgICB8ICA0NiArKysNCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAg ICAgICAgICAgfCAgIDMgKy0NCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAg ICAgICAgICAgfCAgIDggKw0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMiArDQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCAgICAgICAgICAg ICAgICAgIHwgICAxICsNCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL2NpYy1leHByZXNzaW9uLWhv dC5vdXQgfCAgNDMgKysrDQogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSAg ICAgICAgIHwgICAxICsNCiAuLi4vaXNvbGF0aW9uL3NwZWNzL2NpYy1leHByZXNzaW9uLWhvdC5z cGVjICAgfCAgNDMgKysrDQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5v dXQgICAgIHwgIDI2ICstDQogMTcgZmlsZXMgY2hhbmdlZCwgNTk5IGluc2VydGlvbnMoKyksIDI3 IGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvY2ljLWV4cHJlc3Npb24taG90Lm91dA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvY2ljLWV4cHJlc3Npb24taG90LnNwZWMNCg0KZGlmZiAtLWdpdCBh L2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19idHJlZS5vdXQgYi9jb250cmliL2FtY2hl Y2svZXhwZWN0ZWQvY2hlY2tfYnRyZWUub3V0DQppbmRleCA0ZmNlZTVkYTQ2My4uNmZjMWVlOTc5 MDIgMTAwNjQ0DQotLS0gYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnRyZWUub3V0 DQorKysgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnRyZWUub3V0DQpAQCAtMjgz LDYgKzI4Myw4OSBAQCBTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ3ZhcmxlbmFfYnVnX2lkeCcsIHRy dWUpOw0KICANCiAoMSByb3cpDQogDQorLS0gSE9UIHVwZGF0ZXMgb2Ygcm93cyBpbmRleGVkIGJ5 IGV4cHJlc3Npb24gYW5kIHBhcnRpYWwgaW5kZXhlcyBtdXN0IGxlYXZlDQorLS0gZXZlcnkgaW5k ZXggZW50cnkgY29uc2lzdGVudCB3aXRoIHRoZSBoZWFwLg0KK0NSRUFURSBUQUJMRSBob3RfZXhw ciAoaWQgaW50IFBSSU1BUlkgS0VZLCBzIHRleHQsIGQganNvbmIsDQorICAgICAgICAgICAgICAg ICAgICAgICBzdGF0dXMgdGV4dCwgdiBpbnQsIG4gbnVtZXJpYykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsNCitDUkVBVEUgSU5ERVggaG90X2V4cHJfbG93ZXIgT04gaG90X2V4cHIgKGxvd2VyKHMp KTsNCitDUkVBVEUgSU5ERVggaG90X2V4cHJfbmFtZSBPTiBob3RfZXhwciAoKGQtPj4nbmFtZScp KTsNCitDUkVBVEUgSU5ERVggaG90X2V4cHJfcGFydGlhbCBPTiBob3RfZXhwciAodikgV0hFUkUg c3RhdHVzID0gJ2FjdGl2ZSc7DQorQ1JFQVRFIElOREVYIGhvdF9leHByX251bWVyaWMgT04gaG90 X2V4cHIgKChuICsgMCkpOw0KK0lOU0VSVCBJTlRPIGhvdF9leHByDQorICBTRUxFQ1QgZywgJ2Fi YycgfHwgZywganNvbmJfYnVpbGRfb2JqZWN0KCduYW1lJywgJ24nIHx8IGcsICdhZ2UnLCBnKSwN CisgICAgICAgICBDQVNFIFdIRU4gZyAlIDIgPSAwIFRIRU4gJ2FjdGl2ZScgRUxTRSAnZG9uZScg RU5ELCBnLCAzDQorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZzsNCitVUERBVEUg aG90X2V4cHIgU0VUIHMgPSB1cHBlcihzKTsNCitVUERBVEUgaG90X2V4cHIgU0VUIGQgPSBqc29u Yl9zZXQoZCwgJ3thZ2V9JywgJzAnKTsNCitVUERBVEUgaG90X2V4cHIgU0VUIHYgPSB2ICsgMTAw MCBXSEVSRSBzdGF0dXMgPSAnZG9uZSc7DQorVVBEQVRFIGhvdF9leHByIFNFVCBzdGF0dXMgPSAn ZG9uZScgV0hFUkUgaWQgJSA0ID0gMDsNCitVUERBVEUgaG90X2V4cHIgU0VUIHN0YXR1cyA9ICdh Y3RpdmUnIFdIRVJFIGlkICUgMyA9IDA7DQorVVBEQVRFIGhvdF9leHByIFNFVCBuID0gMy4wIFdI RVJFIGlkICUgNSA9IDA7DQorVVBEQVRFIGhvdF9leHByIFNFVCBkID0ganNvbmJfc2V0KGQsICd7 bmFtZX0nLCAnIngiJykgV0hFUkUgaWQgJSA3ID0gMDsNCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2so J2hvdF9leHByX2xvd2VyJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQorIGJ0X2luZGV4X2No ZWNrIA0KKy0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBidF9pbmRl eF9jaGVjaygnaG90X2V4cHJfbmFtZScsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOw0KKyBidF9p bmRleF9jaGVjayANCistLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1Qg YnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX3BhcnRpYWwnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVl KTsNCisgYnRfaW5kZXhfY2hlY2sgDQorLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQor DQorU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdob3RfZXhwcl9udW1lcmljJywgaGVhcGFsbGluZGV4 ZWQgPT4gdHJ1ZSk7DQorIGJ0X2luZGV4X2NoZWNrIA0KKy0tLS0tLS0tLS0tLS0tLS0NCisgDQor KDEgcm93KQ0KKw0KK1NFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ2hvdF9leHByX3BhcnRp YWwnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsNCisgYnRfaW5kZXhfcGFyZW50X2NoZWNrIA0K Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitEUk9QIFRBQkxFIGhv dF9leHByOw0KKy0tIE9uZSBVUERBVEUgaW4gd2hpY2ggZGlmZmVyZW50IHJvd3MgYXJlIGRlY2lk ZWQgYnkgZGlmZmVyZW50IGluZGV4ZXM6IGFuDQorLS0gZXhwcmVzc2lvbiBpbmRleCBjcmVhdGVk IGZpcnN0LCBhIHBhcnRpYWwgaW5kZXggY3JlYXRlZCBhZnRlciBpdC4NCitDUkVBVEUgVEFCTEUg aG90X2V4cHJfbXVsdGkgKGlkIGludCBQUklNQVJZIEtFWSwgZG9jIGpzb25iKSBXSVRIIChmaWxs ZmFjdG9yID0gMzApOw0KK0NSRUFURSBJTkRFWCBob3RfZXhwcl9tdWx0aV9zdGF0dXMgT04gaG90 X2V4cHJfbXVsdGkgKChkb2MtPj4nc3RhdHVzJykpOw0KK0NSRUFURSBJTkRFWCBob3RfZXhwcl9t dWx0aV92aXAgT04gaG90X2V4cHJfbXVsdGkgKChkb2MtPj4nZW1haWwnKSkNCisgIFdIRVJFIChk b2MtPj4ndmlwJyk6OmJvb2w7DQorSU5TRVJUIElOVE8gaG90X2V4cHJfbXVsdGkNCisgIFNFTEVD VCBnLCBqc29uYl9idWlsZF9vYmplY3QoJ3N0YXR1cycsICdhJywgJ2VtYWlsJywgJ2UnIHx8IGcs DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXAnLCBnICUgMiA9IDAsICduJywg MCkNCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgZzsNCitVUERBVEUgaG90X2V4 cHJfbXVsdGkgU0VUIGRvYyA9IENBU0UNCisgICAgV0hFTiBpZCAlIDQgPSAwIFRIRU4ganNvbmJf c2V0KGRvYywgJ3tzdGF0dXN9JywgJyJiIicpDQorICAgIFdIRU4gaWQgJSA0ID0gMSBUSEVOIGpz b25iX3NldChkb2MsICd7dmlwfScsIHRvX2pzb25iKE5PVCAoZG9jLT4+J3ZpcCcpOjpib29sKSkN CisgICAgV0hFTiBpZCAlIDQgPSAyIFRIRU4ganNvbmJfc2V0KGpzb25iX3NldChkb2MsICd7c3Rh dHVzfScsICciYyInKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7dmlw fScsIHRvX2pzb25iKE5PVCAoZG9jLT4+J3ZpcCcpOjpib29sKSkNCisgICAgRUxTRSBqc29uYl9z ZXQoZG9jLCAne259JywgJzEnKSBFTkQ7DQorVVBEQVRFIGhvdF9leHByX211bHRpIFNFVCBkb2Mg PSBDQVNFDQorICAgIFdIRU4gaWQgJSAzID0gMCBUSEVOIGpzb25iX3NldChkb2MsICd7dmlwfScs IHRvX2pzb25iKE5PVCAoZG9jLT4+J3ZpcCcpOjpib29sKSkNCisgICAgV0hFTiBpZCAlIDMgPSAx IFRIRU4ganNvbmJfc2V0KGRvYywgJ3tzdGF0dXN9JywgJyJkIicpDQorICAgIEVMU0UganNvbmJf c2V0KGRvYywgJ3tufScsICcyJykgRU5EOw0KK1NFTEVDVCBidF9pbmRleF9jaGVjaygnaG90X2V4 cHJfbXVsdGlfc3RhdHVzJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQorIGJ0X2luZGV4X2No ZWNrIA0KKy0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBidF9pbmRl eF9jaGVjaygnaG90X2V4cHJfbXVsdGlfdmlwJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQor IGJ0X2luZGV4X2NoZWNrIA0KKy0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK0RS T1AgVEFCTEUgaG90X2V4cHJfbXVsdGk7DQogLS0gY2xlYW51cA0KIERST1AgVEFCTEUgYnR0ZXN0 X2E7DQogRFJPUCBUQUJMRSBidHRlc3RfYjsNCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2sv c3FsL2NoZWNrX2J0cmVlLnNxbCBiL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnRyZWUuc3Fs DQppbmRleCBhNTU4NTA4NWZhZC4uNGM1NGFhZDVkOWYgMTAwNjQ0DQotLS0gYS9jb250cmliL2Ft Y2hlY2svc3FsL2NoZWNrX2J0cmVlLnNxbA0KKysrIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVj a19idHJlZS5zcWwNCkBAIC0xODMsNiArMTgzLDU2IEBAIElOU0VSVCBJTlRPIHZhcmxlbmFfYnVn IFZBTFVFUyAocmVwZWF0KCdUZXN0JywgMjUwKSk7DQogQUxURVIgVEFCTEUgdmFybGVuYV9idWcg QUxURVIgQ09MVU1OIHYgU0VUIFNUT1JBR0UgZXh0ZW5kZWQ7DQogU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCd2YXJsZW5hX2J1Z19pZHgnLCB0cnVlKTsNCiANCistLSBIT1QgdXBkYXRlcyBvZiByb3dz IGluZGV4ZWQgYnkgZXhwcmVzc2lvbiBhbmQgcGFydGlhbCBpbmRleGVzIG11c3QgbGVhdmUNCist LSBldmVyeSBpbmRleCBlbnRyeSBjb25zaXN0ZW50IHdpdGggdGhlIGhlYXAuDQorQ1JFQVRFIFRB QkxFIGhvdF9leHByIChpZCBpbnQgUFJJTUFSWSBLRVksIHMgdGV4dCwgZCBqc29uYiwNCisgICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cyB0ZXh0LCB2IGludCwgbiBudW1lcmljKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOw0KK0NSRUFURSBJTkRFWCBob3RfZXhwcl9sb3dlciBPTiBob3RfZXhw ciAobG93ZXIocykpOw0KK0NSRUFURSBJTkRFWCBob3RfZXhwcl9uYW1lIE9OIGhvdF9leHByICgo ZC0+PiduYW1lJykpOw0KK0NSRUFURSBJTkRFWCBob3RfZXhwcl9wYXJ0aWFsIE9OIGhvdF9leHBy ICh2KSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsNCitDUkVBVEUgSU5ERVggaG90X2V4cHJfbnVt ZXJpYyBPTiBob3RfZXhwciAoKG4gKyAwKSk7DQorSU5TRVJUIElOVE8gaG90X2V4cHINCisgIFNF TEVDVCBnLCAnYWJjJyB8fCBnLCBqc29uYl9idWlsZF9vYmplY3QoJ25hbWUnLCAnbicgfHwgZywg J2FnZScsIGcpLA0KKyAgICAgICAgIENBU0UgV0hFTiBnICUgMiA9IDAgVEhFTiAnYWN0aXZlJyBF TFNFICdkb25lJyBFTkQsIGcsIDMNCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBn Ow0KK1VQREFURSBob3RfZXhwciBTRVQgcyA9IHVwcGVyKHMpOw0KK1VQREFURSBob3RfZXhwciBT RVQgZCA9IGpzb25iX3NldChkLCAne2FnZX0nLCAnMCcpOw0KK1VQREFURSBob3RfZXhwciBTRVQg diA9IHYgKyAxMDAwIFdIRVJFIHN0YXR1cyA9ICdkb25lJzsNCitVUERBVEUgaG90X2V4cHIgU0VU IHN0YXR1cyA9ICdkb25lJyBXSEVSRSBpZCAlIDQgPSAwOw0KK1VQREFURSBob3RfZXhwciBTRVQg c3RhdHVzID0gJ2FjdGl2ZScgV0hFUkUgaWQgJSAzID0gMDsNCitVUERBVEUgaG90X2V4cHIgU0VU IG4gPSAzLjAgV0hFUkUgaWQgJSA1ID0gMDsNCitVUERBVEUgaG90X2V4cHIgU0VUIGQgPSBqc29u Yl9zZXQoZCwgJ3tuYW1lfScsICcieCInKSBXSEVSRSBpZCAlIDcgPSAwOw0KK1NFTEVDVCBidF9p bmRleF9jaGVjaygnaG90X2V4cHJfbG93ZXInLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsNCitT RUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX25hbWUnLCBoZWFwYWxsaW5kZXhlZCA9PiB0 cnVlKTsNCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX3BhcnRpYWwnLCBoZWFwYWxs aW5kZXhlZCA9PiB0cnVlKTsNCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX251bWVy aWMnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsNCitTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2No ZWNrKCdob3RfZXhwcl9wYXJ0aWFsJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQorRFJPUCBU QUJMRSBob3RfZXhwcjsNCisNCistLSBPbmUgVVBEQVRFIGluIHdoaWNoIGRpZmZlcmVudCByb3dz IGFyZSBkZWNpZGVkIGJ5IGRpZmZlcmVudCBpbmRleGVzOiBhbg0KKy0tIGV4cHJlc3Npb24gaW5k ZXggY3JlYXRlZCBmaXJzdCwgYSBwYXJ0aWFsIGluZGV4IGNyZWF0ZWQgYWZ0ZXIgaXQuDQorQ1JF QVRFIFRBQkxFIGhvdF9leHByX211bHRpIChpZCBpbnQgUFJJTUFSWSBLRVksIGRvYyBqc29uYikg V0lUSCAoZmlsbGZhY3RvciA9IDMwKTsNCitDUkVBVEUgSU5ERVggaG90X2V4cHJfbXVsdGlfc3Rh dHVzIE9OIGhvdF9leHByX211bHRpICgoZG9jLT4+J3N0YXR1cycpKTsNCitDUkVBVEUgSU5ERVgg aG90X2V4cHJfbXVsdGlfdmlwIE9OIGhvdF9leHByX211bHRpICgoZG9jLT4+J2VtYWlsJykpDQor ICBXSEVSRSAoZG9jLT4+J3ZpcCcpOjpib29sOw0KK0lOU0VSVCBJTlRPIGhvdF9leHByX211bHRp DQorICBTRUxFQ1QgZywganNvbmJfYnVpbGRfb2JqZWN0KCdzdGF0dXMnLCAnYScsICdlbWFpbCcs ICdlJyB8fCBnLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlwJywgZyAlIDIg PSAwLCAnbicsIDApDQorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGc7DQorVVBE QVRFIGhvdF9leHByX211bHRpIFNFVCBkb2MgPSBDQVNFDQorICAgIFdIRU4gaWQgJSA0ID0gMCBU SEVOIGpzb25iX3NldChkb2MsICd7c3RhdHVzfScsICciYiInKQ0KKyAgICBXSEVOIGlkICUgNCA9 IDEgVEhFTiBqc29uYl9zZXQoZG9jLCAne3ZpcH0nLCB0b19qc29uYihOT1QgKGRvYy0+Pid2aXAn KTo6Ym9vbCkpDQorICAgIFdIRU4gaWQgJSA0ID0gMiBUSEVOIGpzb25iX3NldChqc29uYl9zZXQo ZG9jLCAne3N0YXR1c30nLCAnImMiJyksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAne3ZpcH0nLCB0b19qc29uYihOT1QgKGRvYy0+Pid2aXAnKTo6Ym9vbCkpDQorICAgIEVM U0UganNvbmJfc2V0KGRvYywgJ3tufScsICcxJykgRU5EOw0KK1VQREFURSBob3RfZXhwcl9tdWx0 aSBTRVQgZG9jID0gQ0FTRQ0KKyAgICBXSEVOIGlkICUgMyA9IDAgVEhFTiBqc29uYl9zZXQoZG9j LCAne3ZpcH0nLCB0b19qc29uYihOT1QgKGRvYy0+Pid2aXAnKTo6Ym9vbCkpDQorICAgIFdIRU4g aWQgJSAzID0gMSBUSEVOIGpzb25iX3NldChkb2MsICd7c3RhdHVzfScsICciZCInKQ0KKyAgICBF TFNFIGpzb25iX3NldChkb2MsICd7bn0nLCAnMicpIEVORDsNCitTRUxFQ1QgYnRfaW5kZXhfY2hl Y2soJ2hvdF9leHByX211bHRpX3N0YXR1cycsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOw0KK1NF TEVDVCBidF9pbmRleF9jaGVjaygnaG90X2V4cHJfbXVsdGlfdmlwJywgaGVhcGFsbGluZGV4ZWQg PT4gdHJ1ZSk7DQorRFJPUCBUQUJMRSBob3RfZXhwcl9tdWx0aTsNCisNCiAtLSBjbGVhbnVwDQog RFJPUCBUQUJMRSBidHRlc3RfYTsNCiBEUk9QIFRBQkxFIGJ0dGVzdF9iOw0KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3RvcmFnZS5zZ21sDQpp bmRleCA4M2RlMDE2ZWFhNS4uNGQ2NTUyM2U3YjkgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwv c3RvcmFnZS5zZ21sDQorKysgYi9kb2Mvc3JjL3NnbWwvc3RvcmFnZS5zZ21sDQpAQCAtMTEwOSw3 ICsxMTA5LDE0IEBAIGRhdGEuIEVtcHR5IGluIG9yZGluYXJ5IHRhYmxlcy48L2VudHJ5Pg0KICAg ICAgVGhlIHVwZGF0ZSBkb2VzIG5vdCBtb2RpZnkgYW55IGNvbHVtbnMgcmVmZXJlbmNlZCBieSB0 aGUgdGFibGUncyBpbmRleGVzLA0KICAgICAgbm90IGluY2x1ZGluZyBzdW1tYXJpemluZyBpbmRl eGVzLiAgVGhlIG9ubHkgc3VtbWFyaXppbmcgaW5kZXggbWV0aG9kIGluDQogICAgICB0aGUgY29y ZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGRpc3RyaWJ1dGlvbiBpcyA8 bGluaw0KLSAgICAgbGlua2VuZD0iYnJpbiI+QlJJTjwvbGluaz4uDQorICAgICBsaW5rZW5kPSJi cmluIj5CUklOPC9saW5rPi4gIEEgY29sdW1uIHRoYXQgaW5kZXhlcyByZWZlcmVuY2Ugb25seSB0 aHJvdWdoDQorICAgICA8bGluayBsaW5rZW5kPSJpbmRleGVzLWV4cHJlc3Npb25hbCI+ZXhwcmVz c2lvbnM8L2xpbms+LCBvciBvbmx5IGFzDQorICAgICA8bGluayBsaW5rZW5kPSJpbmRleGVzLXBh cnRpYWwiPnBhcnRpYWwgaW5kZXhlczwvbGluaz4sIGRvZXMgbm90IGNvdW50IGFzDQorICAgICBt b2RpZmllZCBpZiB0aGUgdXBkYXRlIGNoYW5nZXMgbmVpdGhlciB0aGUgdmFsdWUgb2YgYW55IHN1 Y2ggaW5kZXgncw0KKyAgICAgZXhwcmVzc2lvbnMgbm9yIHdoZXRoZXIgdGhlIHJvdyBzYXRpc2Zp ZXMgaXRzIHByZWRpY2F0ZS4gIFRoZSB2YWx1ZXMgYXJlDQorICAgICBjb21wYXJlZCBhcyBzdG9y ZWQsIHNvIGVxdWFsIHZhbHVlcyB3aXRoIGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMsIHN1Y2gN CisgICAgIGFzIDxsaXRlcmFsPjEuMDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPjEuMDA8L2xpdGVy YWw+IG9mIHR5cGUNCisgICAgIDx0eXBlPm51bWVyaWM8L3R5cGU+LCBjb3VudCBhcyBkaWZmZXJl bnQuDQogICAgICA8L3BhcmE+DQogICAgPC9saXN0aXRlbT4NCiAgICA8bGlzdGl0ZW0+DQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QNCmluZGV4IDc0ZTQwN2YzNzVhLi4wMzc3ZjUwODA1NSAx MDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QNCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QNCkBAIC0zNyw2ICszNywxNCBAQCBGaXJz dCwgd2hlcmUgYSB0dXBsZSBpcyByZXBlYXRlZGx5IHVwZGF0ZWQgaW4gd2F5cyB0aGF0IGRvIG5v dCBjaGFuZ2UNCiBpdHMgaW5kZXhlZCBjb2x1bW5zLiAgKEhlcmUsICJpbmRleGVkIGNvbHVtbiIg bWVhbnMgYW55IGNvbHVtbiByZWZlcmVuY2VkDQogYXQgYWxsIGluIGFuIGluZGV4IGRlZmluaXRp b24sIGluY2x1ZGluZyBmb3IgZXhhbXBsZSBjb2x1bW5zIHRoYXQgYXJlDQogdGVzdGVkIGluIGEg cGFydGlhbC1pbmRleCBwcmVkaWNhdGUgYnV0IGFyZSBub3Qgc3RvcmVkIGluIHRoZSBpbmRleC4p DQorQSBjb2x1bW4gdGhhdCBpbmRleGVzIHJlZmVyZW5jZSBvbmx5IHRocm91Z2ggZXhwcmVzc2lv bnMsIG9yIG9ubHkgYXMNCitwYXJ0aWFsIGluZGV4ZXMsIG1heSBjaGFuZ2UgaWYgdGhlIHVwZGF0 ZSBjaGFuZ2VzIG5vdGhpbmcgdGhvc2UgaW5kZXhlcw0KK3N0b3JlOiBub3QgdGhlIHZhbHVlIG9m IGFueSBvZiB0aGVpciBleHByZXNzaW9ucyBvciBjb2x1bW5zLCBhcyBjb21wYXJlZA0KK2J5dGUg Zm9yIGJ5dGUsIGFuZCBub3Qgd2hldGhlciB0aGUgdHVwbGUgc2F0aXNmaWVzIHRoZWlyIHByZWRp Y2F0ZXMuDQorVGhlIGV4ZWN1dG9yIHdvcmtzIHRoYXQgb3V0IGJlZm9yZSBjYWxsaW5nIHRoZSB0 YWJsZSBBTSwgYW5kIHBhc3NlcyBvbg0KK29ubHkgdGhlIGluZGV4ZWQgY29sdW1ucyB3aG9zZSBj aGFuZ2UgbWF0dGVycy4gIEFuIGluZGV4IHRoYXQgaXMgbm90IHlldA0KK3JlYWR5IGZvciBpbnNl cnRzLCBvciB3aG9zZSBidWlsZCBmYWlsZWQsIGNvdW50cyBhcyBjaGFuZ2VkIHdoZW5ldmVyIGEN Citjb2x1bW4gaXQgcmVmZXJlbmNlcyBkb2VzOyBzZWUgIkNSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkiIGJlbG93Lg0KIA0KIFNlY29uZCwgd2hlcmUgdGhlIG1vZGlmaWVkIGNvbHVtbnMgYXJlIG9u bHkgdXNlZCBpbiBpbmRleGVzIHRoYXQgZG8gbm90DQogY29udGFpbiB0dXBsZSBJRHMsIGJ1dCBt YWludGFpbiBzdW1tYXJpZXMgb2YgdGhlIGluZGV4ZWQgZGF0YSBieSBibG9jay4NCkBAIC00Nzcs OSArNDg1LDEwIEBAIEhlYXAtb25seSB0dXBsZQ0KIEhPVC1zYWZlDQogDQogCUEgcHJvcG9zZWQg dHVwbGUgdXBkYXRlIGlzIHNhaWQgdG8gYmUgSE9ULXNhZmUgaWYgaXQgY2hhbmdlcw0KLQlub25l IG9mIHRoZSB0dXBsZSdzIGluZGV4ZWQgY29sdW1ucy4gIEl0IHdpbGwgb25seSBiZWNvbWUgYW4N Ci0JYWN0dWFsIEhPVCB1cGRhdGUgaWYgd2UgY2FuIGZpbmQgcm9vbSBvbiB0aGUgc2FtZSBwYWdl IGZvcg0KLQl0aGUgbmV3IHR1cGxlIHZlcnNpb24uDQorCW5vbmUgb2YgdGhlIHR1cGxlJ3MgaW5k ZXhlZCBjb2x1bW5zLCBvdGhlciB0aGFuIGluIHdheXMgdGhlDQorCWluZGV4ZXMgdGhhdCB1c2Ug dGhlbSBjYW5ub3Qgc2VlIChzZWUgYWJvdmUpLiAgSXQgd2lsbCBvbmx5DQorCWJlY29tZSBhbiBh Y3R1YWwgSE9UIHVwZGF0ZSBpZiB3ZSBjYW4gZmluZCByb29tIG9uIHRoZSBzYW1lIHBhZ2UNCisJ Zm9yIHRoZSBuZXcgdHVwbGUgdmVyc2lvbi4NCiANCiBIT1QgdXBkYXRlDQogDQpAQCAtNDk2LDcg KzUwNSw4IEBAIEluZGV4ZWQgY29sdW1uDQogCUEgY29sdW1uIHVzZWQgaW4gYW4gaW5kZXggZGVm aW5pdGlvbi4gIFRoZSBjb2x1bW4gbWlnaHQgbm90DQogCWFjdHVhbGx5IGJlIHN0b3JlZCBpbiB0 aGUgaW5kZXggLS0tIGl0IGNvdWxkIGJlIHVzZWQgaW4gYQ0KIAlmdW5jdGlvbmFsIGluZGV4J3Mg ZXhwcmVzc2lvbiwgb3IgdXNlZCBpbiBhIHBhcnRpYWwgaW5kZXgNCi0JcHJlZGljYXRlLiAgSE9U IHRyZWF0cyBhbGwgdGhlc2UgY2FzZXMgYWxpa2UuDQorCXByZWRpY2F0ZS4gIEEgY2hhbmdlIHRv IGEgY29sdW1uIHRoYXQgaW5kZXhlcyB1c2Ugb25seSBpbiB0aGVzZQ0KKwl3YXlzIGJsb2NrcyBI T1Qgb25seSBpZiBpdCBjaGFuZ2VzIHdoYXQgdGhvc2UgaW5kZXhlcyBzdG9yZS4NCiANCiBSZWRp cmVjdGluZyBsaW5lIHBvaW50ZXINCiANCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jDQppbmRleCA3 MjlmOWM1ZmI1Ny4uZTBjZDFhYjc2MTIgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYw0KKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMNCkBA IC0zMzE2LDYgKzMzMTYsNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLA0KIAlib29sCQlyZXBfaWRf a2V5X3JlcXVpcmVkID0gZmFsc2U7DQogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcNCiAJQml0 bWFwc2V0ICAqY2hlY2tfYXR0cnM7DQorCUJpdG1hcHNldCAgKm5hcnJvd2FibGVfYXR0cnM7DQog I2VuZGlmDQogCVRyYW5zYWN0aW9uSWQgeG1heF9uZXdfdHVwbGUsDQogCQkJCXhtYXhfb2xkX3R1 cGxlOw0KQEAgLTMzNTksNiArMzM2MCw4IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogCWlkX2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklU TUFQX0lERU5USVRZX0tFWSk7DQogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcNCiAJY2hlY2tf YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9C SVRNQVBfSU5ERVhFRCk7DQorCW5hcnJvd2FibGVfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0 ckJpdG1hcChyZWxhdGlvbiwNCisJCQkJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0VYUFJF U1NJT04pOw0KICNlbmRpZg0KIA0KIAlibG9jayA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIo b3RpZCk7DQpAQCAtMzQxNyw2ICszNDIwLDcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwNCiAJCWJt c19mcmVlKGlkX2F0dHJzKTsNCiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORw0KIAkJYm1zX2Zy ZWUoY2hlY2tfYXR0cnMpOw0KKwkJYm1zX2ZyZWUobmFycm93YWJsZV9hdHRycyk7DQogI2VuZGlm DQogCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3Qg ZnJlZSBpdCAqLw0KIA0KQEAgLTM3NjUsNiArMzc2OSw3IEBAIGwyOg0KIAkJYm1zX2ZyZWUoaWRf YXR0cnMpOw0KICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQogCQlibXNfZnJlZShjaGVja19h dHRycyk7DQorCQlibXNfZnJlZShuYXJyb3dhYmxlX2F0dHJzKTsNCiAjZW5kaWYNCiAJCS8qIG1v ZGlmaWVkX2lkeF9hdHRycyBpcyBvd25lZCBieSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICov DQogDQpAQCAtMzc5NSwxNiArMzgwMCwyMSBAQCBsMjoNCiAJICogdXBkYXRlZCwgYW5kIG5vIG9u ZSBlbHNlIGNhbiBoYXZlIGNoYW5nZWQgaXQuICBDaGVjayB0aGF0IGV2ZXJ5DQogCSAqIGF0dHJp YnV0ZSBjb21wYXJpbmcgdGhlIHR3byB0dXBsZXMgaGVyZSBmaW5kcyBjaGFuZ2VkIGlzIGluIHRo ZQ0KIAkgKiBjYWxsZXIncyBzZXQsIHNvIHRoYXQgYSBjYWxsZXIgdGhhdCBtaXNzZXMgYSBjaGFu Z2UsIG9yIGNvbXBhcmVzIHRoZQ0KLQkgKiB3cm9uZyB0dXBsZXMsIGlzIGNhdWdodC4gIFRoZSBj YWxsZXIgbWF5IHJlcG9ydCBtb3JlOiBjb21wYXJpbmcgc2xvdHMsDQotCSAqIGl0IGNhbm5vdCBh bHdheXMgdGVsbCB0aGF0IHR3byB2YWx1ZXMgd2lsbCBiZSBzdG9yZWQgYWxpa2UuDQorCSAqIHdy b25nIHR1cGxlcywgaXMgY2F1Z2h0LiAgVGhlIGNhbGxlciBtYXkgbGVhdmUgb3V0IGFuIGF0dHJp YnV0ZSB0aGF0DQorCSAqIGluZGV4ZXMgdXNlIG9ubHkgdGhyb3VnaCBleHByZXNzaW9ucyBvciBh cyBwYXJ0aWFsIGluZGV4ZXMsIGhhdmluZw0KKwkgKiBmb3VuZCB0aGF0IG5vIGluZGV4J3MgZW50 cnkgY2hhbmdlcyAoc2VlIEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkpLA0KKwkgKiBhbmQg bWF5IHJlcG9ydCBtb3JlOiBjb21wYXJpbmcgc2xvdHMsIGl0IGNhbm5vdCBhbHdheXMgdGVsbCB0 aGF0IHR3bw0KKwkgKiB2YWx1ZXMgd2lsbCBiZSBzdG9yZWQgYWxpa2UuDQogCSAqLw0KIAl7DQog CQlCaXRtYXBzZXQgICpjaGFuZ2VkID0gSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVsYXRp b24sIGNoZWNrX2F0dHJzLA0KIAkJCQkJCQkJCQkJCQkJICZvbGR0dXAsIG5ld3R1cCk7DQogDQor CQljaGFuZ2VkID0gYm1zX2RlbF9tZW1iZXJzKGNoYW5nZWQsIG5hcnJvd2FibGVfYXR0cnMpOw0K IAkJQXNzZXJ0KGJtc19pc19zdWJzZXQoY2hhbmdlZCwgbW9kaWZpZWRfaWR4X2F0dHJzKSk7DQog CQlibXNfZnJlZShjaGFuZ2VkKTsNCiAJCWJtc19mcmVlKGNoZWNrX2F0dHJzKTsNCisJCWJtc19m cmVlKG5hcnJvd2FibGVfYXR0cnMpOw0KIAl9DQogI2VuZGlmDQogDQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2su Yw0KaW5kZXggNWZjNTgwOGUwNzkuLjQyOTRjODYwZTEyIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvcmVwYWNrLmMNCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5j DQpAQCAtMjkxOSw3ICsyOTE5LDggQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUoUmVsYXRpb24g cmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwNCiANCiAJbW9kaWZpZWRfaWR4X2F0 dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoY2hnY3h0LT5jY19ycmksDQogCQkJCQkJ CQkJCQkJCW9uZGlza190dXBsZSwNCi0JCQkJCQkJCQkJCQkJc3BpbGxlZF90dXBsZSk7DQorCQkJ CQkJCQkJCQkJCXNwaWxsZWRfdHVwbGUsDQorCQkJCQkJCQkJCQkJCWNoZ2N4dC0+Y2NfZXN0YXRl KTsNCiANCiAJLyoNCiAJICogQ2Fycnkgb3V0IHRoZSB1cGRhdGUsIHNraXBwaW5nIGxvZ2ljYWwg ZGVjb2RpbmcgZm9yIGl0Lg0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMNCmlu ZGV4IDVmODk0NjUxZDVlLi42NGUyY2EyMjk3ZCAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jDQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYw0KQEAgLTEwMjksNyArMTAyOSw4IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVw ZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLA0KIAkJCUV4ZWNQYXJ0aXRpb25DaGVj ayhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUsIHRydWUpOw0KIA0KIAkJbW9kaWZpZWRfaWR4 X2F0dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywNCi0JCQkJ CQkJCQkJCQkJCXNlYXJjaHNsb3QsIHNsb3QpOw0KKwkJCQkJCQkJCQkJCQkJc2VhcmNoc2xvdCwg c2xvdCwNCisJCQkJCQkJCQkJCQkJCWVzdGF0ZSk7DQogDQogCQlzaW1wbGVfdGFibGVfdHVwbGVf dXBkYXRlX2V4dChyZWwsIHRpZCwgc2xvdCwgZXN0YXRlLT5lc19zbmFwc2hvdCwNCiAJCQkJCQkJ CQkgIG1vZGlmaWVkX2lkeF9hdHRycywgJnVwZGF0ZV9pbmRleGVzKTsNCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jDQppbmRleCBkMzFlYWU5NGZiMi4uNWEwNDJlYjgzYTMgMTAw NjQ0DQotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYw0KKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMNCkBAIC01OSw2ICs1OSw3IEBA DQogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiDQogI2luY2x1ZGUgImFjY2Vzcy90dXBk ZXNjLmgiDQogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiDQorI2luY2x1ZGUgImNhdGFsb2cvaW5k ZXguaCINCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIg0KICNpbmNsdWRlICJleGVjdXRv ci9leGVjUGFydGl0aW9uLmgiDQogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiDQpAQCAt NzUsNiArNzYsNyBAQA0KICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIg0KICNpbmNsdWRlICJ1 dGlscy9kYXR1bS5oIg0KICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCINCisjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiDQogI2luY2x1ZGUgInV0aWxzL3JlbC5oIg0KICNpbmNs dWRlICJ1dGlscy9zbmFwbWdyLmgiDQogDQpAQCAtMTk0LDYgKzE5NiwxNDggQEAgc3RhdGljIFR1 cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwNCiAJCQkJCQkJCQkJICAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywNCiAJCQkJ CQkJCQkJICAgYm9vbCBjYW5TZXRUYWcpOw0KIA0KKy8qDQorICogRG8gdGhlIG9sZCBhbmQgbmV3 IGluZGV4IGRhdHVtcyBkaWZmZXIsIGJ5dGUgZm9yIGJ5dGU/ICBDb21wYXJlIGVhY2gNCisgKiBj b2x1bW4gYXMgdGhlIHR5cGUgRm9ybUluZGV4RGF0dW0oKSBwcm9kdWNlZCBpdCBpbjogdGhlIHRh YmxlIGNvbHVtbidzDQorICogdHlwZSBvciB0aGUgZXhwcmVzc2lvbidzLCB3aGljaCBuZWVkIG5v dCBiZSB0aGUgdHlwZSB0aGUgaW5kZXggc3RvcmVzLg0KKyAqLw0KK3N0YXRpYyBib29sDQorSW5k ZXhEYXR1bXNEaWZmZXIoUmVsYXRpb24gaGVhcFJlbCwgSW5kZXhJbmZvICppbmRleEluZm8sDQor CQkJCSAgY29uc3QgRGF0dW0gKm9sZF92YWx1ZXMsIGNvbnN0IGJvb2wgKm9sZF9pc251bGwsDQor CQkJCSAgY29uc3QgRGF0dW0gKm5ld192YWx1ZXMsIGNvbnN0IGJvb2wgKm5ld19pc251bGwpDQor ew0KKwlMaXN0Q2VsbCAgICpleHByID0gbGlzdF9oZWFkKGluZGV4SW5mby0+aWlfRXhwcmVzc2lv bnMpOw0KKw0KKwlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRy czsgaSsrKQ0KKwl7DQorCQlBdHRyTnVtYmVyCWF0dG51bSA9IGluZGV4SW5mby0+aWlfSW5kZXhB dHRyTnVtYmVyc1tpXTsNCisJCWludDE2CQl0eXBsZW47DQorCQlib29sCQl0eXBieXZhbDsNCisN CisJCWlmIChhdHRudW0gIT0gMCkNCisJCXsNCisJCQlDb21wYWN0QXR0cmlidXRlICphdHQgPSBU dXBsZURlc2NDb21wYWN0QXR0cihSZWxhdGlvbkdldERlc2NyKGhlYXBSZWwpLA0KKwkJCQkJCQkJ CQkJCQkJIGF0dG51bSAtIDEpOw0KKw0KKwkJCXR5cGxlbiA9IGF0dC0+YXR0bGVuOw0KKwkJCXR5 cGJ5dmFsID0gYXR0LT5hdHRieXZhbDsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlnZXRfdHlw bGVuYnl2YWwoZXhwclR5cGUobGZpcnN0KGV4cHIpKSwgJnR5cGxlbiwgJnR5cGJ5dmFsKTsNCisJ CQlleHByID0gbG5leHQoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucywgZXhwcik7DQorCQl9DQor DQorCQlpZiAob2xkX2lzbnVsbFtpXSAhPSBuZXdfaXNudWxsW2ldKQ0KKwkJCXJldHVybiB0cnVl Ow0KKwkJaWYgKCFvbGRfaXNudWxsW2ldICYmDQorCQkJIWRhdHVtSXNFcXVhbChvbGRfdmFsdWVz W2ldLCBuZXdfdmFsdWVzW2ldLCB0eXBieXZhbCwgdHlwbGVuKSkNCisJCQlyZXR1cm4gdHJ1ZTsN CisJfQ0KKwlyZXR1cm4gZmFsc2U7DQorfQ0KKw0KKy8qDQorICogV291bGQgdGhlIHVwZGF0ZSBm cm9tIG9sZF90dHMgdG8gbmV3X3R0cyBnaXZlIHRoaXMgaW5kZXggYSBuZXcgZW50cnksIG9yDQor ICogdGFrZSBvbmUgYXdheT8NCisgKg0KKyAqIFRoZSBpbmRleCBkYXR1bXMgYXJlIGZvcm1lZCBp biB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0LCB3aGljaA0KKyAqIGNhbGxlcnMgcmVzZXQg Zm9yIGVhY2ggcm93LiAgVGhlIHByZWRpY2F0ZSdzIEV4cHJTdGF0ZSBpcyBrZXB0IGluIHRoZQ0K KyAqIEluZGV4SW5mbywgYXMgRXhlY0luc2VydEluZGV4VHVwbGVzKCkga2VlcHMgaXQ7IEV4ZWNQ cmVwYXJlUXVhbCgpIGJ1aWxkcw0KKyAqIGl0IGluIHRoZSBxdWVyeSBjb250ZXh0Lg0KKyAqLw0K K3N0YXRpYyBib29sDQorSW5kZXhFbnRyeUNoYW5nZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywgSW5kZXhJbmZvICppbmRleEluZm8sDQorCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm9sZF90 dHMsIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzLA0KKwkJCQkgIEVTdGF0ZSAqZXN0YXRlKQ0KK3sN CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUp Ow0KKwlUdXBsZVRhYmxlU2xvdCAqc2F2ZV9zY2FudHVwbGUgPSBlY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGU7DQorCU1lbW9yeUNvbnRleHQgb2xkY3h0Ow0KKwlEYXR1bQkJb2xkX3ZhbHVlc1tJTkRF WF9NQVhfS0VZU107DQorCWJvb2wJCW9sZF9pc251bGxbSU5ERVhfTUFYX0tFWVNdOw0KKwlEYXR1 bQkJbmV3X3ZhbHVlc1tJTkRFWF9NQVhfS0VZU107DQorCWJvb2wJCW5ld19pc251bGxbSU5ERVhf TUFYX0tFWVNdOw0KKwlib29sCQlyZXN1bHQ7DQorDQorCWlmIChpbmRleEluZm8tPmlpX1ByZWRp Y2F0ZSAhPSBOSUwpDQorCXsNCisJCWJvb2wJCW9sZF9tZW1iZXI7DQorCQlib29sCQluZXdfbWVt YmVyOw0KKw0KKwkJaWYgKGluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPT0gTlVMTCkNCisJ CQlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0NCisJCQkJRXhlY1ByZXBhcmVRdWFsKGlu ZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOw0KKw0KKwkJZWNvbnRleHQtPmVjeHRfc2Nh bnR1cGxlID0gb2xkX3R0czsNCisJCW9sZF9tZW1iZXIgPSBFeGVjUXVhbChpbmRleEluZm8tPmlp X1ByZWRpY2F0ZVN0YXRlLCBlY29udGV4dCk7DQorCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUg PSBuZXdfdHRzOw0KKwkJbmV3X21lbWJlciA9IEV4ZWNRdWFsKGluZGV4SW5mby0+aWlfUHJlZGlj YXRlU3RhdGUsIGVjb250ZXh0KTsNCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVf c2NhbnR1cGxlOw0KKw0KKwkJLyoNCisJCSAqIEEgcm93IHRoYXQgbGVhdmVzIG9yIGVudGVycyB0 aGUgaW5kZXgncyBwcmVkaWNhdGUgY2hhbmdlcyB3aGljaA0KKwkJICogcm93cyB0aGUgaW5kZXgg aG9sZHMuICBBIHJvdyBvdXRzaWRlIGl0IG9uIGJvdGggc2lkZXMgaXMgbm9uZSBvZg0KKwkJICog dGhlIGluZGV4J3MgYnVzaW5lc3MuDQorCQkgKi8NCisJCWlmIChvbGRfbWVtYmVyICE9IG5ld19t ZW1iZXIpDQorCQkJcmV0dXJuIHRydWU7DQorCQlpZiAoIW9sZF9tZW1iZXIpDQorCQkJcmV0dXJu IGZhbHNlOw0KKwl9DQorDQorCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlY29udGV4 dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsNCisJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0g b2xkX3R0czsNCisJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLCBvbGRfdHRzLCBlc3RhdGUsIG9s ZF92YWx1ZXMsIG9sZF9pc251bGwpOw0KKwllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBuZXdf dHRzOw0KKwlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sIG5ld190dHMsIGVzdGF0ZSwgbmV3X3Zh bHVlcywgbmV3X2lzbnVsbCk7DQorCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVfc2Nh bnR1cGxlOw0KKw0KKwlyZXN1bHQgPSBJbmRleERhdHVtc0RpZmZlcihyZXN1bHRSZWxJbmZvLT5y aV9SZWxhdGlvbkRlc2MsIGluZGV4SW5mbywNCisJCQkJCQkJICAgb2xkX3ZhbHVlcywgb2xkX2lz bnVsbCwgbmV3X3ZhbHVlcywgbmV3X2lzbnVsbCk7DQorCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjeHQpOw0KKwlyZXR1cm4gcmVzdWx0Ow0KK30NCisNCisvKg0KKyAqIFJldHVybiB0aGUgYXR0 cmlidXRlcyBvZiB0aGUgaSd0aCBpbmRleCB0aGF0IElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJ T04NCisgKiBjYW4gY29udGFpbjogdGhvc2UgaXQgcmVmZXJlbmNlcyB0aHJvdWdoIGl0cyBleHBy ZXNzaW9ucywgYW5kIGZvciBhDQorICogcGFydGlhbCBpbmRleCBhbGwgdGhvc2UgaXQgcmVmZXJl bmNlcy4gIEJ1aWxkcyB0aGUgcGVyLWluZGV4IGNhY2hlIG9uDQorICogZmlyc3QgdXNlLg0KKyAq Lw0KK3N0YXRpYyBCaXRtYXBzZXQgKg0KK0luZGV4RXhwckF0dHJzKFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8sIGludCBpLCBFU3RhdGUgKmVzdGF0ZSkNCit7DQorCWlmIChyZXN1bHRSZWxJ bmZvLT5yaV9JbmRleEV4cHJBdHRycyA9PSBOVUxMKQ0KKwl7DQorCQlNZW1vcnlDb250ZXh0IG9s ZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7DQorDQor CQlyZXN1bHRSZWxJbmZvLT5yaV9JbmRleEV4cHJBdHRycyA9DQorCQkJcGFsbG9jMF9hcnJheShC aXRtYXBzZXQgKiwgcmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyk7DQorCQlmb3IgKGludCBq ID0gMDsgaiA8IHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXM7IGorKykNCisJCXsNCisJCQlJ bmRleEluZm8gICppaSA9IHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOw0K KwkJCUJpdG1hcHNldCAgKmF0dHJzID0gTlVMTDsNCisNCisJCQlwdWxsX3ZhcmF0dG5vcygoTm9k ZSAqKSBpaS0+aWlfRXhwcmVzc2lvbnMsIDEsICZhdHRycyk7DQorCQkJaWYgKGlpLT5paV9QcmVk aWNhdGUgIT0gTklMKQ0KKwkJCXsNCisJCQkJcHVsbF92YXJhdHRub3MoKE5vZGUgKikgaWktPmlp X1ByZWRpY2F0ZSwgMSwgJmF0dHJzKTsNCisJCQkJZm9yIChpbnQgayA9IDA7IGsgPCBpaS0+aWlf TnVtSW5kZXhBdHRyczsgaysrKQ0KKwkJCQl7DQorCQkJCQlpZiAoaWktPmlpX0luZGV4QXR0ck51 bWJlcnNba10gIT0gMCkNCisJCQkJCQlhdHRycyA9IGJtc19hZGRfbWVtYmVyKGF0dHJzLA0KKwkJ CQkJCQkJCQkJICAgaWktPmlpX0luZGV4QXR0ck51bWJlcnNba10gLQ0KKwkJCQkJCQkJCQkJICAg Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7DQorCQkJCX0NCisJCQl9DQorCQkJ cmVzdWx0UmVsSW5mby0+cmlfSW5kZXhFeHByQXR0cnNbal0gPSBhdHRyczsNCisJCX0NCisJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOw0KKwl9DQorCXJldHVybiByZXN1bHRSZWxJbmZv LT5yaV9JbmRleEV4cHJBdHRyc1tpXTsNCit9DQorDQogLyoNCiAgKiBFeGVjVXBkYXRlTW9kaWZp ZWRJZHhBdHRycw0KICAqDQpAQCAtMjE2LDE3ICszNjAsMTM3IEBAIHN0YXRpYyBUdXBsZVRhYmxl U2xvdCAqRXhlY01lcmdlTm90TWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsDQog ICogc2ltcGxlX2hlYXBfdXBkYXRlKCkgbWFrZXMgdGhlIHNhbWUgZGV0ZXJtaW5hdGlvbiBmcm9t IGEgVElEIGFuZCBhDQogICogSGVhcFR1cGxlIGluIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJz KCksIGFuZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKCkNCiAgKiB3aXRoIHRhYmxlX3Nsb3Rf bW9kaWZpZWRfaWR4X2F0dHJzKCkuDQorICoNCisgKiBUaGUgc2V0IGlzIHRoZW4gbmFycm93ZWQg dG8gd2hhdCB0aGUgaW5kZXhlcyBzZWUsIHVzaW5nIGVzdGF0ZS4gIEFuDQorICogYXR0cmlidXRl IHRoYXQgbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgcmVmZXJlbmNlIG9ubHkgdGhyb3VnaCBleHBy ZXNzaW9ucw0KKyAqIG9yIGFzIHBhcnRpYWwgaW5kZXhlcyAoSU5ERVhfQVRUUl9CSVRNQVBfRVhQ UkVTU0lPTikgaXMgZHJvcHBlZCBmcm9tIHRoZQ0KKyAqIHNldCBpZiwgZm9yIGV2ZXJ5IHN1Y2gg aW5kZXggdGhhdCByZWZlcmVuY2VzIGl0LCB0aGUgdXBkYXRlIG1vdmVzIHRoZSByb3cNCisgKiBu ZWl0aGVyIGludG8gbm9yIG91dCBvZiB0aGUgaW5kZXgncyBwcmVkaWNhdGUgYW5kLCBpZiB0aGUg cm93IGlzIGluIGl0LA0KKyAqIGNoYW5nZXMgbm9uZSBvZiB0aGUgaW5kZXgncyBkYXR1bXMuICBU aGUgdGFibGUgQU0gY2FuIHRoZW4gdHJlYXQgdGhlDQorICogdXBkYXRlIGFzIGlmIGl0IGhhZCBu b3QgY2hhbmdlZCB0aGUgYXR0cmlidXRlOiBubyBpbmRleCBuZWVkcyBhIG5ldw0KKyAqIGVudHJ5 IGJlY2F1c2Ugb2YgaXQuDQorICoNCisgKiBBbiBpbmRleCB0aGF0IGlzIG5vdCByZWFkeSBmb3Ig aW5zZXJ0cyBvciBub3QgdmFsaWQgY291bnRzIGFzIGFmZmVjdGVkIGJ5DQorICogYW55IGNoYW5n ZSB0byBhbiBhdHRyaWJ1dGUgaXQgcmVmZXJlbmNlcywgd2l0aG91dCBldmFsdWF0aW5nIGFueXRo aW5nLg0KKyAqIFN1Y2ggYW4gaW5kZXggaXMgYmVpbmcgYnVpbHQsIG9yIGl0cyBidWlsZCBmYWls ZWQsIHNvIHRoZSBvbGQgcm93IG1heSBiZQ0KKyAqIG9uZSBpdHMgZXhwcmVzc2lvbnMgb3IgcHJl ZGljYXRlIGNhbm5vdCBiZSBldmFsdWF0ZWQgZm9yOyBldmFsdWF0aW5nIHRoZW0NCisgKiB3b3Vs ZCBtYWtlIHRoZSBVUERBVEUgZmFpbC4gIEl0IHN0aWxsIGNvbnN0cmFpbnMgSE9ULCBhcyBSRUFE TUUuSE9UDQorICogcmVxdWlyZXMuDQorICoNCisgKiBOYXJyb3dpbmcgbmV2ZXIgcmVtb3ZlcyBh biBhdHRyaWJ1dGUgb2YgYSBrZXkgb3IgcmVwbGljYSBpZGVudGl0eSBpbmRleCwNCisgKiBhcyB0 aG9zZSBoYXZlIG5laXRoZXIgZXhwcmVzc2lvbnMgbm9yIHByZWRpY2F0ZXMsIHNvIHRoZSB0YWJs ZSBBTSBtYXkNCisgKiBhbHNvIHRha2UgaXRzIGxvY2sgbW9kZSBhbmQgcmVwbGljYSBpZGVudGl0 eSBkZWNpc2lvbnMgZnJvbSB0aGUgcmVzdWx0Lg0KICAqLw0KIEJpdG1hcHNldCAqDQogRXhlY1Vw ZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywNCiAJCQkJ CQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywNCi0JCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAq bmV3X3R0cykNCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cywNCisJCQkJCQkgICBF U3RhdGUgKmVzdGF0ZSkNCiB7DQorCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVzdWx0UmVsSW5mby0+ cmlfUmVsYXRpb25EZXNjOw0KKwlCaXRtYXBzZXQgICphdHRyczsNCisJQml0bWFwc2V0ICAqZXhw cmF0dHJzOw0KKwlCaXRtYXBzZXQgICpjYW5kaWRhdGVzOw0KKw0KIAlpZiAocmVzdWx0UmVsSW5m by0+cmlfTnVtSW5kaWNlcyA9PSAwKQ0KIAkJcmV0dXJuIE5VTEw7DQogDQotCXJldHVybiB0YWJs ZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycyhyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2Ms DQotCQkJCQkJCQkJCSBvbGRfdHRzLCBuZXdfdHRzKTsNCisJYXR0cnMgPSB0YWJsZV9zbG90X21v ZGlmaWVkX2lkeF9hdHRycyhyZWxhdGlvbiwgb2xkX3R0cywgbmV3X3R0cyk7DQorDQorCWlmIChi bXNfaXNfZW1wdHkoYXR0cnMpKQ0KKwkJcmV0dXJuIGF0dHJzOw0KKw0KKwkvKg0KKwkgKiBOYXJy b3dpbmcgY2FuIG9ubHkgbWFrZSB0aGUgdXBkYXRlIEhPVCBpZiBldmVyeSBjaGFuZ2VkIGF0dHJp YnV0ZSBpcw0KKwkgKiBlaXRoZXIgYSBjYW5kaWRhdGUgb3IgcmVmZXJlbmNlZCBvbmx5IGJ5IHN1 bW1hcml6aW5nIGluZGV4ZXMuIE90aGVyd2lzZQ0KKwkgKiBzb21lIGluZGV4IG5lZWRzIGEgbmV3 IGVudHJ5IGFueXdheSwgYW5kIGV2YWx1YXRpbmcgZXhwcmVzc2lvbnMgd291bGQNCisJICogYmUg d2FzdGVkIHdvcmsuDQorCSAqLw0KKwlleHByYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJp dG1hcChyZWxhdGlvbiwNCisJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lP Tik7DQorCWNhbmRpZGF0ZXMgPSBibXNfaW50ZXJzZWN0KGF0dHJzLCBleHByYXR0cnMpOw0KKwlp ZiAoYm1zX2lzX2VtcHR5KGNhbmRpZGF0ZXMpKQ0KKwl7DQorCQlibXNfZnJlZShleHByYXR0cnMp Ow0KKwkJcmV0dXJuIGF0dHJzOw0KKwl9DQorCXsNCisJCUJpdG1hcHNldCAgKnJlc3QgPSBibXNf ZGlmZmVyZW5jZShhdHRycywgZXhwcmF0dHJzKTsNCisJCUJpdG1hcHNldCAgKmhvdGF0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sDQorCQkJCQkJCQkJCQkJCQkgIElO REVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORyk7DQorCQlib29sCQlob3BlbGVzcyA9IGJtc19v dmVybGFwKHJlc3QsIGhvdGF0dHJzKTsNCisNCisJCWJtc19mcmVlKHJlc3QpOw0KKwkJYm1zX2Zy ZWUoaG90YXR0cnMpOw0KKwkJYm1zX2ZyZWUoZXhwcmF0dHJzKTsNCisJCWlmIChob3BlbGVzcykN CisJCXsNCisJCQlibXNfZnJlZShjYW5kaWRhdGVzKTsNCisJCQlyZXR1cm4gYXR0cnM7DQorCQl9 DQorCX0NCisNCisJLyoNCisJICogS2VlcCBlYWNoIGNhbmRpZGF0ZSB0aGF0IHNvbWUgaW5kZXgg c2VlcyBjaGFuZ2UuICBBbiBpbmRleCB3aG9zZQ0KKwkgKiBjYW5kaWRhdGVzIGFyZSBhbGwga2Vw dCBhbHJlYWR5IG5lZWQgbm90IGJlIGFza2VkLg0KKwkgKi8NCisJew0KKwkJQml0bWFwc2V0ICAq a2VlcCA9IE5VTEw7DQorDQorCQlmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdFJlbEluZm8tPnJp X051bUluZGljZXM7IGkrKykNCisJCXsNCisJCQlJbmRleEluZm8gICppbmRleEluZm8gPSByZXN1 bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mb1tpXTsNCisJCQlCaXRtYXBzZXQgICptaW5l Ow0KKw0KKwkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0gPT0g TlVMTCB8fA0KKwkJCQlpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQ0KKwkJCQljb250aW51ZTsN CisNCisJCQltaW5lID0gYm1zX2ludGVyc2VjdChJbmRleEV4cHJBdHRycyhyZXN1bHRSZWxJbmZv LCBpLCBlc3RhdGUpLA0KKwkJCQkJCQkJIGNhbmRpZGF0ZXMpOw0KKwkJCWlmIChibXNfaXNfZW1w dHkobWluZSkgfHwgYm1zX2lzX3N1YnNldChtaW5lLCBrZWVwKSkNCisJCQl7DQorCQkJCWJtc19m cmVlKG1pbmUpOw0KKwkJCQljb250aW51ZTsNCisJCQl9DQorDQorCQkJaWYgKCFpbmRleEluZm8t PmlpX1JlYWR5Rm9ySW5zZXJ0cyB8fA0KKwkJCQkhcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxh dGlvbkRlc2NzW2ldLT5yZF9pbmRleC0+aW5kaXN2YWxpZCB8fA0KKwkJCQlJbmRleEVudHJ5Q2hh bmdlcyhyZXN1bHRSZWxJbmZvLCBpbmRleEluZm8sDQorCQkJCQkJCQkgIG9sZF90dHMsIG5ld190 dHMsIGVzdGF0ZSkpDQorCQkJew0KKwkJCQlrZWVwID0gYm1zX2FkZF9tZW1iZXJzKGtlZXAsIG1p bmUpOw0KKwkJCQlpZiAoYm1zX2lzX3N1YnNldChjYW5kaWRhdGVzLCBrZWVwKSkNCisJCQkJew0K KwkJCQkJYm1zX2ZyZWUobWluZSk7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0NCisJCQli bXNfZnJlZShtaW5lKTsNCisJCX0NCisNCisJCWNhbmRpZGF0ZXMgPSBibXNfZGVsX21lbWJlcnMo Y2FuZGlkYXRlcywga2VlcCk7DQorCQlibXNfZnJlZShrZWVwKTsNCisJfQ0KKw0KKyNpZmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HDQorCXsNCisJCUJpdG1hcHNldCAgKmtleWF0dHJzID0gUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sDQorCQkJCQkJCQkJCQkJCQkgIElOREVYX0FU VFJfQklUTUFQX0tFWSk7DQorCQlCaXRtYXBzZXQgICppZGF0dHJzID0gUmVsYXRpb25HZXRJbmRl eEF0dHJCaXRtYXAocmVsYXRpb24sDQorCQkJCQkJCQkJCQkJCQkgSU5ERVhfQVRUUl9CSVRNQVBf SURFTlRJVFlfS0VZKTsNCisNCisJCUFzc2VydCghYm1zX292ZXJsYXAoY2FuZGlkYXRlcywga2V5 YXR0cnMpKTsNCisJCUFzc2VydCghYm1zX292ZXJsYXAoY2FuZGlkYXRlcywgaWRhdHRycykpOw0K KwkJYm1zX2ZyZWUoa2V5YXR0cnMpOw0KKwkJYm1zX2ZyZWUoaWRhdHRycyk7DQorCX0NCisjZW5k aWYNCisNCisJYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoYXR0cnMsIGNhbmRpZGF0ZXMpOw0KKwli bXNfZnJlZShjYW5kaWRhdGVzKTsNCisNCisJcmV0dXJuIGF0dHJzOw0KIH0NCiANCiAvKg0KQEAg LTIzNjUsNyArMjYyOSw4IEBAIGxyZXBsYWNlOg0KIAlpZiAocmVzdWx0UmVsYXRpb25EZXNjLT5y ZF9hdHQtPmNvbnN0cikNCiAJCUV4ZWNDb25zdHJhaW50cyhyZXN1bHRSZWxJbmZvLCBzbG90LCBl c3RhdGUpOw0KIA0KLQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhB dHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsNCisJbW9kaWZpZWRfaWR4X2F0dHJz ID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xv dCwNCisJCQkJCQkJCQkJCQkJZXN0YXRlKTsNCiANCiAJLyoNCiAJICogQ2FsbCBpbnRvIHRoZSB0 YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuDQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMNCmluZGV4IDdiODM4ODJiZjI4Li5jMDk0MTE4MmI5MSAxMDA2NDQNCi0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMNCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMNCkBAIC0yNDc4LDYgKzI0NzgsNyBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxh dGlvbihSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQ0KIAlibXNfZnJl ZShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsNCiAJYm1zX2ZyZWUocmVsYXRpb24tPnJk X3N1bW1hcml6ZWRhdHRyKTsNCiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsN CisJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2V4cHJhdHRyKTsNCiAJaWYgKHJlbGF0aW9uLT5yZF9w dWJkZXNjKQ0KIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRlc2MpOw0KIAlpZiAocmVsYXRpb24t PnJkX29wdGlvbnMpDQpAQCAtNTMyNyw2ICs1MzI4LDkgQEAgUmVsYXRpb25HZXRJbmRleFByZWRp Y2F0ZShSZWxhdGlvbiByZWxhdGlvbikNCiAgKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJ TkcJQ29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QNCiAgKglJTkRFWF9B VFRSX0JJVE1BUF9TVU1NQVJJWkVECUNvbHVtbnMgaW5jbHVkZWQgaW4gc3VtbWFyaXppbmcgaW5k ZXhlcw0KICAqCUlOREVYX0FUVFJfQklUTUFQX0lOREVYRUQJCUNvbHVtbnMgcmVmZXJlbmNlZCBi eSBhbnkgaW5kZXgNCisgKglJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OCUNvbHVtbnMgdGhh dCBub24tc3VtbWFyaXppbmcgaW5kZXhlcw0KKyAqCQkJCQkJCQkJcmVmZXJlbmNlIG9ubHkgdGhy b3VnaCBleHByZXNzaW9ucyBvcg0KKyAqCQkJCQkJCQkJYXMgcGFydGlhbCBpbmRleGVzDQogICoN CiAgKiBBdHRyaWJ1dGUgbnVtYmVycyBhcmUgb2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIgc28gdGhhdA0KICAqIHdlIGNhbiBpbmNsdWRlIHN5c3RlbSBhdHRyaWJ1 dGVzIChlLmcuLCBPSUQpIGluIHRoZSBiaXRtYXAgcmVwcmVzZW50YXRpb24uDQpAQCAtNTM1Miw2 ICs1MzU2LDEwIEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9u LCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAlCaXRtYXBzZXQgICpob3RibG9ja2lu Z2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJsb2NraW5nIGluZGV4ZXMgKi8NCiAJQml0bWFw c2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIHdpdGggc3VtbWFyaXppbmcgaW5kZXhl cyAqLw0KIAlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CS8qIGNvbHVtbnMgcmVmZXJlbmNlZCBi eSBhbnkgaW5kZXggKi8NCisJQml0bWFwc2V0ICAqZXhwcmF0dHJzOwkJLyogY29sdW1ucyBvZiBl eHByZXNzaW9uIG9yIHBhcnRpYWwNCisJCQkJCQkJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRleGVz ICovDQorCUJpdG1hcHNldCAgKnBsYWluYXR0cnM7CQkvKiBjb2x1bW5zIG9mIG90aGVyIG5vbi1z dW1tYXJpemluZyBpbmRleGVzLA0KKwkJCQkJCQkJICogYW5kIHBsYWluIGNvbHVtbnMgb2YgZXhw cmVzc2lvbiBpbmRleGVzICovDQogCUxpc3QJICAgKmluZGV4b2lkbGlzdDsNCiAJTGlzdAkgICAq bmV3aW5kZXhvaWRsaXN0Ow0KIAlPaWQJCQlyZWxwa2luZGV4Ow0KQEAgLTUzNzYsNiArNTM4NCw4 IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0 dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJk X3N1bW1hcml6ZWRhdHRyKTsNCiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6DQog CQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOw0KKwkJCWNhc2Ug SU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoNCisJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0 aW9uLT5yZF9leHByYXR0cik7DQogCQkJZGVmYXVsdDoNCiAJCQkJZWxvZyhFUlJPUiwgInVua25v d24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7DQogCQl9DQpAQCAtNTQyMCw2ICs1NDMwLDggQEAg cmVzdGFydDoNCiAJaWRpbmRleGF0dHJzID0gTlVMTDsNCiAJaG90YmxvY2tpbmdhdHRycyA9IE5V TEw7DQogCXN1bW1hcml6ZWRhdHRycyA9IE5VTEw7DQorCWV4cHJhdHRycyA9IE5VTEw7DQorCXBs YWluYXR0cnMgPSBOVUxMOw0KIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkNCiAJew0KIAkJT2lk CQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGwpOw0KQEAgLTU1MDMsNiArNTUxNSwxNSBAQCByZXN0 YXJ0Og0KIAkJCXsNCiAJCQkJKmF0dHJzID0gYm1zX2FkZF9tZW1iZXIoKmF0dHJzLA0KIAkJCQkJ CQkJCQlhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7DQorCQkJ CWlmIChhdHRycyA9PSAmaG90YmxvY2tpbmdhdHRycykNCisJCQkJew0KKwkJCQkJaWYgKGluZGV4 UHJlZGljYXRlICE9IE5VTEwpDQorCQkJCQkJZXhwcmF0dHJzID0gYm1zX2FkZF9tZW1iZXIoZXhw cmF0dHJzLA0KKwkJCQkJCQkJCQkJCSAgIGF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyKTsNCisJCQkJCWVsc2UNCisJCQkJCQlwbGFpbmF0dHJzID0gYm1zX2FkZF9t ZW1iZXIocGxhaW5hdHRycywNCisJCQkJCQkJCQkJCQkJYXR0cm51bSAtIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOw0KKwkJCQl9DQogDQogCQkJCWlmIChpc0tleSAmJiBpIDwg aW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpDQogCQkJCQl1aW5kZXhhdHRycyA9IGJt c19hZGRfbWVtYmVyKHVpbmRleGF0dHJzLA0KQEAgLTU1MjQsNiArNTU0NSwxMiBAQCByZXN0YXJ0 Og0KIAkJLyogQ29sbGVjdCBhbGwgYXR0cmlidXRlcyBpbiB0aGUgaW5kZXggcHJlZGljYXRlLCB0 b28gKi8NCiAJCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRlLCAxLCBhdHRycyk7DQogDQor CQlpZiAoYXR0cnMgPT0gJmhvdGJsb2NraW5nYXR0cnMpDQorCQl7DQorCQkJcHVsbF92YXJhdHRu b3MoaW5kZXhFeHByZXNzaW9ucywgMSwgJmV4cHJhdHRycyk7DQorCQkJcHVsbF92YXJhdHRub3Mo aW5kZXhQcmVkaWNhdGUsIDEsICZleHByYXR0cnMpOw0KKwkJfQ0KKw0KIAkJaW5kZXhfY2xvc2Uo aW5kZXhEZXNjLCBBY2Nlc3NTaGFyZUxvY2spOw0KIAl9DQogDQpAQCAtNTU1MiwxMiArNTU3OSwy NiBAQCByZXN0YXJ0Og0KIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsNCiAJCWJtc19mcmVlKGhv dGJsb2NraW5nYXR0cnMpOw0KIAkJYm1zX2ZyZWUoc3VtbWFyaXplZGF0dHJzKTsNCisJCWJtc19m cmVlKGV4cHJhdHRycyk7DQorCQlibXNfZnJlZShwbGFpbmF0dHJzKTsNCiANCiAJCWdvdG8gcmVz dGFydDsNCiAJfQ0KIA0KIAlpbmRleGVkYXR0cnMgPSBibXNfdW5pb24oaG90YmxvY2tpbmdhdHRy cywgc3VtbWFyaXplZGF0dHJzKTsNCiANCisJLyoNCisJICogUmVjb3JkIHdoYXQgYXR0cmlidXRl cyBub24tc3VtbWFyaXppbmcgaW5kZXhlcyByZWZlcmVuY2Ugb25seSB0aHJvdWdoDQorCSAqIGV4 cHJlc3Npb25zLCBvciBvbmx5IGFzIHBhcnRpYWwgaW5kZXhlcy4gIEEgY2hhbmdlIHRvIG9uZSBv ZiB0aGVzZQ0KKwkgKiBuZWVkcyBuZXcgaW5kZXggZW50cmllcyBvbmx5IGlmIGl0IGNoYW5nZXMg dGhlIHZhbHVlIG9mIGFuIGluZGV4J3MNCisJICogZXhwcmVzc2lvbnMgb3IgYSByb3cncyBtZW1i ZXJzaGlwIGluLCBvciBrZXkgd2l0aGluLCBhIHBhcnRpYWwgaW5kZXguDQorCSAqIEFuIGF0dHJp YnV0ZSBhIHN1bW1hcml6aW5nIGluZGV4IHJlZmVyZW5jZXMgaXMgbGVmdCBvdXQsIGFzIHRoYXQg aW5kZXgNCisJICogbmVlZHMgdG8gc2VlIGFueSBjaGFuZ2UgdG8gaXQuDQorCSAqLw0KKwlleHBy YXR0cnMgPSBibXNfZGVsX21lbWJlcnMoZXhwcmF0dHJzLCBwbGFpbmF0dHJzKTsNCisJZXhwcmF0 dHJzID0gYm1zX2RlbF9tZW1iZXJzKGV4cHJhdHRycywgc3VtbWFyaXplZGF0dHJzKTsNCisJYm1z X2ZyZWUocGxhaW5hdHRycyk7DQorDQogCS8qIERvbid0IGxlYWsgdGhlIG9sZCB2YWx1ZXMgb2Yg dGhlc2UgYml0bWFwcywgaWYgYW55ICovDQogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFs c2U7DQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9rZXlhdHRyKTsNCkBAIC01NTcyLDYgKzU2MTMs OCBAQCByZXN0YXJ0Og0KIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOw0KIAli bXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOw0KIAlyZWxhdGlvbi0+cmRfaW5kZXhl ZGF0dHIgPSBOVUxMOw0KKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmF0dHIpOw0KKwlyZWxh dGlvbi0+cmRfZXhwcmF0dHIgPSBOVUxMOw0KIA0KIAkvKg0KIAkgKiBOb3cgc2F2ZSBjb3BpZXMg b2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9uYWxseQ0K QEAgLTU1ODcsNiArNTYzMCw3IEBAIHJlc3RhcnQ6DQogCXJlbGF0aW9uLT5yZF9ob3RibG9ja2lu Z2F0dHIgPSBibXNfY29weShob3RibG9ja2luZ2F0dHJzKTsNCiAJcmVsYXRpb24tPnJkX3N1bW1h cml6ZWRhdHRyID0gYm1zX2NvcHkoc3VtbWFyaXplZGF0dHJzKTsNCiAJcmVsYXRpb24tPnJkX2lu ZGV4ZWRhdHRyID0gYm1zX2NvcHkoaW5kZXhlZGF0dHJzKTsNCisJcmVsYXRpb24tPnJkX2V4cHJh dHRyID0gYm1zX2NvcHkoZXhwcmF0dHJzKTsNCiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0 cnVlOw0KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsNCiANCkBAIC01NjA1LDYgKzU2 NDksOCBAQCByZXN0YXJ0Og0KIAkJCXJldHVybiBzdW1tYXJpemVkYXR0cnM7DQogCQljYXNlIElO REVYX0FUVFJfQklUTUFQX0lOREVYRUQ6DQogCQkJcmV0dXJuIGluZGV4ZWRhdHRyczsNCisJCWNh c2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoNCisJCQlyZXR1cm4gZXhwcmF0dHJzOw0K IAkJZGVmYXVsdDoNCiAJCQllbG9nKEVSUk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJL aW5kKTsNCiAJCQlyZXR1cm4gTlVMTDsNCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaA0KaW5kZXggNWNi ZGIwOTI1NjQuLmM4MmRlZjg3ZjJhIDEwMDY0NA0KLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaA0KKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaA0KQEAgLTgx OSw2ICs4MTksNyBAQCBleHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0xvb2t1cFJlc3VsdFJlbEJ5 T2lkKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUsDQogCQkJCQkJCQkJCQkgICBib29sIHVwZGF0ZV9j YWNoZSk7DQogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVz dWx0UmVsSW5mbyAqcmVsaW5mbywNCiAJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0 cywNCi0JCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7DQorCQkJCQkJCQkJCQkg VHVwbGVUYWJsZVNsb3QgKm5ld190dHMsDQorCQkJCQkJCQkJCQkgRVN0YXRlICplc3RhdGUpOw0K IA0KICNlbmRpZgkJCQkJCQkvKiBFWEVDVVRPUl9IICAqLw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgNCmlu ZGV4IGUzY2VhNTJlN2RmLi4yMjBhYWE4Yjk2NSAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oDQorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaA0KQEAg LTUwMiw2ICs1MDIsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0UmVsSW5mbw0KIAkvKiBhcnJh eSBvZiBrZXkvYXR0ciBpbmZvIGZvciBpbmRpY2VzICovDQogCUluZGV4SW5mbyAqKnJpX0luZGV4 UmVsYXRpb25JbmZvOw0KIA0KKwkvKg0KKwkgKiBGb3IgVVBEQVRFLCB0aGUgdGFibGUgYXR0cmli dXRlcyBlYWNoIGluZGV4IHJlZmVyZW5jZXMgdGhyb3VnaA0KKwkgKiBleHByZXNzaW9ucyBvciBp dHMgcHJlZGljYXRlLCBvZmZzZXQgYnkNCisJICogRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlci4gIEJ1aWx0IG9uIGZpcnN0IHVzZTsgTlVMTCB1bnRpbA0KKwkgKiB0aGVuLg0KKwkg Ki8NCisJQml0bWFwc2V0ICoqcmlfSW5kZXhFeHByQXR0cnM7DQorDQogCS8qDQogCSAqIEZvciBV UERBVEUvREVMRVRFL01FUkdFIHJlc3VsdCByZWxhdGlvbnMsIHRoZSBhdHRyaWJ1dGUgbnVtYmVy IG9mIHRoZQ0KIAkgKiByb3cgaWRlbnRpdHkganVuayBhdHRyaWJ1dGUgaW4gdGhlIHNvdXJjZSBw bGFuJ3Mgb3V0cHV0IHR1cGxlcw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgNCmluZGV4IDU1YjQ1OWFkYmE4Li5mZGQyYTFlMzIx MyAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oDQorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9yZWwuaA0KQEAgLTE2NSw2ICsxNjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlv bkRhdGENCiAJQml0bWFwc2V0ICAqcmRfaG90YmxvY2tpbmdhdHRyOyAvKiBjb2xzIGJsb2NraW5n IEhPVCB1cGRhdGUgKi8NCiAJQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0dHI7CS8qIGNvbHMg aW5kZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovDQogCUJpdG1hcHNldCAgKnJkX2luZGV4 ZWRhdHRyOyAvKiBjb2xzIHJlZmVyZW5jZWQgYnkgYW55IGluZGV4ICovDQorCUJpdG1hcHNldCAg KnJkX2V4cHJhdHRyOwkvKiBjb2xzIG5vbi1zdW1tYXJpemluZyBpbmRleGVzIHJlZmVyZW5jZSBv bmx5DQorCQkJCQkJCQkgKiB2aWEgZXhwcmVzc2lvbnMgb3IgYXMgcGFydGlhbCBpbmRleGVzICov DQogDQogCVB1YmxpY2F0aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGljYXRpb24gZGVzY3Jp cHRvciwgb3IgTlVMTCAqLw0KIA0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oDQppbmRleCA0MTc5OTBlODAyMi4u OTU1ZDAxODZjMmQgMTAwNjQ0DQotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oDQor KysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oDQpAQCAtNzMsNiArNzMsNyBAQCB0eXBl ZGVmIGVudW0gSW5kZXhBdHRyQml0bWFwS2luZA0KIAlJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxP Q0tJTkcsDQogCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQsDQogCUlOREVYX0FUVFJfQklU TUFQX0lOREVYRUQsDQorCUlOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04sDQogfSBJbmRleEF0 dHJCaXRtYXBLaW5kOw0KIA0KIGV4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLA0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9jaWMtZXhwcmVzc2lvbi1ob3Qub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL2NpYy1leHByZXNzaW9uLWhvdC5vdXQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl eCAwMDAwMDAwMDAwMC4uNDEyOGY0MGMxNDENCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9leHBlY3RlZC9jaWMtZXhwcmVzc2lvbi1ob3Qub3V0DQpAQCAtMCwwICsxLDQz IEBADQorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMNCisNCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFfbG9jayBzMl9jaWNfcyBzMV91cGRfcyBzMV91bmxvY2sgczFfdXBkMiBzMV9j aGVjaw0KK3N0ZXAgczFfbG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soNDI0Mik7DQorcGdf YWR2aXNvcnlfbG9jaw0KKy0tLS0tLS0tLS0tLS0tLS0NCisgICAgICAgICAgICAgICAgDQorKDEg cm93KQ0KKw0KK3N0ZXAgczJfY2ljX3M6IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX2V4 cHJfaWR4IE9OIGNpY19leHByIChjaWNfbG93ZXIocykpOyA8d2FpdGluZyAuLi4+DQorc3RlcCBz MV91cGRfczogVVBEQVRFIGNpY19leHByIFNFVCBzID0gdXBwZXIocyk7DQorc3RlcCBzMV91bmxv Y2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDI0Mik7DQorcGdfYWR2aXNvcnlfdW5sb2Nr DQorLS0tLS0tLS0tLS0tLS0tLS0tDQordCAgICAgICAgICAgICAgICAgDQorKDEgcm93KQ0KKw0K K3N0ZXAgczJfY2ljX3M6IDwuLi4gY29tcGxldGVkPg0KK3N0ZXAgczFfdXBkMjogVVBEQVRFIGNp Y19leHByIFNFVCBzID0gbG93ZXIocykgfHwgJyc7DQorc3RlcCBzMV9jaGVjazogDQorCVNFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsNCisJU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOw0KKwlT RUxFQ1QgY291bnQoKikgRlJPTSBjaWNfZXhwciBXSEVSRSBjaWNfbG93ZXIocykgTElLRSAnYWJj JSc7DQorCVNFTEVDVCBjb3VudCgqKSBGUk9NIGNpY19leHByIFdIRVJFIGNpY19sb3dlcihzKSA9 ICdhYmM0Mic7DQorCVJFU0VUIGVuYWJsZV9zZXFzY2FuOw0KKwlSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsNCisJU0VMRUNUIGluZGlzdmFsaWQgRlJPTSBwZ19pbmRleCBXSEVSRSBpbmRleHJlbGlk ID0gJ2NpY19leHByX2lkeCc6OnJlZ2NsYXNzOw0KKw0KK2NvdW50DQorLS0tLS0NCisgIDEwMA0K KygxIHJvdykNCisNCitjb3VudA0KKy0tLS0tDQorICAgIDENCisoMSByb3cpDQorDQoraW5kaXN2 YWxpZA0KKy0tLS0tLS0tLS0NCit0ICAgICAgICAgDQorKDEgcm93KQ0KKw0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRp b24vaXNvbGF0aW9uX3NjaGVkdWxlDQppbmRleCBkN2RhODk5YWE4NS4uMmU5OWNhMDQzMDUgMTAw NjQ0DQotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlDQorKysgYi9z cmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlDQpAQCAtOTUsNiArOTUsNyBAQCB0 ZXN0OiBza2lwLWxvY2tlZC0zDQogdGVzdDogc2tpcC1sb2NrZWQtNA0KIHRlc3Q6IGRyb3AtaW5k ZXgtY29uY3VycmVudGx5LTENCiB0ZXN0OiBtdWx0aXBsZS1jaWMNCit0ZXN0OiBjaWMtZXhwcmVz c2lvbi1ob3QNCiB0ZXN0OiBhbHRlci1kb21haW4tdmFsaWRhdGUNCiB0ZXN0OiBhbHRlci10YWJs ZS0xDQogdGVzdDogYWx0ZXItdGFibGUtMg0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9jaWMtZXhwcmVzc2lvbi1ob3Quc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVj cy9jaWMtZXhwcmVzc2lvbi1ob3Quc3BlYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwLi5hZDFiNjEyYmUwMQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL3NwZWNzL2NpYy1leHByZXNzaW9uLWhvdC5zcGVjDQpAQCAtMCwwICsxLDQzIEBADQor IyBVUERBVEVzIGR1cmluZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9mIGFuIGV4cHJlc3Np b24gaW5kZXguDQorIw0KKyMgVGhlIGJ1aWxkIHdhaXRzIGZvciBhbiBhZHZpc29yeSBsb2NrIHRo YXQgczEgaG9sZHMsIGluc2lkZSB0aGUgaW5kZXgNCisjIGV4cHJlc3Npb24sIHNvIHMxJ3MgVVBE QVRFIHJ1bnMgd2hpbGUgdGhlIGluZGV4IGlzIG5vdCB5ZXQgcmVhZHkgZm9yDQorIyBpbnNlcnRz LiAgVGhlIHVwZGF0ZSBsZWF2ZXMgdGhlIGV4cHJlc3Npb24ncyB2YWx1ZSBhbG9uZTsgdGhlIGZp bmlzaGVkDQorIyBpbmRleCBtdXN0IGZpbmQgZXZlcnkgcm93IHVuZGVyIGl0cyBjdXJyZW50IGtl eS4NCisNCitzZXR1cA0KK3sNCisJQ1JFQVRFIFRBQkxFIGNpY19leHByIChpZCBpbnQgUFJJTUFS WSBLRVksIHMgdGV4dCwgeCBpbnQpDQorCQlXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KKwlJTlNF UlQgSU5UTyBjaWNfZXhwciBTRUxFQ1QgZywgJ2FiYycgfHwgZywgZyBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIGc7DQorCUNSRUFURSBGVU5DVElPTiBjaWNfbG93ZXIodGV4dCkgUkVUVVJO UyB0ZXh0IElNTVVUQUJMRSBMQU5HVUFHRSBwbHBnc3FsIEFTICQkDQorCQlCRUdJTiBQRVJGT1JN IHBnX2Fkdmlzb3J5X2xvY2tfc2hhcmVkKDQyNDIpOyBQRVJGT1JNIHBnX2Fkdmlzb3J5X3VubG9j a19zaGFyZWQoNDI0Mik7IFJFVFVSTiBsb3dlcigkMSk7IEVORDsNCisJJCQ7DQorfQ0KKw0KK3Rl YXJkb3duDQorew0KKwlEUk9QIFRBQkxFIGNpY19leHByOw0KKwlEUk9QIEZVTkNUSU9OIGNpY19s b3dlcih0ZXh0KTsNCit9DQorDQorc2Vzc2lvbiBzMQ0KK3N0ZXAgczFfbG9jawl7IFNFTEVDVCBw Z19hZHZpc29yeV9sb2NrKDQyNDIpOyB9DQorc3RlcCBzMV91cGRfcwl7IFVQREFURSBjaWNfZXhw ciBTRVQgcyA9IHVwcGVyKHMpOyB9DQorc3RlcCBzMV91bmxvY2sJeyBTRUxFQ1QgcGdfYWR2aXNv cnlfdW5sb2NrKDQyNDIpOyB9DQorc3RlcCBzMV91cGQyCXsgVVBEQVRFIGNpY19leHByIFNFVCBz ID0gbG93ZXIocykgfHwgJyc7IH0NCitzdGVwIHMxX2NoZWNrDQorew0KKwlTRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7DQorCVNFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsNCisJU0VMRUNUIGNv dW50KCopIEZST00gY2ljX2V4cHIgV0hFUkUgY2ljX2xvd2VyKHMpIExJS0UgJ2FiYyUnOw0KKwlT RUxFQ1QgY291bnQoKikgRlJPTSBjaWNfZXhwciBXSEVSRSBjaWNfbG93ZXIocykgPSAnYWJjNDIn Ow0KKwlSRVNFVCBlbmFibGVfc2Vxc2NhbjsNCisJUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47DQor CVNFTEVDVCBpbmRpc3ZhbGlkIEZST00gcGdfaW5kZXggV0hFUkUgaW5kZXhyZWxpZCA9ICdjaWNf ZXhwcl9pZHgnOjpyZWdjbGFzczsNCit9DQorDQorc2Vzc2lvbiBzMg0KK3N0ZXAgczJfY2ljX3MJ eyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19leHByX2lkeCBPTiBjaWNfZXhwciAoY2lj X2xvd2VyKHMpKTsgfQ0KKw0KK3Blcm11dGF0aW9uIHMxX2xvY2sgczJfY2ljX3MgczFfdXBkX3Mg czFfdW5sb2NrIHMxX3VwZDIgczFfY2hlY2sNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90 X3VwZGF0ZXMub3V0DQppbmRleCBmODNhNjg2ZjNhOS4uMjc2YTg0NWEzZTkgMTAwNjQ0DQotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dA0KKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQNCkBAIC0zMjEsNyArMzIxLDcgQEAg U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0KIFNFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsNCiAgdXBkYXRlcyB8IGhvdCANCiAtLS0tLS0tLS0r LS0tLS0NCi0gICAgICAgMSB8ICAgMA0KKyAgICAgICAxIHwgICAxDQogKDEgcm93KQ0KIA0KIFVQ REFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hFUkUgaWQgPSAy Ow0KQEAgLTMzNCw3ICszMzQsNyBAQCBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 DQogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOw0KICB1cGRh dGVzIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAgICAyIHwgICAwDQorICAgICAgIDIg fCAgIDINCiAoMSByb3cpDQogDQogVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNv bmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7DQpAQCAt MzQ3LDcgKzM0Nyw3IEBAIFNFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCiBTRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7DQogIHVwZGF0ZXMgfCBo b3QgDQogLS0tLS0tLS0tKy0tLS0tDQotICAgICAgIDMgfCAgIDANCisgICAgICAgMyB8ICAgMw0K ICgxIHJvdykNCiANCiBEUk9QIFRBQkxFIGhvdF9qc29uYl90ZXN0Ow0KQEAgLTM3OSw3ICszNzks NyBAQCBTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KIE5PVElDRTogIHRhYmxlICJob3RfZXhw cl90ZXN0IiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcNCiAgdXBkYXRlZCB8IGhvdCANCiAtLS0t LS0tLS0rLS0tLS0NCi0gICAgICAxMCB8ICAgMA0KKyAgICAgIDEwIHwgIDEwDQogKDEgcm93KQ0K IA0KIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQpAQCAtMzg5LDcgKzM4OSw3IEBAIFNFTEVD VCAqIEZST00gdXBkYXRlX2Nhc2UoDQogICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBhID0g YSAtIDEsIGIgPSBiICsgMSQkKTsNCiAgdXBkYXRlZCB8IGhvdCANCiAtLS0tLS0tLS0rLS0tLS0N Ci0gICAgICAxMCB8ICAgMA0KKyAgICAgIDEwIHwgIDEwDQogKDEgcm93KQ0KIA0KIC0tIEV4cHJl c3Npb24gdmFsdWUgY2hhbmdlZC4NCkBAIC00MjQsNyArNDI0LDcgQEAgU0VMRUNUICogRlJPTSB1 cGRhdGVfY2FzZSgNCiAgICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VUIHMgPSB1cHBlcihzKSQk KTsNCiAgdXBkYXRlZCB8IGhvdCANCiAtLS0tLS0tLS0rLS0tLS0NCi0gICAgICAxMCB8ICAgMA0K KyAgICAgIDEwIHwgIDEwDQogKDEgcm93KQ0KIA0KIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2Uo DQpAQCAtNDM0LDcgKzQzNCw3IEBAIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQogICAkJFVQ REFURSBob3RfZXhwcl90ZXN0IFNFVCBwID0gcG9pbnQocFswXSwgcFsxXSArIDEpJCQpOw0KICB1 cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAgIDEwIHwgICAwDQorICAgICAg MTAgfCAgMTANCiAoMSByb3cpDQogDQogLS0gQW4gZXhwcmVzc2lvbiB0aGF0IGlzIGEgcG9pbnQs IHN0b3JlZCBieSB0aGUgZ2lzdCBpbmRleCBhcyBhIGJveC4NCkBAIC00NDcsNyArNDQ3LDcgQEAg U0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCiAgICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VU IGQgPSBkICsgNyQkKTsNCiAgdXBkYXRlZCB8IGhvdCANCiAtLS0tLS0tLS0rLS0tLS0NCi0gICAg ICAxMCB8ICAgMA0KKyAgICAgIDEwIHwgIDEwDQogKDEgcm93KQ0KIA0KIC0tIEEgcGxhaW4gaW5k ZXggb24gdGhlIHNhbWUgY29sdW1uIGFzIGFuIGV4cHJlc3Npb24gaW5kZXguDQpAQCAtNDcyLDcg KzQ3Miw3IEBAIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQogICAkJFVQREFURSBob3RfZXhw cl90ZXN0IFNFVCBzID0gdXBwZXIocyksIGIgPSBiICsgMSQkKTsNCiAgdXBkYXRlZCB8IGhvdCAN CiAtLS0tLS0tLS0rLS0tLS0NCi0gICAgICAxMCB8ICAgMA0KKyAgICAgIDEwIHwgIDEwDQogKDEg cm93KQ0KIA0KIC0tIEEgQkVGT1JFIFJPVyB0cmlnZ2VyIHRoYXQgY2hhbmdlcyB0aGUgZXhwcmVz c2lvbidzIHZhbHVlLg0KQEAgLTUwMSw3ICs1MDEsNyBAQCBTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9j YXNlKA0KICAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgdiA9IHYgKyAxJCQpOw0KICB1cGRh dGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAgIDEwIHwgICAwDQorICAgICAgMTAg fCAgMTANCiAoMSByb3cpDQogDQogU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCkBAIC01MTEs NyArNTExLDcgQEAgU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCiAgICQkVVBEQVRFIGhvdF9l eHByX3Rlc3QgU0VUIHN0YXR1cyA9ICdhcmNoaXZlZCckJCk7DQogIHVwZGF0ZWQgfCBob3QgDQog LS0tLS0tLS0tKy0tLS0tDQotICAgICAgMTAgfCAgIDANCisgICAgICAxMCB8ICAxMA0KICgxIHJv dykNCiANCiAtLSBCb3RoIHZlcnNpb25zIGluc2lkZSB0aGUgcHJlZGljYXRlIHdpdGggdGhlIGtl eSB1bmNoYW5nZWQuDQpAQCAtNTIyLDcgKzUyMiw3IEBAIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nh c2UoDQogICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBzdGF0dXMgPSAnYickJCk7DQogIHVw ZGF0ZWQgfCBob3QgDQogLS0tLS0tLS0tKy0tLS0tDQotICAgICAgMTAgfCAgIDANCisgICAgICAx MCB8ICAxMA0KICgxIHJvdykNCiANCiAtLSBFbnRlcmluZyBvciBsZWF2aW5nIHRoZSBwcmVkaWNh dGUsIG9yIGNoYW5naW5nIHRoZSBrZXkgaW5zaWRlIGl0Lg0KQEAgLTU2NSw3ICs1NjUsNyBAQCBT RUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KICAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQg diA9IHYgKyAxMDAgV0hFUkUgc3RhdHVzID0gJ2RvbmUnJCQpOw0KICB1cGRhdGVkIHwgaG90IA0K IC0tLS0tLS0tLSstLS0tLQ0KLSAgICAgICA1IHwgICAwDQorICAgICAgIDUgfCAgIDUNCiAoMSBy b3cpDQogDQogU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0KLS0gDQoyLjUwLjENCg0K --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4 Content-Type: text/plain; charset=us-ascii; name=v43-0006-Treat-an-indexed-value-stored-differently-but-un.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v43-0006-Treat-an-indexed-value-stored-differently-but-un.patch RnJvbSBkODgyNzExMzVjY2RmMjYyNzJhYmMxNTU3NDNmMmJmZTg1ZDdlYzMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBGcmks IDE2IE9jdCAyMDI2IDEyOjI5OjQyIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQzIDYvOF0gVHJl YXQgYW4gaW5kZXhlZCB2YWx1ZSBzdG9yZWQgZGlmZmVyZW50bHkgYnV0DQogdW5jaGFuZ2VkIGFz IHVuY2hhbmdlZA0KDQpUaGUgZXhlY3V0b3IgY29tcGFyZXMgaW5kZXhlZCB2YWx1ZXMgYXMgc3Rv cmVkLCBhcyBoZWFwX3VwZGF0ZSgpIGFsd2F5cw0KaGFzLCBzbyBpdCBzZWVzIGEgY2hhbmdlIHdo ZW4gYW4gVVBEQVRFIHdyaXRlcyBiYWNrIHRoZSB2YWx1ZSBhIHJvdw0KYWxyZWFkeSBoYXMgYnV0 IHRoZSBvbGQgdmFsdWUgaXMgc3RvcmVkIGNvbXByZXNzZWQgb3Igb3V0IG9mIGxpbmUgYW5kDQp0 aGUgbmV3IG9uZSBpcyBub3QgY29tcHJlc3NlZCB5ZXQuICBFdmVyeSBVUERBVEUgdGhhdCBzZW5k cyBhbGwgY29sdW1ucywNCmFzIE9STXMgYW5kIGxvZ2ljYWwgcmVwbGljYXRpb24gZG8sIGlzIGxp a2UgdGhhdCBmb3IgbGFyZ2UgaW5kZXhlZA0KdmFsdWVzLCBhbmQgc28gd2FzIG5ldmVyIEhPVC4N Cg0KVHdvIHZhbHVlcyB0aGF0IGFyZSB0aGUgc2FtZSBvbmNlIGRldG9hc3RlZCBnaXZlIGV2ZXJ5 IGluZGV4IHRoZSBzYW1lDQplbnRyaWVzLCB3aGF0ZXZlciB0aGUgYWNjZXNzIG1ldGhvZDogaW5k ZXggZW50cmllcyBhcmUgYSBmdW5jdGlvbiBvZiB0aGUNCnZhbHVlcy4gIFNvIHdoZW4gdHdvIHZh bHVlcyBkaWZmZXIgYXMgc3RvcmVkIGFuZCBvbmUgb2YgdGhlbSBpcw0KY29tcHJlc3NlZCBvciBz dG9yZWQgb3V0IG9mIGxpbmUsIGNvbXBhcmUgdGhlbSB3aXRoIGRhdHVtX2ltYWdlX2VxKCksDQph bmQgaWYgdGhleSBhcmUgdGhlIHNhbWUsIHRyZWF0IHRoZSBjb2x1bW4gYXMgdW5jaGFuZ2VkLiAg VGhpcyBpcyBkb25lDQpvbmNlIGZvciBlYWNoIGNoYW5nZWQgaW5kZXhlZCBjb2x1bW4sIGJlZm9y ZSB0aGUgbmFycm93aW5nIGZvcg0KZXhwcmVzc2lvbiBhbmQgcGFydGlhbCBpbmRleGVzLiAgVGhl IG5hcnJvd2luZyB0aGVuIGNvbXBhcmVzIGFnYWluIG9ubHkNCnRoZSBkYXR1bXMgb2YgZXhwcmVz c2lvbnM6IGEgdGFibGUgY29sdW1uIGFuIGluZGV4IHN0b3JlcyBnaXZlcyBpdCB0aGUNCnNhbWUg ZW50cmllcyBleGFjdGx5IHdoZW4gdGhlIGNvbHVtbiBpcyBubyBsb25nZXIgaW4gdGhlIGNoYW5n ZWQgc2V0LCBzbw0KaXRzIHZhbHVlcyBhcmUgbmVpdGhlciBjb21wYXJlZCBub3IgZmV0Y2hlZCBh IHNlY29uZCB0aW1lLiAgSXQgYXBwbGllcyB0bw0KYnRyZWUsIEdpU1QsIFNQLUdpU1QgYW5kIGV4 dGVuc2lvbiBhY2Nlc3MgbWV0aG9kcyBhbGlrZSwgc28gbm8gYWNjZXNzDQptZXRob2QgbmVlZHMg YW1jb21wYXJlZGF0dW1zIGZvciBpdDsgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhpcyBwYXRj aA0KZ2F2ZSBidHJlZSBhIGNhbGxiYWNrIHRoYXQgZGlkIGV4YWN0bHkgdGhpcywgd2hpY2ggTWF0 dGhpYXMgdmFuIGRlIE1lZW50DQpwb2ludGVkIG91dCB0b2xkIHVzIG5vdGhpbmcgYWJvdXQgYnRy ZWUuDQoNCmRhdHVtX2ltYWdlX2VxKCkgZmV0Y2hlcyBhbmQgZGVjb21wcmVzc2VzIG9ubHkgd2hl biB0aGUgc3RvcmVkIGZvcm1zDQpkaWZmZXIsIG9uZSBvZiB0aGVtIGlzIGNvbXByZXNzZWQgb3Ig b3V0IG9mIGxpbmUsIGFuZCB0aGVpciBzaXplcyBhcmUgdGhlDQpzYW1lOiBhbiB1bmNoYW5nZWQg dmFsdWUgdGhhdCBrZWVwcyBpdHMgdG9hc3QgcG9pbnRlciBzdGlsbCBjb21wYXJlcw0KZXF1YWwg d2l0aG91dCBiZWluZyBmZXRjaGVkLCBhbmQgdmFsdWVzIG9mIGRpZmZlcmVudCBzaXplcyBhcmUg bm90DQpmZXRjaGVkIGVpdGhlci4gIFdoYXQgcmVtYWlucyBjb3N0cyBib3RoIHZhbHVlcycgZGV0 b2FzdGluZywgd2hlcmUNCmJlZm9yZSB0aGUgdXBkYXRlIHdvdWxkIGhhdmUgYmVlbiBub24tSE9U IGFuZCB0aGUgaW5kZXggaW5zZXJ0aW9uIHdvdWxkDQpoYXZlIGRldG9hc3RlZCB0aGUgbmV3IHZh bHVlLg0KDQpDb2x1bW5zIG9mIHVuaXF1ZSBpbmRleGVzIHRoYXQgZm9yZWlnbiBrZXlzIGNhbiBy ZWZlcmVuY2UsIGFuZCBvZiB0aGUNCnJlcGxpY2EgaWRlbnRpdHksIGFyZSBzdGlsbCBjb21wYXJl ZCBhcyBzdG9yZWQ6IHRoZSB0YWJsZSBBTSBkZWNpZGVzIGl0cw0KbG9jayBzdHJlbmd0aCBhbmQg d2hhdCBpdCBsb2dzIGZvciBsb2dpY2FsIGRlY29kaW5nIGZyb20gdGhlbS4NCg0KVmFsdWVzIHRo YXQgYXJlIGVxdWFsIGJ1dCBub3QgdGhlIHNhbWUsIHN1Y2ggYXMgbnVtZXJpYyAxLjAgYW5kIDEu MDAgb3INCnN0cmluZ3MgZXF1YWwgdW5kZXIgYSBub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbiwg c3RpbGwgY291bnQgYXMNCmNoYW5nZWQ6IGFuIGluZGV4LW9ubHkgc2NhbiB3b3VsZCByZXR1cm4g dGhlIG9sZCBvbmUuDQoNCkluIGJ1aWxkcyB3aXRoIGFzc2VydGlvbnMsIGhlYXBfdXBkYXRlKCkn cyBjaGVjayBvZiB0aGUgY2FsbGVyJ3Mgc2V0IG9mDQpjaGFuZ2VkIGNvbHVtbnMgYWxsb3dzIHN1 Y2ggYSBjb2x1bW4gdG8gYmUgbGVmdCBvdXQsIGlmIG9uZSBvZiBpdHMNCnN0b3JlZCB2YWx1ZXMg aXMgY29tcHJlc3NlZCBvciBvdXQgb2YgbGluZSBhbmQgaXQgaXMgaW4gbm8gY2FuZGlkYXRlIGtl eQ0Kb3IgcmVwbGljYSBpZGVudGl0eS4NCi0tLQ0KIGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9j aGVja19idHJlZS5vdXQgIHwgIDk4ICsrKysrKysrKysrKysrKysrDQogY29udHJpYi9hbWNoZWNr L3NxbC9jaGVja19idHJlZS5zcWwgICAgICAgfCAgNDYgKysrKysrKysNCiBkb2Mvc3JjL3NnbWwv aW5kZXhhbS5zZ21sICAgICAgICAgICAgICAgICB8ICAgNCArLQ0KIGRvYy9zcmMvc2dtbC9zdG9y YWdlLnNnbWwgICAgICAgICAgICAgICAgIHwgICA3ICstDQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVCAgICAgICAgfCAgIDcgKy0NCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyAgICAgICAgICB8ICAzNSArKysrKystDQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMgICAgfCAxMjIgKysrKysrKysrKysrKysrKysrKy0tLQ0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0IHwgICA2ICstDQogOCBmaWxlcyBjaGFu Z2VkLCAzMDIgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9j b250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnRyZWUub3V0IGIvY29udHJpYi9hbWNoZWNr L2V4cGVjdGVkL2NoZWNrX2J0cmVlLm91dA0KaW5kZXggNmZjMWVlOTc5MDIuLjRlMDI5NTRiNmY4 IDEwMDY0NA0KLS0tIGEvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2J0cmVlLm91dA0K KysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2J0cmVlLm91dA0KQEAgLTM2Niw2 ICszNjYsMTA0IEBAIFNFTEVDVCBidF9pbmRleF9jaGVjaygnaG90X2V4cHJfbXVsdGlfdmlwJywg aGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQogKDEgcm93KQ0KIA0KIERST1AgVEFCTEUgaG90X2V4 cHJfbXVsdGk7DQorLS0gQW4gVVBEQVRFIHRoYXQgd3JpdGVzIGJhY2sgdGhlIHZhbHVlIGEgcm93 IGhhcywgd2hlbiB0aGUgb2xkIHZhbHVlIGlzDQorLS0gc3RvcmVkIGNvbXByZXNzZWQgb3Igb3V0 IG9mIGxpbmUgYW5kIHRoZSBuZXcgb25lIGlzIG5vdCB5ZXQsIGlzIEhPVDogdGhlDQorLS0gaW5k ZXggd291bGQgc3RvcmUgdGhlIHNhbWUgYnl0ZXMuICBJbmRleC1vbmx5IHNjYW5zIG11c3QgcmV0 dXJuIHRoZSBuZXcNCistLSByb3cncyB2YWx1ZS4NCitDUkVBVEUgVEFCTEUgaG90X2J0X2ltYWdl IChpZCBpbnQsIHQgdGV4dCwgZSB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KK0FMVEVS IFRBQkxFIGhvdF9idF9pbWFnZSBBTFRFUiBDT0xVTU4gZSBTRVQgU1RPUkFHRSBFWFRFUk5BTDsN CitDUkVBVEUgSU5ERVggaG90X2J0X2ltYWdlX3QgT04gaG90X2J0X2ltYWdlICh0KTsNCitDUkVB VEUgSU5ERVggaG90X2J0X2ltYWdlX2UgT04gaG90X2J0X2ltYWdlIChlKSBJTkNMVURFIChpZCk7 DQorSU5TRVJUIElOVE8gaG90X2J0X2ltYWdlDQorICBTRUxFQ1QgZywgcmVwZWF0KCd4JywgMzAw MCkgfHwgZywgcmVwZWF0KCd5JywgMjUwMCkgfHwgZw0KKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyMCkgZzsNCitTRUxFQ1QgcGdfY29sdW1uX2NvbXByZXNzaW9uKHQpIElTIE5PVCBOVUxM IEFTIHRfY29tcHJlc3NlZCwNCisgICAgICAgcGdfY29sdW1uX3NpemUoZSkgPiAyNTAwIEFTIGVf b3V0X29mX2xpbmUNCisgIEZST00gaG90X2J0X2ltYWdlIFdIRVJFIGlkID0gMTsNCisgdF9jb21w cmVzc2VkIHwgZV9vdXRfb2ZfbGluZSANCistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0N CisgdCAgICAgICAgICAgIHwgdA0KKygxIHJvdykNCisNCitDUkVBVEUgRlVOQ1RJT04gaG90X2J0 X2ltYWdlX2NvdW50KE9VVCB1cGRhdGVkIGJpZ2ludCwgT1VUIGhvdCBiaWdpbnQpDQorTEFOR1VB R0Ugc3FsIEFTICQkDQorICBTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZCgn aG90X2J0X2ltYWdlJzo6cmVnY2xhc3MpLA0KKyAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKCdob3RfYnRfaW1hZ2UnOjpyZWdjbGFzcykgJCQ7DQorQkVHSU47DQor VVBEQVRFIGhvdF9idF9pbWFnZSBTRVQgdCA9IHJlcGVhdCgneCcsIDMwMDApIHx8IGlkOw0KK1NF TEVDVCAqIEZST00gaG90X2J0X2ltYWdlX2NvdW50KCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0t LS0tLS0tKy0tLS0tDQorICAgICAgMjAgfCAgMjANCisoMSByb3cpDQorDQorVVBEQVRFIGhvdF9i dF9pbWFnZSBTRVQgZSA9IGUgfHwgJyc7DQorU0VMRUNUICogRlJPTSBob3RfYnRfaW1hZ2VfY291 bnQoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICA0MCB8ICA0 MA0KKygxIHJvdykNCisNCitVUERBVEUgaG90X2J0X2ltYWdlIFNFVCB0ID0gcmVwZWF0KCd4Jywg MzAwMCkgfHwgKGlkICsgMTAwKSBXSEVSRSBpZCA8PSA1Ow0KK1NFTEVDVCAqIEZST00gaG90X2J0 X2ltYWdlX2NvdW50KCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAg ICAgNDUgfCAgNDANCisoMSByb3cpDQorDQorQ09NTUlUOw0KK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsNCitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7DQorQ1JFQVRFIEZVTkNUSU9OIGhv dF9idF9pbWFnZV9wbGFuKCkgUkVUVVJOUyBTRVRPRiB0ZXh0IExBTkdVQUdFIHBscGdzcWwgQVMN CiskJCBERUNMQVJFIGwgdGV4dDsgQkVHSU4NCisgIEZPUiBsIElOIEVYUExBSU4gKENPU1RTIE9G RikNCisgICAgU0VMRUNUIHJpZ2h0KHQsIDMpIEZST00gaG90X2J0X2ltYWdlIFdIRVJFIHQgPiBy ZXBlYXQoJ3gnLCAzMDAwKQ0KKyAgTE9PUCBSRVRVUk4gTkVYVCBsZWZ0KGwsIDQwKTsgRU5EIExP T1A7IEVORCAkJDsNCitTRUxFQ1QgKiBGUk9NIGhvdF9idF9pbWFnZV9wbGFuKCk7DQorICAgICAg ICAgICAgaG90X2J0X2ltYWdlX3BsYW4gICAgICAgICAgICAgDQorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIEluZGV4IE9ubHkgU2NhbiB1c2luZyBob3RfYnRf aW1hZ2VfdCBvbiANCisgICBJbmRleCBDb25kOiAodCA+ICd4eHh4eHh4eHh4eHh4eHh4eHh4eA0K KygyIHJvd3MpDQorDQorU0VMRUNUIHJpZ2h0KHQsIDMpIEZST00gaG90X2J0X2ltYWdlIFdIRVJF IHQgPiByZXBlYXQoJ3gnLCAzMDAwKQ0KKyAgT1JERVIgQlkgdCBDT0xMQVRFICJDIiBMSU1JVCAz Ow0KKyByaWdodCANCistLS0tLS0tDQorIHgxMA0KKyAxMDENCisgMTAyDQorKDMgcm93cykNCisN CitTRUxFQ1QgY291bnQoKikgRlJPTSBob3RfYnRfaW1hZ2UgV0hFUkUgdCA+IHJlcGVhdCgneCcs IDMwMDApOw0KKyBjb3VudCANCistLS0tLS0tDQorICAgIDIwDQorKDEgcm93KQ0KKw0KK1NFTEVD VCBjb3VudCgqKSBGUk9NIGhvdF9idF9pbWFnZSBXSEVSRSBlID4gcmVwZWF0KCd5JywgMjUwMCk7 DQorIGNvdW50IA0KKy0tLS0tLS0NCisgICAgMjANCisoMSByb3cpDQorDQorUkVTRVQgZW5hYmxl X3NlcXNjYW47DQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47DQorU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCdob3RfYnRfaW1hZ2VfdCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOw0KKyBidF9pbmRl eF9jaGVjayANCistLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1QgYnRf aW5kZXhfY2hlY2soJ2hvdF9idF9pbWFnZV9lJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQor IGJ0X2luZGV4X2NoZWNrIA0KKy0tLS0tLS0tLS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK0RS T1AgVEFCTEUgaG90X2J0X2ltYWdlOw0KK0RST1AgRlVOQ1RJT04gaG90X2J0X2ltYWdlX2NvdW50 Ow0KK0RST1AgRlVOQ1RJT04gaG90X2J0X2ltYWdlX3BsYW47DQogLS0gY2xlYW51cA0KIERST1Ag VEFCTEUgYnR0ZXN0X2E7DQogRFJPUCBUQUJMRSBidHRlc3RfYjsNCmRpZmYgLS1naXQgYS9jb250 cmliL2FtY2hlY2svc3FsL2NoZWNrX2J0cmVlLnNxbCBiL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hl Y2tfYnRyZWUuc3FsDQppbmRleCA0YzU0YWFkNWQ5Zi4uMGUwM2VlZWY5ZTAgMTAwNjQ0DQotLS0g YS9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2J0cmVlLnNxbA0KKysrIGIvY29udHJpYi9hbWNo ZWNrL3NxbC9jaGVja19idHJlZS5zcWwNCkBAIC0yMzMsNiArMjMzLDUyIEBAIFNFTEVDVCBidF9p bmRleF9jaGVjaygnaG90X2V4cHJfbXVsdGlfc3RhdHVzJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1 ZSk7DQogU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdob3RfZXhwcl9tdWx0aV92aXAnLCBoZWFwYWxs aW5kZXhlZCA9PiB0cnVlKTsNCiBEUk9QIFRBQkxFIGhvdF9leHByX211bHRpOw0KIA0KKy0tIEFu IFVQREFURSB0aGF0IHdyaXRlcyBiYWNrIHRoZSB2YWx1ZSBhIHJvdyBoYXMsIHdoZW4gdGhlIG9s ZCB2YWx1ZSBpcw0KKy0tIHN0b3JlZCBjb21wcmVzc2VkIG9yIG91dCBvZiBsaW5lIGFuZCB0aGUg bmV3IG9uZSBpcyBub3QgeWV0LCBpcyBIT1Q6IHRoZQ0KKy0tIGluZGV4IHdvdWxkIHN0b3JlIHRo ZSBzYW1lIGJ5dGVzLiAgSW5kZXgtb25seSBzY2FucyBtdXN0IHJldHVybiB0aGUgbmV3DQorLS0g cm93J3MgdmFsdWUuDQorQ1JFQVRFIFRBQkxFIGhvdF9idF9pbWFnZSAoaWQgaW50LCB0IHRleHQs IGUgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCitBTFRFUiBUQUJMRSBob3RfYnRfaW1h Z2UgQUxURVIgQ09MVU1OIGUgU0VUIFNUT1JBR0UgRVhURVJOQUw7DQorQ1JFQVRFIElOREVYIGhv dF9idF9pbWFnZV90IE9OIGhvdF9idF9pbWFnZSAodCk7DQorQ1JFQVRFIElOREVYIGhvdF9idF9p bWFnZV9lIE9OIGhvdF9idF9pbWFnZSAoZSkgSU5DTFVERSAoaWQpOw0KK0lOU0VSVCBJTlRPIGhv dF9idF9pbWFnZQ0KKyAgU0VMRUNUIGcsIHJlcGVhdCgneCcsIDMwMDApIHx8IGcsIHJlcGVhdCgn eScsIDI1MDApIHx8IGcNCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGc7DQorU0VM RUNUIHBnX2NvbHVtbl9jb21wcmVzc2lvbih0KSBJUyBOT1QgTlVMTCBBUyB0X2NvbXByZXNzZWQs DQorICAgICAgIHBnX2NvbHVtbl9zaXplKGUpID4gMjUwMCBBUyBlX291dF9vZl9saW5lDQorICBG Uk9NIGhvdF9idF9pbWFnZSBXSEVSRSBpZCA9IDE7DQorQ1JFQVRFIEZVTkNUSU9OIGhvdF9idF9p bWFnZV9jb3VudChPVVQgdXBkYXRlZCBiaWdpbnQsIE9VVCBob3QgYmlnaW50KQ0KK0xBTkdVQUdF IHNxbCBBUyAkJA0KKyAgU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoJ2hv dF9idF9pbWFnZSc6OnJlZ2NsYXNzKSwNCisgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZCgnaG90X2J0X2ltYWdlJzo6cmVnY2xhc3MpICQkOw0KK0JFR0lOOw0KK1VQ REFURSBob3RfYnRfaW1hZ2UgU0VUIHQgPSByZXBlYXQoJ3gnLCAzMDAwKSB8fCBpZDsNCitTRUxF Q1QgKiBGUk9NIGhvdF9idF9pbWFnZV9jb3VudCgpOw0KK1VQREFURSBob3RfYnRfaW1hZ2UgU0VU IGUgPSBlIHx8ICcnOw0KK1NFTEVDVCAqIEZST00gaG90X2J0X2ltYWdlX2NvdW50KCk7DQorVVBE QVRFIGhvdF9idF9pbWFnZSBTRVQgdCA9IHJlcGVhdCgneCcsIDMwMDApIHx8IChpZCArIDEwMCkg V0hFUkUgaWQgPD0gNTsNCitTRUxFQ1QgKiBGUk9NIGhvdF9idF9pbWFnZV9jb3VudCgpOw0KK0NP TU1JVDsNCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorU0VUIGVuYWJsZV9iaXRtYXBzY2Fu ID0gb2ZmOw0KK0NSRUFURSBGVU5DVElPTiBob3RfYnRfaW1hZ2VfcGxhbigpIFJFVFVSTlMgU0VU T0YgdGV4dCBMQU5HVUFHRSBwbHBnc3FsIEFTDQorJCQgREVDTEFSRSBsIHRleHQ7IEJFR0lODQor ICBGT1IgbCBJTiBFWFBMQUlOIChDT1NUUyBPRkYpDQorICAgIFNFTEVDVCByaWdodCh0LCAzKSBG Uk9NIGhvdF9idF9pbWFnZSBXSEVSRSB0ID4gcmVwZWF0KCd4JywgMzAwMCkNCisgIExPT1AgUkVU VVJOIE5FWFQgbGVmdChsLCA0MCk7IEVORCBMT09QOyBFTkQgJCQ7DQorU0VMRUNUICogRlJPTSBo b3RfYnRfaW1hZ2VfcGxhbigpOw0KK1NFTEVDVCByaWdodCh0LCAzKSBGUk9NIGhvdF9idF9pbWFn ZSBXSEVSRSB0ID4gcmVwZWF0KCd4JywgMzAwMCkNCisgIE9SREVSIEJZIHQgQ09MTEFURSAiQyIg TElNSVQgMzsNCitTRUxFQ1QgY291bnQoKikgRlJPTSBob3RfYnRfaW1hZ2UgV0hFUkUgdCA+IHJl cGVhdCgneCcsIDMwMDApOw0KK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhvdF9idF9pbWFnZSBXSEVS RSBlID4gcmVwZWF0KCd5JywgMjUwMCk7DQorUkVTRVQgZW5hYmxlX3NlcXNjYW47DQorUkVTRVQg ZW5hYmxlX2JpdG1hcHNjYW47DQorU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdob3RfYnRfaW1hZ2Vf dCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOw0KK1NFTEVDVCBidF9pbmRleF9jaGVjaygnaG90 X2J0X2ltYWdlX2UnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsNCitEUk9QIFRBQkxFIGhvdF9i dF9pbWFnZTsNCitEUk9QIEZVTkNUSU9OIGhvdF9idF9pbWFnZV9jb3VudDsNCitEUk9QIEZVTkNU SU9OIGhvdF9idF9pbWFnZV9wbGFuOw0KKw0KIC0tIGNsZWFudXANCiBEUk9QIFRBQkxFIGJ0dGVz dF9hOw0KIERST1AgVEFCTEUgYnR0ZXN0X2I7DQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2lu ZGV4YW0uc2dtbCBiL2RvYy9zcmMvc2dtbC9pbmRleGFtLnNnbWwNCmluZGV4IGQ5MTE5MmJjMDEx Li4xMTE0OTRiN2I1MyAxMDA2NDQNCi0tLSBhL2RvYy9zcmMvc2dtbC9pbmRleGFtLnNnbWwNCisr KyBiL2RvYy9zcmMvc2dtbC9pbmRleGFtLnNnbWwNCkBAIC05MzcsNyArOTM3LDkgQEAgYW1jb21w YXJlZGF0dW1zIChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLA0KICAgIHR5cGUgb2YgdGhlIHRhYmxl IGNvbHVtbiBvciBpbmRleCBleHByZXNzaW9uLCB3aGljaCBuZWVkIG5vdCBiZSB0aGUgdHlwZQ0K ICAgIHRoZSBpbmRleCBzdG9yZXMpLCB3aG9zZSBsZW5ndGggYW5kIGJ5LXZhbHVlIHByb3BlcnR5 IGFyZQ0KICAgIDxwYXJhbWV0ZXI+dHlwbGVuPC9wYXJhbWV0ZXI+IGFuZCA8cGFyYW1ldGVyPnR5 cGJ5dmFsPC9wYXJhbWV0ZXI+LCBhbmQNCi0gICBhcmUgbm90IGVxdWFsIGJ5dGUgZm9yIGJ5dGUu ICBUaGUgZnVuY3Rpb24gaXMNCisgICBhcmUgbm90IGVxdWFsIGJ5dGUgZm9yIGJ5dGUsIG5vciBv bmNlIGRldG9hc3RlZDogdGhlIGV4ZWN1dG9yIGl0c2VsZg0KKyAgIHRyZWF0cyB0d28gdmFsdWVz IHRoYXQgYXJlIHRoZSBzYW1lLCBidXQgc3RvcmVkIGRpZmZlcmVudGx5LCBhcyBnaXZpbmcNCisg ICB0aGUgc2FtZSBlbnRyaWVzIGluIGFueSBpbmRleC4gIFRoZSBmdW5jdGlvbiBpcw0KICAgIGNh bGxlZCBkdXJpbmcgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiwgYmVmb3JlIHRoZSB0YWJsZSBh Y2Nlc3MgbWV0aG9kDQogICAgaXMsIGZvciBldmVyeSBpbmRleCB0aGF0IHVzZXMgYSBjb2x1bW4g d2hvc2UgdmFsdWUgY2hhbmdlZDsgaWYgZXZlcnkgc3VjaA0KICAgIGluZGV4IGFuc3dlcnMgPGxp dGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gZm9yIGV2ZXJ5IGNoYW5nZWQgY29sdW1uLCB0aGUgdXBkYXRl DQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9z dG9yYWdlLnNnbWwNCmluZGV4IDE1YjVkYWUxNzUyLi42NmNmZTBlN2IxNCAxMDA2NDQNCi0tLSBh L2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwNCisrKyBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNn bWwNCkBAIC0xMTI2LDcgKzExMjYsMTIgQEAgZGF0YS4gRW1wdHkgaW4gb3JkaW5hcnkgdGFibGVz LjwvZW50cnk+DQogICAgICBtZXRob2RzLCB0aGF0IGRlcGVuZHMgb24gdGhlIG1ldGhvZCBhbmQg b24gdGhlIGNoYW5nZSAoc2VlDQogICAgICA8eHJlZiBsaW5rZW5kPSJpbmRleGFtIi8+KS4gIFRo aXMgZG9lcyBub3QgYXBwbHkgdG8gdGhlIGNvbHVtbnMgb2YNCiAgICAgIHVuaXF1ZSBpbmRleGVz IHRoYXQgYSBmb3JlaWduIGtleSBjYW4gcmVmZXJlbmNlLCBvZiB0aGUgcmVwbGljYQ0KLSAgICAg aWRlbnRpdHkgaW5kZXgsIG9yIG9mIGV4Y2x1c2lvbiBjb25zdHJhaW50cy4NCisgICAgIGlkZW50 aXR5IGluZGV4LCBvciBvZiBleGNsdXNpb24gY29uc3RyYWludHMuICBOb3IgaXMgYSBjb2x1bW4g Y2hhbmdlZA0KKyAgICAgd2hvc2UgbmV3IHZhbHVlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbGQgb25l LCBvbmx5IHN0b3JlZCBkaWZmZXJlbnRseSwgYXMNCisgICAgIHdoZW4gdGhlIG9sZCB2YWx1ZSBp cyBjb21wcmVzc2VkIG9yIHN0b3JlZCBvdXQgb2YgbGluZQ0KKyAgICAgKHNlZSA8eHJlZiBsaW5r ZW5kPSJzdG9yYWdlLXRvYXN0Ii8+KSBhbmQgYW4gdXBkYXRlIHdyaXRlcyBpdCBiYWNrOw0KKyAg ICAgZXhjZXB0IGZvciB0aGUgY29sdW1ucyBvZiB0aG9zZSB1bmlxdWUgYW5kIHJlcGxpY2EgaWRl bnRpdHkgaW5kZXhlcywNCisgICAgIHRoaXMgaG9sZHMgZm9yIGV2ZXJ5IGtpbmQgb2YgaW5kZXgu DQogICAgICA8L3BhcmE+DQogICAgPC9saXN0aXRlbT4NCiAgICA8bGlzdGl0ZW0+DQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QNCmluZGV4IDVjMmRmYzI3ZjU4Li5jMzE3ODQwY2IzZCAxMDA2 NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QNCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QNCkBAIC00NSw4ICs0NSwxMSBAQCBUaGUgc2Ft ZSBob2xkcyBmb3IgYSBjb2x1bW4gdGhhdCBpbmRleGVzIGFsc28gc3RvcmUgZGlyZWN0bHksIGlm IGV2ZXJ5DQogaW5kZXggdGhhdCBkb2VzIHNvIGhhcyBhbiBhY2Nlc3MgbWV0aG9kIHRoYXQgY2Fu IHRlbGwsIGZyb20gdGhlIG9sZCBhbmQNCiBuZXcgdmFsdWVzLCB0aGF0IGl0IHdvdWxkIHN0b3Jl IHRoZSBzYW1lIGVudHJpZXMgKGFtY29tcGFyZWRhdHVtcyksIGFuZA0KIHRoZSBjb2x1bW4gaXMg aW4gbm8gY2FuZGlkYXRlIGtleSwgcmVwbGljYSBpZGVudGl0eSBvciBleGNsdXNpb24NCi1jb25z dHJhaW50LiAgVGhlIGV4ZWN1dG9yIHdvcmtzIHRoYXQgb3V0IGJlZm9yZSBjYWxsaW5nIHRoZSB0 YWJsZSBBTSwNCi1hbmQgcGFzc2VzIG9uIG9ubHkgdGhlIGluZGV4ZWQgY29sdW1ucyB3aG9zZSBj aGFuZ2UgbWF0dGVycy4gIEFuIGluZGV4DQorY29uc3RyYWludC4gIEFuZCBhIGNvbHVtbiBvZiBu byBjYW5kaWRhdGUga2V5IG9yIHJlcGxpY2EgaWRlbnRpdHkgaXMgbm90DQorY2hhbmdlZCBpZiBp dHMgdmFsdWUgaXMgdGhlIHNhbWUsIG9ubHkgc3RvcmVkIGRpZmZlcmVudGx5OiBjb21wcmVzc2Vk IG9yDQorb3V0IG9mIGxpbmUgaW4gdGhlIG9sZCB0dXBsZSwgc2F5LCBhbmQgbm90IHlldCBpbiB0 aGUgbmV3IG9uZS4gIFRoZQ0KK2V4ZWN1dG9yIHdvcmtzIHRoYXQgb3V0IGJlZm9yZSBjYWxsaW5n IHRoZSB0YWJsZSBBTSwgYW5kIHBhc3NlcyBvbiBvbmx5DQordGhlIGluZGV4ZWQgY29sdW1ucyB3 aG9zZSBjaGFuZ2UgbWF0dGVycy4gIEFuIGluZGV4DQogdGhhdCBpcyBub3QgeWV0IHJlYWR5IGZv ciBpbnNlcnRzLCBvciB3aG9zZSBidWlsZCBmYWlsZWQsIGNvdW50cyBhcw0KIGNoYW5nZWQgd2hl bmV2ZXIgYSBjb2x1bW4gaXQgcmVmZXJlbmNlcyBkb2VzOyBzZWUgIkNSRUFURSBJTkRFWA0KIENP TkNVUlJFTlRMWSIgYmVsb3cuDQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYw0KaW5kZXggYTBlMmQ5 MDRiZWIuLmEyMjRlMjViYWQyIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMNCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jDQpAQCAtMzMx Nyw2ICszMzE3LDcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwNCiAjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORw0KIAlCaXRtYXBzZXQgICpjaGVja19hdHRyczsNCiAJQml0bWFwc2V0ICAqbmFycm93 YWJsZV9hdHRyczsNCisJQml0bWFwc2V0ICAqa2V5X2F0dHJzOw0KICNlbmRpZg0KIAlUcmFuc2Fj dGlvbklkIHhtYXhfbmV3X3R1cGxlLA0KIAkJCQl4bWF4X29sZF90dXBsZTsNCkBAIC0zMzYwLDYg KzMzNjEsNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLA0KIAlpZF9hdHRycyA9IFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkp Ow0KICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQogCWNoZWNrX2F0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpOw0K KwlrZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhf QVRUUl9CSVRNQVBfS0VZKTsNCiAJbmFycm93YWJsZV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLA0KIAkJCQkJCQkJCQkJCSAgSU5ERVhfQVRUUl9CSVRNQVBfRVhQ UkVTU0lPTik7DQogCXsNCkBAIC0zNDI4LDYgKzM0MzAsNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlv biByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LA0KICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQogCQlibXNfZnJlZShjaGVja19hdHRycyk7 DQogCQlibXNfZnJlZShuYXJyb3dhYmxlX2F0dHJzKTsNCisJCWJtc19mcmVlKGtleV9hdHRycyk7 DQogI2VuZGlmDQogCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxl ciwgZG9uJ3QgZnJlZSBpdCAqLw0KIA0KQEAgLTM3NzcsNiArMzc4MCw3IEBAIGwyOg0KICNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQogCQlibXNfZnJlZShjaGVja19hdHRycyk7DQogCQlibXNf ZnJlZShuYXJyb3dhYmxlX2F0dHJzKTsNCisJCWJtc19mcmVlKGtleV9hdHRycyk7DQogI2VuZGlm DQogCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3Qg ZnJlZSBpdCAqLw0KIA0KQEAgLTM4MTAsMTkgKzM4MTQsNDIgQEAgbDI6DQogCSAqIHdyb25nIHR1 cGxlcywgaXMgY2F1Z2h0LiAgVGhlIGNhbGxlciBtYXkgbGVhdmUgb3V0IGFuIGF0dHJpYnV0ZSB0 aGF0DQogCSAqIGluZGV4ZXMgdXNlIG9ubHkgdGhyb3VnaCBleHByZXNzaW9ucyBvciBhcyBwYXJ0 aWFsIGluZGV4ZXMsIG9yIG9ubHkgaW4NCiAJICogaW5kZXhlcyB0aGF0IGNhbiBjb21wYXJlIGVu dHJpZXMsIGhhdmluZyBmb3VuZCB0aGF0IG5vIGluZGV4J3MgZW50cnkNCi0JICogY2hhbmdlcyAo c2VlIEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkpLCBhbmQgbWF5IHJlcG9ydCBtb3JlOg0K LQkgKiBjb21wYXJpbmcgc2xvdHMsIGl0IGNhbm5vdCBhbHdheXMgdGVsbCB0aGF0IHR3byB2YWx1 ZXMgd2lsbCBiZSBzdG9yZWQNCi0JICogYWxpa2UuDQorCSAqIGNoYW5nZXMgKHNlZSBFeGVjVXBk YXRlTW9kaWZpZWRJZHhBdHRycygpKSwgb3Igb25lIHdob3NlIHZhbHVlIGlzIHRoZQ0KKwkgKiBz YW1lLCBzdG9yZWQgY29tcHJlc3NlZCBvciBvdXQgb2YgbGluZSBpbiBvbmUgb2YgdGhlIHR1cGxl cywgdW5sZXNzIGl0DQorCSAqIGlzIGluIGEgY2FuZGlkYXRlIGtleSBvciB0aGUgcmVwbGljYSBp ZGVudGl0eS4gIEl0IG1heSBhbHNvIHJlcG9ydA0KKwkgKiBtb3JlOiBjb21wYXJpbmcgc2xvdHMs IGl0IGNhbm5vdCBhbHdheXMgdGVsbCB0aGF0IHR3byB2YWx1ZXMgd2lsbCBiZQ0KKwkgKiBzdG9y ZWQgYWxpa2UuDQogCSAqLw0KIAl7DQogCQlCaXRtYXBzZXQgICpjaGFuZ2VkID0gSGVhcFVwZGF0 ZU1vZGlmaWVkSWR4QXR0cnMocmVsYXRpb24sIGNoZWNrX2F0dHJzLA0KIAkJCQkJCQkJCQkJCQkJ ICZvbGR0dXAsIG5ld3R1cCk7DQorCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVz Y3IocmVsYXRpb24pOw0KKwkJaW50CQkJYXR0aWR4ID0gLTE7DQogDQogCQljaGFuZ2VkID0gYm1z X2RlbF9tZW1iZXJzKGNoYW5nZWQsIG5hcnJvd2FibGVfYXR0cnMpOw0KLQkJQXNzZXJ0KGJtc19p c19zdWJzZXQoY2hhbmdlZCwgbW9kaWZpZWRfaWR4X2F0dHJzKSk7DQorCQljaGFuZ2VkID0gYm1z X2RlbF9tZW1iZXJzKGNoYW5nZWQsIG1vZGlmaWVkX2lkeF9hdHRycyk7DQorCQl3aGlsZSAoKGF0 dGlkeCA9IGJtc19uZXh0X21lbWJlcihjaGFuZ2VkLCBhdHRpZHgpKSA+PSAwKQ0KKwkJew0KKwkJ CUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0dGlkeCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1 dGVOdW1iZXI7DQorCQkJRGF0dW0JCXZhbHVlMSwNCisJCQkJCQl2YWx1ZTI7DQorCQkJYm9vbAkJ aXNudWxsMSwNCisJCQkJCQlpc251bGwyOw0KKw0KKwkJCUFzc2VydChhdHRybnVtID4gMCk7DQor CQkJQXNzZXJ0KCFibXNfaXNfbWVtYmVyKGF0dGlkeCwgaWRfYXR0cnMpKTsNCisJCQlBc3NlcnQo IWJtc19pc19tZW1iZXIoYXR0aWR4LCBrZXlfYXR0cnMpKTsNCisJCQlBc3NlcnQoVHVwbGVEZXNj Q29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpLT5hdHRsZW4gPT0gLTEpOw0KKwkJCXZh bHVlMSA9IGhlYXBfZ2V0YXR0cigmb2xkdHVwLCBhdHRybnVtLCB0dXBkZXNjLCAmaXNudWxsMSk7 DQorCQkJdmFsdWUyID0gaGVhcF9nZXRhdHRyKG5ld3R1cCwgYXR0cm51bSwgdHVwZGVzYywgJmlz bnVsbDIpOw0KKwkJCUFzc2VydCghaXNudWxsMSAmJiAhaXNudWxsMik7DQorCQkJQXNzZXJ0KFZB UkFUVF9JU19FWFRFTkRFRChEYXR1bUdldFBvaW50ZXIodmFsdWUxKSkgfHwNCisJCQkJICAgVkFS QVRUX0lTX0VYVEVOREVEKERhdHVtR2V0UG9pbnRlcih2YWx1ZTIpKSk7DQorCQl9DQogCQlibXNf ZnJlZShjaGFuZ2VkKTsNCiAJCWJtc19mcmVlKGNoZWNrX2F0dHJzKTsNCiAJCWJtc19mcmVlKG5h cnJvd2FibGVfYXR0cnMpOw0KKwkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsNCiAJfQ0KICNlbmRpZg0K IA0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMNCmluZGV4IDQwNTRmNmRhMGRm Li5iMmY0Njk0NTYzNyAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jDQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYw0K QEAgLTgyLDYgKzgyLDcgQEANCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiDQogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIg0KICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiDQorI2luY2x1ZGUg InZhcmF0dC5oIg0KIA0KIA0KIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3VwDQpAQCAt MTk5LDExICsyMDAsOTQgQEAgc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VOb3RNYXRj aGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwNCiAJCQkJCQkJCQkJICAgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywNCiAJCQkJCQkJCQkJICAgYm9vbCBjYW5TZXRUYWcpOw0KIA0K Ky8qDQorICogQXJlIHR3byB2YXJsZW5hIHZhbHVlcyB0aGF0IGRpZmZlciBhcyBzdG9yZWQgdGhl IHNhbWUgdmFsdWU/ICBUaGV5IGNhbg0KKyAqIG9ubHkgYmUgaWYgb25lIG9mIHRoZW0gaXMgY29t cHJlc3NlZCBvciBzdG9yZWQgb3V0IG9mIGxpbmU7IG90aGVyd2lzZSB0aGUNCisgKiBzdG9yZWQg Ynl0ZXMgYXJlIHRoZSB2YWx1ZS4gIGRhdHVtX2ltYWdlX2VxKCkgdGhlbiBjb21wYXJlcyB0aGVt DQorICogZGV0b2FzdGVkLCB3aGljaCBpdCBza2lwcyB3aGVuIHRoZWlyIHNpemVzIGRpZmZlci4g IEFueSBpbmRleCBtYWtlcyB0aGUNCisgKiBzYW1lIGVudHJpZXMgZm9yIHRoZSBzYW1lIHZhbHVl LCBzbyBmb3IgSE9UIHRoZSB0d28gYXJlIHRoZSBzYW1lLg0KKyAqLw0KK3N0YXRpYyBib29sDQor VmFybGVuYUltYWdlRXF1YWwoRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1ZTIpDQorew0KKwl2YXJs ZW5hICAgICp2MSA9ICh2YXJsZW5hICopIERhdHVtR2V0UG9pbnRlcih2YWx1ZTEpOw0KKwl2YXJs ZW5hICAgICp2MiA9ICh2YXJsZW5hICopIERhdHVtR2V0UG9pbnRlcih2YWx1ZTIpOw0KKw0KKwlp ZiAoIVZBUkFUVF9JU19FWFRFUk5BTCh2MSkgJiYgIVZBUkFUVF9JU19DT01QUkVTU0VEKHYxKSAm Jg0KKwkJIVZBUkFUVF9JU19FWFRFUk5BTCh2MikgJiYgIVZBUkFUVF9JU19DT01QUkVTU0VEKHYy KSkNCisJCXJldHVybiBmYWxzZTsNCisJcmV0dXJuIGRhdHVtX2ltYWdlX2VxKHZhbHVlMSwgdmFs dWUyLCBmYWxzZSwgLTEpOw0KK30NCisNCisvKg0KKyAqIFJlbW92ZSBmcm9tIGF0dHJzLCB0aGUg aW5kZXhlZCBhdHRyaWJ1dGVzIHdob3NlIHZhbHVlcyBkaWZmZXIgYXMgc3RvcmVkDQorICogYmV0 d2VlbiBvbGRfdHRzIGFuZCBuZXdfdHRzLCB0aG9zZSB0aGF0IGFyZSB0aGUgc2FtZSB2YWx1ZSBz dG9yZWQNCisgKiBkaWZmZXJlbnRseTogdGhlIG9sZCBvbmUgY29tcHJlc3NlZCBvciBvdXQgb2Yg bGluZSwgc2F5LCBhbmQgdGhlIG5ldyBvbmUNCisgKiBub3QgeWV0LCBhcyB3aGVuIGFuIFVQREFU RSB3cml0ZXMgYmFjayB0aGUgdmFsdWUgYSByb3cgaGFzLiAgTm8gaW5kZXggbmVlZHMNCisgKiBh IG5ldyBlbnRyeSBmb3IgdGhlbS4gIEF0dHJpYnV0ZXMgb2YgY2FuZGlkYXRlIGtleXMgYW5kIHRo ZSByZXBsaWNhDQorICogaWRlbnRpdHkgc3RheSwgYXMgdGhlIHRhYmxlIEFNIGRlY2lkZXMgaXRz IGxvY2sgc3RyZW5ndGggYW5kIHdoYXQgaXQgbG9ncw0KKyAqIGZyb20gdGhlIHZhbHVlcyBhcyBz dG9yZWQuDQorICovDQorc3RhdGljIEJpdG1hcHNldCAqDQorRHJvcFJlc3RvcmVkQXR0cnMoUmVs YXRpb24gcmVsYXRpb24sIEJpdG1hcHNldCAqYXR0cnMsDQorCQkJCSAgVHVwbGVUYWJsZVNsb3Qg Km9sZF90dHMsIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzLA0KKwkJCQkgIEVTdGF0ZSAqZXN0YXRl KQ0KK3sNCisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsN CisJQml0bWFwc2V0ICAqa2VlcGF0dHJzID0gTlVMTDsNCisJYm9vbAkJZmV0Y2hlZCA9IGZhbHNl Ow0KKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsNCisJaW50CQkJYXR0aWR4ID0gLTE7DQorDQorCW9s ZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0 YXRlKSk7DQorCXdoaWxlICgoYXR0aWR4ID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRpZHgp KSA+PSAwKQ0KKwl7DQorCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOw0KKwkJRGF0dW0JCXZhbHVlMSwNCisJCQkJCXZhbHVl MjsNCisJCWJvb2wJCW51bGwxLA0KKwkJCQkJbnVsbDI7DQorDQorCQlpZiAoYXR0cm51bSA8PSAw IHx8DQorCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpLT5hdHRs ZW4gIT0gLTEpDQorCQkJY29udGludWU7DQorCQl2YWx1ZTEgPSBzbG90X2dldGF0dHIob2xkX3R0 cywgYXR0cm51bSwgJm51bGwxKTsNCisJCXZhbHVlMiA9IHNsb3RfZ2V0YXR0cihuZXdfdHRzLCBh dHRybnVtLCAmbnVsbDIpOw0KKwkJaWYgKG51bGwxIHx8IG51bGwyIHx8ICFWYXJsZW5hSW1hZ2VF cXVhbCh2YWx1ZTEsIHZhbHVlMikpDQorCQkJY29udGludWU7DQorDQorCQlpZiAoIWZldGNoZWQp DQorCQl7DQorCQkJQml0bWFwc2V0ICAqaWRhdHRyczsNCisNCisJCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsNCisJCQlrZWVwYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1h cChyZWxhdGlvbiwNCisJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOw0KKwkJ CWlkYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCisJCQkJCQkJ CQkJCQkgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsNCisJCQlrZWVwYXR0cnMgPSBi bXNfYWRkX21lbWJlcnMoa2VlcGF0dHJzLCBpZGF0dHJzKTsNCisJCQlibXNfZnJlZShpZGF0dHJz KTsNCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVz dGF0ZSkpOw0KKwkJCWZldGNoZWQgPSB0cnVlOw0KKwkJfQ0KKwkJaWYgKCFibXNfaXNfbWVtYmVy KGF0dGlkeCwga2VlcGF0dHJzKSkNCisJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBh dHRpZHgpOw0KKwl9DQorCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOw0KKwlibXNfZnJl ZShrZWVwYXR0cnMpOw0KKw0KKwlyZXR1cm4gYXR0cnM7DQorfQ0KKw0KIC8qDQogICogRG8gdGhl IG9sZCBhbmQgbmV3IGluZGV4IGRhdHVtcyBkaWZmZXI/ICBDb21wYXJlIGVhY2ggY29sdW1uIGFz IHRoZSB0eXBlDQogICogRm9ybUluZGV4RGF0dW0oKSBwcm9kdWNlZCBpdCBpbjogdGhlIHRhYmxl IGNvbHVtbidzIHR5cGUgb3IgdGhlDQotICogZXhwcmVzc2lvbidzLCB3aGljaCBuZWVkIG5vdCBi ZSB0aGUgdHlwZSB0aGUgaW5kZXggc3RvcmVzLiAgRGF0dW1zIHRoYXQNCi0gKiBkaWZmZXIgYnl0 ZSBmb3IgYnl0ZSBtYXkgc3RpbGwgZ2l2ZSB0aGUgaW5kZXggdGhlIHNhbWUgZW50cmllczsgaWYg aXRzDQorICogZXhwcmVzc2lvbidzLCB3aGljaCBuZWVkIG5vdCBiZSB0aGUgdHlwZSB0aGUgaW5k ZXggc3RvcmVzLiAgQSB0YWJsZSBjb2x1bW4NCisgKiBpcyBub3QgY29tcGFyZWQgYWdhaW46ICJj aGFuZ2VkIiBzYXlzIHdoaWNoIG9mIHRoZSBpbmRleCdzIGNvbHVtbnMgdGhlDQorICogdXBkYXRl IGNoYW5nZWQsIGJvdGggYXMgc3RvcmVkIGFuZCBvbmNlIGRldG9hc3RlZCwgYW5kIHRoZSBvdGhl cnMgZ2l2ZSB0aGUNCisgKiBzYW1lIGVudHJpZXMuICBBbiBleHByZXNzaW9uJ3MgZGF0dW1zIHRo YXQgZGlmZmVyIGJ5dGUgZm9yIGJ5dGUgbWF5IGJlIHRoZQ0KKyAqIHNhbWUgdmFsdWUgc3RvcmVk IGRpZmZlcmVudGx5LCB3aGljaCBnaXZlcyBhbnkgaW5kZXggdGhlIHNhbWUgZW50cmllcy4NCisg KiBPdGhlciBkYXR1bXMgdGhhdCBkaWZmZXIgbWF5IHN0aWxsIGdpdmUgdGhlIGluZGV4IHRoZSBz YW1lIGVudHJpZXM7IGlmIGl0cw0KICAqIGFjY2VzcyBtZXRob2QgY2FuIHRlbGwgKGFtY29tcGFy ZWRhdHVtcyksIGFzayBpdCwgYnV0IG5vdCBmb3IgYSBjb2x1bW4gdGhlDQogICogaW5kZXggY2Fu IHJldHVybiBpbiBpbmRleC1vbmx5IHNjYW5zLCB3aGVyZSBvbmx5IHRoZSBzYW1lIHZhbHVlIHdp bGwgZG8uDQogICoNCkBAIC0yMTQsNiArMjk4LDcgQEAgc3RhdGljIFR1cGxlVGFibGVTbG90ICpF eGVjTWVyZ2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwNCiAgKi8NCiBz dGF0aWMgYm9vbA0KIEluZGV4RGF0dW1zRGlmZmVyKFJlbGF0aW9uIGhlYXBSZWwsIFJlbGF0aW9u IGluZGV4UmVsLCBJbmRleEluZm8gKmluZGV4SW5mbywNCisJCQkJICBjb25zdCBCaXRtYXBzZXQg KmNoYW5nZWQsDQogCQkJCSAgY29uc3QgRGF0dW0gKm9sZF92YWx1ZXMsIGNvbnN0IGJvb2wgKm9s ZF9pc251bGwsDQogCQkJCSAgY29uc3QgRGF0dW0gKm5ld192YWx1ZXMsIGNvbnN0IGJvb2wgKm5l d19pc251bGwpDQogew0KQEAgLTIzMCw5ICszMTUsMTIgQEAgSW5kZXhEYXR1bXNEaWZmZXIoUmVs YXRpb24gaGVhcFJlbCwgUmVsYXRpb24gaW5kZXhSZWwsIEluZGV4SW5mbyAqaW5kZXhJbmZvLA0K IA0KIAkJaWYgKGF0dG51bSAhPSAwKQ0KIAkJew0KLQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9 IFR1cGxlRGVzY0F0dHIoUmVsYXRpb25HZXREZXNjcihoZWFwUmVsKSwNCi0JCQkJCQkJCQkJCQkg IGF0dG51bSAtIDEpOw0KKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dDsNCiANCisJCQlpZiAoIWJt c19pc19tZW1iZXIoYXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwN CisJCQkJCQkJICAgY2hhbmdlZCkpDQorCQkJCWNvbnRpbnVlOw0KKwkJCWF0dCA9IFR1cGxlRGVz Y0F0dHIoUmVsYXRpb25HZXREZXNjcihoZWFwUmVsKSwgYXR0bnVtIC0gMSk7DQogCQkJdHlwaWQg PSBhdHQtPmF0dHR5cGlkOw0KIAkJCXR5cGxlbiA9IGF0dC0+YXR0bGVuOw0KIAkJCXR5cGJ5dmFs ID0gYXR0LT5hdHRieXZhbDsNCkBAIC0yNDYsOCArMzM0LDEyIEBAIEluZGV4RGF0dW1zRGlmZmVy KFJlbGF0aW9uIGhlYXBSZWwsIFJlbGF0aW9uIGluZGV4UmVsLCBJbmRleEluZm8gKmluZGV4SW5m bywNCiANCiAJCWlmIChvbGRfaXNudWxsW2ldICE9IG5ld19pc251bGxbaV0pDQogCQkJcmV0dXJu IHRydWU7DQotCQlpZiAob2xkX2lzbnVsbFtpXSB8fA0KLQkJCWRhdHVtSXNFcXVhbChvbGRfdmFs dWVzW2ldLCBuZXdfdmFsdWVzW2ldLCB0eXBieXZhbCwgdHlwbGVuKSkNCisJCWlmIChvbGRfaXNu dWxsW2ldKQ0KKwkJCWNvbnRpbnVlOw0KKwkJaWYgKGF0dG51bSA9PSAwICYmDQorCQkJKGRhdHVt SXNFcXVhbChvbGRfdmFsdWVzW2ldLCBuZXdfdmFsdWVzW2ldLCB0eXBieXZhbCwgdHlwbGVuKSB8 fA0KKwkJCSAodHlwbGVuID09IC0xICYmDQorCQkJICBWYXJsZW5hSW1hZ2VFcXVhbChvbGRfdmFs dWVzW2ldLCBuZXdfdmFsdWVzW2ldKSkpKQ0KIAkJCWNvbnRpbnVlOw0KIAkJaWYgKGNtcCA9PSBO VUxMIHx8IGluZGV4X2Nhbl9yZXR1cm4oaW5kZXhSZWwsIGkgKyAxKSB8fA0KIAkJCSFjbXAoaW5k ZXhSZWwsIGluZGV4SW5mbywgaSArIDEsIHR5cGlkLCB0eXBsZW4sIHR5cGJ5dmFsLA0KQEAgLTI1 OSw3ICszNTEsOCBAQCBJbmRleERhdHVtc0RpZmZlcihSZWxhdGlvbiBoZWFwUmVsLCBSZWxhdGlv biBpbmRleFJlbCwgSW5kZXhJbmZvICppbmRleEluZm8sDQogDQogLyoNCiAgKiBXb3VsZCB0aGUg dXBkYXRlIGZyb20gb2xkX3R0cyB0byBuZXdfdHRzIGdpdmUgdGhpcyBpbmRleCBhIG5ldyBlbnRy eSwgb3INCi0gKiB0YWtlIG9uZSBhd2F5Pw0KKyAqIHRha2Ugb25lIGF3YXk/ICAiY2hhbmdlZCIg YXJlIHRoZSBhdHRyaWJ1dGVzIHRoZSB1cGRhdGUgY2hhbmdlZCB0aGF0IHRoZQ0KKyAqIGluZGV4 IHVzZXMsIGFzIGZvciBJbmRleERhdHVtc0RpZmZlcigpLg0KICAqDQogICogVGhlIGluZGV4IGRh dHVtcyBhcmUgZm9ybWVkIGluIHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQsIHdoaWNoDQog ICogY2FsbGVycyByZXNldCBmb3IgZWFjaCByb3cuICBUaGUgcHJlZGljYXRlJ3MgRXhwclN0YXRl IGlzIGtlcHQgaW4gdGhlDQpAQCAtMjY4LDggKzM2MSw5IEBAIEluZGV4RGF0dW1zRGlmZmVyKFJl bGF0aW9uIGhlYXBSZWwsIFJlbGF0aW9uIGluZGV4UmVsLCBJbmRleEluZm8gKmluZGV4SW5mbywN CiAgKi8NCiBzdGF0aWMgYm9vbA0KIEluZGV4RW50cnlDaGFuZ2VzKFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8sIFJlbGF0aW9uIGluZGV4UmVsLA0KLQkJCQkgIEluZGV4SW5mbyAqaW5kZXhJ bmZvLCBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywNCi0JCQkJICBUdXBsZVRhYmxlU2xvdCAqbmV3 X3R0cywgRVN0YXRlICplc3RhdGUpDQorCQkJCSAgSW5kZXhJbmZvICppbmRleEluZm8sIGNvbnN0 IEJpdG1hcHNldCAqY2hhbmdlZCwNCisJCQkJICBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywgVHVw bGVUYWJsZVNsb3QgKm5ld190dHMsDQorCQkJCSAgRVN0YXRlICplc3RhdGUpDQogew0KIAlFeHBy Q29udGV4dCAqZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7DQogCVR1 cGxlVGFibGVTbG90ICpzYXZlX3NjYW50dXBsZSA9IGVjb250ZXh0LT5lY3h0X3NjYW50dXBsZTsN CkBAIC0zMTQsNyArNDA4LDcgQEAgSW5kZXhFbnRyeUNoYW5nZXMoUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywgUmVsYXRpb24gaW5kZXhSZWwsDQogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNhdmVfc2NhbnR1cGxlOw0KIA0KIAlyZXN1bHQgPSBJbmRleERhdHVtc0RpZmZlcihyZXN1 bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsIGluZGV4UmVsLA0KLQkJCQkJCQkgICBpbmRleElu Zm8sIG9sZF92YWx1ZXMsIG9sZF9pc251bGwsDQorCQkJCQkJCSAgIGluZGV4SW5mbywgY2hhbmdl ZCwgb2xkX3ZhbHVlcywgb2xkX2lzbnVsbCwNCiAJCQkJCQkJICAgbmV3X3ZhbHVlcywgbmV3X2lz bnVsbCk7DQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOw0KIAlyZXR1cm4gcmVzdWx0 Ow0KQEAgLTQwMiw3ICs0OTYsNyBAQCBJbmRleFVuYWZmZWN0ZWQoUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywgaW50IGksIEJpdG1hcHNldCAqbWluZSwNCiAJew0KIAkJaWYgKEluZGV4RW50 cnlDaGFuZ2VzKHJlc3VsdFJlbEluZm8sDQogCQkJCQkJCSAgcmVzdWx0UmVsSW5mby0+cmlfSW5k ZXhSZWxhdGlvbkRlc2NzW2ldLA0KLQkJCQkJCQkgIGluZGV4SW5mbywgb2xkX3R0cywgbmV3X3R0 cywNCisJCQkJCQkJICBpbmRleEluZm8sIG1pbmUsIG9sZF90dHMsIG5ld190dHMsDQogCQkJCQkJ CSAgZXN0YXRlKSkNCiAJCQllbG9nKEVSUk9SLCAiaW5kZXggXCIlc1wiIHByb3ZlbiB1bmFmZmVj dGVkIGJ5IFVQREFURSwgYnV0IGl0cyBlbnRyeSBjaGFuZ2VkIiwNCiAJCQkJIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25EZXNjc1tpXSkpOw0K QEAgLTQxNSw3ICs1MDksNyBAQCBJbmRleFVuYWZmZWN0ZWQoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywgaW50IGksIEJpdG1hcHNldCAqbWluZSwNCiANCiAJcmV0dXJuICFJbmRleEVudHJ5 Q2hhbmdlcyhyZXN1bHRSZWxJbmZvLA0KIAkJCQkJCQkgIHJlc3VsdFJlbEluZm8tPnJpX0luZGV4 UmVsYXRpb25EZXNjc1tpXSwNCi0JCQkJCQkJICBpbmRleEluZm8sIG9sZF90dHMsIG5ld190dHMs DQorCQkJCQkJCSAgaW5kZXhJbmZvLCBtaW5lLCBvbGRfdHRzLCBuZXdfdHRzLA0KIAkJCQkJCQkg IGVzdGF0ZSk7DQogfQ0KIA0KQEAgLTQ4NSw2ICs1NzksMTAgQEAgRXhlY1VwZGF0ZU1vZGlmaWVk SWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywNCiANCiAJYXR0cnMgPSB0YWJs ZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycyhyZWxhdGlvbiwgb2xkX3R0cywgbmV3X3R0cyk7DQog DQorCWlmIChibXNfaXNfZW1wdHkoYXR0cnMpKQ0KKwkJcmV0dXJuIGF0dHJzOw0KKw0KKwlhdHRy cyA9IERyb3BSZXN0b3JlZEF0dHJzKHJlbGF0aW9uLCBhdHRycywgb2xkX3R0cywgbmV3X3R0cywg ZXN0YXRlKTsNCiAJaWYgKGJtc19pc19lbXB0eShhdHRycykpDQogCQlyZXR1cm4gYXR0cnM7DQog DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dA0KaW5kZXggMjc2YTg0 NWEzZTkuLmZjODIwNjcxMDYwIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ob3RfdXBkYXRlcy5vdXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3Vw ZGF0ZXMub3V0DQpAQCAtNjcxLDcgKzY3MSw3IEBAIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2Uo DQogTk9USUNFOiAgdGFibGUgImhvdF9leHByX3Rlc3QiIGRvZXMgbm90IGV4aXN0LCBza2lwcGlu Zw0KICB1cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAgIDEwIHwgICAwDQor ICAgICAgMTAgfCAgMTANCiAoMSByb3cpDQogDQogU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0K QEAgLTY5Miw3ICs2OTIsNyBAQCBTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KICAgJCRVUERB VEUgaG90X2V4cHJfdGVzdCBTRVQgdCA9IHJlcGVhdCgneCcsIDMwMDApIHx8IGlkLCB4ID0geCAr IDEkJCk7DQogIHVwZGF0ZWQgfCBob3QgDQogLS0tLS0tLS0tKy0tLS0tDQotICAgICAgMTAgfCAg IDANCisgICAgICAxMCB8ICAxMA0KICgxIHJvdykNCiANCiAtLSBUaGUgc2FtZSB0aHJvdWdoIGFu IGV4cHJlc3Npb24gdGhhdCByZXR1cm5zIHRoZSBjb2x1bW4ncyB2YWx1ZSBhcyBpcy4NCkBAIC03 MDMsNyArNzAzLDcgQEAgU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCiAgICQkVVBEQVRFIGhv dF9leHByX3Rlc3QgU0VUIHQgPSByZXBlYXQoJ3gnLCAzMDAwKSB8fCBpZCwgeCA9IHggKyAxJCQp Ow0KICB1cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAgIDEwIHwgICAwDQor ICAgICAgMTAgfCAgMTANCiAoMSByb3cpDQogDQogLS0gLi4uIGJ1dCBub3QgZm9yIGEgY29sdW1u IG9mIGEgdW5pcXVlIGluZGV4LCB3aGljaCB0aGUgdGFibGUncyBsb2NrDQotLSANCjIuNTAuMQ0K DQo= --b1=_JOJqBCShOBM0v7cQagv7DqhtakEMIzlW8oPdD2Ngi4--