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 1xMqDA-00000002ECh-3qM5 for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Oct 2026 17:16:18 +0000 Received: from localhost ([127.0.0.1]:56242 helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xMqCA-0000000B2RA-0TSU for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Oct 2026 17:15:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]:34188) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xMqC9-0000000B2Qe-0yfM for pgsql-hackers@lists.postgresql.org; Fri, 30 Oct 2026 17:15:13 +0000 Received: from mail-4320.protonmail.ch ([185.70.43.20]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xMqBx-00000001n6u-0tYK for pgsql-hackers@lists.postgresql.org; Fri, 30 Oct 2026 17:15:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; s=protonmail; t=1793380489; x=1793639689; bh=MWKCGMV0ndDUaXM5Pdlpm1uzqpQudpvz1fv7lIfhFuk=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=rR4BHBmuC9ddofqOPLj8xvZERBEMejXuI29p4uszk/E+HR5WFTRaHq8vXVhj5Qhmb G2hbonk1aEM6xidqkRA0OKVThvuYKMG+f5vNDFFwsmUKVNAVyBjCcHDT4QQQ8pL5vG OGHMJHffg7pPcOKgVhrdktCX+j5mYwp6aAr4GQFfgOFaM1GoziG5fWn81PCXGnpQT0 U99oLLW8Ujl4y8fGZGDACN5jIlW3apDNqrIqK+0Xgjg3x8pw4fHRhKR15iv0YTM+X0 ypqWOpFiBsQ4jQ0x9g3eC0txI6OYqGq8Av9upWtePJ3kAHIXLYnL91jW6xpfRIy8RI GuwqbN8yHdI5Q== Date: Fri, 30 Oct 2026 17:14:43 +0000 To: pgsql-hackers@lists.postgresql.org From: Greg Burd Subject: Re: Expanding HOT updates for expression and partial indexes Message-ID: In-Reply-To: References: <7b8681a578b5fe77103948eeb7b5cdd80fabad5d.camel@j-davis.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: 728036c15f9ac629212799c3ef6b6ecc9b505a98 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Let's try to make the cf-bot happy again. v45 attached. -greg --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0006-Treat-an-indexed-value-stored-differently-but-un.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0006-Treat-an-indexed-value-stored-differently-but-un.patch RnJvbSA2NGZkM2RjYWNmOWIwMWM3ZTNlZWMwMmVmZmJlN2MwZWQ0NGY1MjZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBGcmks IDE2IE9jdCAyMDI2IDEyOjI5OjQyIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDYvOF0gVHJl 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 aGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYw0KaW5kZXggYTY5YzVm MmRlODkuLmJkZTk4ZWY2MGVhIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv 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 c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMNCmluZGV4IGFlYmJiNGRlMGM1 Li44ZWY3NWU2NmIwNSAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jDQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYw0K QEAgLTgyLDYgKzgyLDcgQEANCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiDQogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIg0KICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiDQorI2luY2x1ZGUg InZhcmF0dC5oIg0KIA0KIA0KIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3VwDQpAQCAt MTk5LDExICsyMDAsOTQgQEAgc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VOb3RNYXRj aGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwNCiAJCQkJCQkJCQkJICAgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywNCiAJCQkJCQkJCQkJICAgYm9vbCBjYW5TZXRUYWcpOw0KIA0K Ky8qDQorICogQXJlIHR3byB2YXJsZW5hIHZhbHVlcyB0aGF0IGRpZmZlciBhcyBzdG9yZWQgdGhl IHNhbWUgdmFsdWU/ICBUaGV5IGNhbg0KKyAqIG9ubHkgYmUgaWYgb25lIG9mIHRoZW0gaXMgY29t cHJlc3NlZCBvciBzdG9yZWQgb3V0IG9mIGxpbmU7IG90aGVyd2lzZSB0aGUNCisgKiBzdG9yZWQg Ynl0ZXMgYXJlIHRoZSB2YWx1ZS4gIGRhdHVtX2ltYWdlX2VxKCkgdGhlbiBjb21wYXJlcyB0aGVt DQorICogZGV0b2FzdGVkLCB3aGljaCBpdCBza2lwcyB3aGVuIHRoZWlyIHNpemVzIGRpZmZlci4g IEFueSBpbmRleCBtYWtlcyB0aGUNCisgKiBzYW1lIGVudHJpZXMgZm9yIHRoZSBzYW1lIHZhbHVl LCBzbyBmb3IgSE9UIHRoZSB0d28gYXJlIHRoZSBzYW1lLg0KKyAqLw0KK3N0YXRpYyBib29sDQor VmFybGVuYUVxdWFsRGV0b2FzdGVkKERhdHVtIHZhbHVlMSwgRGF0dW0gdmFsdWUyKQ0KK3sNCisJ dmFybGVuYSAgICAqdjEgPSAodmFybGVuYSAqKSBEYXR1bUdldFBvaW50ZXIodmFsdWUxKTsNCisJ dmFybGVuYSAgICAqdjIgPSAodmFybGVuYSAqKSBEYXR1bUdldFBvaW50ZXIodmFsdWUyKTsNCisN CisJaWYgKCFWQVJBVFRfSVNfRVhURVJOQUwodjEpICYmICFWQVJBVFRfSVNfQ09NUFJFU1NFRCh2 MSkgJiYNCisJCSFWQVJBVFRfSVNfRVhURVJOQUwodjIpICYmICFWQVJBVFRfSVNfQ09NUFJFU1NF RCh2MikpDQorCQlyZXR1cm4gZmFsc2U7DQorCXJldHVybiBkYXR1bV9pbWFnZV9lcSh2YWx1ZTEs IHZhbHVlMiwgZmFsc2UsIC0xKTsNCit9DQorDQorLyoNCisgKiBSZW1vdmUgZnJvbSBhdHRycywg dGhlIGluZGV4ZWQgYXR0cmlidXRlcyB3aG9zZSB2YWx1ZXMgZGlmZmVyIGFzIHN0b3JlZA0KKyAq IGJldHdlZW4gb2xkX3R0cyBhbmQgbmV3X3R0cywgdGhvc2UgdGhhdCBhcmUgdGhlIHNhbWUgdmFs dWUgc3RvcmVkDQorICogZGlmZmVyZW50bHk6IHRoZSBvbGQgb25lIGNvbXByZXNzZWQgb3Igb3V0 IG9mIGxpbmUsIHNheSwgYW5kIHRoZSBuZXcgb25lDQorICogbm90IHlldCwgYXMgd2hlbiBhbiBV UERBVEUgd3JpdGVzIGJhY2sgdGhlIHZhbHVlIGEgcm93IGhhcy4gIE5vIGluZGV4IG5lZWRzDQor ICogYSBuZXcgZW50cnkgZm9yIHRoZW0uICBBdHRyaWJ1dGVzIG9mIGNhbmRpZGF0ZSBrZXlzIGFu ZCB0aGUgcmVwbGljYQ0KKyAqIGlkZW50aXR5IHN0YXksIGFzIHRoZSB0YWJsZSBBTSBkZWNpZGVz IGl0cyBsb2NrIHN0cmVuZ3RoIGFuZCB3aGF0IGl0IGxvZ3MNCisgKiBmcm9tIHRoZSB2YWx1ZXMg YXMgc3RvcmVkLg0KKyAqLw0KK3N0YXRpYyBCaXRtYXBzZXQgKg0KK0Ryb3BSZXN0b3JlZEF0dHJz KFJlbGF0aW9uIHJlbGF0aW9uLCBCaXRtYXBzZXQgKmF0dHJzLA0KKwkJCQkgIFR1cGxlVGFibGVT bG90ICpvbGRfdHRzLCBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cywNCisJCQkJICBFU3RhdGUgKmVz dGF0ZSkNCit7DQorCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlv bik7DQorCUJpdG1hcHNldCAgKmtlZXBhdHRycyA9IE5VTEw7DQorCWJvb2wJCWZldGNoZWQgPSBm YWxzZTsNCisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7DQorCWludAkJCWF0dGlkeCA9IC0xOw0KKw0K KwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0 KGVzdGF0ZSkpOw0KKwl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0 aWR4KSkgPj0gMCkNCisJew0KKwkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsNCisJCURhdHVtCQl2YWx1ZTEsDQorCQkJCQl2 YWx1ZTI7DQorCQlib29sCQludWxsMSwNCisJCQkJCW51bGwyOw0KKw0KKwkJaWYgKGF0dHJudW0g PD0gMCB8fA0KKwkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRlc2MsIGF0dHJudW0gLSAxKS0+ YXR0bGVuICE9IC0xKQ0KKwkJCWNvbnRpbnVlOw0KKwkJdmFsdWUxID0gc2xvdF9nZXRhdHRyKG9s ZF90dHMsIGF0dHJudW0sICZudWxsMSk7DQorCQl2YWx1ZTIgPSBzbG90X2dldGF0dHIobmV3X3R0 cywgYXR0cm51bSwgJm51bGwyKTsNCisJCWlmIChudWxsMSB8fCBudWxsMiB8fCAhVmFybGVuYUVx dWFsRGV0b2FzdGVkKHZhbHVlMSwgdmFsdWUyKSkNCisJCQljb250aW51ZTsNCisNCisJCWlmICgh ZmV0Y2hlZCkNCisJCXsNCisJCQlCaXRtYXBzZXQgICppZGF0dHJzOw0KKw0KKwkJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOw0KKwkJCWtlZXBhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLA0KKwkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0tF WSk7DQorCQkJaWRhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLA0K KwkJCQkJCQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOw0KKwkJCWtlZXBh dHRycyA9IGJtc19hZGRfbWVtYmVycyhrZWVwYXR0cnMsIGlkYXR0cnMpOw0KKwkJCWJtc19mcmVl KGlkYXR0cnMpOw0KKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNv bnRleHQoZXN0YXRlKSk7DQorCQkJZmV0Y2hlZCA9IHRydWU7DQorCQl9DQorCQlpZiAoIWJtc19p c19tZW1iZXIoYXR0aWR4LCBrZWVwYXR0cnMpKQ0KKwkJCWF0dHJzID0gYm1zX2RlbF9tZW1iZXIo YXR0cnMsIGF0dGlkeCk7DQorCX0NCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7DQor CWJtc19mcmVlKGtlZXBhdHRycyk7DQorDQorCXJldHVybiBhdHRyczsNCit9DQorDQogLyoNCiAg KiBEbyB0aGUgb2xkIGFuZCBuZXcgaW5kZXggZGF0dW1zIGRpZmZlcj8gIENvbXBhcmUgZWFjaCBj b2x1bW4gYXMgdGhlIHR5cGUNCiAgKiBGb3JtSW5kZXhEYXR1bSgpIHByb2R1Y2VkIGl0IGluOiB0 aGUgdGFibGUgY29sdW1uJ3MgdHlwZSBvciB0aGUNCi0gKiBleHByZXNzaW9uJ3MsIHdoaWNoIG5l ZWQgbm90IGJlIHRoZSB0eXBlIHRoZSBpbmRleCBzdG9yZXMuICBEYXR1bXMgdGhhdA0KLSAqIGRp ZmZlciBieXRlIGZvciBieXRlIG1heSBzdGlsbCBnaXZlIHRoZSBpbmRleCB0aGUgc2FtZSBlbnRy aWVzOyBpZiBpdHMNCisgKiBleHByZXNzaW9uJ3MsIHdoaWNoIG5lZWQgbm90IGJlIHRoZSB0eXBl IHRoZSBpbmRleCBzdG9yZXMuICBBIHRhYmxlIGNvbHVtbg0KKyAqIGlzIG5vdCBjb21wYXJlZCBh Z2FpbjogImNoYW5nZWQiIHNheXMgd2hpY2ggb2YgdGhlIGluZGV4J3MgY29sdW1ucyB0aGUNCisg KiB1cGRhdGUgY2hhbmdlZCwgYm90aCBhcyBzdG9yZWQgYW5kIG9uY2UgZGV0b2FzdGVkLCBhbmQg dGhlIG90aGVycyBnaXZlIHRoZQ0KKyAqIHNhbWUgZW50cmllcy4gIEFuIGV4cHJlc3Npb24ncyBk YXR1bXMgdGhhdCBkaWZmZXIgYnl0ZSBmb3IgYnl0ZSBtYXkgYmUgdGhlDQorICogc2FtZSB2YWx1 ZSBzdG9yZWQgZGlmZmVyZW50bHksIHdoaWNoIGdpdmVzIGFueSBpbmRleCB0aGUgc2FtZSBlbnRy aWVzLg0KKyAqIE90aGVyIGRhdHVtcyB0aGF0IGRpZmZlciBtYXkgc3RpbGwgZ2l2ZSB0aGUgaW5k ZXggdGhlIHNhbWUgZW50cmllczsgaWYgaXRzDQogICogYWNjZXNzIG1ldGhvZCBjYW4gdGVsbCAo YW1jb21wYXJlZGF0dW1zKSwgYXNrIGl0LCBidXQgbm90IGZvciBhIGNvbHVtbiB0aGUNCiAgKiBp bmRleCBjYW4gcmV0dXJuIGluIGluZGV4LW9ubHkgc2NhbnMsIHdoZXJlIG9ubHkgdGhlIHNhbWUg dmFsdWUgd2lsbCBkby4NCiAgKg0KQEAgLTIxNCw2ICsyOTgsNyBAQCBzdGF0aWMgVHVwbGVUYWJs ZVNsb3QgKkV4ZWNNZXJnZU5vdE1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LA0K ICAqLw0KIHN0YXRpYyBib29sDQogSW5kZXhEYXR1bXNEaWZmZXIoUmVsYXRpb24gaGVhcFJlbCwg UmVsYXRpb24gaW5kZXhSZWwsIEluZGV4SW5mbyAqaW5kZXhJbmZvLA0KKwkJCQkgIGNvbnN0IEJp dG1hcHNldCAqY2hhbmdlZCwNCiAJCQkJICBjb25zdCBEYXR1bSAqb2xkX3ZhbHVlcywgY29uc3Qg Ym9vbCAqb2xkX2lzbnVsbCwNCiAJCQkJICBjb25zdCBEYXR1bSAqbmV3X3ZhbHVlcywgY29uc3Qg Ym9vbCAqbmV3X2lzbnVsbCkNCiB7DQpAQCAtMjMwLDkgKzMxNSwxMiBAQCBJbmRleERhdHVtc0Rp ZmZlcihSZWxhdGlvbiBoZWFwUmVsLCBSZWxhdGlvbiBpbmRleFJlbCwgSW5kZXhJbmZvICppbmRl eEluZm8sDQogDQogCQlpZiAoYXR0bnVtICE9IDApDQogCQl7DQotCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihSZWxhdGlvbkdldERlc2NyKGhlYXBSZWwpLA0KLQkJCQkJ CQkJCQkJCSAgYXR0bnVtIC0gMSk7DQorCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0Ow0KIA0KKwkJ CWlmICghYm1zX2lzX21lbWJlcihhdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyLA0KKwkJCQkJCQkgICBjaGFuZ2VkKSkNCisJCQkJY29udGludWU7DQorCQkJYXR0ID0g VHVwbGVEZXNjQXR0cihSZWxhdGlvbkdldERlc2NyKGhlYXBSZWwpLCBhdHRudW0gLSAxKTsNCiAJ CQl0eXBpZCA9IGF0dC0+YXR0dHlwaWQ7DQogCQkJdHlwbGVuID0gYXR0LT5hdHRsZW47DQogCQkJ dHlwYnl2YWwgPSBhdHQtPmF0dGJ5dmFsOw0KQEAgLTI0Niw4ICszMzQsMTIgQEAgSW5kZXhEYXR1 bXNEaWZmZXIoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gaW5kZXhSZWwsIEluZGV4SW5mbyAq aW5kZXhJbmZvLA0KIA0KIAkJaWYgKG9sZF9pc251bGxbaV0gIT0gbmV3X2lzbnVsbFtpXSkNCiAJ CQlyZXR1cm4gdHJ1ZTsNCi0JCWlmIChvbGRfaXNudWxsW2ldIHx8DQotCQkJZGF0dW1Jc0VxdWFs KG9sZF92YWx1ZXNbaV0sIG5ld192YWx1ZXNbaV0sIHR5cGJ5dmFsLCB0eXBsZW4pKQ0KKwkJaWYg KG9sZF9pc251bGxbaV0pDQorCQkJY29udGludWU7DQorCQlpZiAoYXR0bnVtID09IDAgJiYNCisJ CQkoZGF0dW1Jc0VxdWFsKG9sZF92YWx1ZXNbaV0sIG5ld192YWx1ZXNbaV0sIHR5cGJ5dmFsLCB0 eXBsZW4pIHx8DQorCQkJICh0eXBsZW4gPT0gLTEgJiYNCisJCQkgIFZhcmxlbmFFcXVhbERldG9h c3RlZChvbGRfdmFsdWVzW2ldLCBuZXdfdmFsdWVzW2ldKSkpKQ0KIAkJCWNvbnRpbnVlOw0KIAkJ aWYgKGNtcCA9PSBOVUxMIHx8IGluZGV4X2Nhbl9yZXR1cm4oaW5kZXhSZWwsIGkgKyAxKSB8fA0K IAkJCSFjbXAoaW5kZXhSZWwsIGluZGV4SW5mbywgaSArIDEsIHR5cGlkLCB0eXBsZW4sIHR5cGJ5 dmFsLA0KQEAgLTI1OSw3ICszNTEsOCBAQCBJbmRleERhdHVtc0RpZmZlcihSZWxhdGlvbiBoZWFw UmVsLCBSZWxhdGlvbiBpbmRleFJlbCwgSW5kZXhJbmZvICppbmRleEluZm8sDQogDQogLyoNCiAg KiBXb3VsZCB0aGUgdXBkYXRlIGZyb20gb2xkX3R0cyB0byBuZXdfdHRzIGdpdmUgdGhpcyBpbmRl eCBhIG5ldyBlbnRyeSwgb3INCi0gKiB0YWtlIG9uZSBhd2F5Pw0KKyAqIHRha2Ugb25lIGF3YXk/ ICAiY2hhbmdlZCIgYXJlIHRoZSBhdHRyaWJ1dGVzIHRoZSB1cGRhdGUgY2hhbmdlZCB0aGF0IHRo ZQ0KKyAqIGluZGV4IHVzZXMsIGFzIGZvciBJbmRleERhdHVtc0RpZmZlcigpLg0KICAqDQogICog VGhlIGluZGV4IGRhdHVtcyBhcmUgZm9ybWVkIGluIHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRl eHQsIHdoaWNoDQogICogY2FsbGVycyByZXNldCBmb3IgZWFjaCByb3cuICBUaGUgcHJlZGljYXRl J3MgRXhwclN0YXRlIGlzIGtlcHQgaW4gdGhlDQpAQCAtMjY4LDggKzM2MSw5IEBAIEluZGV4RGF0 dW1zRGlmZmVyKFJlbGF0aW9uIGhlYXBSZWwsIFJlbGF0aW9uIGluZGV4UmVsLCBJbmRleEluZm8g KmluZGV4SW5mbywNCiAgKi8NCiBzdGF0aWMgYm9vbA0KIEluZGV4RW50cnlDaGFuZ2VzKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIFJlbGF0aW9uIGluZGV4UmVsLA0KLQkJCQkgIEluZGV4 SW5mbyAqaW5kZXhJbmZvLCBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywNCi0JCQkJICBUdXBsZVRh YmxlU2xvdCAqbmV3X3R0cywgRVN0YXRlICplc3RhdGUpDQorCQkJCSAgSW5kZXhJbmZvICppbmRl eEluZm8sIGNvbnN0IEJpdG1hcHNldCAqY2hhbmdlZCwNCisJCQkJICBUdXBsZVRhYmxlU2xvdCAq b2xkX3R0cywgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMsDQorCQkJCSAgRVN0YXRlICplc3RhdGUp DQogew0KIAlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVz dGF0ZSk7DQogCVR1cGxlVGFibGVTbG90ICpzYXZlX3NjYW50dXBsZSA9IGVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZTsNCkBAIC0zMTQsNyArNDA4LDcgQEAgSW5kZXhFbnRyeUNoYW5nZXMoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgUmVsYXRpb24gaW5kZXhSZWwsDQogCWVjb250ZXh0LT5l Y3h0X3NjYW50dXBsZSA9IHNhdmVfc2NhbnR1cGxlOw0KIA0KIAlyZXN1bHQgPSBJbmRleERhdHVt c0RpZmZlcihyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsIGluZGV4UmVsLA0KLQkJCQkJ CQkgICBpbmRleEluZm8sIG9sZF92YWx1ZXMsIG9sZF9pc251bGwsDQorCQkJCQkJCSAgIGluZGV4 SW5mbywgY2hhbmdlZCwgb2xkX3ZhbHVlcywgb2xkX2lzbnVsbCwNCiAJCQkJCQkJICAgbmV3X3Zh bHVlcywgbmV3X2lzbnVsbCk7DQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOw0KIAly ZXR1cm4gcmVzdWx0Ow0KQEAgLTQwMiw3ICs0OTYsNyBAQCBJbmRleFVuYWZmZWN0ZWQoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgaW50IGksIEJpdG1hcHNldCAqbWluZSwNCiAJew0KIAkJ aWYgKEluZGV4RW50cnlDaGFuZ2VzKHJlc3VsdFJlbEluZm8sDQogCQkJCQkJCSAgcmVzdWx0UmVs SW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldLA0KLQkJCQkJCQkgIGluZGV4SW5mbywgb2xk X3R0cywgbmV3X3R0cywNCisJCQkJCQkJICBpbmRleEluZm8sIG1pbmUsIG9sZF90dHMsIG5ld190 dHMsDQogCQkJCQkJCSAgZXN0YXRlKSkNCiAJCQllbG9nKEVSUk9SLCAiaW5kZXggXCIlc1wiIHBy b3ZlbiB1bmFmZmVjdGVkIGJ5IFVQREFURSwgYnV0IGl0cyBlbnRyeSBjaGFuZ2VkIiwNCiAJCQkJ IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25E ZXNjc1tpXSkpOw0KQEAgLTQxNSw3ICs1MDksNyBAQCBJbmRleFVuYWZmZWN0ZWQoUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywgaW50IGksIEJpdG1hcHNldCAqbWluZSwNCiANCiAJcmV0dXJu ICFJbmRleEVudHJ5Q2hhbmdlcyhyZXN1bHRSZWxJbmZvLA0KIAkJCQkJCQkgIHJlc3VsdFJlbElu Zm8tPnJpX0luZGV4UmVsYXRpb25EZXNjc1tpXSwNCi0JCQkJCQkJICBpbmRleEluZm8sIG9sZF90 dHMsIG5ld190dHMsDQorCQkJCQkJCSAgaW5kZXhJbmZvLCBtaW5lLCBvbGRfdHRzLCBuZXdfdHRz LA0KIAkJCQkJCQkgIGVzdGF0ZSk7DQogfQ0KIA0KQEAgLTQ4NCw2ICs1NzgsMTAgQEAgRXhlY1Vw ZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywNCiANCiAJ YXR0cnMgPSB0YWJsZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycyhyZWxhdGlvbiwgb2xkX3R0cywg bmV3X3R0cyk7DQogDQorCWlmIChibXNfaXNfZW1wdHkoYXR0cnMpKQ0KKwkJcmV0dXJuIGF0dHJz Ow0KKw0KKwlhdHRycyA9IERyb3BSZXN0b3JlZEF0dHJzKHJlbGF0aW9uLCBhdHRycywgb2xkX3R0 cywgbmV3X3R0cywgZXN0YXRlKTsNCiAJaWYgKGJtc19pc19lbXB0eShhdHRycykpDQogCQlyZXR1 cm4gYXR0cnM7DQogDQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3Rf dXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dA0K aW5kZXggMjc2YTg0NWEzZTkuLmZjODIwNjcxMDYwIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X3VwZGF0ZXMub3V0DQpAQCAtNjcxLDcgKzY3MSw3IEBAIFNFTEVDVCAqIEZST00g dXBkYXRlX2Nhc2UoDQogTk9USUNFOiAgdGFibGUgImhvdF9leHByX3Rlc3QiIGRvZXMgbm90IGV4 aXN0LCBza2lwcGluZw0KICB1cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAg IDEwIHwgICAwDQorICAgICAgMTAgfCAgMTANCiAoMSByb3cpDQogDQogU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOw0KQEAgLTY5Miw3ICs2OTIsNyBAQCBTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNl KA0KICAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQgdCA9IHJlcGVhdCgneCcsIDMwMDApIHx8 IGlkLCB4ID0geCArIDEkJCk7DQogIHVwZGF0ZWQgfCBob3QgDQogLS0tLS0tLS0tKy0tLS0tDQot ICAgICAgMTAgfCAgIDANCisgICAgICAxMCB8ICAxMA0KICgxIHJvdykNCiANCiAtLSBUaGUgc2Ft ZSB0aHJvdWdoIGFuIGV4cHJlc3Npb24gdGhhdCByZXR1cm5zIHRoZSBjb2x1bW4ncyB2YWx1ZSBh cyBpcy4NCkBAIC03MDMsNyArNzAzLDcgQEAgU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCiAg ICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VUIHQgPSByZXBlYXQoJ3gnLCAzMDAwKSB8fCBpZCwg eCA9IHggKyAxJCQpOw0KICB1cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAg IDEwIHwgICAwDQorICAgICAgMTAgfCAgMTANCiAoMSByb3cpDQogDQogLS0gLi4uIGJ1dCBub3Qg Zm9yIGEgY29sdW1uIG9mIGEgdW5pcXVlIGluZGV4LCB3aGljaCB0aGUgdGFibGUncyBsb2NrDQot LSANCjIuNTAuMQ0KDQo= --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0007-GIN-implement-amcomparedatums.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0007-GIN-implement-amcomparedatums.patch RnJvbSA0ZDM0YjdmMjIzOWZlMGI5YmRkNzFjOWY3ZWZlOThiMjBkMWI5ZDJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBGcmks IDE2IE9jdCAyMDI2IDEyOjM1OjE2IC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDcvOF0gR0lO 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=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0005-Add-amcomparedatums-index-AM-callback-for-HOT-up.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0005-Add-amcomparedatums-index-AM-callback-for-HOT-up.patch RnJvbSAxOTI4N2FjNzE0YzkwNDBjMDQ4MTgwZjc2YjE0MjI0YTRjM2VkYzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBNb24s IDE5IE9jdCAyMDI2IDE5OjEwOjM3IC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDUvOF0gQWRk 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 cGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYw0KaW5kZXggYzEzNWY0MzJk MmIuLmE2OWM1ZjJkZTg5IDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh 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 VGFibGUuYw0KaW5kZXggOWJjMDUzYzc1NGQuLmFlYmJiNGRlMGM1IDEwMDY0NA0KLS0tIGEvc3Jj 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 LCBuZXdfdHRzLA0KIAkJCQkJCQkgIGVzdGF0ZSk7DQogfQ0KIA0KQEAgLTQyMiw2ICs0NTAsMTIg QEAgSW5kZXhVbmFmZmVjdGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGludCBpLCBC aXRtYXBzZXQgKm1pbmUsDQogICogdXBkYXRlIGFzIGlmIGl0IGhhZCBub3QgY2hhbmdlZCB0aGUg YXR0cmlidXRlOiBubyBpbmRleCBuZWVkcyBhIG5ldw0KICAqIGVudHJ5IGJlY2F1c2Ugb2YgaXQu DQogICoNCisgKiBBbiBhdHRyaWJ1dGUgdGhhdCBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBhbHNv IHJlZmVyZW5jZSBkaXJlY3RseSwgYXMga2V5DQorICogb3IgaW5jbHVkZWQgY29sdW1ucywgaXMg YSBjYW5kaWRhdGUgdG9vIGlmIGFsbCBvZiB0aG9zZSBpbmRleGVzJyBhY2Nlc3MNCisgKiBtZXRo b2RzIGNhbiBjb21wYXJlIGVudHJpZXMgKElOREVYX0FUVFJfQklUTUFQX0NPTVBBUkFCTEUpOiBz dWNoIGFuIGluZGV4DQorICogaXMgdW5hZmZlY3RlZCB3aGVuLCBjb2x1bW4gYnkgY29sdW1uLCBp dHMgZGF0dW1zIGFyZSBlcXVhbCBvciBpdHMgYWNjZXNzDQorICogbWV0aG9kJ3MgYW1jb21wYXJl ZGF0dW1zIHNheXMgdGhleSBnaXZlIHRoZSBzYW1lIGVudHJpZXMuDQorICoNCiAgKiBBbiBpbmRl eCB0aGF0IGlzIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyBvciBub3QgdmFsaWQgY291bnRzIGFzIGFm ZmVjdGVkIGJ5DQogICogYW55IGNoYW5nZSB0byBhbiBhdHRyaWJ1dGUgaXQgcmVmZXJlbmNlcywg d2l0aG91dCBldmFsdWF0aW5nIGFueXRoaW5nLg0KICAqIFN1Y2ggYW4gaW5kZXggaXMgYmVpbmcg YnVpbHQsIG9yIGl0cyBidWlsZCBmYWlsZWQsIHNvIHRoZSBvbGQgcm93IG1heSBiZQ0KQEAgLTQy OSw5ICs0NjMsMTAgQEAgSW5kZXhVbmFmZmVjdGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sIGludCBpLCBCaXRtYXBzZXQgKm1pbmUsDQogICogd291bGQgbWFrZSB0aGUgVVBEQVRFIGZh aWwuICBJdCBzdGlsbCBjb25zdHJhaW5zIEhPVCwgYXMgUkVBRE1FLkhPVA0KICAqIHJlcXVpcmVz Lg0KICAqDQotICogTmFycm93aW5nIG5ldmVyIHJlbW92ZXMgYW4gYXR0cmlidXRlIG9mIGEga2V5 IG9yIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXgsDQotICogYXMgdGhvc2UgaGF2ZSBuZWl0aGVyIGV4 cHJlc3Npb25zIG5vciBwcmVkaWNhdGVzLCBzbyB0aGUgdGFibGUgQU0gbWF5DQotICogYWxzbyB0 YWtlIGl0cyBsb2NrIG1vZGUgYW5kIHJlcGxpY2EgaWRlbnRpdHkgZGVjaXNpb25zIGZyb20gdGhl IHJlc3VsdC4NCisgKiBOYXJyb3dpbmcgbmV2ZXIgcmVtb3ZlcyBhbiBhdHRyaWJ1dGUgb2YgYSBr ZXkgb3IgcmVwbGljYSBpZGVudGl0eSBpbmRleDoNCisgKiB0aG9zZSBoYXZlIG5laXRoZXIgZXhw cmVzc2lvbnMgbm9yIHByZWRpY2F0ZXMsIGFuZCB0aGVpciBjb2x1bW5zIGFyZSBsZWZ0DQorICog b3V0IG9mIElOREVYX0FUVFJfQklUTUFQX0NPTVBBUkFCTEUuICBTbyB0aGUgdGFibGUgQU0gbWF5 IGFsc28gdGFrZSBpdHMNCisgKiBsb2NrIG1vZGUgYW5kIHJlcGxpY2EgaWRlbnRpdHkgZGVjaXNp b25zIGZyb20gdGhlIHJlc3VsdC4NCiAgKi8NCiBCaXRtYXBzZXQgKg0KIEV4ZWNVcGRhdGVNb2Rp ZmllZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sDQpAQCAtNDYwLDYgKzQ5 NSwxMyBAQCBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvLA0KIAkgKi8NCiAJZXhwcmF0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAo cmVsYXRpb24sDQogCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04pOw0K Kwl7DQorCQlCaXRtYXBzZXQgICpjbXBhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLA0KKwkJCQkJCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9DT01QQVJBQkxF KTsNCisNCisJCWV4cHJhdHRycyA9IGJtc19hZGRfbWVtYmVycyhleHByYXR0cnMsIGNtcGF0dHJz KTsNCisJCWJtc19mcmVlKGNtcGF0dHJzKTsNCisJfQ0KIAljYW5kaWRhdGVzID0gYm1zX2ludGVy c2VjdChhdHRycywgZXhwcmF0dHJzKTsNCiAJaWYgKGJtc19pc19lbXB0eShjYW5kaWRhdGVzKSkN CiAJew0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jDQppbmRleCA3YjJjNzQ5N2U1Zi4uYTc2 NzI4MDMyM2QgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j DQorKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jDQpAQCAtMzAsNiArMzAs NyBAQA0KICNpbmNsdWRlIDxmY250bC5oPg0KICNpbmNsdWRlIDx1bmlzdGQuaD4NCiANCisjaW5j bHVkZSAiYWNjZXNzL2dlbmFtLmgiDQogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIN CiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIg0KICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxs ZWwuaCINCkBAIC0yNDgwLDYgKzI0ODEsNyBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxh dGlvbiByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQ0KIAlibXNfZnJlZShyZWxhdGlv bi0+cmRfc3VtbWFyaXplZGF0dHIpOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmF0dHIpOw0KKwlibXNfZnJlZShyZWxh dGlvbi0+cmRfY21wYXR0cik7DQogCWlmIChyZWxhdGlvbi0+cmRfcHViZGVzYykNCiAJCXBmcmVl KHJlbGF0aW9uLT5yZF9wdWJkZXNjKTsNCiAJaWYgKHJlbGF0aW9uLT5yZF9vcHRpb25zKQ0KQEAg LTUzMzIsNiArNTMzNCwxMSBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJl bGF0aW9uKQ0KICAqCUlOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04JQ29sdW1ucyB0aGF0IG5v bi1zdW1tYXJpemluZyBpbmRleGVzDQogICoJCQkJCQkJCQlyZWZlcmVuY2Ugb25seSB0aHJvdWdo IGV4cHJlc3Npb25zIG9yDQogICoJCQkJCQkJCQlhcyBwYXJ0aWFsIGluZGV4ZXMNCisgKglJTkRF WF9BVFRSX0JJVE1BUF9DT01QQVJBQkxFCUNvbHVtbnMgdGhhdCBub24tc3VtbWFyaXppbmcgaW5k ZXhlcw0KKyAqCQkJCQkJCQkJcmVmZXJlbmNlIGRpcmVjdGx5IG9ubHkgaWYgdGhlaXINCisgKgkJ CQkJCQkJCWFjY2VzcyBtZXRob2QgY2FuIGNvbXBhcmUgZW50cmllcw0KKyAqCQkJCQkJCQkJKGFt Y29tcGFyZWRhdHVtcyksIGxlc3Mga2V5IGFuZCByZXBsaWNhDQorICoJCQkJCQkJCQlpZGVudGl0 eSBjb2x1bW5zDQogICoNCiAgKiBBdHRyaWJ1dGUgbnVtYmVycyBhcmUgb2Zmc2V0IGJ5IEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgc28gdGhhdA0KICAqIHdlIGNhbiBpbmNsdWRl IHN5c3RlbSBhdHRyaWJ1dGVzIChlLmcuLCBPSUQpIGluIHRoZSBiaXRtYXAgcmVwcmVzZW50YXRp b24uDQpAQCAtNTM1OSw2ICs1MzY2LDkgQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVs YXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpDQogCUJpdG1hcHNl dCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyByZWZlcmVuY2VkIGJ5IGFueSBpbmRleCAqLw0K IAlCaXRtYXBzZXQgICpleHByYXR0cnM7CQkvKiBjb2x1bW5zIG9mIGV4cHJlc3Npb24gb3IgcGFy dGlhbA0KIAkJCQkJCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgKi8NCisJQml0bWFwc2V0 ICAqY21wYXR0cnM7CQkvKiBwbGFpbiBjb2x1bW5zIG9mIGluZGV4ZXMgd2hvc2UgQU0gY2FuDQor CQkJCQkJCQkgKiBjb21wYXJlIGVudHJpZXMgKGFtY29tcGFyZWRhdHVtcykgKi8NCisJQml0bWFw c2V0ICAqbm9jbXBhdHRyczsJCS8qIHBsYWluIGNvbHVtbnMgb2YgaW5kZXhlcyB3aG9zZSBBTSBj YW5ub3QgKi8NCiAJQml0bWFwc2V0ICAqcGxhaW5hdHRyczsJCS8qIGNvbHVtbnMgb2Ygb3RoZXIg bm9uLXN1bW1hcml6aW5nIGluZGV4ZXMsDQogCQkJCQkJCQkgKiBhbmQgcGxhaW4gY29sdW1ucyBv ZiBleHByZXNzaW9uIGluZGV4ZXMgKi8NCiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0Ow0KQEAgLTUz ODcsNiArNTM5Nyw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0 aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAkJCQlyZXR1cm4gYm1zX2NvcHko cmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsNCiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0VY UFJFU1NJT046DQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfZXhwcmF0dHIpOw0K KwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfQ09NUEFSQUJMRToNCisJCQkJcmV0dXJuIGJtc19j b3B5KHJlbGF0aW9uLT5yZF9jbXBhdHRyKTsNCiAJCQlkZWZhdWx0Og0KIAkJCQllbG9nKEVSUk9S LCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsNCiAJCX0NCkBAIC01NDMyLDYgKzU0 NDQsOCBAQCByZXN0YXJ0Og0KIAlob3RibG9ja2luZ2F0dHJzID0gTlVMTDsNCiAJc3VtbWFyaXpl ZGF0dHJzID0gTlVMTDsNCiAJZXhwcmF0dHJzID0gTlVMTDsNCisJY21wYXR0cnMgPSBOVUxMOw0K Kwlub2NtcGF0dHJzID0gTlVMTDsNCiAJcGxhaW5hdHRycyA9IE5VTEw7DQogCWZvcmVhY2gobCwg aW5kZXhvaWRsaXN0KQ0KIAl7DQpAQCAtNTUyNCw2ICs1NTM4LDE0IEBAIHJlc3RhcnQ6DQogCQkJ CQllbHNlDQogCQkJCQkJcGxhaW5hdHRycyA9IGJtc19hZGRfbWVtYmVyKHBsYWluYXR0cnMsDQog CQkJCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVy KTsNCisJCQkJCWlmIChpbmRleERlc2MtPnJkX2luZGFtLT5hbWNvbXBhcmVkYXR1bXMgIT0gTlVM TCAmJg0KKwkJCQkJCSFpbmRleERlc2MtPnJkX2luZGV4LT5pbmRpc2V4Y2x1c2lvbiAmJg0KKwkJ CQkJCSFpbmRleF9jYW5fcmV0dXJuKGluZGV4RGVzYywgaSArIDEpKQ0KKwkJCQkJCWNtcGF0dHJz ID0gYm1zX2FkZF9tZW1iZXIoY21wYXR0cnMsDQorCQkJCQkJCQkJCQkJICBhdHRybnVtIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7DQorCQkJCQllbHNlDQorCQkJCQkJbm9j bXBhdHRycyA9IGJtc19hZGRfbWVtYmVyKG5vY21wYXR0cnMsDQorCQkJCQkJCQkJCQkJCWF0dHJu dW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsNCiAJCQkJfQ0KIA0KIAkJ CQlpZiAoaXNLZXkgJiYgaSA8IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZG5rZXlhdHRzKQ0KQEAg LTU1ODEsNiArNTYwMyw4IEBAIHJlc3RhcnQ6DQogCQlibXNfZnJlZShob3RibG9ja2luZ2F0dHJz KTsNCiAJCWJtc19mcmVlKHN1bW1hcml6ZWRhdHRycyk7DQogCQlibXNfZnJlZShleHByYXR0cnMp Ow0KKwkJYm1zX2ZyZWUoY21wYXR0cnMpOw0KKwkJYm1zX2ZyZWUobm9jbXBhdHRycyk7DQogCQli bXNfZnJlZShwbGFpbmF0dHJzKTsNCiANCiAJCWdvdG8gcmVzdGFydDsNCkBAIC01NjAwLDYgKzU2 MjQsMjYgQEAgcmVzdGFydDoNCiAJZXhwcmF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKGV4cHJhdHRy cywgc3VtbWFyaXplZGF0dHJzKTsNCiAJYm1zX2ZyZWUocGxhaW5hdHRycyk7DQogDQorCS8qDQor CSAqIFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgYWxzbyBy ZWZlcmVuY2UgZGlyZWN0bHksDQorCSAqIGFzIGtleSBvciBpbmNsdWRlZCBjb2x1bW5zLCBvbmx5 IGluIGluZGV4ZXMgd2hvc2UgYWNjZXNzIG1ldGhvZCBjYW4NCisJICogdGVsbCB3aGV0aGVyIGEg bmV3IHZhbHVlIGdpdmVzIHRoZSBzYW1lIGVudHJpZXMgKGFtY29tcGFyZWRhdHVtcykuICBBDQor CSAqIGNoYW5nZSB0byBvbmUgb2YgdGhlc2UgbmVlZHMgbmV3IGluZGV4IGVudHJpZXMgb25seSBp ZiwgZm9yIHNvbWUgaW5kZXgsDQorCSAqIGl0IGRvZXMgbm90LiAgTGlrZSB0aG9zZSBhYm92ZSwg YW5kIGZvciB0aGUgc2FtZSByZWFzb24sIHRoZXNlIGxlYXZlDQorCSAqIG91dCB3aGF0IHN1bW1h cml6aW5nIGluZGV4ZXMgcmVmZXJlbmNlLiAgVGhleSBhbHNvIGxlYXZlIG91dCB0aGUNCisJICog Y29sdW1ucyBvZiBjYW5kaWRhdGUga2V5cyBhbmQgdGhlIHJlcGxpY2EgaWRlbnRpdHksIHdob3Nl IGNoYW5nZXMgYXJlDQorCSAqIGRlY2lkZWQgYnkgdmFsdWUgYXMgYmVmb3JlOiB0aGUgdGFibGUg QU0gdGFrZXMgaXRzIHR1cGxlIGxvY2sgc3RyZW5ndGgNCisJICogYW5kIHdoYXQgaXQgbG9ncyBm b3IgbG9naWNhbCBkZWNvZGluZyBmcm9tIHRoZW0uICBJbmRleGVzIG9mIGV4Y2x1c2lvbg0KKwkg KiBjb25zdHJhaW50cyBjb3VudCBhcyB1bmFibGUgdG8gY29tcGFyZTogdGhlIGNvbnN0cmFpbnQg aXMgY2hlY2tlZCBvbg0KKwkgKiB0aGUgdmFsdWVzIHdoZW4gYW4gZW50cnkgaXMgaW5zZXJ0ZWQs IGFuZCB2YWx1ZXMgdGhhdCBnaXZlIHRoZSBzYW1lDQorCSAqIGVudHJpZXMgbmVlZCBub3QgaGF2 ZSB0aGUgc2FtZSBjb25mbGljdHMuDQorCSAqLw0KKwljbXBhdHRycyA9IGJtc19kZWxfbWVtYmVy cyhjbXBhdHRycywgbm9jbXBhdHRycyk7DQorCWNtcGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKGNt cGF0dHJzLCBzdW1tYXJpemVkYXR0cnMpOw0KKwljbXBhdHRycyA9IGJtc19kZWxfbWVtYmVycyhj bXBhdHRycywgdWluZGV4YXR0cnMpOw0KKwljbXBhdHRycyA9IGJtc19kZWxfbWVtYmVycyhjbXBh dHRycywgaWRpbmRleGF0dHJzKTsNCisJYm1zX2ZyZWUobm9jbXBhdHRycyk7DQorDQogCS8qIERv bid0IGxlYWsgdGhlIG9sZCB2YWx1ZXMgb2YgdGhlc2UgYml0bWFwcywgaWYgYW55ICovDQogCXJl bGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7DQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9r ZXlhdHRyKTsNCkBAIC01NjE2LDYgKzU2NjAsOCBAQCByZXN0YXJ0Og0KIAlyZWxhdGlvbi0+cmRf aW5kZXhlZGF0dHIgPSBOVUxMOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmF0dHIpOw0K IAlyZWxhdGlvbi0+cmRfZXhwcmF0dHIgPSBOVUxMOw0KKwlibXNfZnJlZShyZWxhdGlvbi0+cmRf Y21wYXR0cik7DQorCXJlbGF0aW9uLT5yZF9jbXBhdHRyID0gTlVMTDsNCiANCiAJLyoNCiAJICog Tm93IHNhdmUgY29waWVzIG9mIHRoZSBiaXRtYXBzIGluIHRoZSByZWxjYWNoZSBlbnRyeS4gIFdl IGludGVudGlvbmFsbHkNCkBAIC01NjMyLDYgKzU2NzgsNyBAQCByZXN0YXJ0Og0KIAlyZWxhdGlv bi0+cmRfc3VtbWFyaXplZGF0dHIgPSBibXNfY29weShzdW1tYXJpemVkYXR0cnMpOw0KIAlyZWxh dGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBibXNfY29weShpbmRleGVkYXR0cnMpOw0KIAlyZWxhdGlv bi0+cmRfZXhwcmF0dHIgPSBibXNfY29weShleHByYXR0cnMpOw0KKwlyZWxhdGlvbi0+cmRfY21w YXR0ciA9IGJtc19jb3B5KGNtcGF0dHJzKTsNCiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0 cnVlOw0KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsNCiANCkBAIC01NjUyLDYgKzU2 OTksOCBAQCByZXN0YXJ0Og0KIAkJCXJldHVybiBpbmRleGVkYXR0cnM7DQogCQljYXNlIElOREVY 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 LmgNCmluZGV4IGFhMWYyYTY1ZWNkLi5kMjNlNmEzYTZmZCAxMDA2NDQNCi0tLSBhL3NyYy9pbmNs 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 MTYxLi5iMmE0YmQ4NjEzMCAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5k ZXhfYW0vZHVtbXlfaW5kZXhfYW0uYw0KKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kdW1teV9pbmRl eF9hbS9kdW1teV9pbmRleF9hbS5jDQpAQCAtMTYsOCArMTYsMTAgQEANCiAjaW5jbHVkZSAiYWNj ZXNzL2FtYXBpLmgiDQogI2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25zLmgiDQogI2luY2x1ZGUg ImNhdGFsb2cvaW5kZXguaCINCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiDQogI2luY2x1 ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIg0KICNpbmNsdWRlICJub2Rlcy9wYXRobm9kZXMuaCINCisj aW5jbHVkZSAidXRpbHMvcmVsLmgiDQogDQogUEdfTU9EVUxFX01BR0lDOw0KIA0KQEAgLTI0NCw2 ICsyNDYsMzkgQEAgZGlvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpDQog CQkJCQkJCQkJICBkaV9yZWxvcHRfdGFiLCBsZW5ndGhvZihkaV9yZWxvcHRfdGFiKSk7DQogfQ0K IA0KKy8qDQorICogYW1jYW5yZXR1cm46IHdpdGggb3B0aW9uX3Rlcm5hcnlfMSBzZXQgdG8gdHJ1 ZSwgY2xhaW0gdGhhdCBldmVyeSBjb2x1bW4NCisgKiBjYW4gYmUgcmV0dXJuZWQsIHNvIHRoYXQg YW1jb21wYXJlZGF0dW1zIGlzIG5vdCBhc2tlZCBhYm91dCBpdC4NCisgKiAoVGhlIGluZGV4IGNh bm5vdCBhY3R1YWxseSBiZSBzY2FubmVkLikNCisgKi8NCitzdGF0aWMgYm9vbA0KK2RpY2FucmV0 dXJuKFJlbGF0aW9uIGluZGV4LCBpbnQgYXR0bm8pDQorew0KKwlEdW1teUluZGV4T3B0aW9ucyAq b3B0cyA9IChEdW1teUluZGV4T3B0aW9ucyAqKSBpbmRleC0+cmRfb3B0aW9uczsNCisNCisJcmV0 dXJuIG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5vcHRpb25fdGVybmFyeV8xID09IFBHX1RFUk5BUllf VFJVRTsNCit9DQorDQorLyoNCisgKiBXb3VsZCBuZXdWYWx1ZSBnaXZlIHRoZSBzYW1lIGVudHJp ZXMgYXMgb2xkVmFsdWU/ICBUaGUgZHVtbXkgaW5kZXggc3RvcmVzDQorICogbm90aGluZywgc28g YW55IGFuc3dlciBpcyBjb3JyZWN0LiAgRm9yIHRlc3RpbmcgdGhlIGV4ZWN1dG9yJ3MgdXNlIG9m DQorICogYW1jb21wYXJlZGF0dW1zOiB3aXRoIG9wdGlvbl9yZWFsIHNldCB0byAxLCBpbnQ0IHZh bHVlcyB0aGF0IGFyZSBlcXVhbA0KKyAqIG1vZHVsbyBvcHRpb25faW50IGNvdW50IGFzIGdpdmlu ZyB0aGUgc2FtZSBlbnRyaWVzLg0KKyAqLw0KK3N0YXRpYyBib29sDQorZGljb21wYXJlZGF0dW1z KFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbywgaW50IGF0dG51bSwNCisJCQkJ T2lkIHR5cGlkLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwsDQorCQkJCURhdHVtIG9sZFZh bHVlLCBEYXR1bSBuZXdWYWx1ZSkNCit7DQorCUR1bW15SW5kZXhPcHRpb25zICpvcHRzID0gKER1 bW15SW5kZXhPcHRpb25zICopIGluZGV4LT5yZF9vcHRpb25zOw0KKw0KKwlpZiAob3B0cyA9PSBO VUxMIHx8IG9wdHMtPm9wdGlvbl9yZWFsICE9IDEgfHwgb3B0cy0+b3B0aW9uX2ludCA8IDIgfHwN CisJCXR5cGlkICE9IElOVDRPSUQpDQorCQlyZXR1cm4gZmFsc2U7DQorCXJldHVybiBEYXR1bUdl dEludDMyKG9sZFZhbHVlKSAlIG9wdHMtPm9wdGlvbl9pbnQgPT0NCisJCURhdHVtR2V0SW50MzIo bmV3VmFsdWUpICUgb3B0cy0+b3B0aW9uX2ludDsNCit9DQorDQogLyoNCiAgKiBWYWxpZGF0b3Ig Zm9yIGluZGV4IEFNLg0KICAqLw0KQEAgLTMyNCw3ICszNTksNyBAQCBkaWhhbmRsZXIoUEdfRlVO Q1RJT05fQVJHUykNCiAJCS5hbWluc2VydCA9IGRpaW5zZXJ0LA0KIAkJLmFtYnVsa2RlbGV0ZSA9 IGRpYnVsa2RlbGV0ZSwNCiAJCS5hbXZhY3V1bWNsZWFudXAgPSBkaXZhY3V1bWNsZWFudXAsDQot CQkuYW1jYW5yZXR1cm4gPSBOVUxMLA0KKwkJLmFtY2FucmV0dXJuID0gZGljYW5yZXR1cm4sDQog CQkuYW1jb3N0ZXN0aW1hdGUgPSBkaWNvc3Rlc3RpbWF0ZSwNCiAJCS5hbWdldHRyZWVoZWlnaHQg PSBOVUxMLA0KIAkJLmFtb3B0aW9ucyA9IGRpb3B0aW9ucywNCkBAIC0zNDEsNiArMzc2LDcgQEAg ZGloYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1MpDQogCQkuYW1lc3RpbWF0ZXBhcmFsbGVsc2NhbiA9 IE5VTEwsDQogCQkuYW1pbml0cGFyYWxsZWxzY2FuID0gTlVMTCwNCiAJCS5hbXBhcmFsbGVscmVz Y2FuID0gTlVMTCwNCisJCS5hbWNvbXBhcmVkYXR1bXMgPSBkaWNvbXBhcmVkYXR1bXMsDQogCX07 DQogDQogCVBHX1JFVFVSTl9QT0lOVEVSKCZhbXJvdXRpbmUpOw0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vZXhwZWN0ZWQvY29tcGFyZWRhdHVtcy5vdXQgYi9z cmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2V4cGVjdGVkL2NvbXBhcmVkYXR1bXMub3V0 DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjc1NGJhMWZlMWQwDQot LS0gL2Rldi9udWxsDQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2V4cGVj dGVkL2NvbXBhcmVkYXR1bXMub3V0DQpAQCAtMCwwICsxLDE1MiBAQA0KKy0tIFRlc3QgdGhlIGV4 ZWN1dG9yJ3MgdXNlIG9mIGFtY29tcGFyZWRhdHVtcyBvbiBVUERBVEU6IGEgY29sdW1uIHRoYXQg YW4NCistLSBpbmRleCBzdG9yZXMgZGlyZWN0bHkgZG9lcyBub3QgYmxvY2sgSE9UIGlmIHRoZSBp bmRleCdzIGFjY2VzcyBtZXRob2QNCistLSBzYXlzIHRoZSBuZXcgdmFsdWUgZ2l2ZXMgdGhlIHNh bWUgZW50cmllcy4NCitDUkVBVEUgRVhURU5TSU9OIGR1bW15X2luZGV4X2FtOw0KK0NSRUFURSBU QUJMRSBkdW1teV9jbXAgKGlkIGludCwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0g NTApOw0KK0lOU0VSVCBJTlRPIGR1bW15X2NtcCBTRUxFQ1QgZywgZywgZyBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMCkgZzsNCistLSBXaXRoIG9wdGlvbl9yZWFsID0gMSwgZHVtbXlfaW5kZXhf YW0gc2F5cyBpbnQ0IHZhbHVlcyBlcXVhbCBtb2R1bG8NCistLSBvcHRpb25faW50IGdpdmUgdGhl IHNhbWUgZW50cmllcy4gIEEgYnRyZWUgaW5kZXggb24gYW5vdGhlciBjb2x1bW4sIGFuZA0KKy0t IG5vIGluZGV4IG9uIGIuDQorQ1JFQVRFIElOREVYIGR1bW15X2NtcF9hIE9OIGR1bW15X2NtcCBV U0lORyBkdW1teV9pbmRleF9hbSAoYSkNCisgIFdJVEggKG9wdGlvbl9yZWFsID0gMSwgb3B0aW9u X2ludCA9IDEwKTsNCitDUkVBVEUgSU5ERVggZHVtbXlfY21wX2lkIE9OIGR1bW15X2NtcCAoaWQp Ow0KK0NSRUFURSBGVU5DVElPTiBkdW1teV9jbXBfaG90KE9VVCB1cGRhdGVkIGJpZ2ludCwgT1VU IGhvdCBiaWdpbnQpDQorTEFOR1VBR0Ugc3FsIEFTICQkDQorICBTRUxFQ1QgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfdXBkYXRlZCgnZHVtbXlfY21wJzo6cmVnY2xhc3MpLA0KKyAgICAgICAgIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdkdW1teV9jbXAnOjpyZWdjbGFzcykg JCQ7DQorLS0gY291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25z IGNvdW50ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSBy b3cpDQorDQorQkVHSU47DQorLS0gYSArIDEwIGlzIGVxdWFsIG1vZHVsbyAxMDogSE9UDQorVVBE QVRFIGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9o b3QoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAxMCB8ICAx MA0KKygxIHJvdykNCisNCistLSBhICsgMSBpcyBub3Q6IG5vdCBIT1QNCitVUERBVEUgZHVtbXlf Y21wIFNFVCBhID0gYSArIDE7DQorU0VMRUNUICogRlJPTSBkdW1teV9jbXBfaG90KCk7DQorIHVw ZGF0ZWQgfCBob3QgDQorLS0tLS0tLS0tKy0tLS0tDQorICAgICAgMjAgfCAgMTANCisoMSByb3cp DQorDQorLS0gYiBpcyBub3QgaW5kZXhlZDogSE9UDQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYiA9 IGIgKyAxOw0KK1NFTEVDVCAqIEZST00gZHVtbXlfY21wX2hvdCgpOw0KKyB1cGRhdGVkIHwgaG90 IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDMwIHwgIDIwDQorKDEgcm93KQ0KKw0KKy0tIGlk ICsgMTAwIG5lZWRzIGEgbmV3IGVudHJ5IGluIHRoZSBidHJlZSBpbmRleCBvbiBpZDogbm90IEhP VCwgZXZlbiB0aG91Z2gNCistLSBhIGNoYW5nZXMgaW4gYSB3YXkgZHVtbXlfaW5kZXhfYW0gYWNj ZXB0cw0KK1VQREFURSBkdW1teV9jbXAgU0VUIGEgPSBhICsgMTAsIGlkID0gaWQgKyAxMDA7DQor U0VMRUNUICogRlJPTSBkdW1teV9jbXBfaG90KCk7DQorIHVwZGF0ZWQgfCBob3QgDQorLS0tLS0t LS0tKy0tLS0tDQorICAgICAgNDAgfCAgMjANCisoMSByb3cpDQorDQorLS0gdG8gYW5kIGZyb20g bnVsbCBhbHdheXMgbmVlZHMgbmV3IGVudHJpZXMNCitVUERBVEUgZHVtbXlfY21wIFNFVCBhID0g TlVMTCBXSEVSRSBpZCA9IDEwMTsNCitVUERBVEUgZHVtbXlfY21wIFNFVCBhID0gMiBXSEVSRSBp ZCA9IDEwMTsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCisgdXBkYXRlZCB8IGhv dCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICA0MiB8ICAyMA0KKygxIHJvdykNCisNCitDT01N SVQ7DQorLS0gQSBjaGFuZ2UgdG8gYSBjb2x1bW4gdGhhdCBhbm90aGVyIGluZGV4IGFsc28gc3Rv cmVzIG5lZWRzIGEgbmV3IGVudHJ5DQorLS0gaWYgdGhhdCBpbmRleCBuZWVkcyBvbmU6IGEgKyAx MCBkb2VzIGluIGEgYnRyZWUgaW5kZXggb24gYSwgc28gbm90IEhPVC4NCitDUkVBVEUgSU5ERVgg ZHVtbXlfY21wX2EyIE9OIGR1bW15X2NtcCAoYSk7DQorLS0gY291bnQgZnJvbSB6ZXJvOiBmbHVz aCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCANCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorQkVHSU47DQorVVBEQVRFIGR1bW15 X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCisg dXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAxMCB8ICAgMA0KKygxIHJv dykNCisNCitDT01NSVQ7DQorRFJPUCBJTkRFWCBkdW1teV9jbXBfYTI7DQorLS0gTm9yIGlzIHRo ZSBjYWxsYmFjayBhc2tlZCBhYm91dCBhIGNvbHVtbiB0aGUgaW5kZXggc2F5cyBpdCBjYW4gcmV0 dXJuIGluDQorLS0gaW5kZXgtb25seSBzY2FucyAob3B0aW9uX3Rlcm5hcnlfMSBtYWtlcyBkdW1t eV9pbmRleF9hbSBzYXkgc28pOiBhICsgMTANCistLSBpcyBub3QgSE9UIHRoZW4uDQorQUxURVIg SU5ERVggZHVtbXlfY21wX2EgU0VUIChvcHRpb25fdGVybmFyeV8xID0gdHJ1ZSk7DQorLS0gY291 bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCisoMSByb3cpDQorDQorQkVH SU47DQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1 bW15X2NtcF9ob3QoKTsNCisgdXBkYXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAg ICAxMCB8ICAgMA0KKygxIHJvdykNCisNCitDT01NSVQ7DQorQUxURVIgSU5ERVggZHVtbXlfY21w X2EgUkVTRVQgKG9wdGlvbl90ZXJuYXJ5XzEpOw0KKy0tIFRoZSBjb2x1bW5zIG9mIGEgdW5pcXVl IGluZGV4IHRoYXQgYSBmb3JlaWduIGtleSBjb3VsZCByZWZlcmVuY2UgYXJlDQorLS0gbmV2ZXIg Y29tcGFyZWQgdGhpcyB3YXkuICAoTm9yIGFyZSB0aG9zZSBvZiB0aGUgcmVwbGljYSBpZGVudGl0 eSwgYnV0IGFuDQorLS0gaW5kZXggdGhhdCBjYW4gYmUgdGhlIHJlcGxpY2EgaWRlbnRpdHkgaXMg YWx3YXlzIHN1Y2ggYSBrZXkuKSAgV2l0aG91dA0KKy0tIHRoZSB1bmlxdWUgaW5kZXgsIGlkICsg MTAwIHdvdWxkIGJlIEhPVDogZHVtbXlfaW5kZXhfYW0gc2F5cyBpdCBnaXZlcw0KKy0tIHRoZSBz YW1lIGVudHJpZXMsIGFuZCBub3RoaW5nIGVsc2UgaW5kZXhlcyBpZC4NCitEUk9QIElOREVYIGR1 bW15X2NtcF9pZDsNCitDUkVBVEUgSU5ERVggZHVtbXlfY21wX2lkX2QgT04gZHVtbXlfY21wIFVT SU5HIGR1bW15X2luZGV4X2FtIChpZCkNCisgIFdJVEggKG9wdGlvbl9yZWFsID0gMSwgb3B0aW9u X2ludCA9IDEwMCk7DQorLS0gY291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJh bnNhY3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQor IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K KyANCisoMSByb3cpDQorDQorQkVHSU47DQorVVBEQVRFIGR1bW15X2NtcCBTRVQgaWQgPSBpZCAr IDEwMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCisgdXBkYXRlZCB8IGhvdCAN CistLS0tLS0tLS0rLS0tLS0NCisgICAgICAxMCB8ICAxMA0KKygxIHJvdykNCisNCitDT01NSVQ7 DQorQ1JFQVRFIFVOSVFVRSBJTkRFWCBkdW1teV9jbXBfaWRfdSBPTiBkdW1teV9jbXAgKGlkKTsN CistLSBjb3VudCBmcm9tIHplcm86IGZsdXNoIHdoYXQgZWFybGllciB0cmFuc2FjdGlvbnMgY291 bnRlZA0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykN CisNCitCRUdJTjsNCitVUERBVEUgZHVtbXlfY21wIFNFVCBpZCA9IGlkICsgMTAwOw0KK1NFTEVD VCAqIEZST00gZHVtbXlfY21wX2hvdCgpOw0KKyB1cGRhdGVkIHwgaG90IA0KKy0tLS0tLS0tLSst LS0tLQ0KKyAgICAgIDEwIHwgICAwDQorKDEgcm93KQ0KKw0KK0NPTU1JVDsNCitEUk9QIFRBQkxF IGR1bW15X2NtcDsNCitEUk9QIEZVTkNUSU9OIGR1bW15X2NtcF9ob3Q7DQorRFJPUCBFWFRFTlNJ T04gZHVtbXlfaW5kZXhfYW07DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kdW1teV9p bmRleF9hbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vbWVz b24uYnVpbGQNCmluZGV4IDljZWRmZDJjZjhiLi5hNDE3NGMyNjMyYyAxMDA2NDQNCi0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vbWVzb24uYnVpbGQNCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvZHVtbXlfaW5kZXhfYW0vbWVzb24uYnVpbGQNCkBAIC0yNyw2ICsyNyw3IEBAIHRl c3RzICs9IHsNCiAgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksDQogICAncmVncmVz cyc6IHsNCiAgICAgJ3NxbCc6IFsNCisgICAgICAnY29tcGFyZWRhdHVtcycsDQogICAgICAgJ3Jl bG9wdGlvbnMnLA0KICAgICBdLA0KICAgfSwNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L2R1bW15X2luZGV4X2FtL3NxbC9jb21wYXJlZGF0dW1zLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMv ZHVtbXlfaW5kZXhfYW0vc3FsL2NvbXBhcmVkYXR1bXMuc3FsDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAuLmNkODAxNmE2NzliDQotLS0gL2Rldi9udWxsDQorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL3NxbC9jb21wYXJlZGF0dW1zLnNxbA0KQEAg LTAsMCArMSw4MiBAQA0KKy0tIFRlc3QgdGhlIGV4ZWN1dG9yJ3MgdXNlIG9mIGFtY29tcGFyZWRh dHVtcyBvbiBVUERBVEU6IGEgY29sdW1uIHRoYXQgYW4NCistLSBpbmRleCBzdG9yZXMgZGlyZWN0 bHkgZG9lcyBub3QgYmxvY2sgSE9UIGlmIHRoZSBpbmRleCdzIGFjY2VzcyBtZXRob2QNCistLSBz YXlzIHRoZSBuZXcgdmFsdWUgZ2l2ZXMgdGhlIHNhbWUgZW50cmllcy4NCitDUkVBVEUgRVhURU5T SU9OIGR1bW15X2luZGV4X2FtOw0KK0NSRUFURSBUQUJMRSBkdW1teV9jbXAgKGlkIGludCwgYSBp bnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOw0KK0lOU0VSVCBJTlRPIGR1bW15X2Nt cCBTRUxFQ1QgZywgZywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZzsNCistLSBXaXRo IG9wdGlvbl9yZWFsID0gMSwgZHVtbXlfaW5kZXhfYW0gc2F5cyBpbnQ0IHZhbHVlcyBlcXVhbCBt b2R1bG8NCistLSBvcHRpb25faW50IGdpdmUgdGhlIHNhbWUgZW50cmllcy4gIEEgYnRyZWUgaW5k ZXggb24gYW5vdGhlciBjb2x1bW4sIGFuZA0KKy0tIG5vIGluZGV4IG9uIGIuDQorQ1JFQVRFIElO REVYIGR1bW15X2NtcF9hIE9OIGR1bW15X2NtcCBVU0lORyBkdW1teV9pbmRleF9hbSAoYSkNCisg IFdJVEggKG9wdGlvbl9yZWFsID0gMSwgb3B0aW9uX2ludCA9IDEwKTsNCitDUkVBVEUgSU5ERVgg ZHVtbXlfY21wX2lkIE9OIGR1bW15X2NtcCAoaWQpOw0KK0NSRUFURSBGVU5DVElPTiBkdW1teV9j bXBfaG90KE9VVCB1cGRhdGVkIGJpZ2ludCwgT1VUIGhvdCBiaWdpbnQpDQorTEFOR1VBR0Ugc3Fs IEFTICQkDQorICBTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZCgnZHVtbXlf Y21wJzo6cmVnY2xhc3MpLA0KKyAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKCdkdW1teV9jbXAnOjpyZWdjbGFzcykgJCQ7DQorLS0gY291bnQgZnJvbSB6ZXJvOiBm bHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorLS0gYSArIDEwIGlzIGVxdWFsIG1vZHVsbyAx MDogSE9UDQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9N IGR1bW15X2NtcF9ob3QoKTsNCistLSBhICsgMSBpcyBub3Q6IG5vdCBIT1QNCitVUERBVEUgZHVt bXlfY21wIFNFVCBhID0gYSArIDE7DQorU0VMRUNUICogRlJPTSBkdW1teV9jbXBfaG90KCk7DQor LS0gYiBpcyBub3QgaW5kZXhlZDogSE9UDQorVVBEQVRFIGR1bW15X2NtcCBTRVQgYiA9IGIgKyAx Ow0KK1NFTEVDVCAqIEZST00gZHVtbXlfY21wX2hvdCgpOw0KKy0tIGlkICsgMTAwIG5lZWRzIGEg bmV3IGVudHJ5IGluIHRoZSBidHJlZSBpbmRleCBvbiBpZDogbm90IEhPVCwgZXZlbiB0aG91Z2gN CistLSBhIGNoYW5nZXMgaW4gYSB3YXkgZHVtbXlfaW5kZXhfYW0gYWNjZXB0cw0KK1VQREFURSBk dW1teV9jbXAgU0VUIGEgPSBhICsgMTAsIGlkID0gaWQgKyAxMDA7DQorU0VMRUNUICogRlJPTSBk dW1teV9jbXBfaG90KCk7DQorLS0gdG8gYW5kIGZyb20gbnVsbCBhbHdheXMgbmVlZHMgbmV3IGVu dHJpZXMNCitVUERBVEUgZHVtbXlfY21wIFNFVCBhID0gTlVMTCBXSEVSRSBpZCA9IDEwMTsNCitV UERBVEUgZHVtbXlfY21wIFNFVCBhID0gMiBXSEVSRSBpZCA9IDEwMTsNCitTRUxFQ1QgKiBGUk9N IGR1bW15X2NtcF9ob3QoKTsNCitDT01NSVQ7DQorLS0gQSBjaGFuZ2UgdG8gYSBjb2x1bW4gdGhh dCBhbm90aGVyIGluZGV4IGFsc28gc3RvcmVzIG5lZWRzIGEgbmV3IGVudHJ5DQorLS0gaWYgdGhh dCBpbmRleCBuZWVkcyBvbmU6IGEgKyAxMCBkb2VzIGluIGEgYnRyZWUgaW5kZXggb24gYSwgc28g bm90IEhPVC4NCitDUkVBVEUgSU5ERVggZHVtbXlfY21wX2EyIE9OIGR1bW15X2NtcCAoYSk7DQor LS0gY291bnQgZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50 ZWQNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorVVBEQVRF IGR1bW15X2NtcCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3Qo KTsNCitDT01NSVQ7DQorRFJPUCBJTkRFWCBkdW1teV9jbXBfYTI7DQorLS0gTm9yIGlzIHRoZSBj YWxsYmFjayBhc2tlZCBhYm91dCBhIGNvbHVtbiB0aGUgaW5kZXggc2F5cyBpdCBjYW4gcmV0dXJu IGluDQorLS0gaW5kZXgtb25seSBzY2FucyAob3B0aW9uX3Rlcm5hcnlfMSBtYWtlcyBkdW1teV9p bmRleF9hbSBzYXkgc28pOiBhICsgMTANCistLSBpcyBub3QgSE9UIHRoZW4uDQorQUxURVIgSU5E RVggZHVtbXlfY21wX2EgU0VUIChvcHRpb25fdGVybmFyeV8xID0gdHJ1ZSk7DQorLS0gY291bnQg ZnJvbSB6ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorVVBEQVRFIGR1bW15X2Nt cCBTRVQgYSA9IGEgKyAxMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCitDT01N SVQ7DQorQUxURVIgSU5ERVggZHVtbXlfY21wX2EgUkVTRVQgKG9wdGlvbl90ZXJuYXJ5XzEpOw0K Ky0tIFRoZSBjb2x1bW5zIG9mIGEgdW5pcXVlIGluZGV4IHRoYXQgYSBmb3JlaWduIGtleSBjb3Vs ZCByZWZlcmVuY2UgYXJlDQorLS0gbmV2ZXIgY29tcGFyZWQgdGhpcyB3YXkuICAoTm9yIGFyZSB0 aG9zZSBvZiB0aGUgcmVwbGljYSBpZGVudGl0eSwgYnV0IGFuDQorLS0gaW5kZXggdGhhdCBjYW4g YmUgdGhlIHJlcGxpY2EgaWRlbnRpdHkgaXMgYWx3YXlzIHN1Y2ggYSBrZXkuKSAgV2l0aG91dA0K Ky0tIHRoZSB1bmlxdWUgaW5kZXgsIGlkICsgMTAwIHdvdWxkIGJlIEhPVDogZHVtbXlfaW5kZXhf YW0gc2F5cyBpdCBnaXZlcw0KKy0tIHRoZSBzYW1lIGVudHJpZXMsIGFuZCBub3RoaW5nIGVsc2Ug aW5kZXhlcyBpZC4NCitEUk9QIElOREVYIGR1bW15X2NtcF9pZDsNCitDUkVBVEUgSU5ERVggZHVt bXlfY21wX2lkX2QgT04gZHVtbXlfY21wIFVTSU5HIGR1bW15X2luZGV4X2FtIChpZCkNCisgIFdJ VEggKG9wdGlvbl9yZWFsID0gMSwgb3B0aW9uX2ludCA9IDEwMCk7DQorLS0gY291bnQgZnJvbSB6 ZXJvOiBmbHVzaCB3aGF0IGVhcmxpZXIgdHJhbnNhY3Rpb25zIGNvdW50ZWQNCitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorVVBEQVRFIGR1bW15X2NtcCBTRVQg aWQgPSBpZCArIDEwMDsNCitTRUxFQ1QgKiBGUk9NIGR1bW15X2NtcF9ob3QoKTsNCitDT01NSVQ7 DQorQ1JFQVRFIFVOSVFVRSBJTkRFWCBkdW1teV9jbXBfaWRfdSBPTiBkdW1teV9jbXAgKGlkKTsN CistLSBjb3VudCBmcm9tIHplcm86IGZsdXNoIHdoYXQgZWFybGllciB0cmFuc2FjdGlvbnMgY291 bnRlZA0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCitCRUdJTjsNCitVUERB VEUgZHVtbXlfY21wIFNFVCBpZCA9IGlkICsgMTAwOw0KK1NFTEVDVCAqIEZST00gZHVtbXlfY21w X2hvdCgpOw0KK0NPTU1JVDsNCitEUk9QIFRBQkxFIGR1bW15X2NtcDsNCitEUk9QIEZVTkNUSU9O IGR1bW15X2NtcF9ob3Q7DQorRFJPUCBFWFRFTlNJT04gZHVtbXlfaW5kZXhfYW07DQpkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdA0KaW5kZXggMGU0OTA5NWI3ODIuLjY3ZGEwYWZiMTY0IDEwMDY0NA0K LS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QNCisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0DQpAQCAtMzU3Miw2ICszNTcyLDcgQEAgYW1idWlsZGVtcHR5 X2Z1bmN0aW9uDQogYW1idWlsZHBoYXNlbmFtZV9mdW5jdGlvbg0KIGFtYnVsa2RlbGV0ZV9mdW5j dGlvbg0KIGFtY2FucmV0dXJuX2Z1bmN0aW9uDQorYW1jb21wYXJlZGF0dW1zX2Z1bmN0aW9uDQog YW1jb3N0ZXN0aW1hdGVfZnVuY3Rpb24NCiBhbWVuZHNjYW5fZnVuY3Rpb24NCiBhbWVzdGltYXRl cGFyYWxsZWxzY2FuX2Z1bmN0aW9uDQotLSANCjIuNTAuMQ0KDQo= --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0002-Identify-modified-indexed-attributes-in-the-exec.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0002-Identify-modified-indexed-attributes-in-the-exec.patch RnJvbSA0OGYxNWU3ZDBiNDFkYmE5ZGEzY2M3MmQ2ZjUwN2Q2MGVmN2EzNzM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBUdWUs IDEwIE1hciAyMDI2IDA4OjE3OjMxIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDIvOF0gSWRl bnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRvcg0KIG9uIFVQ REFURQ0KDQpoZWFwX3VwZGF0ZSgpIGRlY2lkZXMgd2hpY2ggaW5kZXhlZCBhdHRyaWJ1dGVzIGFu IFVQREFURSBjaGFuZ2VkIGJ5DQpjb21wYXJpbmcgdGhlIG9sZCBhbmQgbmV3IHR1cGxlcyBpbnNp ZGUgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKCksIHdpdGgNCnRoZSBidWZmZXIgbG9ja2VkLiAg VGhhdCBrbm93bGVkZ2UgaXMgbm90IGhlYXAtc3BlY2lmaWMsIGFuZCB0aGUNCmV4ZWN1dG9yIG5l ZWRzIGl0IGJlZm9yZSBpdCBjYWxscyB0aGUgdGFibGUgQU0gdG8gZG8gYW55dGhpbmcgc21hcnRl cjoNCmFuIGluZGV4IHdob3NlIGtleSBkaWQgbm90IGNoYW5nZSBkb2VzIG5vdCBuZWVkIGEgbmV3 IGVudHJ5LCB3aGF0ZXZlcg0KdGhlIHRhYmxlIEFNIGRvZXMuICBEZXRlcm1pbmUgaXQgaW4gdGhl IGV4ZWN1dG9yIGluc3RlYWQuDQoNCkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgY29tcGFy ZXMgdGhlIG9sZCBhbmQgbmV3IHNsb3RzIG92ZXIgdGhlDQpyZWxhdGlvbidzIGluZGV4ZWQgYXR0 cmlidXRlcyBhbmQgcGFzc2VzIHRoZSByZXN1bHQgdG8NCnRhYmxlX3R1cGxlX3VwZGF0ZSgpIGFz IGEgbmV3IG1vZGlmaWVkX2lkeF9hdHRycyBhcmd1bWVudC4gIEl0IGNvbXBhcmVzDQpldmVyeSBp bmRleGVkIGF0dHJpYnV0ZSwgbm90IGp1c3QgdGhvc2UgdGhlIFVQREFURSB0YXJnZXRzOg0KRXhl Y0dldEFsbFVwZGF0ZWRDb2xzKCkgbmFtZXMgdGhlIHRhcmdldGVkIGNvbHVtbnMsIGFuZCBtaXNz ZXMgYSBjb2x1bW4NCmEgQkVGT1JFIFJPVyB0cmlnZ2VyIGNoYW5nZXMgd2l0aCBoZWFwX21vZGlm eV90dXBsZSgpIChhcw0KdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSBkb2VzKSwgd2hpbGUgbG9n aWNhbCByZXBsaWNhdGlvbiBhcHBseSBhbmQNClJFUEFDSyAoQ09OQ1VSUkVOVExZKSBhcHBseSBo YW5kIG92ZXIgd2hvbGUgdHVwbGVzLiAgVGhlIGNvbXBhcmlzb24gaXMNCnRoZSBiaW5hcnkgY29t cGFyaXNvbiBoZWFwX3VwZGF0ZSgpIGhhcyBhbHdheXMgbWFkZSwgc28gYW4gdW5jaGFuZ2VkDQp0 b2FzdGVkIHZhbHVlIHN0aWxsIGNvbXBhcmVzIGVxdWFsIHdpdGhvdXQgYmVpbmcgZmV0Y2hlZC4N Cg0KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGRlcml2ZXMgdGhlIEhPVCBkZWNpc2lvbiBhbmQgdGhl IGxvY2sgbW9kZSBmcm9tDQp0aGUgc2V0LCB0aHJvdWdoIHRoZSBuZXcgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSgpIGFuZA0KSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCksIGFuZCBwYXNzZXMg Ym90aCB0byBoZWFwX3VwZGF0ZSgpLg0Kc2ltcGxlX2hlYXBfdXBkYXRlKCkgZmV0Y2hlcyB0aGUg b2xkIHR1cGxlIGludG8gYSBzbG90LCBwdXRzIHRoZSBuZXcgb25lDQppbiBhbm90aGVyIGFuZCBj b21wdXRlcyB0aGUgc2FtZSBzZXQgd2l0aCB0aGUgc2FtZSBjb21wYXJpc29uLCBiZWZvcmUNCnRh a2luZyB0aGUgYnVmZmVyIGxvY2s7IGZvciBhIHJlbGF0aW9uIHdpdGhvdXQgaW5kZXhlcyB0aGVy ZSBpcyBub3RoaW5nDQp0byBjb21wYXJlLCBhbmQgaXQgc2tpcHMgdGhlIGZldGNoLiAgU2xvdHMg ZGVmb3JtIGVhY2ggdHVwbGUgb25jZSBhbmQNCm9ubHkgYXMgZmFyIGFzIHRoZSBsYXN0IGluZGV4 ZWQgYXR0cmlidXRlLCB3aGVyZQ0KSGVhcERldGVybWluZUNvbHVtbnNJbmZvKCkgY2FsbGVkIGhl YXBfZ2V0YXR0cigpIGZvciBlYWNoIGluZGV4ZWQNCmF0dHJpYnV0ZSBvZiBib3RoIHR1cGxlcy4g IFdoYXQgcmVtYWlucyBvZiB0aGF0IGZ1bmN0aW9uLA0KSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0 cnMoKSwgaXMga2VwdCBmb3IgYXNzZXJ0LWVuYWJsZWQgYnVpbGRzLCB3aGVyZQ0KaGVhcF91cGRh dGUoKSB1c2VzIGl0IHRvIGNoZWNrIHRoZSBzZXQgaXQgaXMgZ2l2ZW4uICBoZWFwX3VwZGF0ZSgp IGtlZXBzDQp0aGUgcmVwbGljYSBpZGVudGl0eSBkZWNpc2lvbiwgd2hpY2ggbmVlZHMgdGhlIG9s ZCB0dXBsZSBvbiB0aGUgcGFnZS4NClRoZSBkZWNpc2lvbnMgYWJvdXQgSE9ULCBsb2NrIG1vZGUg YW5kIHJlcGxpY2EgaWRlbnRpdHkgZG8gbm90IGNoYW5nZTsNCmhvdF91cGRhdGVzJyBleHBlY3Rl ZCBvdXRwdXQgaXMgdW5jaGFuZ2VkLg0KDQpUaGUgc2V0IHRvIGNvbXBhcmUgaXMgdGhlIG5ldyBJ TkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVELCB0aGUgYXR0cmlidXRlcw0KcmVmZXJlbmNlZCBieSBh bnkgaW5kZXg6IHRoZSB1bmlvbiBvZiBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcgYW5k DQpJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELCB3aG9zZSBtZWFuaW5ncyBkbyBub3QgY2hh bmdlLg0KDQpzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKCkga2VlcHMgaXRzIHNpZ25hdHVyZTog aXQgZmV0Y2hlcyB0aGUgb2xkDQp2ZXJzaW9uIGFuZCBjb21wYXJlcyBpdCB3aXRoIHRhYmxlX3Ns b3RfbW9kaWZpZWRfaWR4X2F0dHJzKCksIHRoZQ0KZXhlY3V0b3IncyBjb21wYXJpc29uLCBub3cg aW4gdGFibGVhbS5jLiAgTG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSwNCndoaWNoIGhhcyBib3Ro IHNsb3RzLCBjYWxscyB0aGUgbmV3IHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGVfZXh0KCkgYW5k DQpwYXNzZXMgdGhlIHNldC4NCg0KSW4gYnVpbGRzIHdpdGggYXNzZXJ0aW9ucywgaGVhcF91cGRh dGUoKSBjb21wYXJlcyB0aGUgb2xkIHR1cGxlIGl0DQpsb2NrZWQgd2l0aCB0aGUgbmV3IG9uZSBh bmQgY2hlY2tzIHRoYXQgdGhlIGNhbGxlcidzIHNldCBpcyB0aGUgc2FtZSwNCnNvIHRoYXQgYSBj YWxsZXIgcGFzc2luZyBhIHdyb25nIHNldCBpcyBjYXVnaHQuDQoNClRoZSBzeXNjYWNoZS11cGRh dGUtcHJ1bmVkIGlzb2xhdGlvbiB0ZXN0IHdhaXRzIGF0IGFuIGluamVjdGlvbiBwb2ludA0KYmVm b3JlIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIHBpbnMgdGhlIG9sZCB0dXBsZSdzIGJ1ZmZlciwgd2hp Y2ggbm93DQpoYXBwZW5zIGJlZm9yZSBoZWFwX3VwZGF0ZSgpOyB0aGUgcG9pbnQgbW92ZXMgd2l0 aCBpdC4NCg0KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS83ODU3NEIyNC1CRTBBLTQy QzUtODA3NS0zRkE5RkE2M0I4RkNAYW1hem9uLmNvbQ0KLS0tDQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgNDY4ICsrKysrKysrKysrKy0tLS0tLQ0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8ICAzMCArLQ0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8IDExMyArKysrLQ0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jICAgICAgICAgICAgICAgICB8ICAgOSArLQ0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jICAgICAgICB8ICAgOSArLQ0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8ICA1NiArKy0N CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMTIgKw0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgICB8ICAgOSArLQ0K IHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8ICAxOSArLQ0K IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAgMyArDQog c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCiBz cmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KIC4u Li9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQ0KIC4u Li9zcGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMgICAgICAgICB8ICAgNiArLQ0KIDE0 IGZpbGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRpb25zKCspLCAxOTMgZGVsZXRpb25zKC0pDQoNCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jDQppbmRleCA2YTA5YTFhMTUxNy4uZDk3MWVjYWYwZDIgMTAw NjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYw0KKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMNCkBAIC0zNyw2ICszNyw4IEBADQogI2luY2x1ZGUg ImFjY2Vzcy9tdWx0aXhhY3QuaCINCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRyYW5zLmgiDQogI2lu Y2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIg0KKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIg0K KyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIg0KICNpbmNsdWRlICJhY2Nlc3MvdmFsaWQuaCIN CiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCINCiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dpbnNlcnQuaCINCkBAIC00NCw4ICs0NiwxMSBAQA0KICNpbmNsdWRlICJjYXRhbG9nL3BnX2Rh dGFiYXNlX2QuaCINCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiDQogI2luY2x1ZGUgImV4 ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oIg0KKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5o Ig0KKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIg0KICNpbmNsdWRlICJwZ3N0YXQuaCIN CiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIg0KKyNpbmNsdWRlICJzdG9yYWdlL2J1Zi5o Ig0KICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCINCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNh dGUuaCINCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiDQpAQCAtNTMsNiArNTgsNyBAQA0KICNp bmNsdWRlICJ1dGlscy9kYXR1bS5oIg0KICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQu aCINCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCINCisjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUu aCINCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUuaCINCiAjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCINCiANCkBAIC03MCwxMiArNzYsMTAgQEAgc3RhdGljIHZvaWQgY2hlY2tfbG9ja19pZl9p bnBsYWNlX3VwZGF0ZWFibGVfcmVsKFJlbGF0aW9uIHJlbGF0aW9uLA0KIAkJCQkJCQkJCQkJCSBj b25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsDQogCQkJCQkJCQkJCQkJIEhlYXBUdXBsZSBuZXd0 dXApOw0KIHN0YXRpYyB2b2lkIGNoZWNrX2lucGxhY2VfcmVsX2xvY2soSGVhcFR1cGxlIG9sZHR1 cCk7DQorc3RhdGljIEJpdG1hcHNldCAqSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVsYXRp b24gcmVsYXRpb24sDQorCQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICphdHRycywNCisJCQkJ CQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwKTsNCiAjZW5kaWYNCi1z dGF0aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRp b24sDQotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29scywNCi0JCQkJCQkJ CQkJICAgQml0bWFwc2V0ICpleHRlcm5hbF9jb2xzLA0KLQkJCQkJCQkJCQkgICBIZWFwVHVwbGUg b2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLA0KLQkJCQkJCQkJCQkgICBib29sICpoYXNfZXh0ZXJu YWwpOw0KIHN0YXRpYyBib29sIGhlYXBfYWNxdWlyZV90dXBsb2NrKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCwNCiAJCQkJCQkJCSBMb2NrVHVwbGVNb2RlIG1v ZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LA0KIAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVw bGVfbG9jayk7DQpAQCAtMzI1OCw3ICszMjYyLDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpDQogICoJaGVhcF91cGRh dGUgLSByZXBsYWNlIGEgdHVwbGUNCiAgKg0KICAqIFNlZSB0YWJsZV90dXBsZV91cGRhdGUoKSBm b3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIHBhcmFtZXRlcnMsIGV4Y2VwdCB0aGF0DQotICogdGhp cyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90Lg0KKyAq IHRoaXMgcm91dGluZSBkaXJlY3RseSB0YWtlcyBhIGhlYXAgdHVwbGUgcmF0aGVyIHRoYW4gYSBz bG90LCBhbmQgdGhhdCB0aGUNCisgKiBjYWxsZXIgZGVjaWRlcyB3aGF0IHRhYmxlX3R1cGxlX3Vw ZGF0ZSgpIGxlYXZlcyB0byB0aGUgdGFibGUgQU06DQorICogbW9kaWZpZWRfaWR4X2F0dHJzIGFy ZSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoZSB1cGRhdGUgY2hhbmdlcywgbG9ja21vZGUNCisg KiB0aGUgdHVwbGUgbG9jayB0byB0YWtlIChIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoKSks IGFuZCBob3RfYWxsb3dlZA0KKyAqIHdoZXRoZXIgdGhlIG5ldyB2ZXJzaW9uIG1heSBiZSBoZWFw LW9ubHkgKEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSkuICBUaGUNCisgKiBjYWxsZXIgdGhlbiBs ZWFybnMgZnJvbSBIZWFwVHVwbGVJc0hlYXBPbmx5KG5ld3R1cCkgd2hpY2ggaW5kZXhlcyBuZWVk IG5ldw0KKyAqIGVudHJpZXMuDQogICoNCiAgKiBJbiB0aGUgZmFpbHVyZSBjYXNlcywgdGhlIHJv dXRpbmUgZmlsbHMgKnRtZmQgd2l0aCB0aGUgdHVwbGUncyB0X2N0aWQsDQogICogdF94bWF4IChy ZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3QsIGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXgg KHRoZSBsYXN0DQpAQCAtMzI2OCwxNyArMzI3OCwxMiBAQCBzaW1wbGVfaGVhcF9kZWxldGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQ0KIFRNX1Jlc3VsdA0K IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90 aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogCQkJQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMs IFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwNCi0JCQlUTV9GYWlsdXJlRGF0YSAqdG1m ZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsDQotCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpDQorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgbG9ja21v ZGUsDQorCQkJY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIGJvb2wgaG90X2Fs bG93ZWQpDQogew0KIAlUTV9SZXN1bHQJcmVzdWx0Ow0KIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdl dEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7DQotCUJpdG1hcHNldCAgKmhvdF9hdHRyczsNCi0JQml0 bWFwc2V0ICAqc3VtX2F0dHJzOw0KLQlCaXRtYXBzZXQgICprZXlfYXR0cnM7DQogCUJpdG1hcHNl dCAgKmlkX2F0dHJzOw0KLQlCaXRtYXBzZXQgICppbnRlcmVzdGluZ19hdHRyczsNCi0JQml0bWFw c2V0ICAqbW9kaWZpZWRfYXR0cnM7DQogCUl0ZW1JZAkJbHA7DQogCUhlYXBUdXBsZURhdGEgb2xk dHVwOw0KIAlIZWFwVHVwbGUJaGVhcHR1cDsNCkBAIC0zMzAxLDcgKzMzMDYsNiBAQCBoZWFwX3Vw ZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFw VHVwbGUgbmV3dHVwLA0KIAlib29sCQloYXZlX3R1cGxlX2xvY2sgPSBmYWxzZTsNCiAJYm9vbAkJ aXNjb21ibzsNCiAJYm9vbAkJdXNlX2hvdF91cGRhdGUgPSBmYWxzZTsNCi0JYm9vbAkJc3VtbWFy aXplZF91cGRhdGUgPSBmYWxzZTsNCiAJYm9vbAkJa2V5X2ludGFjdDsNCiAJYm9vbAkJY2xlYXJf YWxsX3Zpc2libGUgPSBmYWxzZTsNCiAJYm9vbAkJY2xlYXJfYWxsX3Zpc2libGVfbmV3ID0gZmFs c2U7DQpAQCAtMzMwOSw3ICszMzEzLDEwIEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsDQogCWJvb2wJ CXZtYnVmZmVyX25ld19tb2RpZmllZCA9IGZhbHNlOw0KIAlib29sCQljaGVja2VkX2xvY2tlcnM7 DQogCWJvb2wJCWxvY2tlcl9yZW1haW5zOw0KLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwgPSBmYWxz ZTsNCisJYm9vbAkJcmVwX2lkX2tleV9yZXF1aXJlZCA9IGZhbHNlOw0KKyNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HDQorCUJpdG1hcHNldCAgKmNoZWNrX2F0dHJzOw0KKyNlbmRpZg0KIAlUcmFu c2FjdGlvbklkIHhtYXhfbmV3X3R1cGxlLA0KIAkJCQl4bWF4X29sZF90dXBsZTsNCiAJdWludDE2 CQlpbmZvbWFza19vbGRfdHVwbGUsDQpAQCAtMzM0MCwzMyArMzM0NywxOSBAQCBoZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVw bGUgbmV3dHVwLA0KICNlbmRpZg0KIA0KIAkvKg0KLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBhdHRy aWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4NCisJICogRmV0Y2gg dGhlIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1ucy4NCiAJICoNCi0JICogRm9yIEhPVCBjb25zaWRl cmF0aW9ucywgdGhpcyBpcyB3YXN0ZWQgZWZmb3J0IGlmIHdlIGZhaWwgdG8gdXBkYXRlIG9yDQot CSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24gYSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3 ZSBtdXN0IGNvbXB1dGUgdGhlDQotCSAqIGxpc3QgYmVmb3JlIG9idGFpbmluZyBidWZmZXIgbG9j ayAtLS0gaW4gdGhlIHdvcnN0IGNhc2UsIGlmIHdlIGFyZQ0KLQkgKiBkb2luZyBhbiB1cGRhdGUg b24gb25lIG9mIHRoZSByZWxldmFudCBzeXN0ZW0gY2F0YWxvZ3MsIHdlIGNvdWxkDQotCSAqIGRl YWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0 aGUgcmVsY2FjaGUNCi0JICogY2FjaGVzIHRoZSBkYXRhIHNvIHRoaXMgaXMgdXN1YWxseSBwcmV0 dHkgY2hlYXAuDQotCSAqDQotCSAqIFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJl cGxpY2EgaWRlbnRpdHkgYW5kIGNvbHVtbnMgdGhhdCBhcmUNCi0JICogY29uc2lkZXJlZCB0aGUg ImtleSIgb2Ygcm93cyBpbiB0aGUgdGFibGUuDQotCSAqDQotCSAqIE5vdGUgdGhhdCB3ZSBnZXQg Y29waWVzIG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dA0KLQkgKiBy ZWxjYWNoZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2guDQotCSAqLw0KLQlob3RfYXR0 cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCi0JCQkJCQkJCQkJICAg SU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HKTsNCi0Jc3VtX2F0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sDQotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklU TUFQX1NVTU1BUklaRUQpOw0KLQlrZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1h cChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsNCi0JaWRfYXR0cnMgPSBSZWxhdGlv bkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCi0JCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJ VE1BUF9JREVOVElUWV9LRVkpOw0KLQlpbnRlcmVzdGluZ19hdHRycyA9IE5VTEw7DQotCWludGVy ZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBob3RfYXR0 cnMpOw0KLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgc3VtX2F0dHJzKTsNCi0JaW50ZXJlc3RpbmdfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMo aW50ZXJlc3RpbmdfYXR0cnMsIGtleV9hdHRycyk7DQotCWludGVyZXN0aW5nX2F0dHJzID0gYm1z X2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBpZF9hdHRycyk7DQorCSAqIE5vdGU6IFdl IG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0 aGUNCisJICogd29yc3QgY2FzZSwgaWYgd2UgYXJlIGRvaW5nIGFuIHVwZGF0ZSBvbiBvbmUgb2Yg dGhlIHJlbGV2YW50IHN5c3RlbQ0KKwkgKiBjYXRhbG9ncywgd2UgY291bGQgZGVhZGxvY2sgaWYg d2UgdHJ5IHRvIGZldGNoIHRoZSBsaXN0IGxhdGVyLiBLZWVwIGluDQorCSAqIG1pbmQgdGhhdCBy ZWxjYWNoZSByZXR1cm5zIGEgY29weSBvZiB0aGUgYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3Jy eQ0KKwkgKiBhYm91dCByZWxjYWNoZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1 dCB3ZSBkbyBuZWVkIHRvIGZyZWUNCisJICogaXQuDQorCSAqLw0KKwlpZF9hdHRycyA9IFJlbGF0 aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElU WV9LRVkpOw0KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQorCWNoZWNrX2F0dHJzID0gUmVs YXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVY RUQpOw0KKyNlbmRpZg0KIA0KIAlibG9jayA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIob3Rp ZCk7DQogCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIsIE5VTEwpOw0K QEAgLTM0MjAsMjAgKzM0MTMsMTkgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwNCiAJCXRtZmQtPmN0 aWQgPSAqb3RpZDsNCiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsNCiAJCXRt ZmQtPmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOw0KLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9u ZTsNCiANCi0JCWJtc19mcmVlKGhvdF9hdHRycyk7DQotCQlibXNfZnJlZShzdW1fYXR0cnMpOw0K LQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsNCiAJCWJtc19mcmVlKGlkX2F0dHJzKTsNCi0JCS8qIG1v ZGlmaWVkX2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgKi8NCi0JCWJtc19mcmVlKGludGVyZXN0 aW5nX2F0dHJzKTsNCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORw0KKwkJYm1zX2ZyZWUoY2hl Y2tfYXR0cnMpOw0KKyNlbmRpZg0KKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5 IHRoZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8NCisNCiAJCXJldHVybiBUTV9EZWxldGVkOw0K IAl9DQogDQogCS8qDQotCSAqIEZpbGwgaW4gZW5vdWdoIGRhdGEgaW4gb2xkdHVwIGZvciBIZWFw RGV0ZXJtaW5lQ29sdW1uc0luZm8gdG8gd29yaw0KLQkgKiBwcm9wZXJseS4NCisJICogRmlsbCBp biBlbm91Z2ggZGF0YSBpbiBvbGR0dXAgdG8gZGV0ZXJtaW5lIHJlcGxpY2EgaWRlbnRpdHkgYXR0 cmlidXRlDQorCSAqIHJlcXVpcmVtZW50cy4NCiAJICovDQogCW9sZHR1cC50X3RhYmxlT2lkID0g UmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7DQogCW9sZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxl SGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7DQpAQCAtMzQ0NCwxNiArMzQzNiw1NCBAQCBo ZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlk LCBIZWFwVHVwbGUgbmV3dHVwLA0KIAluZXd0dXAtPnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbGF0aW9uKTsNCiANCiAJLyoNCi0JICogRGV0ZXJtaW5lIGNvbHVtbnMgbW9kaWZpZWQg YnkgdGhlIHVwZGF0ZS4gIEFkZGl0aW9uYWxseSwgaWRlbnRpZnkNCi0JICogd2hldGhlciBhbnkg b2YgdGhlIHVubW9kaWZpZWQgcmVwbGljYSBpZGVudGl0eSBrZXkgYXR0cmlidXRlcyBpbiB0aGUN Ci0JICogb2xkIHR1cGxlIGlzIGV4dGVybmFsbHkgc3RvcmVkIG9yIG5vdC4gIFRoaXMgaXMgcmVx dWlyZWQgYmVjYXVzZSBmb3INCi0JICogc3VjaCBhdHRyaWJ1dGVzIHRoZSBmbGF0dGVuZWQgdmFs dWUgd29uJ3QgYmUgV0FMIGxvZ2dlZCBhcyBwYXJ0IG9mIHRoZQ0KLQkgKiBuZXcgdHVwbGUgc28g d2UgbXVzdCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUuICBTZWUNCi0J ICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eS4NCisJICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eSgp IG5lZWRzIHRvIGtub3cgaWYgYSBtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZQ0KKwkgKiBpcyB1 c2VkIGFzIGEgcmVwbGljYSBpZGVudGl0eSBvciBpZiBhbnkgb2YgdGhlIHJlcGxpY2EgaWRlbnRp dHkNCisJICogYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBpbiBhbiBpbmRleCwgdW5tb2RpZmll ZCwgYW5kIGFyZSBzdG9yZWQNCisJICogZXh0ZXJuYWxseSBpbiB0aGUgb2xkIHR1cGxlIGJlaW5n IHJlcGxhY2VkLiAgSW4gdGhvc2UgY2FzZXMgaXQgbWF5IGJlDQorCSAqIG5lY2Vzc2FyeSB0byBX QUwgbG9nIHRoZW0gc28gdGhleSBhcmUgYXZhaWxhYmxlIHRvIHJlcGxpY2FzLg0KIAkgKi8NCi0J bW9kaWZpZWRfYXR0cnMgPSBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8ocmVsYXRpb24sIGludGVy ZXN0aW5nX2F0dHJzLA0KLQkJCQkJCQkJCQkJICBpZF9hdHRycywgJm9sZHR1cCwNCi0JCQkJCQkJ CQkJCSAgbmV3dHVwLCAmaWRfaGFzX2V4dGVybmFsKTsNCisJcmVwX2lkX2tleV9yZXF1aXJlZCA9 IGJtc19vdmVybGFwKG1vZGlmaWVkX2lkeF9hdHRycywgaWRfYXR0cnMpOw0KKwlpZiAoIXJlcF9p ZF9rZXlfcmVxdWlyZWQpDQorCXsNCisJCUJpdG1hcHNldCAgKmF0dHJzOw0KKwkJVHVwbGVEZXNj CXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsNCisJCWludAkJCWF0dGlkeCA9 IC0xOw0KKw0KKwkJLyogdGhlIHJlcGxpY2EgaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMgdGhlIHVw ZGF0ZSBsZWF2ZXMgdW5jaGFuZ2VkICovDQorCQlhdHRycyA9IGJtc19kaWZmZXJlbmNlKGlkX2F0 dHJzLCBtb2RpZmllZF9pZHhfYXR0cnMpOw0KKw0KKwkJd2hpbGUgKChhdHRpZHggPSBibXNfbmV4 dF9tZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDApDQorCQl7DQorCQkJLyoNCisJCQkgKiBhdHRp ZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBudW1iZXIN CisJCQkgKi8NCisJCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyOw0KKwkJCURhdHVtCQl2YWx1ZTsNCisJCQlib29sCQlpc251 bGw7DQorDQorCQkJLyoNCisJCQkgKiBUaGVzZSBhcmUgcmVwbGljYSBpZGVudGl0eSBjb2x1bW5z OiBhbiBpbmRleCdzIHBsYWluIGtleQ0KKwkJCSAqIGNvbHVtbnMsIG5ldmVyIHN5c3RlbSBhdHRy aWJ1dGVzLg0KKwkJCSAqLw0KKwkJCUFzc2VydChhdHRybnVtID4gMCk7DQorDQorCQkJdmFsdWUg PSBoZWFwX2dldGF0dHIoJm9sZHR1cCwgYXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7DQorDQor CQkJLyogTm8gbmVlZCB0byBjaGVjayBhdHRyaWJ1dGVzIHRoYXQgY2FuJ3QgYmUgc3RvcmVkIGV4 dGVybmFsbHkgKi8NCisJCQlpZiAoaXNudWxsIHx8DQorCQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRy KHR1cGRlc2MsIGF0dHJudW0gLSAxKS0+YXR0bGVuICE9IC0xKQ0KKwkJCQljb250aW51ZTsNCisN CisJCQkvKiBDaGVjayBpZiB0aGUgb2xkIHR1cGxlJ3MgYXR0cmlidXRlIGlzIHN0b3JlZCBleHRl cm5hbGx5ICovDQorCQkJaWYgKFZBUkFUVF9JU19FWFRFUk5BTCgodmFybGVuYSAqKSBEYXR1bUdl dFBvaW50ZXIodmFsdWUpKSkNCisJCQl7DQorCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVl Ow0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorDQorCQlibXNfZnJlZShhdHRycyk7DQorCX0N CiANCiAJLyoNCiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdl IGNhbiBncmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4NCkBAIC0zNDY2LDkgKzM0OTYsOCBAQCBoZWFw X3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBI ZWFwVHVwbGUgbmV3dHVwLA0KIAkgKiBpcyB1cGRhdGVzIHRoYXQgZG9uJ3QgbWFuaXB1bGF0ZSBr ZXkgY29sdW1ucywgbm90IHRob3NlIHRoYXQNCiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2ZSBh dCB0aGUgc2FtZSBrZXkgdmFsdWVzLg0KIAkgKi8NCi0JaWYgKCFibXNfb3ZlcmxhcChtb2RpZmll ZF9hdHRycywga2V5X2F0dHJzKSkNCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5vS2V5RXhj bHVzaXZlKQ0KIAl7DQotCQkqbG9ja21vZGUgPSBMb2NrVHVwbGVOb0tleUV4Y2x1c2l2ZTsNCiAJ CW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOw0KIAkJa2V5X2ludGFj dCA9IHRydWU7DQogDQpAQCAtMzQ4NSw3ICszNTE0LDcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwN CiAJfQ0KIAllbHNlDQogCXsNCi0JCSpsb2NrbW9kZSA9IExvY2tUdXBsZUV4Y2x1c2l2ZTsNCisJ CUFzc2VydChsb2NrbW9kZSA9PSBMb2NrVHVwbGVFeGNsdXNpdmUpOw0KIAkJbXhhY3Rfc3RhdHVz ID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOw0KIAkJa2V5X2ludGFjdCA9IGZhbHNlOw0KIAl9DQpA QCAtMzU2NCw3ICszNTkzLDcgQEAgbDI6DQogCQkJYm9vbAkJY3VycmVudF9pc19tZW1iZXIgPSBm YWxzZTsNCiANCiAJCQlpZiAoRG9lc011bHRpWGFjdElkQ29uZmxpY3QoKE11bHRpWGFjdElkKSB4 d2FpdCwgaW5mb21hc2ssDQotCQkJCQkJCQkJCSpsb2NrbW9kZSwgJmN1cnJlbnRfaXNfbWVtYmVy KSkNCisJCQkJCQkJCQkJbG9ja21vZGUsICZjdXJyZW50X2lzX21lbWJlcikpDQogCQkJew0KIAkJ CQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsNCiANCkBAIC0zNTczLDcg KzM2MDIsNyBAQCBsMjoNCiAJCQkJICogcmVxdWVzdGluZyBhIGxvY2sgYW5kIGFscmVhZHkgaGF2 ZSBvbmU7IGF2b2lkcyBkZWFkbG9jaykuDQogCQkJCSAqLw0KIAkJCQlpZiAoIWN1cnJlbnRfaXNf bWVtYmVyKQ0KLQkJCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRf c2VsZiksICpsb2NrbW9kZSwNCisJCQkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAm KG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwNCiAJCQkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZo YXZlX3R1cGxlX2xvY2spOw0KIA0KIAkJCQkvKiB3YWl0IGZvciBtdWx0aXhhY3QgKi8NCkBAIC0z NjY5LDcgKzM2OTgsNyBAQCBsMjoNCiAJCQkgKiBsb2NrLg0KIAkJCSAqLw0KIAkJCUxvY2tCdWZm ZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOw0KLQkJCWhlYXBfYWNxdWlyZV90dXBsb2Nr KHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUsDQorCQkJaGVhcF9hY3F1aXJl X3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxvY2ttb2RlLA0KIAkJCQkJCQkJ IExvY2tXYWl0QmxvY2ssICZoYXZlX3R1cGxlX2xvY2spOw0KIAkJCVhhY3RMb2NrVGFibGVXYWl0 KHh3YWl0LCByZWxhdGlvbiwgJm9sZHR1cC50X3NlbGYsDQogCQkJCQkJCSAgWExUV19VcGRhdGUp Ow0KQEAgLTM3MjksMTcgKzM3NTgsMTYgQEAgbDI6DQogCQkJdG1mZC0+Y21heCA9IEludmFsaWRD b21tYW5kSWQ7DQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7DQogCQlpZiAoaGF2ZV90 dXBsZV9sb2NrKQ0KLQkJCVVubG9ja1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9z ZWxmKSwgKmxvY2ttb2RlKTsNCisJCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xk dHVwLnRfc2VsZiksIGxvY2ttb2RlKTsNCiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVy KQ0KIAkJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOw0KLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVf Tm9uZTsNCiANCi0JCWJtc19mcmVlKGhvdF9hdHRycyk7DQotCQlibXNfZnJlZShzdW1fYXR0cnMp Ow0KLQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsNCiAJCWJtc19mcmVlKGlkX2F0dHJzKTsNCi0JCWJt c19mcmVlKG1vZGlmaWVkX2F0dHJzKTsNCi0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsN CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORw0KKwkJYm1zX2ZyZWUoY2hlY2tfYXR0cnMpOw0K KyNlbmRpZg0KKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIs IGRvbid0IGZyZWUgaXQgKi8NCisNCiAJCXJldHVybiByZXN1bHQ7DQogCX0NCiANCkBAIC0zNzYw LDYgKzM3ODgsMjYgQEAgbDI6DQogCQlnb3RvIGwyOw0KIAl9DQogDQorI2lmZGVmIFVTRV9BU1NF UlRfQ0hFQ0tJTkcNCisNCisJLyoNCisJICogVGhlIGNhbGxlciBjb21wYXJlZCB0aGUgdmVyc2lv biBpdCBmZXRjaGVkOyB0aGlzIGlzIHRoZSB2ZXJzaW9uIGJlaW5nDQorCSAqIHVwZGF0ZWQsIGFu ZCBubyBvbmUgZWxzZSBjYW4gaGF2ZSBjaGFuZ2VkIGl0LiAgQ2hlY2sgdGhhdCBldmVyeQ0KKwkg KiBhdHRyaWJ1dGUgY29tcGFyaW5nIHRoZSB0d28gdHVwbGVzIGhlcmUgZmluZHMgY2hhbmdlZCBp cyBpbiB0aGUNCisJICogY2FsbGVyJ3Mgc2V0LCBzbyB0aGF0IGEgY2FsbGVyIHRoYXQgbWlzc2Vz IGEgY2hhbmdlLCBvciBjb21wYXJlcyB0aGUNCisJICogd3JvbmcgdHVwbGVzLCBpcyBjYXVnaHQu ICBUaGUgY2FsbGVyIG1heSByZXBvcnQgbW9yZTogY29tcGFyaW5nIHNsb3RzLA0KKwkgKiBpdCBj YW5ub3QgYWx3YXlzIHRlbGwgdGhhdCB0d28gdmFsdWVzIHdpbGwgYmUgc3RvcmVkIGFsaWtlLg0K KwkgKi8NCisJew0KKwkJQml0bWFwc2V0ICAqY2hhbmdlZCA9IEhlYXBVcGRhdGVNb2RpZmllZElk eEF0dHJzKHJlbGF0aW9uLCBjaGVja19hdHRycywNCisJCQkJCQkJCQkJCQkJCSAmb2xkdHVwLCBu ZXd0dXApOw0KKw0KKwkJQXNzZXJ0KGJtc19pc19zdWJzZXQoY2hhbmdlZCwgbW9kaWZpZWRfaWR4 X2F0dHJzKSk7DQorCQlibXNfZnJlZShjaGFuZ2VkKTsNCisJCWJtc19mcmVlKGNoZWNrX2F0dHJz KTsNCisJfQ0KKyNlbmRpZg0KKw0KIAkvKiBGaWxsIGluIHRyYW5zYWN0aW9uIHN0YXR1cyBkYXRh ICovDQogDQogCS8qDQpAQCAtMzc2OSw3ICszODE3LDcgQEAgbDI6DQogCWNvbXB1dGVfbmV3X3ht YXhfaW5mb21hc2soSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heChvbGR0dXAudF9kYXRhKSwNCiAJ CQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrLA0KIAkJCQkJCQkgIG9sZHR1cC50X2Rh dGEtPnRfaW5mb21hc2syLA0KLQkJCQkJCQkgIHhpZCwgKmxvY2ttb2RlLCB0cnVlLA0KKwkJCQkJ CQkgIHhpZCwgbG9ja21vZGUsIHRydWUsDQogCQkJCQkJCSAgJnhtYXhfb2xkX3R1cGxlLCAmaW5m b21hc2tfb2xkX3R1cGxlLA0KIAkJCQkJCQkgICZpbmZvbWFzazJfb2xkX3R1cGxlKTsNCiANCkBA IC0zODg2LDcgKzM5MzQsNyBAQCBsMjoNCiAJCWNvbXB1dGVfbmV3X3htYXhfaW5mb21hc2soSGVh cFR1cGxlSGVhZGVyR2V0UmF3WG1heChvbGR0dXAudF9kYXRhKSwNCiAJCQkJCQkJCSAgb2xkdHVw LnRfZGF0YS0+dF9pbmZvbWFzaywNCiAJCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFz azIsDQotCQkJCQkJCQkgIHhpZCwgKmxvY2ttb2RlLCBmYWxzZSwNCisJCQkJCQkJCSAgeGlkLCBs b2NrbW9kZSwgZmFsc2UsDQogCQkJCQkJCQkgICZ4bWF4X2xvY2tfb2xkX3R1cGxlLCAmaW5mb21h c2tfbG9ja19vbGRfdHVwbGUsDQogCQkJCQkJCQkgICZpbmZvbWFzazJfbG9ja19vbGRfdHVwbGUp Ow0KIA0KQEAgLTQwODEsMjMgKzQxMjksMTEgQEAgbDI6DQogCXsNCiAJCS8qDQogCQkgKiBTaW5j ZSB0aGUgbmV3IHR1cGxlIGlzIGdvaW5nIGludG8gdGhlIHNhbWUgcGFnZSwgd2UgbWlnaHQgYmUg YWJsZQ0KLQkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRl eCBjb2x1bW5zIGhhdmUgYmVlbg0KLQkJICogY2hhbmdlZC4NCisJCSAqIHRvIGRvIGEgSE9UIHVw ZGF0ZSwgaWYgdGhlIGNhbGxlciBmb3VuZCB0aGF0IG5vIGluZGV4IG5lZWRzIGEgbmV3DQorCQkg KiBlbnRyeSAoaG90X2FsbG93ZWQpLg0KIAkJICovDQotCQlpZiAoIWJtc19vdmVybGFwKG1vZGlm aWVkX2F0dHJzLCBob3RfYXR0cnMpKQ0KLQkJew0KKwkJaWYgKGhvdF9hbGxvd2VkKQ0KIAkJCXVz ZV9ob3RfdXBkYXRlID0gdHJ1ZTsNCi0NCi0JCQkvKg0KLQkJCSAqIElmIG5vbmUgb2YgdGhlIGNv bHVtbnMgdGhhdCBhcmUgdXNlZCBpbiBob3QtYmxvY2tpbmcgaW5kZXhlcw0KLQkJCSAqIHdlcmUg dXBkYXRlZCwgd2UgY2FuIGFwcGx5IEhPVCwgYnV0IHdlIGRvIHN0aWxsIG5lZWQgdG8gY2hlY2sN Ci0JCQkgKiBpZiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3VtbWFyaXppbmcgaW5kZXhlcywgYW5k IHVwZGF0ZSB0aG9zZQ0KLQkJCSAqIGluZGV4ZXMgaWYgdGhlIGNvbHVtbnMgd2VyZSB1cGRhdGVk LCBvciB3ZSBtYXkgZmFpbCB0byBkZXRlY3QNCi0JCQkgKiBlLmcuIHZhbHVlIGJvdW5kIGNoYW5n ZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4NCi0JCQkgKi8NCi0JCQlpZiAoYm1zX292ZXJsYXAo bW9kaWZpZWRfYXR0cnMsIHN1bV9hdHRycykpDQotCQkJCXN1bW1hcml6ZWRfdXBkYXRlID0gdHJ1 ZTsNCi0JCX0NCiAJfQ0KIAllbHNlDQogCXsNCkBAIC00MTEzLDggKzQxNDksNyBAQCBsMjoNCiAJ ICogY29sdW1ucyBhcmUgbW9kaWZpZWQgb3IgaXQgaGFzIGV4dGVybmFsIGRhdGEuDQogCSAqLw0K IAlvbGRfa2V5X3R1cGxlID0gRXh0cmFjdFJlcGxpY2FJZGVudGl0eShyZWxhdGlvbiwgJm9sZHR1 cCwNCi0JCQkJCQkJCQkJICAgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGlkX2F0dHJzKSB8 fA0KLQkJCQkJCQkJCQkgICBpZF9oYXNfZXh0ZXJuYWwsDQorCQkJCQkJCQkJCSAgIHJlcF9pZF9r ZXlfcmVxdWlyZWQsDQogCQkJCQkJCQkJCSAgICZvbGRfa2V5X2NvcGllZCk7DQogDQogCWNsZWFy X2FsbF92aXNpYmxlID0gUGFnZUlzQWxsVmlzaWJsZShwYWdlKTsNCkBAIC00MzQyLDcgKzQzNzcs NyBAQCBsMjoNCiAJICogUmVsZWFzZSB0aGUgbG1nciB0dXBsZSBsb2NrLCBpZiB3ZSBoYWQgaXQu DQogCSAqLw0KIAlpZiAoaGF2ZV90dXBsZV9sb2NrKQ0KLQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJl bGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOw0KKwkJVW5sb2NrVHVwbGVUdXBs b2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSk7DQogDQogCXBnc3RhdF9j b3VudF9oZWFwX3VwZGF0ZShyZWxhdGlvbiwgdXNlX2hvdF91cGRhdGUsIG5ld2J1ZiAhPSBidWZm ZXIpOw0KIA0KQEAgLTQzNTYsMzEgKzQzOTEsMTEgQEAgbDI6DQogCQloZWFwX2ZyZWV0dXBsZSho ZWFwdHVwKTsNCiAJfQ0KIA0KLQkvKg0KLQkgKiBJZiBpdCBpcyBhIEhPVCB1cGRhdGUsIHRoZSB1 cGRhdGUgbWF5IHN0aWxsIG5lZWQgdG8gdXBkYXRlIHN1bW1hcml6ZWQNCi0JICogaW5kZXhlcywg bGVzdCB3ZSBmYWlsIHRvIHVwZGF0ZSB0aG9zZSBzdW1tYXJpZXMgYW5kIGdldCBpbmNvcnJlY3QN Ci0JICogcmVzdWx0cyAoZm9yIGV4YW1wbGUsIG1pbm1heCBib3VuZHMgb2YgdGhlIGJsb2NrIG1h eSBjaGFuZ2Ugd2l0aCB0aGlzDQotCSAqIHVwZGF0ZSkuDQotCSAqLw0KLQlpZiAodXNlX2hvdF91 cGRhdGUpDQotCXsNCi0JCWlmIChzdW1tYXJpemVkX3VwZGF0ZSkNCi0JCQkqdXBkYXRlX2luZGV4 ZXMgPSBUVV9TdW1tYXJpemluZzsNCi0JCWVsc2UNCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9O b25lOw0KLQl9DQotCWVsc2UNCi0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsNCi0NCiAJaWYg KG9sZF9rZXlfdHVwbGUgIT0gTlVMTCAmJiBvbGRfa2V5X2NvcGllZCkNCiAJCWhlYXBfZnJlZXR1 cGxlKG9sZF9rZXlfdHVwbGUpOw0KIA0KLQlibXNfZnJlZShob3RfYXR0cnMpOw0KLQlibXNfZnJl ZShzdW1fYXR0cnMpOw0KLQlibXNfZnJlZShrZXlfYXR0cnMpOw0KIAlibXNfZnJlZShpZF9hdHRy cyk7DQotCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsNCi0JYm1zX2ZyZWUoaW50ZXJlc3Rpbmdf YXR0cnMpOw0KKwkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwg ZG9uJ3QgZnJlZSBpdCAqLw0KIA0KIAlyZXR1cm4gVE1fT2s7DQogfQ0KQEAgLTQ1MDUsMTEgKzQ1 MjAsMTAgQEAgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFwVHVwbGUgb2xkdHVwKQ0KIAkJCSBJ dGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZvbGR0dXAtPnRfc2VsZiksDQogCQkJIEl0ZW1Qb2lu dGVyR2V0T2Zmc2V0TnVtYmVyKCZvbGR0dXAtPnRfc2VsZikpOw0KIH0NCi0jZW5kaWYNCiANCiAv Kg0KICAqIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlJ3MgdmFsdWVzIGFyZSB0aGUg c2FtZS4gIFN1YnJvdXRpbmUgZm9yDQotICogSGVhcERldGVybWluZUNvbHVtbnNJbmZvLg0KKyAq IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzLg0KICAqLw0KIHN0YXRpYyBib29sDQogaGVhcF9h dHRyX2VxdWFscyhUdXBsZURlc2MgdHVwZGVzYywgaW50IGF0dHJudW0sIERhdHVtIHZhbHVlMSwg RGF0dW0gdmFsdWUyLA0KQEAgLTQ1NTEsMzAgKzQ1NjUsOTIgQEAgaGVhcF9hdHRyX2VxdWFscyhU dXBsZURlc2MgdHVwZGVzYywgaW50IGF0dHJudW0sIERhdHVtIHZhbHVlMSwgRGF0dW0gdmFsdWUy LA0KIAkJcmV0dXJuIGRhdHVtSXNFcXVhbCh2YWx1ZTEsIHZhbHVlMiwgYXR0LT5hdHRieXZhbCwg YXR0LT5hdHRsZW4pOw0KIAl9DQogfQ0KKyNlbmRpZg0KIA0KIC8qDQotICogQ2hlY2sgd2hpY2gg Y29sdW1ucyBhcmUgYmVpbmcgdXBkYXRlZC4NCi0gKg0KLSAqIEdpdmVuIGFuIHVwZGF0ZWQgdHVw bGUsIGRldGVybWluZSAoYW5kIHJldHVybiBpbnRvIHRoZSBvdXRwdXQgYml0bWFwc2V0KSwNCi0g KiBmcm9tIHRob3NlIGxpc3RlZCBhcyBpbnRlcmVzdGluZywgdGhlIHNldCBvZiBjb2x1bW5zIHRo YXQgY2hhbmdlZC4NCi0gKg0KLSAqIGhhc19leHRlcm5hbCBpbmRpY2F0ZXMgaWYgYW55IG9mIHRo ZSB1bm1vZGlmaWVkIGF0dHJpYnV0ZXMgKGZyb20gdGhvc2UNCi0gKiBsaXN0ZWQgYXMgaW50ZXJl c3RpbmcpIG9mIHRoZSBvbGQgdHVwbGUgaXMgYSBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scyBhbmQg aXMNCi0gKiBzdG9yZWQgZXh0ZXJuYWxseS4NCisgKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUg d2hlbiBlaXRoZXI6IGEpIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleGVkDQorICogYXR0cmli dXRlcywgb3IgYikgdGhlIG1vZGlmaWVkIGF0dHJpYnV0ZXMgYXJlIGFsbCBvbiBzdW1tYXJpemlu ZyBpbmRleGVzLg0KKyAqIExhdGVyLCBpbiBoZWFwX3VwZGF0ZSgpLCB3ZSBjYW4gY2hvb3NlIHRv IHBlcmZvcm0gYSBIT1QgdXBkYXRlIGlmIHRoZXJlIGlzDQorICogc3BhY2Ugb24gdGhlIHBhZ2Ug Zm9yIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5lZA0K KyAqIHRoYXQgSE9UIGlzIGFsbG93ZWQuDQorICovDQorYm9vbA0KK0hlYXBVcGRhdGVIb3RBbGxv d2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0 dHJzLA0KKwkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KQ0KK3sNCisJQml0bWFwc2V0ICAq aG90X2F0dHJzOw0KKwlCaXRtYXBzZXQgICpzdW1fYXR0cnM7DQorCWJvb2wJCWhvdF9hbGxvd2Vk Ow0KKw0KKwkqc3VtbWFyaXplZF9vbmx5ID0gZmFsc2U7DQorCWlmIChibXNfaXNfZW1wdHkobW9k aWZpZWRfaWR4X2F0dHJzKSkNCisJCXJldHVybiB0cnVlOw0KKw0KKwlob3RfYXR0cnMgPSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCisJCQkJCQkJCQkJICAgSU5ERVhfQVRU Ul9CSVRNQVBfSE9UX0JMT0NLSU5HKTsNCisJc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAocmVsYXRpb24sDQorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1B UklaRUQpOw0KKw0KKwkvKg0KKwkgKiBVbmxlc3MgYSBtb2RpZmllZCBhdHRyaWJ1dGUgaXMgcmVm ZXJlbmNlZCBieSBhIG5vbi1zdW1tYXJpemluZyBpbmRleCwNCisJICogSE9UIGlzIGFsbG93ZWQ7 IGlmIGEgc3VtbWFyaXppbmcgaW5kZXggcmVmZXJlbmNlcyBvbmUsIHRoYXQgaW5kZXggc3RpbGwN CisJICogbmVlZHMgYSBuZXcgZW50cnkuDQorCSAqLw0KKwlob3RfYWxsb3dlZCA9ICFibXNfb3Zl cmxhcChtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hdHRycyk7DQorCWlmIChob3RfYWxsb3dlZCkN CisJCSpzdW1tYXJpemVkX29ubHkgPSBibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhfYXR0cnMsIHN1 bV9hdHRycyk7DQorDQorCWJtc19mcmVlKGhvdF9hdHRycyk7DQorCWJtc19mcmVlKHN1bV9hdHRy cyk7DQorDQorCXJldHVybiBob3RfYWxsb3dlZDsNCit9DQorDQorLyoNCisgKiBJZiB3ZSdyZSBu b3QgdXBkYXRpbmcgYW55IGF0dHJpYnV0ZXMgdXNlZCB3aGVuIGZvcm1pbmcgdGhlIGluZGV4IGtl eXMgd2UgY2FuDQorICogZ3JhYiBhIHdlYWtlciBsb2NrIHR5cGUuIFRoaXMgYWxsb3dzIGZvciBt b3JlIGNvbmN1cnJlbmN5IHdoZW4gd2UgYXJlDQorICogcnVubmluZyBzaW11bHRhbmVvdXNseSB3 aXRoIGZvcmVpZ24ga2V5IGNoZWNrcy4NCisgKi8NCitMb2NrVHVwbGVNb2RlDQorSGVhcFVwZGF0 ZURldGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1v ZGlmaWVkX2lkeF9hdHRycykNCit7DQorCUxvY2tUdXBsZU1vZGUgbG9ja21vZGUgPSBMb2NrVHVw bGVFeGNsdXNpdmU7DQorDQorCUJpdG1hcHNldCAgKmtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLA0KKwkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1B UF9LRVkpOw0KKw0KKwlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2lkeF9hdHRycywga2V5X2F0 dHJzKSkNCisJCWxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7DQorDQorCWJtc19m cmVlKGtleV9hdHRycyk7DQorDQorCXJldHVybiBsb2NrbW9kZTsNCit9DQorDQorI2lmZGVmIFVT RV9BU1NFUlRfQ0hFQ0tJTkcNCisvKg0KKyAqIFJldHVybiBhIEJpdG1hcHNldCB0aGF0IGNvbnRh aW5zIHRoZSBtZW1iZXJzIG9mIGF0dHJzLCBhIHNldCBvZiBpbmRleGVkDQorICogYXR0cmlidXRl cywgd2hvc2UgdmFsdWVzIGRpZmZlciBiZXR3ZWVuIG9sZHR1cCBhbmQgbmV3dHVwLiAgUmVhZHMg bm8NCisgKiBjYXRhbG9ncywgc28gaXQgbWF5IGJlIGNhbGxlZCB3aXRoIHRoZSBidWZmZXIgbG9j a2VkLiAgaGVhcF91cGRhdGUoKSB1c2VzDQorICogaXQgdG8gY2hlY2sgaXRzIGNhbGxlcidzIHNl dDsgaXQgY29tcGFyZXMgdGhlIHR1cGxlcyBpbmRlcGVuZGVudGx5IG9mDQorICogdGFibGVfc2xv dF9tb2RpZmllZF9pZHhfYXR0cnMoKSwgd2hpY2ggdGhlIGNhbGxlcnMgdXNlLg0KICAqLw0KIHN0 YXRpYyBCaXRtYXBzZXQgKg0KLUhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxh dGlvbiwNCi0JCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLA0KLQkJCQkJCSBCaXRt YXBzZXQgKmV4dGVybmFsX2NvbHMsDQotCQkJCQkJIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBs ZSBuZXd0dXAsDQotCQkJCQkJIGJvb2wgKmhhc19leHRlcm5hbCkNCitIZWFwVXBkYXRlTW9kaWZp ZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICphdHRycywNCisJ CQkJCQkgICBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwKQ0KIHsNCiAJaW50CQkJ YXR0aWR4Ow0KLQlCaXRtYXBzZXQgICptb2RpZmllZCA9IE5VTEw7DQorCUJpdG1hcHNldCAgKm1v ZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7DQogCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25H ZXREZXNjcihyZWxhdGlvbik7DQogDQorCS8qDQorCSAqIEFzIEV4ZWNVcGRhdGVNb2RpZmllZElk eEF0dHJzKCkgZG9lcyBmb3IgdGhlIGV4ZWN1dG9yJ3Mgc2xvdHMsIGNvbXBhcmUNCisJICogZXZl cnkgaW5kZXhlZCBhdHRyaWJ1dGUgb2YgdGhlIG9sZCB0dXBsZSBhbmQgdGhlIG5ldyB0byBmaW5k IHRoZSBzdWJzZXQNCisJICogdGhhdCBjaGFuZ2VkIHZhbHVlLCB0aGUgIm1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcyIgb3INCisJICogIm1vZGlmaWVkX2lkeF9hdHRycyIuDQorCSAqLw0KIAlh dHRpZHggPSAtMTsNCi0Jd2hpbGUgKChhdHRpZHggPSBibXNfbmV4dF9tZW1iZXIoaW50ZXJlc3Rp bmdfY29scywgYXR0aWR4KSkgPj0gMCkNCisJd2hpbGUgKChhdHRpZHggPSBibXNfbmV4dF9tZW1i ZXIoYXR0cnMsIGF0dGlkeCkpID49IDApDQogCXsNCiAJCS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2Vk LCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlciAqLw0KIAkJQXR0ck51bWJl cglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsN CkBAIC00NTkwLDcgKzQ2NjYsNyBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24g cmVsYXRpb24sDQogCQkgKi8NCiAJCWlmIChhdHRybnVtID09IDApDQogCQl7DQotCQkJbW9kaWZp ZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0aWR4KTsNCisJCQltb2RpZmllZF9pZHhf YXR0cnMgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZF9pZHhfYXR0cnMsIGF0dGlkeCk7DQogCQkJ Y29udGludWU7DQogCQl9DQogDQpAQCAtNDYwMyw3ICs0Njc5LDcgQEAgSGVhcERldGVybWluZUNv bHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLA0KIAkJew0KIAkJCWlmIChhdHRybnVtICE9IFRh YmxlT2lkQXR0cmlidXRlTnVtYmVyKQ0KIAkJCXsNCi0JCQkJbW9kaWZpZWQgPSBibXNfYWRkX21l bWJlcihtb2RpZmllZCwgYXR0aWR4KTsNCisJCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0gYm1zX2Fk ZF9tZW1iZXIobW9kaWZpZWRfaWR4X2F0dHJzLCBhdHRpZHgpOw0KIAkJCQljb250aW51ZTsNCiAJ CQl9DQogCQl9DQpAQCAtNDYxOSwzMCArNDY5NSwxMiBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8oUmVsYXRpb24gcmVsYXRpb24sDQogDQogCQlpZiAoIWhlYXBfYXR0cl9lcXVhbHModHVwZGVz YywgYXR0cm51bSwgdmFsdWUxLA0KIAkJCQkJCQkgIHZhbHVlMiwgaXNudWxsMSwgaXNudWxsMikp DQotCQl7DQotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0aWR4KTsN Ci0JCQljb250aW51ZTsNCi0JCX0NCi0NCi0JCS8qDQotCQkgKiBObyBuZWVkIHRvIGNoZWNrIGF0 dHJpYnV0ZXMgdGhhdCBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4gTm90ZQ0KLQkJICogdGhh dCBzeXN0ZW0gYXR0cmlidXRlcyBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4NCi0JCSAqLw0K LQkJaWYgKGF0dHJudW0gPCAwIHx8IGlzbnVsbDEgfHwNCi0JCQlUdXBsZURlc2NDb21wYWN0QXR0 cih0dXBkZXNjLCBhdHRybnVtIC0gMSktPmF0dGxlbiAhPSAtMSkNCi0JCQljb250aW51ZTsNCi0N Ci0JCS8qDQotCQkgKiBDaGVjayBpZiB0aGUgb2xkIHR1cGxlJ3MgYXR0cmlidXRlIGlzIHN0b3Jl ZCBleHRlcm5hbGx5IGFuZCBpcyBhDQotCQkgKiBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scy4NCi0J CSAqLw0KLQkJaWYgKFZBUkFUVF9JU19FWFRFUk5BTCgodmFybGVuYSAqKSBEYXR1bUdldFBvaW50 ZXIodmFsdWUxKSkgJiYNCi0JCQlibXNfaXNfbWVtYmVyKGF0dGlkeCwgZXh0ZXJuYWxfY29scykp DQotCQkJKmhhc19leHRlcm5hbCA9IHRydWU7DQorCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0gYm1z X2FkZF9tZW1iZXIobW9kaWZpZWRfaWR4X2F0dHJzLCBhdHRpZHgpOw0KIAl9DQogDQotCXJldHVy biBtb2RpZmllZDsNCisJcmV0dXJuIG1vZGlmaWVkX2lkeF9hdHRyczsNCiB9DQorI2VuZGlmDQog DQogLyoNCiAgKglzaW1wbGVfaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUNCkBAIC00NjU5 LDEyICs0NzE3LDEwNCBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cA0KIAlUTV9SZXN1bHQJcmVz dWx0Ow0KIAlUTV9GYWlsdXJlRGF0YSB0bWZkOw0KIAlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOw0K KwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsNCisJVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3Q7DQorCUJ1 ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqYnNsb3Q7DQorCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lk eF9hdHRyczsNCisJYm9vbAkJaG90X2FsbG93ZWQsDQorCQkJCXN1bW1hcml6ZWRfb25seTsNCisJ QnVmZmVyCQlidWZmZXI7DQogDQotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlk LCB0dXAsDQotCQkJCQkJIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksIDAsDQotCQkJCQkJIElu dmFsaWRTbmFwc2hvdCwNCi0JCQkJCQkgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLA0KLQkJ CQkJCSAmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7DQorCUFzc2VydChJdGVtUG9p bnRlcklzVmFsaWQob3RpZCkpOw0KKw0KKwlJTkpFQ1RJT05fUE9JTlQoInNpbXBsZV9oZWFwX3Vw ZGF0ZS1iZWZvcmUtcGluIiwgTlVMTCk7DQorDQorCS8qDQorCSAqIFRvIHVwZGF0ZSBhIGhlYXAg dHVwbGUgd2UgbmVlZCB0byBmaW5kIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZA0KKwkgKiBh dHRyaWJ1dGVzICgibW9kaWZpZWRfaWR4X2F0dHJzIikgYW5kIHVzZSB0aGF0IHRvIGRldGVybWlu ZSBpZiBhIEhPVA0KKwkgKiB1cGRhdGUgaXMgYWxsb3dhYmxlIG9yIG5vdC4gV2hlbiB1cGRhdGlu ZyBoZWFwIHR1cGxlcyB2aWEgZXhlY3V0aW9uIG9mDQorCSAqIFVQREFURSBzdGF0ZW1lbnRzIHRo aXMgc2V0IGlzIGNvbnN0cnVjdGVkIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIHRhYmxlDQorCSAq IEFNJ3MgdXBkYXRlIGZ1bmN0aW9uIGJ5IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgd2hp Y2ggY29tcGFyZXMgdGhlDQorCSAqIG9sZC9uZXcgVHVwbGVUYWJsZVNsb3RzLg0KKwkgKg0KKwkg KiBIZXJlIHRoaW5ncyBhcmUgYSBiaXQgZGlmZmVyZW50LCB3ZSBoYXZlIHRoZSBvbGQgVElEIGFu ZCB0aGUgbmV3IHR1cGxlLA0KKwkgKiBub3QgdHdvIFR1cGxlVGFibGVTbG90cywgYnV0IHdlIHN0 aWxsIG5lZWQgdG8gY29uc3RydWN0IGEgc2ltaWxhcg0KKwkgKiBiaXRtYXAgc28gYXMgdG8gYmUg YWJsZSB0byBrbm93IGlmIEhPVCB1cGRhdGVzIGFyZSBhbGxvd2VkIG9yIG5vdC4NCisJICoNCisJ ICogVG8gZG8gdGhhdCB3ZSBmaXJzdCBoYXZlIHRvIGZldGNoIHRoZSBvbGQgdHVwbGUgaXRzZWxm LCBidXQgYmVjYXVzZQ0KKwkgKiBoZWFwYW1fZmV0Y2hfcm93X3ZlcnNpb24oKSBpcyBzdGF0aWMs IHdlIHJlcGxpY2F0ZSBpbiBwYXJ0IHRoYXQgY29kZQ0KKwkgKiBoZXJlLg0KKwkgKg0KKwkgKiBo ZWFwX3VwZGF0ZSgpIHJlYWRzIHRoZSBvbGQgdHVwbGUgYWdhaW4sIHVuZGVyIHRoZSBidWZmZXIg bG9jay4gIFRoZQ0KKwkgKiBjb21wYXJpc29uIHVzZWQgdG8gcnVuIHRoZXJlOyBydW5uaW5nIGl0 IGhlcmUsIGJlZm9yZSB0aGUgbG9jaywga2VlcHMNCisJICogdGhlIGxvY2sgc2hvcnQuICBDYWxs ZXJzIGRvIG5vdCBleHBlY3QgY29uY3VycmVudCB1cGRhdGVzIG9mIHRoZSB0dXBsZQ0KKwkgKiAo c2VlIHRoZSBoZWFkZXIgY29tbWVudCksIHNvIGJvdGggcmVhZHMgc2VlIHRoZSBzYW1lIHZlcnNp b247IGlmIG9uZQ0KKwkgKiBoYXBwZW5zIGFueXdheSwgaGVhcF91cGRhdGUoKSByZXBvcnRzIGl0 Lg0KKwkgKg0KKwkgKiBBIHJlbGF0aW9uIHdpdGhvdXQgaW5kZXhlcyBoYXMgbm8gaW5kZXhlZCBh dHRyaWJ1dGVzLCBzbyB0aGVyZSBpcw0KKwkgKiBub3RoaW5nIHRvIGZldGNoIG9yIGNvbXBhcmUu DQorCSAqLw0KKwlzbG90ID0gTlVMTDsNCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsNCisJ aWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGhhc2luZGV4KQ0KKwl7DQorCQlzbG90ID0gTWFrZVNp bmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pLA0KKwkJCQkJCQkJ CQkmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsNCisJCWJzbG90ID0gKEJ1ZmZlckhlYXBUdXBsZVRh YmxlU2xvdCAqKSBzbG90Ow0KKw0KKwkJLyoNCisJCSAqIFNldCB0aGUgVElEIGluIHRoZSBzbG90 IGFuZCB0aGVuIGZldGNoIHRoZSBvbGQgdHVwbGUgc28gd2UgY2FuDQorCQkgKiBleGFtaW5lIGl0 DQorCQkgKi8NCisJCWJzbG90LT5iYXNlLnR1cGRhdGEudF9zZWxmID0gKm90aWQ7DQorCQlpZiAo IWhlYXBfZmV0Y2gocmVsYXRpb24sIFNuYXBzaG90QW55LCAmYnNsb3QtPmJhc2UudHVwZGF0YSwg JmJ1ZmZlciwNCisJCQkJCQlmYWxzZSkpDQorCQl7DQorCQkJLyoNCisJCQkgKiBoZWFwX3VwZGF0 ZSgpIGNoZWNrcyBmb3IgIUl0ZW1JZElzTm9ybWFsKGxwKSB0b28sIGFuZCByZXR1cm5zDQorCQkJ ICogVE1fRGVsZXRlZCwgd2hpY2ggaXMgcmVwb3J0ZWQgdGhlIHNhbWUgd2F5IGJlbG93Lg0KKwkJ CSAqLw0KKwkJCUFzc2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxp ZChyZWxhdGlvbikpKTsNCisNCisJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3Qp Ow0KKwkJCWVsb2coRVJST1IsICJ0dXBsZSBjb25jdXJyZW50bHkgZGVsZXRlZCIpOw0KKwkJfQ0K Kw0KKwkJQXNzZXJ0KGJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKTsNCisNCisJCS8qIFN0b3JlIGlu IHNsb3QsIHRyYW5zZmVycmluZyBleGlzdGluZyBwaW4gKi8NCisJCUV4ZWNTdG9yZVBpbm5lZEJ1 ZmZlckhlYXBUdXBsZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsNCisNCisJ CS8qDQorCQkgKiBDb21wYXJlIHRoZSB0d28gYXMgdGhlIGV4ZWN1dG9yIGRvZXMsIHRocm91Z2gg c2xvdHMsIHdoaWNoIGRlZm9ybQ0KKwkJICogZWFjaCB0dXBsZSBvbmNlIGFuZCBvbmx5IGFzIGZh ciBhcyB0aGUgbGFzdCBpbmRleGVkIGF0dHJpYnV0ZS4NCisJCSAqLw0KKwkJbmV3c2xvdCA9IE1h a2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKSwNCisJCQkJ CQkJCQkJICAgJlRUU09wc0hlYXBUdXBsZSk7DQorCQlFeGVjU3RvcmVIZWFwVHVwbGUodHVwLCBu ZXdzbG90LCBmYWxzZSk7DQorCQltb2RpZmllZF9pZHhfYXR0cnMgPSB0YWJsZV9zbG90X21vZGlm aWVkX2lkeF9hdHRycyhyZWxhdGlvbiwgc2xvdCwNCisJCQkJCQkJCQkJCQkJCSAgIG5ld3Nsb3Qp Ow0KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChuZXdzbG90KTsNCisJfQ0KKwlsb2Nr bW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4 X2F0dHJzKTsNCisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9u LCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOw0KKw0KKwlyZXN1bHQgPSBo ZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUp LCAwLA0KKwkJCQkJCSBJbnZhbGlkU25hcHNob3QsIHRydWUgLyogd2FpdCBmb3IgY29tbWl0ICov ICwNCisJCQkJCQkgJnRtZmQsIGxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxv d2VkKTsNCisNCisJaWYgKHNsb3QgIT0gTlVMTCkNCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJs ZVNsb3Qoc2xvdCk7DQorCWJtc19mcmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7DQorDQorCS8qDQor CSAqIERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0 dXBsZQ0KKwkgKg0KKwkgKiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRl IGFsbCBpbmRleGVzLiBJZiB0aGUgdXBkYXRlIGlzDQorCSAqIEhPVCwgaXQgY291bGQgYmUgdGhh dCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyDQorCSAqIHVwZGF0 ZSBvbmx5IHN1bW1hcml6ZWQgaW5kZXhlcywgb3Igbm9uZSBhdCBhbGwuDQorCSAqLw0KKwkqdXBk YXRlX2luZGV4ZXMgPSBUVV9Ob25lOw0KIAlzd2l0Y2ggKHJlc3VsdCkNCiAJew0KIAkJY2FzZSBU TV9TZWxmTW9kaWZpZWQ6DQpAQCAtNDY3NCw2ICs0ODI0LDEwIEBAIHNpbXBsZV9oZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVw bGUgdHVwDQogDQogCQljYXNlIFRNX09rOg0KIAkJCS8qIGRvbmUgc3VjY2Vzc2Z1bGx5ICovDQor CQkJaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cCkpDQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9 IFRVX0FsbDsNCisJCQllbHNlIGlmIChzdW1tYXJpemVkX29ubHkpDQorCQkJCSp1cGRhdGVfaW5k ZXhlcyA9IFRVX1N1bW1hcml6aW5nOw0KIAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBUTV9VcGRhdGVk Og0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jDQppbmRleCAwNWE4MWU0 NTU3YS4uZDNjOTM2ZDM5OTQgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jDQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jDQpAQCAtMjE4LDIwICsyMTgsMjcgQEAgc3RhdGljIFRNX1Jlc3VsdA0KIGhlYXBhbV90 dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFi bGVTbG90ICpzbG90LA0KIAkJCQkJQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsDQogCQkJ CQlTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywNCi0JCQkJCWJvb2wgd2Fp dCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsDQotCQkJCQlMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwg VFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpDQorCQkJCQlib29sIHdhaXQsIFRNX0Zh aWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwNCisJCQkJCWNvbnN0IEJp dG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5k ZXhlcykNCiB7DQogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOw0KIAlIZWFwVHVwbGUJdHVwbGUg PSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsNCisJYm9v bAkJaG90X2FsbG93ZWQ7DQorCWJvb2wJCXN1bW1hcml6ZWRfb25seTsNCiAJVE1fUmVzdWx0CXJl c3VsdDsNCiANCisJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7DQorDQorCWhvdF9h bGxvd2VkID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0 dHJzLCAmc3VtbWFyaXplZF9vbmx5KTsNCisJKmxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWlu ZUxvY2ttb2RlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMpOw0KKw0KIAkvKiBVcGRhdGUg dGhlIHR1cGxlIHdpdGggdGFibGUgb2lkICovDQogCXNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0 aW9uR2V0UmVsaWQocmVsYXRpb24pOw0KIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190 YWJsZU9pZDsNCiANCiAJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxl LCBjaWQsIG9wdGlvbnMsDQogCQkJCQkJIGNyb3NzY2hlY2ssIHdhaXQsDQotCQkJCQkJIHRtZmQs IGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7DQorCQkJCQkJIHRtZmQsICpsb2NrbW9kZSwgbW9k aWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7DQogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUt PnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOw0KIA0KIAkvKg0KQEAgLTI0NCwxNiArMjUxLDE3IEBA IGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQs IFR1cGxlVGFibGVTbG90ICpzbG90LA0KIAkgKiBIT1QsIGl0IGNvdWxkIGJlIHRoYXQgd2UgdXBk YXRlZCBzdW1tYXJpemVkIGNvbHVtbnMsIHNvIHdlIGVpdGhlcg0KIAkgKiB1cGRhdGUgb25seSBz dW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLg0KIAkgKi8NCi0JaWYgKHJlc3VsdCAh PSBUTV9PaykNCisJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsNCisJaWYgKHJlc3VsdCA9PSBU TV9PaykNCiAJew0KLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9Ob25lKTsNCi0JCSp1 cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7DQorCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seSh0dXBs ZSkpDQorCQl7DQorCQkJaWYgKHN1bW1hcml6ZWRfb25seSkNCisJCQkJKnVwZGF0ZV9pbmRleGVz ID0gVFVfU3VtbWFyaXppbmc7DQorCQl9DQorCQllbHNlDQorCQkJKnVwZGF0ZV9pbmRleGVzID0g VFVfQWxsOw0KIAl9DQotCWVsc2UgaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkNCi0J CUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfQWxsKTsNCi0JZWxzZQ0KLQkJQXNzZXJ0KCgq dXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpIHx8DQotCQkJICAgKCp1cGRhdGVfaW5k ZXhlcyA9PSBUVV9Ob25lKSk7DQogDQogCWlmIChzaG91bGRGcmVlKQ0KIAkJcGZyZWUodHVwbGUp Ow0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jDQppbmRleCAzYTFmZjlhMWQ0Ni4uZTE2Zjg0 MzYxMjIgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jDQor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jDQpAQCAtMzAsNiArMzAsOSBA QA0KICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIg0KICNpbmNsdWRlICJzdG9yYWdlL3NobWVt LmgiDQogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIg0KKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5o Ig0KKyNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIg0KKyNpbmNsdWRlICJ2YXJhdHQuaCINCiAN CiAvKg0KICAqIENvbnN0YW50cyB0byBjb250cm9sIHRoZSBiZWhhdmlvciBvZiBibG9jayBhbGxv Y2F0aW9uIHRvIHBhcmFsbGVsIHdvcmtlcnMNCkBAIC0zMTEsNiArMzE0LDgzIEBAIHNpbXBsZV90 YWJsZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsIFNuYXBzaG90 IHNuYXBzaG90KQ0KIAl9DQogfQ0KIA0KKy8qIFdvdWxkIHR3byB2YXJsZW5hIHZhbHVlcyBiZSBz dG9yZWQgdGhlIHNhbWUsIGJ5dGUgZm9yIGJ5dGU/ICovDQorc3RhdGljIGJvb2wNCit2YXJsZW5h X2ltYWdlX2VxKERhdHVtIHZhbHVlMSwgRGF0dW0gdmFsdWUyKQ0KK3sNCisJdmFybGVuYSAgICAq djEgPSAodmFybGVuYSAqKSBEYXR1bUdldFBvaW50ZXIodmFsdWUxKTsNCisJdmFybGVuYSAgICAq djIgPSAodmFybGVuYSAqKSBEYXR1bUdldFBvaW50ZXIodmFsdWUyKTsNCisNCisJaWYgKFZBUkFU VF9JU19FWFRFUk5BTCh2MSkgfHwgVkFSQVRUX0lTX0VYVEVSTkFMKHYyKSB8fA0KKwkJVkFSQVRU X0lTX0NPTVBSRVNTRUQodjEpIHx8IFZBUkFUVF9JU19DT01QUkVTU0VEKHYyKSkNCisJCXJldHVy biBkYXR1bUlzRXF1YWwodmFsdWUxLCB2YWx1ZTIsIGZhbHNlLCAtMSk7DQorDQorCXJldHVybiBW QVJTSVpFX0FOWV9FWEhEUih2MSkgPT0gVkFSU0laRV9BTllfRVhIRFIodjIpICYmDQorCQltZW1j bXAoVkFSREFUQV9BTlkodjEpLCBWQVJEQVRBX0FOWSh2MiksIFZBUlNJWkVfQU5ZX0VYSERSKHYx KSkgPT0gMDsNCit9DQorDQorLyoNCisgKiB0YWJsZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycyAt IHdoaWNoIGluZGV4ZWQgYXR0cmlidXRlcyBkaWZmZXI/DQorICoNCisgKiBSZXR1cm4gdGhlIHNl dCBvZiBhdHRyaWJ1dGVzIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyBvZiByZWwgd2hvc2UgdmFsdWVz DQorICogZGlmZmVyIGJldHdlZW4gb2xkX3Nsb3QgYW5kIG5ld19zbG90LCBvZmZzZXQgYnkNCisg KiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLCBpbiBtZW1vcnkgdGhlIGNhbGxl ciBmcmVlcy4gIFZhbHVlcw0KKyAqIGFyZSBjb21wYXJlZCBieXRlIGZvciBieXRlIGFzIHRoZSB0 YWJsZSB3b3VsZCBzdG9yZSB0aGVtLCBzbyBhbiB1bmNoYW5nZWQNCisgKiB0b2FzdGVkIHZhbHVl IGNvbXBhcmVzIGVxdWFsIHdpdGhvdXQgYmVpbmcgZmV0Y2hlZCwgYW5kIHR3byB2YWx1ZXMgdGhh dA0KKyAqIGFyZSBlcXVhbCBidXQgc3RvcmVkIGRpZmZlcmVudGx5IGNvdW50IGFzIGNoYW5nZWQu DQorICoNCisgKiBBIHZhcmxlbmEgdmFsdWUgaW4gYSBzbG90IG5lZWQgbm90IGhhdmUgdGhlIGhl YWRlciBpdCB3aWxsIGJlIHN0b3JlZCB3aXRoOg0KKyAqIGEgc2hvcnQgb25lIG1heSBoYXZlIGEg NC1ieXRlIGhlYWRlciB1bnRpbCBoZWFwX2Zvcm1fdHVwbGUoKSBwYWNrcyBpdCwgZm9yDQorICog aW5zdGFuY2Ugd2hlbiB0dXBsZSByb3V0aW5nIGhhcyBjb252ZXJ0ZWQgdGhlIHNsb3QuICBTbyBh biBpbmxpbmUsDQorICogdW5jb21wcmVzc2VkIHZhcmxlbmEgaXMgY29tcGFyZWQgd2l0aG91dCBp dHMgaGVhZGVyLg0KKyAqLw0KK0JpdG1hcHNldCAqDQordGFibGVfc2xvdF9tb2RpZmllZF9pZHhf YXR0cnMoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkX3Nsb3QsDQorCQkJCQkJCSAg VHVwbGVUYWJsZVNsb3QgKm5ld19zbG90KQ0KK3sNCisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxh dGlvbkdldERlc2NyKHJlbCk7DQorCUJpdG1hcHNldCAgKmF0dHJzOw0KKwlpbnQJCQlhdHRpZHgg PSAtMTsNCisNCisJYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWwsIElOREVY X0FUVFJfQklUTUFQX0lOREVYRUQpOw0KKw0KKwl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21l bWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkNCisJew0KKwkJQXR0ck51bWJlcglhdHRybnVtID0g YXR0aWR4ICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsNCisJCUNvbXBhY3RB dHRyaWJ1dGUgKmF0dDsNCisJCURhdHVtCQl2YWx1ZTEsDQorCQkJCQl2YWx1ZTI7DQorCQlib29s CQludWxsMSwNCisJCQkJCW51bGwyOw0KKw0KKwkJLyoNCisJCSAqIEEgd2hvbGUtcm93IHJlZmVy ZW5jZSBpcyAiY2hhbmdlZCIgKGl0IGNvdWxkIG9ubHkgYmUgdW5jaGFuZ2VkDQorCQkgKiBhZnRl ciBhIG5vLW9wIHVwZGF0ZSksIGFuZCBzbyBpcyBhbnkgc3lzdGVtIGNvbHVtbiBvdGhlciB0aGFu DQorCQkgKiB0YWJsZW9pZCwgd2hpY2ggbmVlZCBub3QgYmUgc2V0IHlldCBpbiB0aGUgbmV3IHR1 cGxlLg0KKwkJICovDQorCQlpZiAoYXR0cm51bSA8PSAwKQ0KKwkJew0KKwkJCWlmIChhdHRybnVt ID09IFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKQ0KKwkJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVy KGF0dHJzLCBhdHRpZHgpOw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKw0KKwkJYXR0ID0gVHVwbGVE ZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpOw0KKwkJdmFsdWUxID0gc2xvdF9n ZXRhdHRyKG9sZF9zbG90LCBhdHRybnVtLCAmbnVsbDEpOw0KKwkJdmFsdWUyID0gc2xvdF9nZXRh dHRyKG5ld19zbG90LCBhdHRybnVtLCAmbnVsbDIpOw0KKw0KKwkJaWYgKG51bGwxICE9IG51bGwy KQ0KKwkJCWNvbnRpbnVlOw0KKwkJaWYgKG51bGwxIHx8DQorCQkJKGF0dC0+YXR0bGVuID09IC0x ID8NCisJCQkgdmFybGVuYV9pbWFnZV9lcSh2YWx1ZTEsIHZhbHVlMikgOg0KKwkJCSBkYXR1bUlz RXF1YWwodmFsdWUxLCB2YWx1ZTIsIGF0dC0+YXR0Ynl2YWwsIGF0dC0+YXR0bGVuKSkpDQorCQkJ YXR0cnMgPSBibXNfZGVsX21lbWJlcihhdHRycywgYXR0aWR4KTsNCisJfQ0KKw0KKwlyZXR1cm4g YXR0cnM7DQorfQ0KKw0KIC8qDQogICogc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZSAtIHJlcGxh Y2UgYSB0dXBsZQ0KICAqDQpAQCAtMzI0LDYgKzQwNCwzNSBAQCBzaW1wbGVfdGFibGVfdHVwbGVf dXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwNCiAJCQkJCQkgIFR1cGxlVGFi bGVTbG90ICpzbG90LA0KIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsDQogCQkJCQkJICBUVV9V cGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykNCit7DQorCVR1cGxlVGFibGVTbG90ICpvbGRz bG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsNCisJQml0bWFwc2V0ICAqbW9kaWZp ZWRfaWR4X2F0dHJzOw0KKw0KKwlpZiAoIXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uKHJl bCwgb3RpZCwgU25hcHNob3RBbnksIG9sZHNsb3QpKQ0KKwl7DQorCQlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KG9sZHNsb3QpOw0KKwkJZWxvZyhFUlJPUiwgInR1cGxlIGNvbmN1cnJlbnRs eSBkZWxldGVkIik7DQorCX0NCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gdGFibGVfc2xvdF9tb2Rp ZmllZF9pZHhfYXR0cnMocmVsLCBvbGRzbG90LCBzbG90KTsNCisJRXhlY0Ryb3BTaW5nbGVUdXBs ZVRhYmxlU2xvdChvbGRzbG90KTsNCisNCisJc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZV9leHQo cmVsLCBvdGlkLCBzbG90LCBzbmFwc2hvdCwNCisJCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJz LCB1cGRhdGVfaW5kZXhlcyk7DQorCWJtc19mcmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7DQorfQ0K Kw0KKy8qDQorICogc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZV9leHQgLSByZXBsYWNlIGEgdHVw bGUsIGdpdmVuIHdoYXQgY2hhbmdlZA0KKyAqDQorICogQXMgc2ltcGxlX3RhYmxlX3R1cGxlX3Vw ZGF0ZSgpLCBidXQgdGhlIGNhbGxlciBwYXNzZXMgdGhlIGluZGV4ZWQNCisgKiBhdHRyaWJ1dGVz IHRoZSB1cGRhdGUgY2hhbmdlcywgYXMgdGFibGVfdHVwbGVfdXBkYXRlKCkgdGFrZXMgdGhlbS4N CisgKi8NCit2b2lkDQorc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZV9leHQoUmVsYXRpb24gcmVs LCBJdGVtUG9pbnRlciBvdGlkLA0KKwkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LA0KKwkJ CQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LA0KKwkJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9k aWZpZWRfaWR4X2F0dHJzLA0KKwkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRl eGVzKQ0KIHsNCiAJVE1fUmVzdWx0CXJlc3VsdDsNCiAJVE1fRmFpbHVyZURhdGEgdG1mZDsNCkBA IC0zMzMsNyArNDQyLDkgQEAgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWws IEl0ZW1Qb2ludGVyIG90aWQsDQogCQkJCQkJCQlHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLA0K IAkJCQkJCQkJMCwgc25hcHNob3QsIEludmFsaWRTbmFwc2hvdCwNCiAJCQkJCQkJCXRydWUgLyog d2FpdCBmb3IgY29tbWl0ICovICwNCi0JCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9p bmRleGVzKTsNCisJCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsDQorCQkJCQkJCQltb2RpZmllZF9p ZHhfYXR0cnMsDQorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7DQogDQogCXN3aXRjaCAocmVzdWx0 KQ0KIAl7DQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9yZXBhY2suYw0KaW5kZXggMWIxYTgyMTMzNTguLjVmYzU4MDhlMDc5 IDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMNCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jDQpAQCAtMjkxNSw2ICsyOTE1LDExIEBAIGFwcGx5X2Nv bmN1cnJlbnRfdXBkYXRlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNwaWxsZWRfdHVw bGUsDQogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7DQogCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlX2lu ZGV4ZXM7DQogCVRNX1Jlc3VsdAlyZXM7DQorCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRy czsNCisNCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMo Y2hnY3h0LT5jY19ycmksDQorCQkJCQkJCQkJCQkJCW9uZGlza190dXBsZSwNCisJCQkJCQkJCQkJ CQkJc3BpbGxlZF90dXBsZSk7DQogDQogCS8qDQogCSAqIENhcnJ5IG91dCB0aGUgdXBkYXRlLCBz a2lwcGluZyBsb2dpY2FsIGRlY29kaW5nIGZvciBpdC4NCkBAIC0yOTI1LDcgKzI5MzAsOSBAQCBh cHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGls bGVkX3R1cGxlLA0KIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LA0KIAkJCQkJCQkgSW52YWxpZFNu YXBzaG90LA0KIAkJCQkJCQkgZmFsc2UsDQotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCAmdXBk YXRlX2luZGV4ZXMpOw0KKwkJCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwNCisJCQkJCQkJIG1vZGlm aWVkX2lkeF9hdHRycywgJnVwZGF0ZV9pbmRleGVzKTsNCisJYm1zX2ZyZWUobW9kaWZpZWRfaWR4 X2F0dHJzKTsNCiAJaWYgKHJlcyAhPSBUTV9PaykNCiAJCWVyZXBvcnQoRVJST1IsDQogCQkJCWVy cmNvZGUoRVJSQ09ERV9UX1JfU0VSSUFMSVpBVElPTl9GQUlMVVJFKSwNCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jDQppbmRleCAxMzY0NDMyODE2NC4uMGVlMWM5MjMxODYgMTAw NjQ0DQotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYw0KKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMNCkBAIC0xMDE0LDYgKzEwMTQs NyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywNCiAJCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlX2luZGV4ZXM7DQogCQlMaXN0CSAgICpjb25m bGljdGluZGV4ZXM7DQogCQlib29sCQljb25mbGljdCA9IGZhbHNlOw0KKwkJQml0bWFwc2V0ICAq bW9kaWZpZWRfaWR4X2F0dHJzOw0KIA0KIAkJLyogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJhdGVkIGNv bHVtbnMgKi8NCiAJCWlmIChyZWwtPnJkX2F0dC0+Y29uc3RyICYmDQpAQCAtMTAyNyw4ICsxMDI4 LDEyIEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLA0KIAkJaWYgKHJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikNCiAJCQlFeGVjUGFydGl0 aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlLCB0cnVlKTsNCiANCi0JCXNpbXBs ZV90YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3QsIGVzdGF0ZS0+ZXNfc25hcHNob3Qs DQotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7DQorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBF eGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLA0KKwkJCQkJCQkJCQkJCQkJ c2VhcmNoc2xvdCwgc2xvdCk7DQorDQorCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlX2V4dChy ZWwsIHRpZCwgc2xvdCwgZXN0YXRlLT5lc19zbmFwc2hvdCwNCisJCQkJCQkJCQkgIG1vZGlmaWVk X2lkeF9hdHRycywgJnVwZGF0ZV9pbmRleGVzKTsNCisJCWJtc19mcmVlKG1vZGlmaWVkX2lkeF9h dHRycyk7DQogDQogCQljb25mbGljdGluZGV4ZXMgPSByZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZs aWN0QXJiaXRlckluZGV4ZXM7DQogDQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu Yw0KaW5kZXggNTU4Y2VlY2U5YmIuLjExMGYzMDY4NTU1IDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMNCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNb2RpZnlUYWJsZS5jDQpAQCAtMTgsNiArMTgsNyBAQA0KICAqCQlFeGVjTW9kaWZ5VGFi bGUJCS0gcmV0cmlldmUgdGhlIG5leHQgdHVwbGUgZnJvbSB0aGUgbm9kZQ0KICAqCQlFeGVjRW5k TW9kaWZ5VGFibGUJLSBzaHV0IGRvd24gdGhlIE1vZGlmeVRhYmxlIG5vZGUNCiAgKgkJRXhlY1Jl U2Nhbk1vZGlmeVRhYmxlIC0gcmVzY2FuIHRoZSBNb2RpZnlUYWJsZSBub2RlDQorICoJCUV4ZWNV cGRhdGVNb2RpZmllZElkeEF0dHJzIC0gZmluZCBzZXQgb2YgdXBkYXRlZCBpbmRleGVkIGNvbHVt bnMNCiAgKg0KICAqCSBOT1RFUw0KICAqCQlUaGUgTW9kaWZ5VGFibGUgbm9kZSByZWNlaXZlcyBp bnB1dCBmcm9tIGl0cyBvdXRlclBsYW4sIHdoaWNoIGlzDQpAQCAtNTYsNiArNTcsNyBAQA0KICNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiDQogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFt LmgiDQogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiDQorI2luY2x1ZGUgImFjY2Vzcy90 dXBkZXNjLmgiDQogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiDQogI2luY2x1ZGUgImNvbW1hbmRz L3RyaWdnZXIuaCINCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIg0KQEAgLTE5 Miw2ICsxOTQsMzkgQEAgc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VOb3RNYXRjaGVk KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwNCiAJCQkJCQkJCQkJICAgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywNCiAJCQkJCQkJCQkJICAgYm9vbCBjYW5TZXRUYWcpOw0KIA0KKy8q DQorICogRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMNCisgKg0KKyAqIFJldHVybiB0aGUgc2V0 IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB3aG9zZSB2YWx1ZXMgZGlmZmVyIGJldHdlZW4gb2xkX3R0 cw0KKyAqIGFuZCBuZXdfdHRzLCB1c2luZyB0aGUgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlciBjb252ZW50aW9uLiAgVGhlDQorICogcmVzdWx0IGRlc2NyaWJlcyB0aGlzIG9uZSBw YWlyIG9mIHR1cGxlczsgdGhlIGNhbGxlciBmcmVlcyBpdC4NCisgKg0KKyAqIEFsbCBpbmRleGVk IGF0dHJpYnV0ZXMgYXJlIGNvbXBhcmVkLCBub3QganVzdCB0aG9zZSB0aGUgVVBEQVRFIHRhcmdl dHMuDQorICogRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCkgbmFtZXMgdGhlIGNvbHVtbnMgYW4gVVBE QVRFIHRhcmdldHMsIG5vdCB0aGUgdmFsdWVzDQorICogdGhhdCBjaGFuZ2VkOiBhIEJFRk9SRSBS T1cgdHJpZ2dlciBjYW4gY2hhbmdlIGFuIGluZGV4ZWQgY29sdW1uIHdpdGgNCisgKiBoZWFwX21v ZGlmeV90dXBsZSgpIChzZWUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSksIGFuZCBsb2dpY2Fs DQorICogcmVwbGljYXRpb24gYW5kIFJFUEFDSyBhcHBseSBoYW5kIHVzIHdob2xlIHR1cGxlcy4N CisgKg0KKyAqIFZhbHVlcyBhcmUgY29tcGFyZWQgYnl0ZSBmb3IgYnl0ZSBhcyBzdG9yZWQsIGFz IGhlYXBfdXBkYXRlKCkgYWx3YXlzIGhhcw0KKyAqIChzZWUgdGFibGVfc2xvdF9tb2RpZmllZF9p ZHhfYXR0cnMoKSkuICBBbiB1bmNoYW5nZWQgdG9hc3RlZCB2YWx1ZSBrZWVwcw0KKyAqIGl0cyB0 b2FzdCBwb2ludGVyLCBzbyBpdCBjb21wYXJlcyBlcXVhbCB3aXRob3V0IGJlaW5nIGZldGNoZWQu ICBUd28gdmFsdWVzDQorICogdGhhdCBhcmUgZXF1YWwgYnV0IHN0b3JlZCBkaWZmZXJlbnRseSBj b3VudCBhcyBjaGFuZ2VkOyB0aGF0IGNvc3RzIGFuDQorICogaW5kZXggZW50cnksIG5ldmVyIGEg bWlzc2VkIG9uZS4NCisgKg0KKyAqIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIGFuZCBzaW1wbGVfdGFi bGVfdHVwbGVfdXBkYXRlKCkgbWFrZSB0aGUgc2FtZQ0KKyAqIGRldGVybWluYXRpb24gd2l0aCB0 YWJsZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycygpLg0KKyAqLw0KK0JpdG1hcHNldCAqDQorRXhl Y1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywNCisJ CQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywNCisJCQkJCQkgICBUdXBsZVRhYmxlU2xv dCAqbmV3X3R0cykNCit7DQorCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID09IDAp DQorCQlyZXR1cm4gTlVMTDsNCisNCisJcmV0dXJuIHRhYmxlX3Nsb3RfbW9kaWZpZWRfaWR4X2F0 dHJzKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywNCisJCQkJCQkJCQkJIG9sZF90dHMs IG5ld190dHMpOw0KK30NCiANCiAvKg0KICAqIFZlcmlmeSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUg cHJvZHVjZWQgYnkgSU5TRVJUIG1hdGNoIHRoZQ0KQEAgLTIyMDMsMTQgKzIyMzgsMTcgQEAgRXhl Y1VwZGF0ZVByZXBhcmVTbG90KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sDQogICovDQog c3RhdGljIFRNX1Jlc3VsdA0KIEV4ZWNVcGRhdGVBY3QoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250 ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLA0KLQkJCSAgSXRlbVBvaW50ZXIgdHVw bGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwNCi0JCQkgIGJv b2wgY2FuU2V0VGFnLCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpDQorCQkJICBJdGVtUG9pbnRl ciB0dXBsZWlkLCBIZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpvbGRTbG90LA0K KwkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgY2FuU2V0VGFnLCBVcGRhdGVDb250ZXh0 ICp1cGRhdGVDeHQpDQogew0KIAlFU3RhdGUJICAgKmVzdGF0ZSA9IGNvbnRleHQtPmVzdGF0ZTsN CiAJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRp b25EZXNjOw0KIAlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQ7DQogCVRNX1Jlc3Vs dAlyZXN1bHQ7DQogDQorCS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVz IHRoYXQgdHJpZ2dlciBuZXcgaW5kZXggZW50cmllcyAqLw0KKwlCaXRtYXBzZXQgICptb2RpZmll ZF9pZHhfYXR0cnMgPSBOVUxMOw0KKw0KIAl1cGRhdGVDeHQtPmNyb3NzUGFydFVwZGF0ZSA9IGZh bHNlOw0KIA0KIAkvKg0KQEAgLTIzMjYsOCArMjM2NCwxMCBAQCBscmVwbGFjZToNCiAJaWYgKHJl c3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIpDQogCQlFeGVjQ29uc3RyYWludHMocmVz dWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsNCiANCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhl Y1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xvdCk7DQor DQogCS8qDQotCSAqIHJlcGxhY2UgdGhlIGhlYXAgdHVwbGUNCisJICogQ2FsbCBpbnRvIHRoZSB0 YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuDQogCSAqDQogCSAqIE5vdGU6IGlmIGVz X2Nyb3NzY2hlY2tfc25hcHNob3QgaXNuJ3QgSW52YWxpZFNuYXBzaG90LCB3ZSBjaGVjayB0aGF0 DQogCSAqIHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNpYmxlIHRvIHRoYXQgc25hcHNob3Qs IGFuZCB0aHJvdyBhDQpAQCAtMjM0Miw3ICsyMzgyLDkgQEAgbHJlcGxhY2U6DQogCQkJCQkJCQll c3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QsDQogCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9y IGNvbW1pdCAqLyAsDQogCQkJCQkJCQkmY29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21v ZGUsDQorCQkJCQkJCQltb2RpZmllZF9pZHhfYXR0cnMsDQogCQkJCQkJCQkmdXBkYXRlQ3h0LT51 cGRhdGVJbmRleGVzKTsNCisJYm1zX2ZyZWUobW9kaWZpZWRfaWR4X2F0dHJzKTsNCiANCiAJcmV0 dXJuIHJlc3VsdDsNCiB9DQpAQCAtMjU4Myw4ICsyNjI1LDggQEAgRXhlY1VwZGF0ZShNb2RpZnlU YWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sDQogCQkg Ki8NCiByZWRvX2FjdDoNCiAJCWxvY2tlZHRpZCA9ICp0dXBsZWlkOw0KLQkJcmVzdWx0ID0gRXhl Y1VwZGF0ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgc2xv dCwNCi0JCQkJCQkJICAgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsNCisJCXJlc3VsdCA9IEV4ZWNV cGRhdGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIG9sZFNs b3QsDQorCQkJCQkJCSAgIHNsb3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7DQogDQogCQkvKg0K IAkJICogSWYgRXhlY1VwZGF0ZUFjdCByZXBvcnRzIHRoYXQgYSBjcm9zcy1wYXJ0aXRpb24gdXBk YXRlIHdhcyBkb25lLA0KQEAgLTM0MzUsOCArMzQ3Nyw4IEBAIGxtZXJnZV9tYXRjaGVkOg0KIAkJ CQkJQXNzZXJ0KG9sZHR1cGxlID09IE5VTEwpOw0KIA0KIAkJCQkJcmVzdWx0ID0gRXhlY1VwZGF0 ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLA0KLQkJCQkJCQkJCQkgICBOVUxM LCBuZXdzbG90LCBjYW5TZXRUYWcsDQotCQkJCQkJCQkJCSAgICZ1cGRhdGVDeHQpOw0KKwkJCQkJ CQkJCQkgICBOVUxMLCByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QsDQorCQkJCQkJCQkJ CSAgIG5ld3Nsb3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7DQogDQogCQkJCQkvKg0KIAkJCQkJ ICogQXMgaW4gRXhlY1VwZGF0ZSgpLCBpZiBFeGVjVXBkYXRlQWN0KCkgcmVwb3J0cyB0aGF0IGEN CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYw0KaW5kZXggYWQ4YWVlODQ0N2MuLjdkYjhiYzM3 ZGZlIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYw0KKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYw0KQEAgLTI0NzgsNiArMjQ3OCw3 IEBAIFJlbGF0aW9uRGVzdHJveVJlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBib29sIHJlbWVt YmVyX3R1cGRlc2MpDQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIpOw0KIAlibXNfZnJl ZShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsNCiAJYm1zX2ZyZWUocmVsYXRpb24tPnJk X3N1bW1hcml6ZWRhdHRyKTsNCisJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsN CiAJaWYgKHJlbGF0aW9uLT5yZF9wdWJkZXNjKQ0KIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRl c2MpOw0KIAlpZiAocmVsYXRpb24tPnJkX29wdGlvbnMpDQpAQCAtNTMyNiw2ICs1MzI3LDcgQEAg UmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikNCiAgKgkJCQkJCQkJ CWluZGV4IChlbXB0eSBpZiBGVUxMKQ0KICAqCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lO RwlDb2x1bW5zIHRoYXQgYmxvY2sgdXBkYXRlcyBmcm9tIGJlaW5nIEhPVA0KICAqCUlOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBpbmRl eGVzDQorICoJSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRAkJQ29sdW1ucyByZWZlcmVuY2VkIGJ5 IGFueSBpbmRleA0KICAqDQogICogQXR0cmlidXRlIG51bWJlcnMgYXJlIG9mZnNldCBieSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIHNvIHRoYXQNCiAgKiB3ZSBjYW4gaW5jbHVk ZSBzeXN0ZW0gYXR0cmlidXRlcyAoZS5nLiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0 aW9uLg0KQEAgLTUzNTAsNiArNTM1Miw3IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJl bGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAlCaXRtYXBz ZXQgICppZGluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkgKi8N CiAJQml0bWFwc2V0ICAqaG90YmxvY2tpbmdhdHRyczsJLyogY29sdW1ucyB3aXRoIEhPVCBibG9j a2luZyBpbmRleGVzICovDQogCUJpdG1hcHNldCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1u cyB3aXRoIHN1bW1hcml6aW5nIGluZGV4ZXMgKi8NCisJQml0bWFwc2V0ICAqaW5kZXhlZGF0dHJz OwkvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgYW55IGluZGV4ICovDQogCUxpc3QJICAgKmluZGV4 b2lkbGlzdDsNCiAJTGlzdAkgICAqbmV3aW5kZXhvaWRsaXN0Ow0KIAlPaWQJCQlyZWxwa2luZGV4 Ow0KQEAgLTUzNzIsNiArNTM3NSw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0 aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAkJCQlyZXR1cm4g Ym1zX2NvcHkocmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0cik7DQogCQkJY2FzZSBJTkRFWF9B VFRSX0JJVE1BUF9TVU1NQVJJWkVEOg0KIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJk X3N1bW1hcml6ZWRhdHRyKTsNCisJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6DQor CQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOw0KIAkJCWRlZmF1 bHQ6DQogCQkJCWVsb2coRVJST1IsICJ1bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOw0K IAkJfQ0KQEAgLTU1NTIsNiArNTU1Nyw4IEBAIHJlc3RhcnQ6DQogCQlnb3RvIHJlc3RhcnQ7DQog CX0NCiANCisJaW5kZXhlZGF0dHJzID0gYm1zX3VuaW9uKGhvdGJsb2NraW5nYXR0cnMsIHN1bW1h cml6ZWRhdHRycyk7DQorDQogCS8qIERvbid0IGxlYWsgdGhlIG9sZCB2YWx1ZXMgb2YgdGhlc2Ug Yml0bWFwcywgaWYgYW55ICovDQogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7DQog CWJtc19mcmVlKHJlbGF0aW9uLT5yZF9rZXlhdHRyKTsNCkBAIC01NTY0LDYgKzU1NzEsOCBAQCBy ZXN0YXJ0Og0KIAlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsNCiAJYm1zX2Zy ZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsNCiAJcmVsYXRpb24tPnJkX3N1bW1hcml6 ZWRhdHRyID0gTlVMTDsNCisJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsNCisJ cmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyID0gTlVMTDsNCiANCiAJLyoNCiAJICogTm93IHNhdmUg Y29waWVzIG9mIHRoZSBiaXRtYXBzIGluIHRoZSByZWxjYWNoZSBlbnRyeS4gIFdlIGludGVudGlv bmFsbHkNCkBAIC01NTc4LDYgKzU1ODcsNyBAQCByZXN0YXJ0Og0KIAlyZWxhdGlvbi0+cmRfaWRh dHRyID0gYm1zX2NvcHkoaWRpbmRleGF0dHJzKTsNCiAJcmVsYXRpb24tPnJkX2hvdGJsb2NraW5n YXR0ciA9IGJtc19jb3B5KGhvdGJsb2NraW5nYXR0cnMpOw0KIAlyZWxhdGlvbi0+cmRfc3VtbWFy aXplZGF0dHIgPSBibXNfY29weShzdW1tYXJpemVkYXR0cnMpOw0KKwlyZWxhdGlvbi0+cmRfaW5k ZXhlZGF0dHIgPSBibXNfY29weShpbmRleGVkYXR0cnMpOw0KIAlyZWxhdGlvbi0+cmRfYXR0cnN2 YWxpZCA9IHRydWU7DQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOw0KIA0KQEAgLTU1 OTQsNiArNTYwNCw4IEBAIHJlc3RhcnQ6DQogCQkJcmV0dXJuIGhvdGJsb2NraW5nYXR0cnM7DQog CQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6DQogCQkJcmV0dXJuIHN1bW1hcml6 ZWRhdHRyczsNCisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoNCisJCQlyZXR1cm4g aW5kZXhlZGF0dHJzOw0KIAkJZGVmYXVsdDoNCiAJCQllbG9nKEVSUk9SLCAidW5rbm93biBhdHRy S2luZCAldSIsIGF0dHJLaW5kKTsNCiAJCQlyZXR1cm4gTlVMTDsNCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgNCmlu ZGV4IDllMzU5NjFmYjllLi5mYTdjNTQwNDI1YyAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaA0KKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oDQpAQCAtMzg5 LDggKzM4OSwxMyBAQCBleHRlcm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0 aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsDQogCQkJCQkJCSBIZWFwVHVwbGUgbmV3 dHVwLA0KIAkJCQkJCQkgQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsDQogCQkJCQkJCSBT bmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsDQotCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAq dG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsDQotCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVz ICp1cGRhdGVfaW5kZXhlcyk7DQorCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1 cGxlTW9kZSBsb2NrbW9kZSwNCisJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4 X2F0dHJzLCBib29sIGhvdF9hbGxvd2VkKTsNCitleHRlcm4gYm9vbCBIZWFwVXBkYXRlSG90QWxs b3dhYmxlKFJlbGF0aW9uIHJlbGF0aW9uLA0KKwkJCQkJCQkJICAgY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMsDQorCQkJCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpOw0K K2V4dGVybiBMb2NrVHVwbGVNb2RlIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxhdGlv biByZWxhdGlvbiwNCisJCQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhf YXR0cnMpOw0KIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9uIHJlbGF0 aW9uLCBIZWFwVHVwbGUgdHVwbGUsDQogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwgTG9ja1R1cGxl TW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwNCiAJCQkJCQkJCSBib29sIGZv bGxvd191cGRhdGVzLA0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oDQppbmRleCBlYTNmMmE2YmU5OS4uYTMxNzRm YjIwZjEgMTAwNjQ0DQotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oDQorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oDQpAQCAtNTg2LDYgKzU4Niw3IEBAIHR5cGVkZWYg c3RydWN0IFRhYmxlQW1Sb3V0aW5lDQogCQkJCQkJCQkgYm9vbCB3YWl0LA0KIAkJCQkJCQkJIFRN X0ZhaWx1cmVEYXRhICp0bWZkLA0KIAkJCQkJCQkJIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLA0K KwkJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLA0KIAkJCQkJCQkJ IFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsNCiANCiAJLyogc2VlIHRhYmxlX3R1 cGxlX2xvY2soKSBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8NCkBAIC0xNTk0LDYg KzE1OTUsMTAgQEAgdGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIg dGlkLCBDb21tYW5kSWQgY2lkLA0KICAqCQlkdXJpbmcgdGFibGUgcmV3cml0ZXMgd2hlcmUgUmVs YXRpb25Jc0xvZ2ljYWxseUxvZ2dlZChyZWwpIGlzIG5vdA0KICAqCQl5ZXQgYWNjdXJhdGUgZm9y IHRoZSBuZXcgcmVsYXRpb24uDQogICoJY3Jvc3NjaGVjayAtIGlmIG5vdCBJbnZhbGlkU25hcHNo b3QsIGFsc28gY2hlY2sgb2xkIHR1cGxlIGFnYWluc3QgdGhpcw0KKyAqCW1vZGlmaWVkX2lkeF9h dHRycyAtIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGRpZmZlciBiZXR3ZWVu DQorICoJCXRoZSBvbGQgdHVwbGUgYW5kIHRoZSBuZXcgb25lLCBvZmZzZXQgYnkNCisgKgkJRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsgc2VlIEV4ZWNVcGRhdGVNb2RpZmllZElk eEF0dHJzKCkuDQorICoJCVRoZSBjYWxsZXIgb3ducyBpdC4NCiAgKg0KICAqIE91dHB1dCBwYXJh bWV0ZXJzOg0KICAqCXNsb3QgLSBuZXdseSBjb25zdHJ1Y3RlZCB0dXBsZSBkYXRhIHRvIHN0b3Jl DQpAQCAtMTYyMSwxMiArMTYyNiwxMiBAQCB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVs LCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwNCiAJCQkJICAgQ29tbWFu ZElkIGNpZCwgdWludDMyIG9wdGlvbnMsDQogCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBTbmFw c2hvdCBjcm9zc2NoZWNrLA0KIAkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZk LCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwNCi0JCQkJICAgVFVfVXBkYXRlSW5kZXhlcyAqdXBk YXRlX2luZGV4ZXMpDQorCQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykNCiB7DQogCXJldHVybiByZWwtPnJk X3RhYmxlYW0tPnR1cGxlX3VwZGF0ZShyZWwsIG90aWQsIHNsb3QsDQogCQkJCQkJCQkJCSBjaWQs IG9wdGlvbnMsIHNuYXBzaG90LCBjcm9zc2NoZWNrLA0KLQkJCQkJCQkJCQkgd2FpdCwgdG1mZCwN Ci0JCQkJCQkJCQkJIGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7DQorCQkJCQkJCQkJCSB3YWl0 LCB0bWZkLCBsb2NrbW9kZSwNCisJCQkJCQkJCQkJIG1vZGlmaWVkX2lkeF9hdHRycywgdXBkYXRl X2luZGV4ZXMpOw0KIH0NCiANCiAvKg0KQEAgLTIxMTIsNiArMjExNywxNCBAQCBleHRlcm4gdm9p ZCBzaW1wbGVfdGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlk LA0KIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJ dGVtUG9pbnRlciBvdGlkLA0KIAkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFNuYXBz aG90IHNuYXBzaG90LA0KIAkJCQkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4 ZXMpOw0KK2V4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGVfZXh0KFJlbGF0aW9u IHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwNCisJCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xv dCwNCisJCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwNCisJCQkJCQkJCQkJICBjb25zdCBC aXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywNCisJCQkJCQkJCQkJICBUVV9VcGRhdGVJbmRl eGVzICp1cGRhdGVfaW5kZXhlcyk7DQorZXh0ZXJuIEJpdG1hcHNldCAqdGFibGVfc2xvdF9tb2Rp ZmllZF9pZHhfYXR0cnMoUmVsYXRpb24gcmVsLA0KKwkJCQkJCQkJCQkJCVR1cGxlVGFibGVTbG90 ICpvbGRfc2xvdCwNCisJCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqbmV3X3Nsb3QpOw0KIA0K IA0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaA0KaW5kZXgg MTUyYTFkZmE1NjguLjVjYmRiMDkyNTY0IDEwMDY0NA0KLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY3V0b3IuaA0KKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaA0KQEAg LTgxNyw1ICs4MTcsOCBAQCBleHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0xvb2t1cFJlc3VsdFJl bEJ5T2lkKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUsDQogCQkJCQkJCQkJCQkgICBPaWQgcmVzdWx0 b2lkLA0KIAkJCQkJCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rLA0KIAkJCQkJCQkJCQkJICAgYm9v bCB1cGRhdGVfY2FjaGUpOw0KK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNVcGRhdGVNb2RpZmllZElk eEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sDQorCQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNs b3QgKm9sZF90dHMsDQorCQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpOw0KIA0K ICNlbmRpZgkJCQkJCQkvKiBFWEVDVVRPUl9IICAqLw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgNCmluZGV4IDdiOGMyYjFlMzYy Li41NWI0NTlhZGJhOCAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oDQorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaA0KQEAgLTE2NCw2ICsxNjQsNyBAQCB0eXBlZGVmIHN0 cnVjdCBSZWxhdGlvbkRhdGENCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVkZWQg aW4gcmVwbGljYSBpZGVudGl0eSBpbmRleCAqLw0KIAlCaXRtYXBzZXQgICpyZF9ob3RibG9ja2lu Z2F0dHI7IC8qIGNvbHMgYmxvY2tpbmcgSE9UIHVwZGF0ZSAqLw0KIAlCaXRtYXBzZXQgICpyZF9z dW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMgKi8N CisJQml0bWFwc2V0ICAqcmRfaW5kZXhlZGF0dHI7IC8qIGNvbHMgcmVmZXJlbmNlZCBieSBhbnkg aW5kZXggKi8NCiANCiAJUHVibGljYXRpb25EZXNjICpyZF9wdWJkZXNjOwkvKiBwdWJsaWNhdGlv biBkZXNjcmlwdG9yLCBvciBOVUxMICovDQogDQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcmVsY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgNCmluZGV4IDNlOTdk YTZhNTM4Li40MTc5OTBlODAyMiAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNh Y2hlLmgNCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgNCkBAIC03Miw2ICs3Miw3 IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRtYXBLaW5kDQogCUlOREVYX0FUVFJfQklUTUFQ X0lERU5USVRZX0tFWSwNCiAJSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HLA0KIAlJTkRF WF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELA0KKwlJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVELA0K IH0gSW5kZXhBdHRyQml0bWFwS2luZDsNCiANCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwNCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5l ZC5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvc3lzY2Fj aGUtdXBkYXRlLXBydW5lZC5vdXQNCmluZGV4IGE2YTRlOGRiOTk2Li4wN2VmNjdhMWViNCAxMDA2 NDQNCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNj YWNoZS11cGRhdGUtcHJ1bmVkLm91dA0KKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL2V4cGVjdGVkL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0DQpAQCAtMTYsOCArMTYs OCBAQCBzdGVwIHdha2VpbnZhbDQ6DQogc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPg0KIHN0ZXAg d2FrZWludmFsNDogPC4uLiBjb21wbGV0ZWQ+DQogc3RlcCB3YWtlZ3JhbnQ0OiANCi0JU0VMRUNU IEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsN Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJlZm9y ZS1waW4nKTsNCisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBsZV9o ZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQorCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNf d2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOw0KICA8d2FpdGluZyAuLi4+ DQogc3RlcCBncmFudDE6IDwuLi4gY29tcGxldGVkPg0KIEVSUk9SOiAgdHVwbGUgY29uY3VycmVu dGx5IGRlbGV0ZWQNCkBAIC00Miw4ICs0Miw4IEBAIHN0ZXAgbWtyZWxzNDoNCiAJU0VMRUNUIEZS T00gdmFjdGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwgMTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBf VU5VU0VEDQogDQogc3RlcCB3YWtlZ3JhbnQ0OiANCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsNCi0JU0VMRUNUIEZST00gaW5q ZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsNCisJU0VMRUNU IEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUt cGluJyk7DQorCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVh cF91cGRhdGUtYmVmb3JlLXBpbicpOw0KICA8d2FpdGluZyAuLi4+DQogc3RlcCBncmFudDE6IDwu Li4gY29tcGxldGVkPg0KIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlx dWUgY29uc3RyYWludCAicGdfY2xhc3Nfb2lkX2luZGV4Ig0KQEAgLTcxLDggKzcxLDggQEAgc3Rl cCBhdDI6IDwuLi4gY29tcGxldGVkPg0KIHN0ZXAgd2FrZWludmFsNDogPC4uLiBjb21wbGV0ZWQ+ DQogc3RlcCBhdDQ6IEFMVEVSIFRBQkxFIHZhY3Rlc3QuY2hpbGQ1MCBJTkhFUklUIHZhY3Rlc3Qu b3JpZzUwOw0KIHN0ZXAgd2FrZWdyYW50NDogDQotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQotCVNFTEVDVCBGUk9NIGluamVj dGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQorCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBp bicpOw0KKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBf dXBkYXRlLWJlZm9yZS1waW4nKTsNCiAgPHdhaXRpbmcgLi4uPg0KIHN0ZXAgZ3JhbnQxOiA8Li4u IGNvbXBsZXRlZD4NCiBzdGVwIHdha2VncmFudDQ6IDwuLi4gY29tcGxldGVkPg0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNoZS11cGRh dGUtcHJ1bmVkLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mv c3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjDQppbmRleCBlM2E0Mjk1YmQxMi4uZmVmOWFjODk1 YTEgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mv c3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjDQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjDQpAQCAtMTAzLDcg KzEwMyw3IEBAIHNlc3Npb24gczENCiBzZXR1cAl7DQogCVNFVCBkZWJ1Z19kaXNjYXJkX2NhY2hl cyA9IDA7DQogCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7DQotCVNF TEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGlu JywgJ3dhaXQnKTsNCisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3NpbXBs ZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJywgJ3dhaXQnKTsNCiB9DQogc3RlcCBjYWNoZWZpbGwx CXsgU0VMRUNUIEZST00gdmFjdGVzdC5yZWxvaWRfY2F0Y2FjaGVfc2V0KCd2YWN0ZXN0Lm9yaWc1 MCcpOyB9DQogc3RlcCBncmFudDEJeyBHUkFOVCBTRUxFQ1QgT04gdmFjdGVzdC5vcmlnNTAgVE8g UFVCTElDOyB9DQpAQCAtMTQwLDggKzE0MCw4IEBAIHN0ZXAgbWtyZWxzNAl7DQogCVNFTEVDVCBG Uk9NIHZhY3Rlc3QubWtyZWxzKCdpbnRydWRlcicsIDEsIDEwMCk7ICAtLSByZXBvcHVsYXRlIExQ X1VOVVNFRA0KIH0NCiBzdGVwIHdha2VncmFudDQJew0KLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25f cG9pbnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOw0KLQlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOw0KKwlTRUxF Q1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9y ZS1waW4nKTsNCisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3NpbXBsZV9o ZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7DQogfQ0KIHN0ZXAgYXQ0CXsgQUxURVIgVEFCTEUgdmFj dGVzdC5jaGlsZDUwIElOSEVSSVQgdmFjdGVzdC5vcmlnNTA7IH0NCiBzdGVwIHdha2VpbnZhbDQJ ew0KLS0gDQoyLjUwLjENCg0K --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0004-Skip-evaluating-indexes-that-an-UPDATE-s-SET-cla.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0004-Skip-evaluating-indexes-that-an-UPDATE-s-SET-cla.patch RnJvbSA0YzA3YzQyYzU0NjgwNWRiYWI3OTQ4NTNjMjE0NTE0MDQ5MTM5YTU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBUaHUs IDE1IE9jdCAyMDI2IDEyOjUxOjIyIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDQvOF0gU2tp 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 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jDQppbmRleCBkNjU1M2M5MDMzZC4uOWJjMDUzYzc1NGQg 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 ICogRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMNCiAgKg0KQEAgLTQ1NSw4ICs1MDgsOCBAQCBF eGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLA0K IA0KIAkJCWlmICghaW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMgfHwNCiAJCQkJIXJlc3Vs dFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25EZXNjc1tpXS0+cmRfaW5kZXgtPmluZGlzdmFsaWQg fHwNCi0JCQkJSW5kZXhFbnRyeUNoYW5nZXMocmVzdWx0UmVsSW5mbywgaW5kZXhJbmZvLA0KLQkJ CQkJCQkJICBvbGRfdHRzLCBuZXdfdHRzLCBlc3RhdGUpKQ0KKwkJCQkhSW5kZXhVbmFmZmVjdGVk KHJlc3VsdFJlbEluZm8sIGksIG1pbmUsIG9sZF90dHMsIG5ld190dHMsDQorCQkJCQkJCQkgZXN0 YXRlKSkNCiAJCQl7DQogCQkJCWtlZXAgPSBibXNfYWRkX21lbWJlcnMoa2VlcCwgbWluZSk7DQog CQkJCWlmIChibXNfaXNfc3Vic2V0KGNhbmRpZGF0ZXMsIGtlZXApKQ0KQEAgLTEwMDIsNiArMTA1 NSwxMzYgQEAgRXhlY0luaXRJbnNlcnRQcm9qZWN0aW9uKE1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh 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 b2YgcHJvamVjdGlvbiBkYXRhIGZvciBVUERBVEUgdHVwbGVzLg0KQEAgLTI2MjgsNiArMjgxMSwx NiBAQCBscmVwbGFjZToNCiAJaWYgKHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIp DQogCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsNCiANCisJ LyoNCisJICogRnJvbSB0aGUgc2Vjb25kIHJvdyBvbiwgdXNlIHdoYXQgdGhlIFNFVCBjbGF1c2Ug c2hvd3MgYWJvdXQgd2hpY2gNCisJICogaW5kZXhlcyBpdCBjYW5ub3QgYWZmZWN0LiAgRm9yIGEg c2luZ2xlIHJvdywgd29ya2luZyB0aGF0IG91dCBjb3N0cw0KKwkgKiBtb3JlIHRoYW4gZXZhbHVh dGluZyB0aGUgaW5kZXhlcyBpdCB3b3VsZCBzYXZlLg0KKwkgKi8NCisJaWYgKHVubGlrZWx5KHJl c3VsdFJlbEluZm8tPnJpX1VwZGF0ZUNvdW50IDwgMikgJiYNCisJCSsrcmVzdWx0UmVsSW5mby0+ cmlfVXBkYXRlQ291bnQgPT0gMiAmJg0KKwkJY29udGV4dC0+bXRzdGF0ZS0+b3BlcmF0aW9uID09 IENNRF9VUERBVEUpDQorCQlFeGVjSW5pdFVwZGF0ZVVudG91Y2hlZChjb250ZXh0LT5tdHN0YXRl LCByZXN1bHRSZWxJbmZvKTsNCisNCiAJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1v ZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xvdCwNCiAJCQkJCQkJCQkJ CQkJZXN0YXRlKTsNCiANCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1 bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMNCmluZGV4IDFkM2M4YzA4 NjVhLi5mYWU3M2I1YzkwMyAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u ZnVuY3MuYw0KKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jDQpAQCAtMjks NiArMjksNyBAQA0KICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIg0KICNpbmNsdWRlICJtaXNjYWRt aW4uaCINCiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiDQorI2luY2x1ZGUgIm5vZGVzL3N1 cHBvcnRub2Rlcy5oIg0KICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiDQogI2luY2x1 ZGUgInV0aWxzL2FycmF5LmgiDQogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiDQpAQCAtNjE4 OCwzICs2MTg5LDI3NyBAQCBqc29uX2NoZWNrX211dGFiaWxpdHkoT2lkIHR5cG9pZCwgYm9vbCBp 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 cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgNCmluZGV4IGU2NDZhODU2MjBmLi5h YTFmMmE2NWVjZCAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oDQor 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 bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0DQppbmRleCBiOTY0ZTVlZTkw Ny4uMGU0OTA5NWI3ODIgMTAwNjQ0DQotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdA0KKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QNCkBAIC0zMDIxLDYg KzMwMjEsMTAgQEAgU3ViWGFjdENhbGxiYWNrDQogU3ViWGFjdENhbGxiYWNrSXRlbQ0KIFN1Ylhh Y3RFdmVudA0KIFN1YlhhY3RJbmZvDQorU3ViYXR0clBhdGhFbGVtDQorU3ViYXR0clBhdGhFbGVt S2luZA0KK1N1YmF0dHJSZXF1ZXN0S2luZA0KK1N1YmF0dHJXYWxrDQogU3VicXVlcnlTY2FuDQog U3VicXVlcnlTY2FuUGF0aA0KIFN1YnF1ZXJ5U2NhblN0YXRlDQpAQCAtMzA0NCw2ICszMDQ4LDcg QEAgU3VwcG9ydFJlcXVlc3RSb3dzDQogU3VwcG9ydFJlcXVlc3RTZWxlY3Rpdml0eQ0KIFN1cHBv cnRSZXF1ZXN0U2ltcGxpZnkNCiBTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5QWdncmVmDQorU3VwcG9y dFJlcXVlc3RTdWJhdHRyDQogU3VwcG9ydFJlcXVlc3RXRnVuY01vbm90b25pYw0KIFN5bg0KIFN5 bmNPcHMNCi0tIA0KMi41MC4xDQoNCg== --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0001-Improve-test-coverage-for-heap-only-tuple-HOT-up.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0001-Improve-test-coverage-for-heap-only-tuple-HOT-up.patch RnJvbSA3MTBkMDgwNWNiZjY3OGFiNDQyZjdjN2M4OTNiOTBjZTVlODFjZWVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBUdWUs IDEwIE1hciAyMDI2IDA5OjI4OjE1IC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDEvOF0gSW1w 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 Ow0KDQpiYXNlLWNvbW1pdDogNGY4OTQxNmM5ZGJjNzhkYTU2NzlkMzIwNzIzMTVhZjU2ZmJlYjhl ZA0KLS0gDQoyLjUwLjENCg0K --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0008-hash-implement-amcomparedatums.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0008-hash-implement-amcomparedatums.patch RnJvbSAxMGRiZDE1ZTYxZDIzYzVmOWQzYmRjMzhjNTM2MTQyY2M3NTY0YTFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBGcmks IDE2IE9jdCAyMDI2IDEyOjUwOjMwIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDgvOF0gaGFz aDogaW1wbGVtZW50IGFtY29tcGFyZWRhdHVtcw0KDQpBIGhhc2ggaW5kZXggc3RvcmVzIG9ubHkg dGhlIGhhc2ggY29kZSBvZiB0aGUgdmFsdWUsIGFuZCBldmVyeSBzY2FuLCBwbGFpbg0Kb3IgYml0 bWFwLCByZWNoZWNrcyB0aGUgaGVhcCB0dXBsZS4gIFNvIGFuIHVwZGF0ZWQgcm93IGdpdmVzIHRo ZSBzYW1lIGVudHJ5DQpleGFjdGx5IHdoZW4gdGhlIG5ldyB2YWx1ZSBoYXMgdGhlIHNhbWUgaGFz aCBjb2RlIGFzIHRoZSBvbGQgb25lLg0KDQpVcGRhdGVzIHRoYXQgYmVjb21lIEhPVCBpbmNsdWRl IGNoYW5naW5nIHRoZSBkaXNwbGF5IHNjYWxlIG9mIGEgbnVtZXJpYywNCndoaWNoIGhhc2hfbnVt ZXJpYygpIGlnbm9yZXMsIGFuZCBjaGFuZ2luZyBhIHN0cmluZyB0byBvbmUgZXF1YWwgdW5kZXIg YQ0Kbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb24uDQoNClRoZSBleGVjdXRvciBhc2tzIG9ubHkg YWJvdXQgdmFsdWVzIHRoYXQgZGlmZmVyIG9uY2UgZGV0b2FzdGVkLiAgV2hlbiB0aGUNCnR5cGUn cyBlcXVhbGl0eSBpbXBsaWVzIGltYWdlIGVxdWFsaXR5LCBhcyBpdHMgZGVmYXVsdCBidHJlZSBv cGVyYXRvcg0KY2xhc3MncyBlcXVhbGltYWdlIGZ1bmN0aW9uIHNheXMgZm9yIHRoZSBpbmRleCdz IGNvbGxhdGlvbiwgdHdvIHN1Y2gNCnZhbHVlcyBhcmUgdW5lcXVhbCBhbmQgY2FuIGhhdmUgdGhl IHNhbWUgaGFzaCBjb2RlIG9ubHkgYnkgY29sbGlzaW9uLCBzbw0KaGFzaGNvbXBhcmVkYXR1bXMo KSBhbnN3ZXJzIHdpdGhvdXQgaGFzaGluZyB0aGVtLiAgVGhhdCBpcyBtb3N0IHR5cGVzDQooaW50 ZWdlcnMsIHRleHQgdW5kZXIgYSBkZXRlcm1pbmlzdGljIGNvbGxhdGlvbiwgdXVpZCwgYnl0ZWEs IGRhdGVzIGFuZA0KdGltZXMpOyBudW1lcmljLCBmbG9hdCwgaW50ZXJ2YWwsIGFycmF5cyBhbmQg bm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zDQphcmUgc3RpbGwgaGFzaGVkLiAgRm9yIGEgbGFy Z2UgdmFsdWUgdGhhdCBjaGFuZ2VzLCB0aGlzIHNhdmVzIGhhc2hpbmcgdGhlDQpvbGQgYW5kIG5l dyB2YWx1ZXMsIG9uIHRvcCBvZiB0aGUgaGFzaCB0aGUgaW5zZXJ0aW9uIGNvbXB1dGVzLiAgVGhl IGFuc3dlcg0KaXMga2VwdCBpbiBpaV9BbUNhY2hlIGZvciB0aGUgc3RhdGVtZW50Lg0KDQpBIHRl c3QgY2hlY2tzIHRoYXQgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgdXNpbmcgYSBoYXNoIGluZGV4 IHN0aWxsIHNlZXMgYQ0KY2hhbmdlIHRvIGEgdmFsdWUgd2l0aCB0aGUgc2FtZSBoYXNoIGNvZGUg KGludGVydmFsIHNwYW5zIG9mIDEgYW5kIDJeMzINCm1pY3Jvc2Vjb25kcyBjb2xsaWRlKTogdGhl IGV4ZWN1dG9yIGRvZXMgbm90IGNvbnN1bHQgYW1jb21wYXJlZGF0dW1zIGZvcg0KZXhjbHVzaW9u IGNvbnN0cmFpbnRzLg0KLS0tDQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAg ICAgICB8ICA0OSArKysrKystDQogc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2guaCAgICAgICAgICAg ICAgICB8ICAgMyArDQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oYXNoX2luZGV4Lm91dCB8 IDE2MyArKysrKysrKysrKysrKysrKysrKysrKw0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hhc2hf aW5kZXguc3FsICAgICAgfCAgODAgKysrKysrKysrKysNCiA0IGZpbGVzIGNoYW5nZWQsIDI5NCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQoNCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMNCmluZGV4 IDBiMDVjNDYwNmUxLi5lYjU3YjRiYjA3OSAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oYXNoL2hhc2guYw0KKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jDQpAQCAt MjAsNiArMjAsNyBAQA0KIA0KICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIg0KICNpbmNsdWRlICJh Y2Nlc3MvaGFzaF94bG9nLmgiDQorI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCINCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbHNjYW4uaCINCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiDQogI2lu Y2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiDQpAQCAtMzMsNyArMzQsOSBAQA0KICNpbmNsdWRlICJz dG9yYWdlL3JlYWRfc3RyZWFtLmgiDQogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCINCiAj aW5jbHVkZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCINCisjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiDQogI2luY2x1ZGUgInV0aWxzL3JlbC5oIg0KKyNpbmNsdWRlICJ1dGlscy90eXBjYWNo ZS5oIg0KIA0KIC8qIFdvcmtpbmcgc3RhdGUgZm9yIGhhc2hidWlsZCBhbmQgaXRzIGNhbGxiYWNr ICovDQogdHlwZWRlZiBzdHJ1Y3QNCkBAIC0xMjMsNyArMTI2LDcgQEAgaGFzaGhhbmRsZXIoUEdf RlVOQ1RJT05fQVJHUykNCiAJCS5hbXBhcmFsbGVscmVzY2FuID0gTlVMTCwNCiAJCS5hbXRyYW5z bGF0ZXN0cmF0ZWd5ID0gaGFzaHRyYW5zbGF0ZXN0cmF0ZWd5LA0KIAkJLmFtdHJhbnNsYXRlY21w dHlwZSA9IGhhc2h0cmFuc2xhdGVjbXB0eXBlLA0KLQkJLmFtY29tcGFyZWRhdHVtcyA9IE5VTEws DQorCQkuYW1jb21wYXJlZGF0dW1zID0gaGFzaGNvbXBhcmVkYXR1bXMsDQogCX07DQogDQogCVBH X1JFVFVSTl9QT0lOVEVSKCZhbXJvdXRpbmUpOw0KQEAgLTEwMjksMyArMTAzMiw0NyBAQCBoYXNo dHJhbnNsYXRlY21wdHlwZShDb21wYXJlVHlwZSBjbXB0eXBlLCBPaWQgb3BmYW1pbHkpDQogCQly ZXR1cm4gSFRFcXVhbFN0cmF0ZWd5TnVtYmVyOw0KIAlyZXR1cm4gSW52YWxpZFN0cmF0ZWd5Ow0K IH0NCisNCisvKg0KKyAqIGhhc2hjb21wYXJlZGF0dW1zKCkgLS0gd291bGQgbmV3VmFsdWUgZ2l2 ZSB0aGUgc2FtZSBpbmRleCBlbnRyeSBhcyBvbGRWYWx1ZT8NCisgKg0KKyAqIEEgaGFzaCBpbmRl eCBzdG9yZXMgb25seSB0aGUgaGFzaCBjb2RlIG9mIHRoZSB2YWx1ZSwgYW5kIGV2ZXJ5IHNjYW4N CisgKiByZWNoZWNrcyB0aGUgaGVhcCB0dXBsZSwgc28gdGhlIGVudHJpZXMgYXJlIHRoZSBzYW1l IGlmIHRoZSBoYXNoIGNvZGVzDQorICogYXJlLiAgVGhlbiwgZm9yIGV4YW1wbGUsIG51bWVyaWMg MS4wIGFuZCAxLjAwLCBvciBzdHJpbmdzIGVxdWFsIHVuZGVyIGENCisgKiBjYXNlLWluc2Vuc2l0 aXZlIGNvbGxhdGlvbiwgbWFrZSBubyBuZXcgZW50cmllcy4NCisgKg0KKyAqIFdlIGFyZSBvbmx5 IGFza2VkIGFib3V0IHZhbHVlcyB0aGF0IGRpZmZlciBvbmNlIGRldG9hc3RlZC4gIElmIHRoZSB0 eXBlJ3MNCisgKiBlcXVhbGl0eSBpbXBsaWVzIGltYWdlIGVxdWFsaXR5LCBhcyBpdHMgZGVmYXVs dCBidHJlZSBvcGVyYXRvciBjbGFzcydzDQorICogZXF1YWxpbWFnZSBmdW5jdGlvbiBzYXlzIGZv ciB0aGUgaW5kZXgncyBjb2xsYXRpb24sIHN1Y2ggdmFsdWVzIGFyZQ0KKyAqIHVuZXF1YWwsIGFu ZCB0aGVpciBoYXNoIGNvZGVzIGNhbiBiZSB0aGUgc2FtZSBvbmx5IGJ5IGNvbGxpc2lvbjogc2F5 IHNvDQorICogd2l0aG91dCBoYXNoaW5nIHRoZW0uICBUaGUgYW5zd2VyIGlzIGtlcHQgaW4gaWlf QW1DYWNoZSBmb3IgdGhlIHN0YXRlbWVudC4NCisgKi8NCitib29sDQoraGFzaGNvbXBhcmVkYXR1 bXMoUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvLCBpbnQgYXR0bnVtLA0KKwkJ CQkgIE9pZCB0eXBpZCwgaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsLA0KKwkJCQkgIERhdHVt IG9sZFZhbHVlLCBEYXR1bSBuZXdWYWx1ZSkNCit7DQorCWJvb2wJICAgKmltYWdlZXEgPSAoYm9v bCAqKSBpbmRleEluZm8tPmlpX0FtQ2FjaGU7DQorDQorCUFzc2VydChhdHRudW0gPT0gMSk7DQor CWlmIChpbWFnZWVxID09IE5VTEwpDQorCXsNCisJCVR5cGVDYWNoZUVudHJ5ICp0Y2UgPSBsb29r dXBfdHlwZV9jYWNoZShpbmRleC0+cmRfb3BjaW50eXBlWzBdLA0KKwkJCQkJCQkJCQkJCVRZUEVD QUNIRV9CVFJFRV9PUEZBTUlMWSk7DQorCQlPaWQJCQlwcm9jID0gSW52YWxpZE9pZDsNCisNCisJ CWlmIChPaWRJc1ZhbGlkKHRjZS0+YnRyZWVfb3BmKSkNCisJCQlwcm9jID0gZ2V0X29wZmFtaWx5 X3Byb2ModGNlLT5idHJlZV9vcGYsIHRjZS0+YnRyZWVfb3BpbnR5cGUsDQorCQkJCQkJCQkJIHRj ZS0+YnRyZWVfb3BpbnR5cGUsIEJURVFVQUxJTUFHRV9QUk9DKTsNCisJCWltYWdlZXEgPSBNZW1v cnlDb250ZXh0QWxsb2MoaW5kZXhJbmZvLT5paV9Db250ZXh0LCBzaXplb2YoYm9vbCkpOw0KKwkJ KmltYWdlZXEgPSBPaWRJc1ZhbGlkKHByb2MpICYmDQorCQkJRGF0dW1HZXRCb29sKE9pZEZ1bmN0 aW9uQ2FsbDFDb2xsKHByb2MsIGluZGV4LT5yZF9pbmRjb2xsYXRpb25bMF0sDQorCQkJCQkJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0odGNlLT5idHJlZV9vcGludHlwZSkpKTsNCisJCWluZGV4SW5m by0+aWlfQW1DYWNoZSA9IGltYWdlZXE7DQorCX0NCisJaWYgKCppbWFnZWVxKQ0KKwkJcmV0dXJu IGZhbHNlOw0KKw0KKwlyZXR1cm4gX2hhc2hfZGF0dW0yaGFzaGtleShpbmRleCwgb2xkVmFsdWUp ID09DQorCQlfaGFzaF9kYXR1bTJoYXNoa2V5KGluZGV4LCBuZXdWYWx1ZSk7DQorfQ0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFz aC5oDQppbmRleCBhODcwMmYwZTVlYS4uMmZmMmFhYzk4MjIgMTAwNjQ0DQotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGFzaC5oDQorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaC5oDQpAQCAt Mzg5LDYgKzM4OSw5IEBAIGV4dGVybiB2b2lkIGhhc2hhZGp1c3RtZW1iZXJzKE9pZCBvcGZhbWls eW9pZCwNCiANCiBleHRlcm4gQ29tcGFyZVR5cGUgaGFzaHRyYW5zbGF0ZXN0cmF0ZWd5KFN0cmF0 ZWd5TnVtYmVyIHN0cmF0ZWd5LCBPaWQgb3BmYW1pbHkpOw0KIGV4dGVybiBTdHJhdGVneU51bWJl ciBoYXNodHJhbnNsYXRlY21wdHlwZShDb21wYXJlVHlwZSBjbXB0eXBlLCBPaWQgb3BmYW1pbHkp Ow0KK2V4dGVybiBib29sIGhhc2hjb21wYXJlZGF0dW1zKFJlbGF0aW9uIGluZGV4LCBzdHJ1Y3Qg SW5kZXhJbmZvICppbmRleEluZm8sDQorCQkJCQkJCSAgaW50IGF0dG51bSwgT2lkIHR5cGlkLCBp bnQxNiB0eXBsZW4sDQorCQkJCQkJCSAgYm9vbCB0eXBieXZhbCwgRGF0dW0gb2xkVmFsdWUsIERh dHVtIG5ld1ZhbHVlKTsNCiANCiAvKiBwcml2YXRlIHJvdXRpbmVzICovDQogDQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oYXNoX2luZGV4Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvaGFzaF9pbmRleC5vdXQNCmluZGV4IDBiMDk5YjllNzcxLi41NDhhMzIw N2I2NCAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGFzaF9pbmRleC5v dXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGFzaF9pbmRleC5vdXQNCkBAIC0z NzUsMyArMzc1LDE2NiBAQCBDUkVBVEUgSU5ERVggaGFzaF9mOF9pbmRleDIgT04gaGFzaF9mOF9o ZWFwIFVTSU5HIGhhc2ggKHJhbmRvbSBmbG9hdDhfb3BzKQ0KIAlXSVRIIChmaWxsZmFjdG9yPTEw MSk7DQogRVJST1I6ICB2YWx1ZSAxMDEgb3V0IG9mIGJvdW5kcyBmb3Igb3B0aW9uICJmaWxsZmFj dG9yIg0KIERFVEFJTDogIFZhbGlkIHZhbHVlcyBhcmUgYmV0d2VlbiAiMTAiIGFuZCAiMTAwIi4N CistLQ0KKy0tIEFuIFVQREFURSB0byBhIHZhbHVlIHdpdGggdGhlIHNhbWUgaGFzaCBjb2RlIGlz IEhPVDogdGhlIGluZGV4IHN0b3Jlcw0KKy0tIG9ubHkgdGhlIGNvZGUsIGFuZCBzY2FucyByZWNo ZWNrIHRoZSBoZWFwIHR1cGxlLg0KKy0tDQorQ1JFQVRFIFRBQkxFIGhhc2hfaG90IChpZCBpbnQs IG4gbnVtZXJpYykgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsNCitDUkVBVEUgSU5ERVggaGFzaF9o b3RfbiBPTiBoYXNoX2hvdCBVU0lORyBoYXNoIChuKTsNCitDUkVBVEUgSU5ERVggaGFzaF9ob3Rf bjIgT04gaGFzaF9ob3QgVVNJTkcgaGFzaCAoKG4gKiAyKSk7DQorSU5TRVJUIElOVE8gaGFzaF9o b3QgU0VMRUNUIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIGc7DQorLS0gKHBnX3N0 YXRfZ2V0X3hhY3RfKiBjb3VudCB0aGlzIHRyYW5zYWN0aW9uJ3MgdXBkYXRlcywgYW5kIGVhcmxp ZXINCistLSB0cmFuc2FjdGlvbnMnIG5vdCB5ZXQgcmVwb3J0ZWQpDQorQ1JFQVRFIEZVTkNUSU9O IGhhc2hfaG90X2NvdW50KE9VVCB1cGRhdGVkIGJpZ2ludCwgT1VUIGhvdCBiaWdpbnQpDQorTEFO R1VBR0Ugc3FsIEFTICQkDQorICBTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRl ZCgnaGFzaF9ob3QnOjpyZWdjbGFzcyksDQorICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfaG90X3VwZGF0ZWQoJ2hhc2hfaG90Jzo6cmVnY2xhc3MpICQkOw0KK0JFR0lOOw0KKy0tIG51 bWVyaWMgaGFzaGVzIGlnbm9yZSB0aGUgZGlzcGxheSBzY2FsZSwgaW4gdGhlIGNvbHVtbiBhbmQg aW4gdGhlDQorLS0gZXhwcmVzc2lvbjogSE9UDQorVVBEQVRFIGhhc2hfaG90IFNFVCBuID0gbiAr IDAuMDA7DQorU0VMRUNUICogRlJPTSBoYXNoX2hvdF9jb3VudCgpOw0KKyB1cGRhdGVkIHwgaG90 IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgIDUwIHwgIDUwDQorKDEgcm93KQ0KKw0KKy0tIGEg ZGlmZmVyZW50IHZhbHVlOiBub3QgSE9UDQorVVBEQVRFIGhhc2hfaG90IFNFVCBuID0gbiArIDEw MCBXSEVSRSBpZCA8PSA1Ow0KK1NFTEVDVCAqIEZST00gaGFzaF9ob3RfY291bnQoKTsNCisgdXBk YXRlZCB8IGhvdCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICA1NSB8ICA1MA0KKygxIHJvdykN CisNCitDT01NSVQ7DQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0KK1NFVCBlbmFibGVfYml0 bWFwc2NhbiA9IG9mZjsNCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgbiBGUk9NIGhh c2hfaG90IFdIRVJFIG4gPSA3Ow0KKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgSW5k ZXggU2NhbiB1c2luZyBoYXNoX2hvdF9uIG9uIGhhc2hfaG90DQorICAgSW5kZXggQ29uZDogKG4g PSAnNyc6Om51bWVyaWMpDQorKDIgcm93cykNCisNCitTRUxFQ1QgaWQsIG4gRlJPTSBoYXNoX2hv dCBXSEVSRSBuID0gNzsNCisgaWQgfCAgbiAgIA0KKy0tLS0rLS0tLS0tDQorICA3IHwgNy4wMA0K KygxIHJvdykNCisNCitTRUxFQ1QgaWQsIG4gRlJPTSBoYXNoX2hvdCBXSEVSRSBuID0gNy4wMDA7 DQorIGlkIHwgIG4gICANCistLS0tKy0tLS0tLQ0KKyAgNyB8IDcuMDANCisoMSByb3cpDQorDQor U0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9IDM7DQorIGlkIHwgbiANCistLS0t Ky0tLQ0KKygwIHJvd3MpDQorDQorU0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9 IDEwMzsNCisgaWQgfCAgIG4gICAgDQorLS0tLSstLS0tLS0tLQ0KKyAgMyB8IDEwMy4wMA0KKygx IHJvdykNCisNCitTRUxFQ1QgaWQsIG4gRlJPTSBoYXNoX2hvdCBXSEVSRSBuICogMiA9IDE0Ow0K KyBpZCB8ICBuICAgDQorLS0tLSstLS0tLS0NCisgIDcgfCA3LjAwDQorKDEgcm93KQ0KKw0KK1JF U0VUIGVuYWJsZV9iaXRtYXBzY2FuOw0KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOw0KK1NF TEVDVCBjb3VudCgqKSBGUk9NIGhhc2hfaG90IGggV0hFUkUgbiA9IChTRUxFQ1QgbiBGUk9NIGhh c2hfaG90IFdIRVJFIGlkID0gaC5pZCk7DQorIGNvdW50IA0KKy0tLS0tLS0NCisgICAgNTANCiso MSByb3cpDQorDQorUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsNCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsNCitEUk9QIFRBQkxFIGhhc2hfaG90Ow0KKy0tIHRleHQncyBlcXVhbGl0eSBpbXBsaWVzIGlt YWdlIGVxdWFsaXR5LCBzbyBhIHZhbHVlIHRoYXQgY2hhbmdlcyBuZWVkcyBhDQorLS0gbmV3IGVu dHJ5OyB0aGUgaW5kZXggaXMgbm90IGFza2VkIHRvIGhhc2ggdGhlIHR3bw0KK0NSRUFURSBUQUJM RSBoYXNoX2hvdCAoaWQgaW50LCB0IHRleHQpIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7DQorQ1JF QVRFIElOREVYIGhhc2hfaG90X3QgT04gaGFzaF9ob3QgVVNJTkcgaGFzaCAodCk7DQorSU5TRVJU IElOVE8gaGFzaF9ob3QgU0VMRUNUIGcsICd2JyB8fCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBnOw0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsNCisgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJv dykNCisNCitCRUdJTjsNCitVUERBVEUgaGFzaF9ob3QgU0VUIHQgPSB0IHx8ICd4JyBXSEVSRSBp ZCA8PSA1Ow0KK1NFTEVDVCAqIEZST00gaGFzaF9ob3RfY291bnQoKTsNCisgdXBkYXRlZCB8IGhv dCANCistLS0tLS0tLS0rLS0tLS0NCisgICAgICAgNSB8ICAgMA0KKygxIHJvdykNCisNCitDT01N SVQ7DQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0KK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsNCitTRUxFQ1QgaWQsIHQgRlJPTSBoYXNoX2hvdCBXSEVSRSB0ID0gJ3YzeCc7DQorIGlk IHwgIHQgIA0KKy0tLS0rLS0tLS0NCisgIDMgfCB2M3gNCisoMSByb3cpDQorDQorU0VMRUNUIGlk LCB0IEZST00gaGFzaF9ob3QgV0hFUkUgdCA9ICd2Myc7DQorIGlkIHwgdCANCistLS0tKy0tLQ0K KygwIHJvd3MpDQorDQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47DQorUkVTRVQgZW5hYmxlX3Nl cXNjYW47DQorRFJPUCBUQUJMRSBoYXNoX2hvdDsNCistLSBBbiBleGNsdXNpb24gY29uc3RyYWlu dCBpcyBjaGVja2VkIG9uIHRoZSB2YWx1ZXMsIHNvIGEgY2hhbmdlIHRvIGEgdmFsdWUNCistLSB3 aXRoIHRoZSBzYW1lIGhhc2ggY29kZSBtdXN0IHN0aWxsIG1ha2UgYSBuZXcgZW50cnkgYW5kIGJl IGNoZWNrZWQuDQorLS0gQW4gaW50ZXJ2YWwgaGFzaGVzIGFzIGhhc2hpbnQ4KCkgb2YgaXRzIHNw YW4gaW4gbWljcm9zZWNvbmRzLCB3aGljaCBmb2xkcw0KKy0tIHRoZSBoaWdoIGhhbGYgaW50byB0 aGUgbG93LCBzbyAxIGFuZCAyXjMyIG1pY3Jvc2Vjb25kcyBjb2xsaWRlLiAgKGludDgNCistLSB3 b3VsZCBub3QgZG86IGl0cyBlcXVhbGl0eSBpbXBsaWVzIGltYWdlIGVxdWFsaXR5LCBzbyB0aGUg aW5kZXggaXMgbm90DQorLS0gYXNrZWQgYWJvdXQgdHdvIGRpZmZlcmVudCBpbnQ4IHZhbHVlcyBh dCBhbGwuKQ0KK1NFTEVDVCBpbnRlcnZhbF9oYXNoKCcwMDowMDowMC4wMDAwMDEnKSA9IGludGVy dmFsX2hhc2goJzAxOjExOjM0Ljk2NzI5NicpIEFTIHNhbWVfaGFzaDsNCisgc2FtZV9oYXNoIA0K Ky0tLS0tLS0tLS0tDQorIHQNCisoMSByb3cpDQorDQorQ1JFQVRFIFRBQkxFIGhhc2hfaG90IChp ZCBpbnQsIGsgaW50ZXJ2YWwsIEVYQ0xVREUgVVNJTkcgaGFzaCAoayBXSVRIID0pKQ0KKyAgV0lU SCAoZmlsbGZhY3RvciA9IDEwKTsNCitJTlNFUlQgSU5UTyBoYXNoX2hvdCBWQUxVRVMgKDEsICcw MDowMDowMC4wMDAwMDEnKSwgKDIsICcwMToxMTozNC45NjcyOTYnKTsNCitVUERBVEUgaGFzaF9o b3QgU0VUIGsgPSAnMDE6MTE6MzQuOTY3Mjk2JyBXSEVSRSBpZCA9IDE7DQorRVJST1I6ICBjb25m bGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgImhhc2hfaG90 X2tfZXhjbCINCitERVRBSUw6ICBLZXkgKGspPShAIDEgaG91ciAxMSBtaW5zIDM0Ljk2NzI5NiBz ZWNzKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGspPShAIDEgaG91ciAxMSBtaW5zIDM0 Ljk2NzI5NiBzZWNzKS4NCistLSBwZ19zdGF0X2dldF94YWN0XyogYWxzbyBjb3VudCBlYXJsaWVy IHRyYW5zYWN0aW9ucycgdXBkYXRlcyBub3QgeWV0DQorLS0gcmVwb3J0ZWQ7IHJlcG9ydCB0aGVt LCBzbyB0aGUgY291bnRzIGJlbG93IHN0YXJ0IGZyb20gemVybw0KK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsNCisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIA0KKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitCRUdJTjsNCitERUxFVEUgRlJP TSBoYXNoX2hvdCBXSEVSRSBpZCA9IDI7DQorLS0gd2l0aG91dCBhIGNvbmZsaWN0LCB0aGUgdXBk YXRlIGlzIGNoZWNrZWQgYW5kIGlzIG5vdCBIT1QNCitVUERBVEUgaGFzaF9ob3QgU0VUIGsgPSAn MDE6MTE6MzQuOTY3Mjk2JyBXSEVSRSBpZCA9IDE7DQorU0VMRUNUICogRlJPTSBoYXNoX2hvdF9j b3VudCgpOw0KKyB1cGRhdGVkIHwgaG90IA0KKy0tLS0tLS0tLSstLS0tLQ0KKyAgICAgICAxIHwg ICAwDQorKDEgcm93KQ0KKw0KK0NPTU1JVDsNCitTRUxFQ1QgKiBGUk9NIGhhc2hfaG90Ow0KKyBp ZCB8ICAgICAgICAgICAgICAgIGsgICAgICAgICAgICAgICAgDQorLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIDEgfCBAIDEgaG91ciAxMSBtaW5zIDM0Ljk2NzI5NiBz ZWNzDQorKDEgcm93KQ0KKw0KK0RST1AgVEFCTEUgaGFzaF9ob3Q7DQorRFJPUCBGVU5DVElPTiBo YXNoX2hvdF9jb3VudDsNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9oYXNoX2lu ZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hhc2hfaW5kZXguc3FsDQppbmRleCAzZWJk YWVhZjE3Mi4uNWMwYjRiNmI3NWIgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9o YXNoX2luZGV4LnNxbA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGFzaF9pbmRleC5zcWwN CkBAIC0zNTEsMyArMzUxLDgzIEBAIENSRUFURSBJTkRFWCBoYXNoX2Y4X2luZGV4MiBPTiBoYXNo X2Y4X2hlYXAgVVNJTkcgaGFzaCAocmFuZG9tIGZsb2F0OF9vcHMpDQogCVdJVEggKGZpbGxmYWN0 b3I9OSk7DQogQ1JFQVRFIElOREVYIGhhc2hfZjhfaW5kZXgyIE9OIGhhc2hfZjhfaGVhcCBVU0lO RyBoYXNoIChyYW5kb20gZmxvYXQ4X29wcykNCiAJV0lUSCAoZmlsbGZhY3Rvcj0xMDEpOw0KKw0K Ky0tDQorLS0gQW4gVVBEQVRFIHRvIGEgdmFsdWUgd2l0aCB0aGUgc2FtZSBoYXNoIGNvZGUgaXMg SE9UOiB0aGUgaW5kZXggc3RvcmVzDQorLS0gb25seSB0aGUgY29kZSwgYW5kIHNjYW5zIHJlY2hl Y2sgdGhlIGhlYXAgdHVwbGUuDQorLS0NCitDUkVBVEUgVEFCTEUgaGFzaF9ob3QgKGlkIGludCwg biBudW1lcmljKSBXSVRIIChmaWxsZmFjdG9yID0gMTApOw0KK0NSRUFURSBJTkRFWCBoYXNoX2hv dF9uIE9OIGhhc2hfaG90IFVTSU5HIGhhc2ggKG4pOw0KK0NSRUFURSBJTkRFWCBoYXNoX2hvdF9u MiBPTiBoYXNoX2hvdCBVU0lORyBoYXNoICgobiAqIDIpKTsNCitJTlNFUlQgSU5UTyBoYXNoX2hv dCBTRUxFQ1QgZywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgZzsNCistLSAocGdfc3Rh dF9nZXRfeGFjdF8qIGNvdW50IHRoaXMgdHJhbnNhY3Rpb24ncyB1cGRhdGVzLCBhbmQgZWFybGll cg0KKy0tIHRyYW5zYWN0aW9ucycgbm90IHlldCByZXBvcnRlZCkNCitDUkVBVEUgRlVOQ1RJT04g aGFzaF9ob3RfY291bnQoT1VUIHVwZGF0ZWQgYmlnaW50LCBPVVQgaG90IGJpZ2ludCkNCitMQU5H VUFHRSBzcWwgQVMgJCQNCisgIFNFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVk KCdoYXNoX2hvdCc6OnJlZ2NsYXNzKSwNCisgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZCgnaGFzaF9ob3QnOjpyZWdjbGFzcykgJCQ7DQorQkVHSU47DQorLS0gbnVt ZXJpYyBoYXNoZXMgaWdub3JlIHRoZSBkaXNwbGF5IHNjYWxlLCBpbiB0aGUgY29sdW1uIGFuZCBp biB0aGUNCistLSBleHByZXNzaW9uOiBIT1QNCitVUERBVEUgaGFzaF9ob3QgU0VUIG4gPSBuICsg MC4wMDsNCitTRUxFQ1QgKiBGUk9NIGhhc2hfaG90X2NvdW50KCk7DQorLS0gYSBkaWZmZXJlbnQg dmFsdWU6IG5vdCBIT1QNCitVUERBVEUgaGFzaF9ob3QgU0VUIG4gPSBuICsgMTAwIFdIRVJFIGlk IDw9IDU7DQorU0VMRUNUICogRlJPTSBoYXNoX2hvdF9jb3VudCgpOw0KK0NPTU1JVDsNCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOw0KK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9IDc7 DQorU0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiA9IDc7DQorU0VMRUNUIGlkLCBu IEZST00gaGFzaF9ob3QgV0hFUkUgbiA9IDcuMDAwOw0KK1NFTEVDVCBpZCwgbiBGUk9NIGhhc2hf aG90IFdIRVJFIG4gPSAzOw0KK1NFTEVDVCBpZCwgbiBGUk9NIGhhc2hfaG90IFdIRVJFIG4gPSAx MDM7DQorU0VMRUNUIGlkLCBuIEZST00gaGFzaF9ob3QgV0hFUkUgbiAqIDIgPSAxNDsNCitSRVNF VCBlbmFibGVfYml0bWFwc2NhbjsNCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsNCitTRUxF Q1QgY291bnQoKikgRlJPTSBoYXNoX2hvdCBoIFdIRVJFIG4gPSAoU0VMRUNUIG4gRlJPTSBoYXNo X2hvdCBXSEVSRSBpZCA9IGguaWQpOw0KK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47DQorUkVTRVQg ZW5hYmxlX3NlcXNjYW47DQorRFJPUCBUQUJMRSBoYXNoX2hvdDsNCisNCistLSB0ZXh0J3MgZXF1 YWxpdHkgaW1wbGllcyBpbWFnZSBlcXVhbGl0eSwgc28gYSB2YWx1ZSB0aGF0IGNoYW5nZXMgbmVl ZHMgYQ0KKy0tIG5ldyBlbnRyeTsgdGhlIGluZGV4IGlzIG5vdCBhc2tlZCB0byBoYXNoIHRoZSB0 d28NCitDUkVBVEUgVEFCTEUgaGFzaF9ob3QgKGlkIGludCwgdCB0ZXh0KSBXSVRIIChmaWxsZmFj dG9yID0gMTApOw0KK0NSRUFURSBJTkRFWCBoYXNoX2hvdF90IE9OIGhhc2hfaG90IFVTSU5HIGhh c2ggKHQpOw0KK0lOU0VSVCBJTlRPIGhhc2hfaG90IFNFTEVDVCBnLCAndicgfHwgZyBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MCkgZzsNCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7DQorQkVHSU47DQorVVBEQVRFIGhhc2hfaG90IFNFVCB0ID0gdCB8fCAneCcgV0hFUkUgaWQg PD0gNTsNCitTRUxFQ1QgKiBGUk9NIGhhc2hfaG90X2NvdW50KCk7DQorQ09NTUlUOw0KK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsNCitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7DQorU0VM RUNUIGlkLCB0IEZST00gaGFzaF9ob3QgV0hFUkUgdCA9ICd2M3gnOw0KK1NFTEVDVCBpZCwgdCBG Uk9NIGhhc2hfaG90IFdIRVJFIHQgPSAndjMnOw0KK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOw0K K1JFU0VUIGVuYWJsZV9zZXFzY2FuOw0KK0RST1AgVEFCTEUgaGFzaF9ob3Q7DQorDQorLS0gQW4g ZXhjbHVzaW9uIGNvbnN0cmFpbnQgaXMgY2hlY2tlZCBvbiB0aGUgdmFsdWVzLCBzbyBhIGNoYW5n ZSB0byBhIHZhbHVlDQorLS0gd2l0aCB0aGUgc2FtZSBoYXNoIGNvZGUgbXVzdCBzdGlsbCBtYWtl IGEgbmV3IGVudHJ5IGFuZCBiZSBjaGVja2VkLg0KKy0tIEFuIGludGVydmFsIGhhc2hlcyBhcyBo YXNoaW50OCgpIG9mIGl0cyBzcGFuIGluIG1pY3Jvc2Vjb25kcywgd2hpY2ggZm9sZHMNCistLSB0 aGUgaGlnaCBoYWxmIGludG8gdGhlIGxvdywgc28gMSBhbmQgMl4zMiBtaWNyb3NlY29uZHMgY29s bGlkZS4gIChpbnQ4DQorLS0gd291bGQgbm90IGRvOiBpdHMgZXF1YWxpdHkgaW1wbGllcyBpbWFn ZSBlcXVhbGl0eSwgc28gdGhlIGluZGV4IGlzIG5vdA0KKy0tIGFza2VkIGFib3V0IHR3byBkaWZm ZXJlbnQgaW50OCB2YWx1ZXMgYXQgYWxsLikNCitTRUxFQ1QgaW50ZXJ2YWxfaGFzaCgnMDA6MDA6 MDAuMDAwMDAxJykgPSBpbnRlcnZhbF9oYXNoKCcwMToxMTozNC45NjcyOTYnKSBBUyBzYW1lX2hh c2g7DQorQ1JFQVRFIFRBQkxFIGhhc2hfaG90IChpZCBpbnQsIGsgaW50ZXJ2YWwsIEVYQ0xVREUg VVNJTkcgaGFzaCAoayBXSVRIID0pKQ0KKyAgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsNCitJTlNF UlQgSU5UTyBoYXNoX2hvdCBWQUxVRVMgKDEsICcwMDowMDowMC4wMDAwMDEnKSwgKDIsICcwMTox MTozNC45NjcyOTYnKTsNCitVUERBVEUgaGFzaF9ob3QgU0VUIGsgPSAnMDE6MTE6MzQuOTY3Mjk2 JyBXSEVSRSBpZCA9IDE7DQorLS0gcGdfc3RhdF9nZXRfeGFjdF8qIGFsc28gY291bnQgZWFybGll ciB0cmFuc2FjdGlvbnMnIHVwZGF0ZXMgbm90IHlldA0KKy0tIHJlcG9ydGVkOyByZXBvcnQgdGhl bSwgc28gdGhlIGNvdW50cyBiZWxvdyBzdGFydCBmcm9tIHplcm8NCitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7DQorQkVHSU47DQorREVMRVRFIEZST00gaGFzaF9ob3QgV0hFUkUg aWQgPSAyOw0KKy0tIHdpdGhvdXQgYSBjb25mbGljdCwgdGhlIHVwZGF0ZSBpcyBjaGVja2VkIGFu ZCBpcyBub3QgSE9UDQorVVBEQVRFIGhhc2hfaG90IFNFVCBrID0gJzAxOjExOjM0Ljk2NzI5Nicg V0hFUkUgaWQgPSAxOw0KK1NFTEVDVCAqIEZST00gaGFzaF9ob3RfY291bnQoKTsNCitDT01NSVQ7 DQorU0VMRUNUICogRlJPTSBoYXNoX2hvdDsNCitEUk9QIFRBQkxFIGhhc2hfaG90Ow0KK0RST1Ag RlVOQ1RJT04gaGFzaF9ob3RfY291bnQ7DQotLSANCjIuNTAuMQ0KDQo= --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA Content-Type: text/plain; charset=us-ascii; name=v45-0003-Allow-HOT-updates-when-expression-and-partial-in.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v45-0003-Allow-HOT-updates-when-expression-and-partial-in.patch RnJvbSBhZDhjNzQwMjlmYzAxYjg3YzE5MDcwODBiOGZiZmFhMzBhMjJjNjEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+DQpEYXRlOiBNb24s IDE5IE9jdCAyMDI2IDE4OjU1OjQxIC0wNDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjQ1IDMvOF0gQWxs 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 YWx2aGVycmUucGdzcWwNCi0tLQ0KIGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19idHJl ZS5vdXQgICAgICB8ICA4MyArKysrKysNCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2J0cmVl LnNxbCAgICAgICAgICAgfCAgNTAgKysrKw0KIGRvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwgICAg ICAgICAgICAgICAgICAgICB8ICAgOSArLQ0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURN RS5IT1QgICAgICAgICAgICB8ICAxOCArLQ0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jICAgICAgICAgICAgICB8ICAxNCArLQ0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5j ICAgICAgICAgICAgICAgICB8ICAgMyArLQ0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jICAgICAgICB8ICAgMyArLQ0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jICAgICAgICB8IDI3MyArKysrKysrKysrKysrKysrKy0NCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgNDYgKysrDQogc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgICAzICstDQogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICA4ICsNCiBzcmMvaW5jbHVkZS91 dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KIHNyYy9pbmNsdWRlL3V0 aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgICB8ICAgMSArDQogLi4uL2lzb2xhdGlvbi9l eHBlY3RlZC9jaWMtZXhwcmVzc2lvbi1ob3Qub3V0IHwgIDQzICsrKw0KIHNyYy90ZXN0L2lzb2xh dGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgMSArDQogLi4uL2lzb2xhdGlvbi9z cGVjcy9jaWMtZXhwcmVzc2lvbi1ob3Quc3BlYyAgIHwgIDQzICsrKw0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0ICAgICB8ICAyNiArLQ0KIDE3IGZpbGVzIGNoYW5n ZWQsIDU5OSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2NpYy1leHByZXNzaW9uLWhvdC5vdXQNCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2NpYy1leHByZXNzaW9u LWhvdC5zcGVjDQoNCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tf YnRyZWUub3V0IGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2J0cmVlLm91dA0KaW5k ZXggNGZjZWU1ZGE0NjMuLjZmYzFlZTk3OTAyIDEwMDY0NA0KLS0tIGEvY29udHJpYi9hbWNoZWNr L2V4cGVjdGVkL2NoZWNrX2J0cmVlLm91dA0KKysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVk L2NoZWNrX2J0cmVlLm91dA0KQEAgLTI4Myw2ICsyODMsODkgQEAgU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCd2YXJsZW5hX2J1Z19pZHgnLCB0cnVlKTsNCiAgDQogKDEgcm93KQ0KIA0KKy0tIEhPVCB1 cGRhdGVzIG9mIHJvd3MgaW5kZXhlZCBieSBleHByZXNzaW9uIGFuZCBwYXJ0aWFsIGluZGV4ZXMg bXVzdCBsZWF2ZQ0KKy0tIGV2ZXJ5IGluZGV4IGVudHJ5IGNvbnNpc3RlbnQgd2l0aCB0aGUgaGVh cC4NCitDUkVBVEUgVEFCTEUgaG90X2V4cHIgKGlkIGludCBQUklNQVJZIEtFWSwgcyB0ZXh0LCBk IGpzb25iLA0KKyAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzIHRleHQsIHYgaW50LCBuIG51 bWVyaWMpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7DQorQ1JFQVRFIElOREVYIGhvdF9leHByX2xv d2VyIE9OIGhvdF9leHByIChsb3dlcihzKSk7DQorQ1JFQVRFIElOREVYIGhvdF9leHByX25hbWUg T04gaG90X2V4cHIgKChkLT4+J25hbWUnKSk7DQorQ1JFQVRFIElOREVYIGhvdF9leHByX3BhcnRp YWwgT04gaG90X2V4cHIgKHYpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOw0KK0NSRUFURSBJTkRF WCBob3RfZXhwcl9udW1lcmljIE9OIGhvdF9leHByICgobiArIDApKTsNCitJTlNFUlQgSU5UTyBo b3RfZXhwcg0KKyAgU0VMRUNUIGcsICdhYmMnIHx8IGcsIGpzb25iX2J1aWxkX29iamVjdCgnbmFt ZScsICduJyB8fCBnLCAnYWdlJywgZyksDQorICAgICAgICAgQ0FTRSBXSEVOIGcgJSAyID0gMCBU SEVOICdhY3RpdmUnIEVMU0UgJ2RvbmUnIEVORCwgZywgMw0KKyAgICBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAyMDApIGc7DQorVVBEQVRFIGhvdF9leHByIFNFVCBzID0gdXBwZXIocyk7DQorVVBE QVRFIGhvdF9leHByIFNFVCBkID0ganNvbmJfc2V0KGQsICd7YWdlfScsICcwJyk7DQorVVBEQVRF IGhvdF9leHByIFNFVCB2ID0gdiArIDEwMDAgV0hFUkUgc3RhdHVzID0gJ2RvbmUnOw0KK1VQREFU RSBob3RfZXhwciBTRVQgc3RhdHVzID0gJ2RvbmUnIFdIRVJFIGlkICUgNCA9IDA7DQorVVBEQVRF IGhvdF9leHByIFNFVCBzdGF0dXMgPSAnYWN0aXZlJyBXSEVSRSBpZCAlIDMgPSAwOw0KK1VQREFU RSBob3RfZXhwciBTRVQgbiA9IDMuMCBXSEVSRSBpZCAlIDUgPSAwOw0KK1VQREFURSBob3RfZXhw ciBTRVQgZCA9IGpzb25iX3NldChkLCAne25hbWV9JywgJyJ4IicpIFdIRVJFIGlkICUgNyA9IDA7 DQorU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdob3RfZXhwcl9sb3dlcicsIGhlYXBhbGxpbmRleGVk ID0+IHRydWUpOw0KKyBidF9pbmRleF9jaGVjayANCistLS0tLS0tLS0tLS0tLS0tDQorIA0KKygx IHJvdykNCisNCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX25hbWUnLCBoZWFwYWxs aW5kZXhlZCA9PiB0cnVlKTsNCisgYnRfaW5kZXhfY2hlY2sgDQorLS0tLS0tLS0tLS0tLS0tLQ0K KyANCisoMSByb3cpDQorDQorU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdob3RfZXhwcl9wYXJ0aWFs JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQorIGJ0X2luZGV4X2NoZWNrIA0KKy0tLS0tLS0t LS0tLS0tLS0NCisgDQorKDEgcm93KQ0KKw0KK1NFTEVDVCBidF9pbmRleF9jaGVjaygnaG90X2V4 cHJfbnVtZXJpYycsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOw0KKyBidF9pbmRleF9jaGVjayAN CistLS0tLS0tLS0tLS0tLS0tDQorIA0KKygxIHJvdykNCisNCitTRUxFQ1QgYnRfaW5kZXhfcGFy ZW50X2NoZWNrKCdob3RfZXhwcl9wYXJ0aWFsJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQor IGJ0X2luZGV4X3BhcmVudF9jaGVjayANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyANCiso MSByb3cpDQorDQorRFJPUCBUQUJMRSBob3RfZXhwcjsNCistLSBPbmUgVVBEQVRFIGluIHdoaWNo IGRpZmZlcmVudCByb3dzIGFyZSBkZWNpZGVkIGJ5IGRpZmZlcmVudCBpbmRleGVzOiBhbg0KKy0t IGV4cHJlc3Npb24gaW5kZXggY3JlYXRlZCBmaXJzdCwgYSBwYXJ0aWFsIGluZGV4IGNyZWF0ZWQg YWZ0ZXIgaXQuDQorQ1JFQVRFIFRBQkxFIGhvdF9leHByX211bHRpIChpZCBpbnQgUFJJTUFSWSBL RVksIGRvYyBqc29uYikgV0lUSCAoZmlsbGZhY3RvciA9IDMwKTsNCitDUkVBVEUgSU5ERVggaG90 X2V4cHJfbXVsdGlfc3RhdHVzIE9OIGhvdF9leHByX211bHRpICgoZG9jLT4+J3N0YXR1cycpKTsN CitDUkVBVEUgSU5ERVggaG90X2V4cHJfbXVsdGlfdmlwIE9OIGhvdF9leHByX211bHRpICgoZG9j LT4+J2VtYWlsJykpDQorICBXSEVSRSAoZG9jLT4+J3ZpcCcpOjpib29sOw0KK0lOU0VSVCBJTlRP IGhvdF9leHByX211bHRpDQorICBTRUxFQ1QgZywganNvbmJfYnVpbGRfb2JqZWN0KCdzdGF0dXMn LCAnYScsICdlbWFpbCcsICdlJyB8fCBnLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAndmlwJywgZyAlIDIgPSAwLCAnbicsIDApDQorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMwMDApIGc7DQorVVBEQVRFIGhvdF9leHByX211bHRpIFNFVCBkb2MgPSBDQVNFDQorICAgIFdI RU4gaWQgJSA0ID0gMCBUSEVOIGpzb25iX3NldChkb2MsICd7c3RhdHVzfScsICciYiInKQ0KKyAg ICBXSEVOIGlkICUgNCA9IDEgVEhFTiBqc29uYl9zZXQoZG9jLCAne3ZpcH0nLCB0b19qc29uYihO T1QgKGRvYy0+Pid2aXAnKTo6Ym9vbCkpDQorICAgIFdIRU4gaWQgJSA0ID0gMiBUSEVOIGpzb25i X3NldChqc29uYl9zZXQoZG9jLCAne3N0YXR1c30nLCAnImMiJyksDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAne3ZpcH0nLCB0b19qc29uYihOT1QgKGRvYy0+Pid2aXAnKTo6 Ym9vbCkpDQorICAgIEVMU0UganNvbmJfc2V0KGRvYywgJ3tufScsICcxJykgRU5EOw0KK1VQREFU RSBob3RfZXhwcl9tdWx0aSBTRVQgZG9jID0gQ0FTRQ0KKyAgICBXSEVOIGlkICUgMyA9IDAgVEhF TiBqc29uYl9zZXQoZG9jLCAne3ZpcH0nLCB0b19qc29uYihOT1QgKGRvYy0+Pid2aXAnKTo6Ym9v bCkpDQorICAgIFdIRU4gaWQgJSAzID0gMSBUSEVOIGpzb25iX3NldChkb2MsICd7c3RhdHVzfScs ICciZCInKQ0KKyAgICBFTFNFIGpzb25iX3NldChkb2MsICd7bn0nLCAnMicpIEVORDsNCitTRUxF Q1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX211bHRpX3N0YXR1cycsIGhlYXBhbGxpbmRleGVk ID0+IHRydWUpOw0KKyBidF9pbmRleF9jaGVjayANCistLS0tLS0tLS0tLS0tLS0tDQorIA0KKygx IHJvdykNCisNCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX211bHRpX3ZpcCcsIGhl YXBhbGxpbmRleGVkID0+IHRydWUpOw0KKyBidF9pbmRleF9jaGVjayANCistLS0tLS0tLS0tLS0t LS0tDQorIA0KKygxIHJvdykNCisNCitEUk9QIFRBQkxFIGhvdF9leHByX211bHRpOw0KIC0tIGNs ZWFudXANCiBEUk9QIFRBQkxFIGJ0dGVzdF9hOw0KIERST1AgVEFCTEUgYnR0ZXN0X2I7DQpkaWZm IC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19idHJlZS5zcWwgYi9jb250cmliL2Ft Y2hlY2svc3FsL2NoZWNrX2J0cmVlLnNxbA0KaW5kZXggYTU1ODUwODVmYWQuLjRjNTRhYWQ1ZDlm IDEwMDY0NA0KLS0tIGEvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19idHJlZS5zcWwNCisrKyBi L2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnRyZWUuc3FsDQpAQCAtMTgzLDYgKzE4Myw1NiBA QCBJTlNFUlQgSU5UTyB2YXJsZW5hX2J1ZyBWQUxVRVMgKHJlcGVhdCgnVGVzdCcsIDI1MCkpOw0K IEFMVEVSIFRBQkxFIHZhcmxlbmFfYnVnIEFMVEVSIENPTFVNTiB2IFNFVCBTVE9SQUdFIGV4dGVu ZGVkOw0KIFNFTEVDVCBidF9pbmRleF9jaGVjaygndmFybGVuYV9idWdfaWR4JywgdHJ1ZSk7DQog DQorLS0gSE9UIHVwZGF0ZXMgb2Ygcm93cyBpbmRleGVkIGJ5IGV4cHJlc3Npb24gYW5kIHBhcnRp YWwgaW5kZXhlcyBtdXN0IGxlYXZlDQorLS0gZXZlcnkgaW5kZXggZW50cnkgY29uc2lzdGVudCB3 aXRoIHRoZSBoZWFwLg0KK0NSRUFURSBUQUJMRSBob3RfZXhwciAoaWQgaW50IFBSSU1BUlkgS0VZ LCBzIHRleHQsIGQganNvbmIsDQorICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgdGV4dCwg diBpbnQsIG4gbnVtZXJpYykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsNCitDUkVBVEUgSU5ERVgg aG90X2V4cHJfbG93ZXIgT04gaG90X2V4cHIgKGxvd2VyKHMpKTsNCitDUkVBVEUgSU5ERVggaG90 X2V4cHJfbmFtZSBPTiBob3RfZXhwciAoKGQtPj4nbmFtZScpKTsNCitDUkVBVEUgSU5ERVggaG90 X2V4cHJfcGFydGlhbCBPTiBob3RfZXhwciAodikgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7DQor Q1JFQVRFIElOREVYIGhvdF9leHByX251bWVyaWMgT04gaG90X2V4cHIgKChuICsgMCkpOw0KK0lO U0VSVCBJTlRPIGhvdF9leHByDQorICBTRUxFQ1QgZywgJ2FiYycgfHwgZywganNvbmJfYnVpbGRf b2JqZWN0KCduYW1lJywgJ24nIHx8IGcsICdhZ2UnLCBnKSwNCisgICAgICAgICBDQVNFIFdIRU4g ZyAlIDIgPSAwIFRIRU4gJ2FjdGl2ZScgRUxTRSAnZG9uZScgRU5ELCBnLCAzDQorICAgIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZzsNCitVUERBVEUgaG90X2V4cHIgU0VUIHMgPSB1cHBl cihzKTsNCitVUERBVEUgaG90X2V4cHIgU0VUIGQgPSBqc29uYl9zZXQoZCwgJ3thZ2V9JywgJzAn KTsNCitVUERBVEUgaG90X2V4cHIgU0VUIHYgPSB2ICsgMTAwMCBXSEVSRSBzdGF0dXMgPSAnZG9u ZSc7DQorVVBEQVRFIGhvdF9leHByIFNFVCBzdGF0dXMgPSAnZG9uZScgV0hFUkUgaWQgJSA0ID0g MDsNCitVUERBVEUgaG90X2V4cHIgU0VUIHN0YXR1cyA9ICdhY3RpdmUnIFdIRVJFIGlkICUgMyA9 IDA7DQorVVBEQVRFIGhvdF9leHByIFNFVCBuID0gMy4wIFdIRVJFIGlkICUgNSA9IDA7DQorVVBE QVRFIGhvdF9leHByIFNFVCBkID0ganNvbmJfc2V0KGQsICd7bmFtZX0nLCAnIngiJykgV0hFUkUg aWQgJSA3ID0gMDsNCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX2xvd2VyJywgaGVh cGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQorU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdob3RfZXhwcl9u YW1lJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQorU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdo b3RfZXhwcl9wYXJ0aWFsJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQorU0VMRUNUIGJ0X2lu ZGV4X2NoZWNrKCdob3RfZXhwcl9udW1lcmljJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7DQor U0VMRUNUIGJ0X2luZGV4X3BhcmVudF9jaGVjaygnaG90X2V4cHJfcGFydGlhbCcsIGhlYXBhbGxp bmRleGVkID0+IHRydWUpOw0KK0RST1AgVEFCTEUgaG90X2V4cHI7DQorDQorLS0gT25lIFVQREFU RSBpbiB3aGljaCBkaWZmZXJlbnQgcm93cyBhcmUgZGVjaWRlZCBieSBkaWZmZXJlbnQgaW5kZXhl czogYW4NCistLSBleHByZXNzaW9uIGluZGV4IGNyZWF0ZWQgZmlyc3QsIGEgcGFydGlhbCBpbmRl eCBjcmVhdGVkIGFmdGVyIGl0Lg0KK0NSRUFURSBUQUJMRSBob3RfZXhwcl9tdWx0aSAoaWQgaW50 IFBSSU1BUlkgS0VZLCBkb2MganNvbmIpIFdJVEggKGZpbGxmYWN0b3IgPSAzMCk7DQorQ1JFQVRF IElOREVYIGhvdF9leHByX211bHRpX3N0YXR1cyBPTiBob3RfZXhwcl9tdWx0aSAoKGRvYy0+Pidz dGF0dXMnKSk7DQorQ1JFQVRFIElOREVYIGhvdF9leHByX211bHRpX3ZpcCBPTiBob3RfZXhwcl9t dWx0aSAoKGRvYy0+PidlbWFpbCcpKQ0KKyAgV0hFUkUgKGRvYy0+Pid2aXAnKTo6Ym9vbDsNCitJ TlNFUlQgSU5UTyBob3RfZXhwcl9tdWx0aQ0KKyAgU0VMRUNUIGcsIGpzb25iX2J1aWxkX29iamVj dCgnc3RhdHVzJywgJ2EnLCAnZW1haWwnLCAnZScgfHwgZywNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ3ZpcCcsIGcgJSAyID0gMCwgJ24nLCAwKQ0KKyAgICBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAzMDAwKSBnOw0KK1VQREFURSBob3RfZXhwcl9tdWx0aSBTRVQgZG9jID0gQ0FT RQ0KKyAgICBXSEVOIGlkICUgNCA9IDAgVEhFTiBqc29uYl9zZXQoZG9jLCAne3N0YXR1c30nLCAn ImIiJykNCisgICAgV0hFTiBpZCAlIDQgPSAxIFRIRU4ganNvbmJfc2V0KGRvYywgJ3t2aXB9Jywg dG9fanNvbmIoTk9UIChkb2MtPj4ndmlwJyk6OmJvb2wpKQ0KKyAgICBXSEVOIGlkICUgNCA9IDIg VEhFTiBqc29uYl9zZXQoanNvbmJfc2V0KGRvYywgJ3tzdGF0dXN9JywgJyJjIicpLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3t2aXB9JywgdG9fanNvbmIoTk9UIChkb2Mt Pj4ndmlwJyk6OmJvb2wpKQ0KKyAgICBFTFNFIGpzb25iX3NldChkb2MsICd7bn0nLCAnMScpIEVO RDsNCitVUERBVEUgaG90X2V4cHJfbXVsdGkgU0VUIGRvYyA9IENBU0UNCisgICAgV0hFTiBpZCAl IDMgPSAwIFRIRU4ganNvbmJfc2V0KGRvYywgJ3t2aXB9JywgdG9fanNvbmIoTk9UIChkb2MtPj4n dmlwJyk6OmJvb2wpKQ0KKyAgICBXSEVOIGlkICUgMyA9IDEgVEhFTiBqc29uYl9zZXQoZG9jLCAn e3N0YXR1c30nLCAnImQiJykNCisgICAgRUxTRSBqc29uYl9zZXQoZG9jLCAne259JywgJzInKSBF TkQ7DQorU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdob3RfZXhwcl9tdWx0aV9zdGF0dXMnLCBoZWFw YWxsaW5kZXhlZCA9PiB0cnVlKTsNCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hvdF9leHByX211 bHRpX3ZpcCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOw0KK0RST1AgVEFCTEUgaG90X2V4cHJf bXVsdGk7DQorDQogLS0gY2xlYW51cA0KIERST1AgVEFCTEUgYnR0ZXN0X2E7DQogRFJPUCBUQUJM RSBidHRlc3RfYjsNCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3RvcmFnZS5zZ21sIGIvZG9j L3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbA0KaW5kZXggODNkZTAxNmVhYTUuLjRkNjU1MjNlN2I5IDEw MDY0NA0KLS0tIGEvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21s L3N0b3JhZ2Uuc2dtbA0KQEAgLTExMDksNyArMTEwOSwxNCBAQCBkYXRhLiBFbXB0eSBpbiBvcmRp bmFyeSB0YWJsZXMuPC9lbnRyeT4NCiAgICAgIFRoZSB1cGRhdGUgZG9lcyBub3QgbW9kaWZ5IGFu eSBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgdGhlIHRhYmxlJ3MgaW5kZXhlcywNCiAgICAgIG5vdCBp bmNsdWRpbmcgc3VtbWFyaXppbmcgaW5kZXhlcy4gIFRoZSBvbmx5IHN1bW1hcml6aW5nIGluZGV4 IG1ldGhvZCBpbg0KICAgICAgdGhlIGNvcmUgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPiBkaXN0cmlidXRpb24gaXMgPGxpbmsNCi0gICAgIGxpbmtlbmQ9ImJyaW4iPkJSSU48 L2xpbms+Lg0KKyAgICAgbGlua2VuZD0iYnJpbiI+QlJJTjwvbGluaz4uICBBIGNvbHVtbiB0aGF0 IGluZGV4ZXMgcmVmZXJlbmNlIG9ubHkgdGhyb3VnaA0KKyAgICAgPGxpbmsgbGlua2VuZD0iaW5k ZXhlcy1leHByZXNzaW9uYWwiPmV4cHJlc3Npb25zPC9saW5rPiwgb3Igb25seSBhcw0KKyAgICAg PGxpbmsgbGlua2VuZD0iaW5kZXhlcy1wYXJ0aWFsIj5wYXJ0aWFsIGluZGV4ZXM8L2xpbms+LCBk b2VzIG5vdCBjb3VudCBhcw0KKyAgICAgbW9kaWZpZWQgaWYgdGhlIHVwZGF0ZSBjaGFuZ2VzIG5l aXRoZXIgdGhlIHZhbHVlIG9mIGFueSBzdWNoIGluZGV4J3MNCisgICAgIGV4cHJlc3Npb25zIG5v ciB3aGV0aGVyIHRoZSByb3cgc2F0aXNmaWVzIGl0cyBwcmVkaWNhdGUuICBUaGUgdmFsdWVzIGFy ZQ0KKyAgICAgY29tcGFyZWQgYXMgc3RvcmVkLCBzbyBlcXVhbCB2YWx1ZXMgd2l0aCBkaWZmZXJl bnQgcmVwcmVzZW50YXRpb25zLCBzdWNoDQorICAgICBhcyA8bGl0ZXJhbD4xLjA8L2xpdGVyYWw+ IGFuZCA8bGl0ZXJhbD4xLjAwPC9saXRlcmFsPiBvZiB0eXBlDQorICAgICA8dHlwZT5udW1lcmlj PC90eXBlPiwgY291bnQgYXMgZGlmZmVyZW50Lg0KICAgICAgPC9wYXJhPg0KICAgIDwvbGlzdGl0 ZW0+DQogICAgPGxpc3RpdGVtPg0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UDQppbmRleCA3 NGU0MDdmMzc1YS4uMDM3N2Y1MDgwNTUgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9UDQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U DQpAQCAtMzcsNiArMzcsMTQgQEAgRmlyc3QsIHdoZXJlIGEgdHVwbGUgaXMgcmVwZWF0ZWRseSB1 cGRhdGVkIGluIHdheXMgdGhhdCBkbyBub3QgY2hhbmdlDQogaXRzIGluZGV4ZWQgY29sdW1ucy4g IChIZXJlLCAiaW5kZXhlZCBjb2x1bW4iIG1lYW5zIGFueSBjb2x1bW4gcmVmZXJlbmNlZA0KIGF0 IGFsbCBpbiBhbiBpbmRleCBkZWZpbml0aW9uLCBpbmNsdWRpbmcgZm9yIGV4YW1wbGUgY29sdW1u cyB0aGF0IGFyZQ0KIHRlc3RlZCBpbiBhIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGJ1dCBhcmUg bm90IHN0b3JlZCBpbiB0aGUgaW5kZXguKQ0KK0EgY29sdW1uIHRoYXQgaW5kZXhlcyByZWZlcmVu Y2Ugb25seSB0aHJvdWdoIGV4cHJlc3Npb25zLCBvciBvbmx5IGFzDQorcGFydGlhbCBpbmRleGVz LCBtYXkgY2hhbmdlIGlmIHRoZSB1cGRhdGUgY2hhbmdlcyBub3RoaW5nIHRob3NlIGluZGV4ZXMN CitzdG9yZTogbm90IHRoZSB2YWx1ZSBvZiBhbnkgb2YgdGhlaXIgZXhwcmVzc2lvbnMgb3IgY29s dW1ucywgYXMgY29tcGFyZWQNCitieXRlIGZvciBieXRlLCBhbmQgbm90IHdoZXRoZXIgdGhlIHR1 cGxlIHNhdGlzZmllcyB0aGVpciBwcmVkaWNhdGVzLg0KK1RoZSBleGVjdXRvciB3b3JrcyB0aGF0 IG91dCBiZWZvcmUgY2FsbGluZyB0aGUgdGFibGUgQU0sIGFuZCBwYXNzZXMgb24NCitvbmx5IHRo ZSBpbmRleGVkIGNvbHVtbnMgd2hvc2UgY2hhbmdlIG1hdHRlcnMuICBBbiBpbmRleCB0aGF0IGlz IG5vdCB5ZXQNCityZWFkeSBmb3IgaW5zZXJ0cywgb3Igd2hvc2UgYnVpbGQgZmFpbGVkLCBjb3Vu dHMgYXMgY2hhbmdlZCB3aGVuZXZlciBhDQorY29sdW1uIGl0IHJlZmVyZW5jZXMgZG9lczsgc2Vl ICJDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIiBiZWxvdy4NCiANCiBTZWNvbmQsIHdoZXJlIHRo ZSBtb2RpZmllZCBjb2x1bW5zIGFyZSBvbmx5IHVzZWQgaW4gaW5kZXhlcyB0aGF0IGRvIG5vdA0K IGNvbnRhaW4gdHVwbGUgSURzLCBidXQgbWFpbnRhaW4gc3VtbWFyaWVzIG9mIHRoZSBpbmRleGVk IGRhdGEgYnkgYmxvY2suDQpAQCAtNDc3LDkgKzQ4NSwxMCBAQCBIZWFwLW9ubHkgdHVwbGUNCiBI T1Qtc2FmZQ0KIA0KIAlBIHByb3Bvc2VkIHR1cGxlIHVwZGF0ZSBpcyBzYWlkIHRvIGJlIEhPVC1z YWZlIGlmIGl0IGNoYW5nZXMNCi0Jbm9uZSBvZiB0aGUgdHVwbGUncyBpbmRleGVkIGNvbHVtbnMu ICBJdCB3aWxsIG9ubHkgYmVjb21lIGFuDQotCWFjdHVhbCBIT1QgdXBkYXRlIGlmIHdlIGNhbiBm aW5kIHJvb20gb24gdGhlIHNhbWUgcGFnZSBmb3INCi0JdGhlIG5ldyB0dXBsZSB2ZXJzaW9uLg0K Kwlub25lIG9mIHRoZSB0dXBsZSdzIGluZGV4ZWQgY29sdW1ucywgb3RoZXIgdGhhbiBpbiB3YXlz IHRoZQ0KKwlpbmRleGVzIHRoYXQgdXNlIHRoZW0gY2Fubm90IHNlZSAoc2VlIGFib3ZlKS4gIEl0 IHdpbGwgb25seQ0KKwliZWNvbWUgYW4gYWN0dWFsIEhPVCB1cGRhdGUgaWYgd2UgY2FuIGZpbmQg cm9vbSBvbiB0aGUgc2FtZSBwYWdlDQorCWZvciB0aGUgbmV3IHR1cGxlIHZlcnNpb24uDQogDQog SE9UIHVwZGF0ZQ0KIA0KQEAgLTQ5Niw3ICs1MDUsOCBAQCBJbmRleGVkIGNvbHVtbg0KIAlBIGNv bHVtbiB1c2VkIGluIGFuIGluZGV4IGRlZmluaXRpb24uICBUaGUgY29sdW1uIG1pZ2h0IG5vdA0K IAlhY3R1YWxseSBiZSBzdG9yZWQgaW4gdGhlIGluZGV4IC0tLSBpdCBjb3VsZCBiZSB1c2VkIGlu IGENCiAJZnVuY3Rpb25hbCBpbmRleCdzIGV4cHJlc3Npb24sIG9yIHVzZWQgaW4gYSBwYXJ0aWFs IGluZGV4DQotCXByZWRpY2F0ZS4gIEhPVCB0cmVhdHMgYWxsIHRoZXNlIGNhc2VzIGFsaWtlLg0K KwlwcmVkaWNhdGUuICBBIGNoYW5nZSB0byBhIGNvbHVtbiB0aGF0IGluZGV4ZXMgdXNlIG9ubHkg aW4gdGhlc2UNCisJd2F5cyBibG9ja3MgSE9UIG9ubHkgaWYgaXQgY2hhbmdlcyB3aGF0IHRob3Nl IGluZGV4ZXMgc3RvcmUuDQogDQogUmVkaXJlY3RpbmcgbGluZSBwb2ludGVyDQogDQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYw0KaW5kZXggZDk3MWVjYWYwZDIuLmMxMzVmNDMyZDJiIDEwMDY0NA0K LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMNCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jDQpAQCAtMzMxNiw2ICszMzE2LDcgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IG5ld3R1cCwNCiAJYm9vbAkJcmVwX2lkX2tleV9yZXF1aXJlZCA9IGZhbHNlOw0KICNpZmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HDQogCUJpdG1hcHNldCAgKmNoZWNrX2F0dHJzOw0KKwlCaXRtYXBz ZXQgICpuYXJyb3dhYmxlX2F0dHJzOw0KICNlbmRpZg0KIAlUcmFuc2FjdGlvbklkIHhtYXhfbmV3 X3R1cGxlLA0KIAkJCQl4bWF4X29sZF90dXBsZTsNCkBAIC0zMzU5LDYgKzMzNjAsOCBAQCBoZWFw X3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBI ZWFwVHVwbGUgbmV3dHVwLA0KIAlpZF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOw0KICNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HDQogCWNoZWNrX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRt YXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpOw0KKwluYXJyb3dhYmxlX2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sDQorCQkJCQkJCQkJCQkJ ICBJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OKTsNCiAjZW5kaWYNCiANCiAJYmxvY2sgPSBJ dGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKG90aWQpOw0KQEAgLTM0MTcsNiArMzQyMCw3IEBAIGhl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSBuZXd0dXAsDQogCQlibXNfZnJlZShpZF9hdHRycyk7DQogI2lmZGVmIFVTRV9B U1NFUlRfQ0hFQ0tJTkcNCiAJCWJtc19mcmVlKGNoZWNrX2F0dHJzKTsNCisJCWJtc19mcmVlKG5h cnJvd2FibGVfYXR0cnMpOw0KICNlbmRpZg0KIAkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93 bmVkIGJ5IHRoZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8NCiANCkBAIC0zNzY1LDYgKzM3Njks NyBAQCBsMjoNCiAJCWJtc19mcmVlKGlkX2F0dHJzKTsNCiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVD S0lORw0KIAkJYm1zX2ZyZWUoY2hlY2tfYXR0cnMpOw0KKwkJYm1zX2ZyZWUobmFycm93YWJsZV9h dHRycyk7DQogI2VuZGlmDQogCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkgdGhl IGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLw0KIA0KQEAgLTM3OTUsMTYgKzM4MDAsMjEgQEAgbDI6 DQogCSAqIHVwZGF0ZWQsIGFuZCBubyBvbmUgZWxzZSBjYW4gaGF2ZSBjaGFuZ2VkIGl0LiAgQ2hl Y2sgdGhhdCBldmVyeQ0KIAkgKiBhdHRyaWJ1dGUgY29tcGFyaW5nIHRoZSB0d28gdHVwbGVzIGhl cmUgZmluZHMgY2hhbmdlZCBpcyBpbiB0aGUNCiAJICogY2FsbGVyJ3Mgc2V0LCBzbyB0aGF0IGEg Y2FsbGVyIHRoYXQgbWlzc2VzIGEgY2hhbmdlLCBvciBjb21wYXJlcyB0aGUNCi0JICogd3Jvbmcg dHVwbGVzLCBpcyBjYXVnaHQuICBUaGUgY2FsbGVyIG1heSByZXBvcnQgbW9yZTogY29tcGFyaW5n IHNsb3RzLA0KLQkgKiBpdCBjYW5ub3QgYWx3YXlzIHRlbGwgdGhhdCB0d28gdmFsdWVzIHdpbGwg YmUgc3RvcmVkIGFsaWtlLg0KKwkgKiB3cm9uZyB0dXBsZXMsIGlzIGNhdWdodC4gIFRoZSBjYWxs ZXIgbWF5IGxlYXZlIG91dCBhbiBhdHRyaWJ1dGUgdGhhdA0KKwkgKiBpbmRleGVzIHVzZSBvbmx5 IHRocm91Z2ggZXhwcmVzc2lvbnMgb3IgYXMgcGFydGlhbCBpbmRleGVzLCBoYXZpbmcNCisJICog Zm91bmQgdGhhdCBubyBpbmRleCdzIGVudHJ5IGNoYW5nZXMgKHNlZSBFeGVjVXBkYXRlTW9kaWZp ZWRJZHhBdHRycygpKSwNCisJICogYW5kIG1heSByZXBvcnQgbW9yZTogY29tcGFyaW5nIHNsb3Rz LCBpdCBjYW5ub3QgYWx3YXlzIHRlbGwgdGhhdCB0d28NCisJICogdmFsdWVzIHdpbGwgYmUgc3Rv cmVkIGFsaWtlLg0KIAkgKi8NCiAJew0KIAkJQml0bWFwc2V0ICAqY2hhbmdlZCA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBjaGVja19hdHRycywNCiAJCQkJCQkJCQkJCQkJ CSAmb2xkdHVwLCBuZXd0dXApOw0KIA0KKwkJY2hhbmdlZCA9IGJtc19kZWxfbWVtYmVycyhjaGFu Z2VkLCBuYXJyb3dhYmxlX2F0dHJzKTsNCiAJCUFzc2VydChibXNfaXNfc3Vic2V0KGNoYW5nZWQs IG1vZGlmaWVkX2lkeF9hdHRycykpOw0KIAkJYm1zX2ZyZWUoY2hhbmdlZCk7DQogCQlibXNfZnJl ZShjaGVja19hdHRycyk7DQorCQlibXNfZnJlZShuYXJyb3dhYmxlX2F0dHJzKTsNCiAJfQ0KICNl bmRpZg0KIA0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMNCmluZGV4IDVmYzU4MDhlMDc5Li40Mjk0Yzg2MGUx MiAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jDQorKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9yZXBhY2suYw0KQEAgLTI5MTksNyArMjkxOSw4IEBAIGFwcGx5X2Nv bmN1cnJlbnRfdXBkYXRlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNwaWxsZWRfdHVw bGUsDQogDQogCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJz KGNoZ2N4dC0+Y2NfcnJpLA0KIAkJCQkJCQkJCQkJCQlvbmRpc2tfdHVwbGUsDQotCQkJCQkJCQkJ CQkJCXNwaWxsZWRfdHVwbGUpOw0KKwkJCQkJCQkJCQkJCQlzcGlsbGVkX3R1cGxlLA0KKwkJCQkJ CQkJCQkJCQljaGdjeHQtPmNjX2VzdGF0ZSk7DQogDQogCS8qDQogCSAqIENhcnJ5IG91dCB0aGUg dXBkYXRlLCBza2lwcGluZyBsb2dpY2FsIGRlY29kaW5nIGZvciBpdC4NCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jDQppbmRleCAwZWUxYzkyMzE4Ni4uMjRjZDEyZjJhMjEgMTAw NjQ0DQotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYw0KKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMNCkBAIC0xMDI5LDcgKzEwMjks OCBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywNCiAJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlLCB0 cnVlKTsNCiANCiAJCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0 dHJzKHJlc3VsdFJlbEluZm8sDQotCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90LCBzbG90KTsNCisJ CQkJCQkJCQkJCQkJCXNlYXJjaHNsb3QsIHNsb3QsDQorCQkJCQkJCQkJCQkJCQllc3RhdGUpOw0K IA0KIAkJc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZV9leHQocmVsLCB0aWQsIHNsb3QsIGVzdGF0 ZS0+ZXNfc25hcHNob3QsDQogCQkJCQkJCQkJICBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVf aW5kZXhlcyk7DQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYw0KaW5kZXggMTEw ZjMwNjg1NTUuLmQ2NTUzYzkwMzNkIDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMNCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jDQpAQCAtNTksNiArNTksNyBAQA0KICNpbmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5o Ig0KICNpbmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5oIg0KICNpbmNsdWRlICJhY2Nlc3MveGFjdC5o Ig0KKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiDQogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdn ZXIuaCINCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIg0KICNpbmNsdWRlICJl eGVjdXRvci9leGVjdXRvci5oIg0KQEAgLTc1LDYgKzc2LDcgQEANCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCINCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCINCiAjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiDQorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIg0KICNpbmNs dWRlICJ1dGlscy9yZWwuaCINCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIg0KIA0KQEAgLTE5 NCw2ICsxOTYsMTQ4IEBAIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY01lcmdlTm90TWF0Y2hl ZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsDQogCQkJCQkJCQkJCSAgIFJlc3VsdFJlbElu Zm8gKnJlc3VsdFJlbEluZm8sDQogCQkJCQkJCQkJCSAgIGJvb2wgY2FuU2V0VGFnKTsNCiANCisv Kg0KKyAqIERvIHRoZSBvbGQgYW5kIG5ldyBpbmRleCBkYXR1bXMgZGlmZmVyLCBieXRlIGZvciBi eXRlPyAgQ29tcGFyZSBlYWNoDQorICogY29sdW1uIGFzIHRoZSB0eXBlIEZvcm1JbmRleERhdHVt KCkgcHJvZHVjZWQgaXQgaW46IHRoZSB0YWJsZSBjb2x1bW4ncw0KKyAqIHR5cGUgb3IgdGhlIGV4 cHJlc3Npb24ncywgd2hpY2ggbmVlZCBub3QgYmUgdGhlIHR5cGUgdGhlIGluZGV4IHN0b3Jlcy4N CisgKi8NCitzdGF0aWMgYm9vbA0KK0luZGV4RGF0dW1zRGlmZmVyKFJlbGF0aW9uIGhlYXBSZWws IEluZGV4SW5mbyAqaW5kZXhJbmZvLA0KKwkJCQkgIGNvbnN0IERhdHVtICpvbGRfdmFsdWVzLCBj b25zdCBib29sICpvbGRfaXNudWxsLA0KKwkJCQkgIGNvbnN0IERhdHVtICpuZXdfdmFsdWVzLCBj b25zdCBib29sICpuZXdfaXNudWxsKQ0KK3sNCisJTGlzdENlbGwgICAqZXhwciA9IGxpc3RfaGVh ZChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zKTsNCisNCisJZm9yIChpbnQgaSA9IDA7IGkgPCBp bmRleEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykNCisJew0KKwkJQXR0ck51bWJlcglhdHRu dW0gPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbaV07DQorCQlpbnQxNgkJdHlwbGVu Ow0KKwkJYm9vbAkJdHlwYnl2YWw7DQorDQorCQlpZiAoYXR0bnVtICE9IDApDQorCQl7DQorCQkJ Q29tcGFjdEF0dHJpYnV0ZSAqYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIoUmVsYXRpb25HZXRE ZXNjcihoZWFwUmVsKSwNCisJCQkJCQkJCQkJCQkJCSBhdHRudW0gLSAxKTsNCisNCisJCQl0eXBs ZW4gPSBhdHQtPmF0dGxlbjsNCisJCQl0eXBieXZhbCA9IGF0dC0+YXR0Ynl2YWw7DQorCQl9DQor CQllbHNlDQorCQl7DQorCQkJZ2V0X3R5cGxlbmJ5dmFsKGV4cHJUeXBlKGxmaXJzdChleHByKSks ICZ0eXBsZW4sICZ0eXBieXZhbCk7DQorCQkJZXhwciA9IGxuZXh0KGluZGV4SW5mby0+aWlfRXhw cmVzc2lvbnMsIGV4cHIpOw0KKwkJfQ0KKw0KKwkJaWYgKG9sZF9pc251bGxbaV0gIT0gbmV3X2lz bnVsbFtpXSkNCisJCQlyZXR1cm4gdHJ1ZTsNCisJCWlmICghb2xkX2lzbnVsbFtpXSAmJg0KKwkJ CSFkYXR1bUlzRXF1YWwob2xkX3ZhbHVlc1tpXSwgbmV3X3ZhbHVlc1tpXSwgdHlwYnl2YWwsIHR5 cGxlbikpDQorCQkJcmV0dXJuIHRydWU7DQorCX0NCisJcmV0dXJuIGZhbHNlOw0KK30NCisNCisv Kg0KKyAqIFdvdWxkIHRoZSB1cGRhdGUgZnJvbSBvbGRfdHRzIHRvIG5ld190dHMgZ2l2ZSB0aGlz IGluZGV4IGEgbmV3IGVudHJ5LCBvcg0KKyAqIHRha2Ugb25lIGF3YXk/DQorICoNCisgKiBUaGUg aW5kZXggZGF0dW1zIGFyZSBmb3JtZWQgaW4gdGhlIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCwg d2hpY2gNCisgKiBjYWxsZXJzIHJlc2V0IGZvciBlYWNoIHJvdy4gIFRoZSBwcmVkaWNhdGUncyBF eHByU3RhdGUgaXMga2VwdCBpbiB0aGUNCisgKiBJbmRleEluZm8sIGFzIEV4ZWNJbnNlcnRJbmRl eFR1cGxlcygpIGtlZXBzIGl0OyBFeGVjUHJlcGFyZVF1YWwoKSBidWlsZHMNCisgKiBpdCBpbiB0 aGUgcXVlcnkgY29udGV4dC4NCisgKi8NCitzdGF0aWMgYm9vbA0KK0luZGV4RW50cnlDaGFuZ2Vz KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIEluZGV4SW5mbyAqaW5kZXhJbmZvLA0KKwkJ CQkgIFR1cGxlVGFibGVTbG90ICpvbGRfdHRzLCBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cywNCisJ CQkJICBFU3RhdGUgKmVzdGF0ZSkNCit7DQorCUV4cHJDb250ZXh0ICplY29udGV4dCA9IEdldFBl clR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsNCisJVHVwbGVUYWJsZVNsb3QgKnNhdmVfc2NhbnR1 cGxlID0gZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlOw0KKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsN CisJRGF0dW0JCW9sZF92YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOw0KKwlib29sCQlvbGRfaXNudWxs W0lOREVYX01BWF9LRVlTXTsNCisJRGF0dW0JCW5ld192YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOw0K Kwlib29sCQluZXdfaXNudWxsW0lOREVYX01BWF9LRVlTXTsNCisJYm9vbAkJcmVzdWx0Ow0KKw0K KwlpZiAoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgIT0gTklMKQ0KKwl7DQorCQlib29sCQlvbGRf bWVtYmVyOw0KKwkJYm9vbAkJbmV3X21lbWJlcjsNCisNCisJCWlmIChpbmRleEluZm8tPmlpX1By ZWRpY2F0ZVN0YXRlID09IE5VTEwpDQorCQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9 DQorCQkJCUV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsN CisNCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG9sZF90dHM7DQorCQlvbGRfbWVtYmVy ID0gRXhlY1F1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSwgZWNvbnRleHQpOw0KKwkJ ZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gbmV3X3R0czsNCisJCW5ld19tZW1iZXIgPSBFeGVj UXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlLCBlY29udGV4dCk7DQorCQllY29udGV4 dC0+ZWN4dF9zY2FudHVwbGUgPSBzYXZlX3NjYW50dXBsZTsNCisNCisJCS8qDQorCQkgKiBBIHJv dyB0aGF0IGxlYXZlcyBvciBlbnRlcnMgdGhlIGluZGV4J3MgcHJlZGljYXRlIGNoYW5nZXMgd2hp Y2gNCisJCSAqIHJvd3MgdGhlIGluZGV4IGhvbGRzLiAgQSByb3cgb3V0c2lkZSBpdCBvbiBib3Ro IHNpZGVzIGlzIG5vbmUgb2YNCisJCSAqIHRoZSBpbmRleCdzIGJ1c2luZXNzLg0KKwkJICovDQor CQlpZiAob2xkX21lbWJlciAhPSBuZXdfbWVtYmVyKQ0KKwkJCXJldHVybiB0cnVlOw0KKwkJaWYg KCFvbGRfbWVtYmVyKQ0KKwkJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7DQorCWVj b250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG9sZF90dHM7DQorCUZvcm1JbmRleERhdHVtKGluZGV4 SW5mbywgb2xkX3R0cywgZXN0YXRlLCBvbGRfdmFsdWVzLCBvbGRfaXNudWxsKTsNCisJZWNvbnRl eHQtPmVjeHRfc2NhbnR1cGxlID0gbmV3X3R0czsNCisJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZv LCBuZXdfdHRzLCBlc3RhdGUsIG5ld192YWx1ZXMsIG5ld19pc251bGwpOw0KKwllY29udGV4dC0+ ZWN4dF9zY2FudHVwbGUgPSBzYXZlX3NjYW50dXBsZTsNCisNCisJcmVzdWx0ID0gSW5kZXhEYXR1 bXNEaWZmZXIocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLCBpbmRleEluZm8sDQorCQkJ CQkJCSAgIG9sZF92YWx1ZXMsIG9sZF9pc251bGwsIG5ld192YWx1ZXMsIG5ld19pc251bGwpOw0K KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsNCisJcmV0dXJuIHJlc3VsdDsNCit9DQor DQorLyoNCisgKiBSZXR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGkndGggaW5kZXggdGhhdCBJ TkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9ODQorICogY2FuIGNvbnRhaW46IHRob3NlIGl0IHJl ZmVyZW5jZXMgdGhyb3VnaCBpdHMgZXhwcmVzc2lvbnMsIGFuZCBmb3IgYQ0KKyAqIHBhcnRpYWwg aW5kZXggYWxsIHRob3NlIGl0IHJlZmVyZW5jZXMuICBCdWlsZHMgdGhlIHBlci1pbmRleCBjYWNo ZSBvbg0KKyAqIGZpcnN0IHVzZS4NCisgKi8NCitzdGF0aWMgQml0bWFwc2V0ICoNCitJbmRleEV4 cHJBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBpbnQgaSwgRVN0YXRlICplc3Rh dGUpDQorew0KKwlpZiAocmVzdWx0UmVsSW5mby0+cmlfSW5kZXhFeHByQXR0cnMgPT0gTlVMTCkN CisJew0KKwkJTWVtb3J5Q29udGV4dCBvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0 YXRlLT5lc19xdWVyeV9jeHQpOw0KKw0KKwkJcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhFeHByQXR0 cnMgPQ0KKwkJCXBhbGxvYzBfYXJyYXkoQml0bWFwc2V0ICosIHJlc3VsdFJlbEluZm8tPnJpX051 bUluZGljZXMpOw0KKwkJZm9yIChpbnQgaiA9IDA7IGogPCByZXN1bHRSZWxJbmZvLT5yaV9OdW1J bmRpY2VzOyBqKyspDQorCQl7DQorCQkJSW5kZXhJbmZvICAqaWkgPSByZXN1bHRSZWxJbmZvLT5y aV9JbmRleFJlbGF0aW9uSW5mb1tqXTsNCisJCQlCaXRtYXBzZXQgICphdHRycyA9IE5VTEw7DQor DQorCQkJcHVsbF92YXJhdHRub3MoKE5vZGUgKikgaWktPmlpX0V4cHJlc3Npb25zLCAxLCAmYXR0 cnMpOw0KKwkJCWlmIChpaS0+aWlfUHJlZGljYXRlICE9IE5JTCkNCisJCQl7DQorCQkJCXB1bGxf dmFyYXR0bm9zKChOb2RlICopIGlpLT5paV9QcmVkaWNhdGUsIDEsICZhdHRycyk7DQorCQkJCWZv ciAoaW50IGsgPSAwOyBrIDwgaWktPmlpX051bUluZGV4QXR0cnM7IGsrKykNCisJCQkJew0KKwkJ CQkJaWYgKGlpLT5paV9JbmRleEF0dHJOdW1iZXJzW2tdICE9IDApDQorCQkJCQkJYXR0cnMgPSBi bXNfYWRkX21lbWJlcihhdHRycywNCisJCQkJCQkJCQkJCSAgIGlpLT5paV9JbmRleEF0dHJOdW1i ZXJzW2tdIC0NCisJCQkJCQkJCQkJCSAgIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1i ZXIpOw0KKwkJCQl9DQorCQkJfQ0KKwkJCXJlc3VsdFJlbEluZm8tPnJpX0luZGV4RXhwckF0dHJz W2pdID0gYXR0cnM7DQorCQl9DQorCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsNCisJ fQ0KKwlyZXR1cm4gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhFeHByQXR0cnNbaV07DQorfQ0KKw0K IC8qDQogICogRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMNCiAgKg0KQEAgLTIxNSwxNyArMzU5 LDEzNyBAQCBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNNZXJnZU5vdE1hdGNoZWQoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LA0KICAqDQogICogc2ltcGxlX2hlYXBfdXBkYXRlKCkgYW5k IHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoKSBtYWtlIHRoZSBzYW1lDQogICogZGV0ZXJtaW5h dGlvbiB3aXRoIHRhYmxlX3Nsb3RfbW9kaWZpZWRfaWR4X2F0dHJzKCkuDQorICoNCisgKiBUaGUg c2V0IGlzIHRoZW4gbmFycm93ZWQgdG8gd2hhdCB0aGUgaW5kZXhlcyBzZWUsIHVzaW5nIGVzdGF0 ZS4gIEFuDQorICogYXR0cmlidXRlIHRoYXQgbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgcmVmZXJl bmNlIG9ubHkgdGhyb3VnaCBleHByZXNzaW9ucw0KKyAqIG9yIGFzIHBhcnRpYWwgaW5kZXhlcyAo SU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTikgaXMgZHJvcHBlZCBmcm9tIHRoZQ0KKyAqIHNl dCBpZiwgZm9yIGV2ZXJ5IHN1Y2ggaW5kZXggdGhhdCByZWZlcmVuY2VzIGl0LCB0aGUgdXBkYXRl IG1vdmVzIHRoZSByb3cNCisgKiBuZWl0aGVyIGludG8gbm9yIG91dCBvZiB0aGUgaW5kZXgncyBw cmVkaWNhdGUgYW5kLCBpZiB0aGUgcm93IGlzIGluIGl0LA0KKyAqIGNoYW5nZXMgbm9uZSBvZiB0 aGUgaW5kZXgncyBkYXR1bXMuICBUaGUgdGFibGUgQU0gY2FuIHRoZW4gdHJlYXQgdGhlDQorICog dXBkYXRlIGFzIGlmIGl0IGhhZCBub3QgY2hhbmdlZCB0aGUgYXR0cmlidXRlOiBubyBpbmRleCBu ZWVkcyBhIG5ldw0KKyAqIGVudHJ5IGJlY2F1c2Ugb2YgaXQuDQorICoNCisgKiBBbiBpbmRleCB0 aGF0IGlzIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyBvciBub3QgdmFsaWQgY291bnRzIGFzIGFmZmVj dGVkIGJ5DQorICogYW55IGNoYW5nZSB0byBhbiBhdHRyaWJ1dGUgaXQgcmVmZXJlbmNlcywgd2l0 aG91dCBldmFsdWF0aW5nIGFueXRoaW5nLg0KKyAqIFN1Y2ggYW4gaW5kZXggaXMgYmVpbmcgYnVp bHQsIG9yIGl0cyBidWlsZCBmYWlsZWQsIHNvIHRoZSBvbGQgcm93IG1heSBiZQ0KKyAqIG9uZSBp dHMgZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlIGNhbm5vdCBiZSBldmFsdWF0ZWQgZm9yOyBldmFs dWF0aW5nIHRoZW0NCisgKiB3b3VsZCBtYWtlIHRoZSBVUERBVEUgZmFpbC4gIEl0IHN0aWxsIGNv bnN0cmFpbnMgSE9ULCBhcyBSRUFETUUuSE9UDQorICogcmVxdWlyZXMuDQorICoNCisgKiBOYXJy b3dpbmcgbmV2ZXIgcmVtb3ZlcyBhbiBhdHRyaWJ1dGUgb2YgYSBrZXkgb3IgcmVwbGljYSBpZGVu dGl0eSBpbmRleCwNCisgKiBhcyB0aG9zZSBoYXZlIG5laXRoZXIgZXhwcmVzc2lvbnMgbm9yIHBy ZWRpY2F0ZXMsIHNvIHRoZSB0YWJsZSBBTSBtYXkNCisgKiBhbHNvIHRha2UgaXRzIGxvY2sgbW9k ZSBhbmQgcmVwbGljYSBpZGVudGl0eSBkZWNpc2lvbnMgZnJvbSB0aGUgcmVzdWx0Lg0KICAqLw0K IEJpdG1hcHNldCAqDQogRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywNCiAJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywNCi0JCQkJ CQkgICBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cykNCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAq bmV3X3R0cywNCisJCQkJCQkgICBFU3RhdGUgKmVzdGF0ZSkNCiB7DQorCVJlbGF0aW9uCXJlbGF0 aW9uID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOw0KKwlCaXRtYXBzZXQgICphdHRy czsNCisJQml0bWFwc2V0ICAqZXhwcmF0dHJzOw0KKwlCaXRtYXBzZXQgICpjYW5kaWRhdGVzOw0K Kw0KIAlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA9PSAwKQ0KIAkJcmV0dXJuIE5V TEw7DQogDQotCXJldHVybiB0YWJsZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycyhyZXN1bHRSZWxJ bmZvLT5yaV9SZWxhdGlvbkRlc2MsDQotCQkJCQkJCQkJCSBvbGRfdHRzLCBuZXdfdHRzKTsNCisJ YXR0cnMgPSB0YWJsZV9zbG90X21vZGlmaWVkX2lkeF9hdHRycyhyZWxhdGlvbiwgb2xkX3R0cywg bmV3X3R0cyk7DQorDQorCWlmIChibXNfaXNfZW1wdHkoYXR0cnMpKQ0KKwkJcmV0dXJuIGF0dHJz Ow0KKw0KKwkvKg0KKwkgKiBOYXJyb3dpbmcgY2FuIG9ubHkgbWFrZSB0aGUgdXBkYXRlIEhPVCBp ZiBldmVyeSBjaGFuZ2VkIGF0dHJpYnV0ZSBpcw0KKwkgKiBlaXRoZXIgYSBjYW5kaWRhdGUgb3Ig cmVmZXJlbmNlZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuIE90aGVyd2lzZQ0KKwkgKiBz b21lIGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5IGFueXdheSwgYW5kIGV2YWx1YXRpbmcgZXhwcmVz c2lvbnMgd291bGQNCisJICogYmUgd2FzdGVkIHdvcmsuDQorCSAqLw0KKwlleHByYXR0cnMgPSBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwNCisJCQkJCQkJCQkJICAgSU5ERVhf QVRUUl9CSVRNQVBfRVhQUkVTU0lPTik7DQorCWNhbmRpZGF0ZXMgPSBibXNfaW50ZXJzZWN0KGF0 dHJzLCBleHByYXR0cnMpOw0KKwlpZiAoYm1zX2lzX2VtcHR5KGNhbmRpZGF0ZXMpKQ0KKwl7DQor CQlibXNfZnJlZShleHByYXR0cnMpOw0KKwkJcmV0dXJuIGF0dHJzOw0KKwl9DQorCXsNCisJCUJp dG1hcHNldCAgKnJlc3QgPSBibXNfZGlmZmVyZW5jZShhdHRycywgZXhwcmF0dHJzKTsNCisJCUJp dG1hcHNldCAgKmhvdGF0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24s DQorCQkJCQkJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORyk7DQorCQli b29sCQlob3BlbGVzcyA9IGJtc19vdmVybGFwKHJlc3QsIGhvdGF0dHJzKTsNCisNCisJCWJtc19m cmVlKHJlc3QpOw0KKwkJYm1zX2ZyZWUoaG90YXR0cnMpOw0KKwkJYm1zX2ZyZWUoZXhwcmF0dHJz KTsNCisJCWlmIChob3BlbGVzcykNCisJCXsNCisJCQlibXNfZnJlZShjYW5kaWRhdGVzKTsNCisJ CQlyZXR1cm4gYXR0cnM7DQorCQl9DQorCX0NCisNCisJLyoNCisJICogS2VlcCBlYWNoIGNhbmRp ZGF0ZSB0aGF0IHNvbWUgaW5kZXggc2VlcyBjaGFuZ2UuICBBbiBpbmRleCB3aG9zZQ0KKwkgKiBj YW5kaWRhdGVzIGFyZSBhbGwga2VwdCBhbHJlYWR5IG5lZWQgbm90IGJlIGFza2VkLg0KKwkgKi8N CisJew0KKwkJQml0bWFwc2V0ICAqa2VlcCA9IE5VTEw7DQorDQorCQlmb3IgKGludCBpID0gMDsg aSA8IHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXM7IGkrKykNCisJCXsNCisJCQlJbmRleElu Zm8gICppbmRleEluZm8gPSByZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mb1tpXTsN CisJCQlCaXRtYXBzZXQgICptaW5lOw0KKw0KKwkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9JbmRl eFJlbGF0aW9uRGVzY3NbaV0gPT0gTlVMTCB8fA0KKwkJCQlpbmRleEluZm8tPmlpX1N1bW1hcml6 aW5nKQ0KKwkJCQljb250aW51ZTsNCisNCisJCQltaW5lID0gYm1zX2ludGVyc2VjdChJbmRleEV4 cHJBdHRycyhyZXN1bHRSZWxJbmZvLCBpLCBlc3RhdGUpLA0KKwkJCQkJCQkJIGNhbmRpZGF0ZXMp Ow0KKwkJCWlmIChibXNfaXNfZW1wdHkobWluZSkgfHwgYm1zX2lzX3N1YnNldChtaW5lLCBrZWVw KSkNCisJCQl7DQorCQkJCWJtc19mcmVlKG1pbmUpOw0KKwkJCQljb250aW51ZTsNCisJCQl9DQor DQorCQkJaWYgKCFpbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0cyB8fA0KKwkJCQkhcmVzdWx0 UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldLT5yZF9pbmRleC0+aW5kaXN2YWxpZCB8 fA0KKwkJCQlJbmRleEVudHJ5Q2hhbmdlcyhyZXN1bHRSZWxJbmZvLCBpbmRleEluZm8sDQorCQkJ CQkJCQkgIG9sZF90dHMsIG5ld190dHMsIGVzdGF0ZSkpDQorCQkJew0KKwkJCQlrZWVwID0gYm1z X2FkZF9tZW1iZXJzKGtlZXAsIG1pbmUpOw0KKwkJCQlpZiAoYm1zX2lzX3N1YnNldChjYW5kaWRh dGVzLCBrZWVwKSkNCisJCQkJew0KKwkJCQkJYm1zX2ZyZWUobWluZSk7DQorCQkJCQlicmVhazsN CisJCQkJfQ0KKwkJCX0NCisJCQlibXNfZnJlZShtaW5lKTsNCisJCX0NCisNCisJCWNhbmRpZGF0 ZXMgPSBibXNfZGVsX21lbWJlcnMoY2FuZGlkYXRlcywga2VlcCk7DQorCQlibXNfZnJlZShrZWVw KTsNCisJfQ0KKw0KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HDQorCXsNCisJCUJpdG1hcHNl dCAgKmtleWF0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sDQorCQkJ CQkJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0tFWSk7DQorCQlCaXRtYXBzZXQgICppZGF0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sDQorCQkJCQkJCQkJCQkJ CQkgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsNCisNCisJCUFzc2VydCghYm1zX292 ZXJsYXAoY2FuZGlkYXRlcywga2V5YXR0cnMpKTsNCisJCUFzc2VydCghYm1zX292ZXJsYXAoY2Fu ZGlkYXRlcywgaWRhdHRycykpOw0KKwkJYm1zX2ZyZWUoa2V5YXR0cnMpOw0KKwkJYm1zX2ZyZWUo aWRhdHRycyk7DQorCX0NCisjZW5kaWYNCisNCisJYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoYXR0 cnMsIGNhbmRpZGF0ZXMpOw0KKwlibXNfZnJlZShjYW5kaWRhdGVzKTsNCisNCisJcmV0dXJuIGF0 dHJzOw0KIH0NCiANCiAvKg0KQEAgLTIzNjQsNyArMjYyOCw4IEBAIGxyZXBsYWNlOg0KIAlpZiAo cmVzdWx0UmVsYXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0cikNCiAJCUV4ZWNDb25zdHJhaW50cyhy ZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUpOw0KIA0KLQltb2RpZmllZF9pZHhfYXR0cnMgPSBF eGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsN CisJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVzdWx0 UmVsSW5mbywgb2xkU2xvdCwgc2xvdCwNCisJCQkJCQkJCQkJCQkJZXN0YXRlKTsNCiANCiAJLyoN CiAJICogQ2FsbCBpbnRvIHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuDQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMNCmluZGV4IDdkYjhiYzM3ZGZlLi43YjJjNzQ5N2U1 ZiAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMNCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMNCkBAIC0yNDc5LDYgKzI0NzksNyBA QCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCByZW1lbWJl cl90dXBkZXNjKQ0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsNCiAJ Ym1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsNCiAJYm1zX2ZyZWUocmVsYXRp b24tPnJkX2luZGV4ZWRhdHRyKTsNCisJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2V4cHJhdHRyKTsN CiAJaWYgKHJlbGF0aW9uLT5yZF9wdWJkZXNjKQ0KIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRl c2MpOw0KIAlpZiAocmVsYXRpb24tPnJkX29wdGlvbnMpDQpAQCAtNTMyOCw2ICs1MzI5LDkgQEAg UmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikNCiAgKglJTkRFWF9B VFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJQ29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBi ZWluZyBIT1QNCiAgKglJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVECUNvbHVtbnMgaW5jbHVk ZWQgaW4gc3VtbWFyaXppbmcgaW5kZXhlcw0KICAqCUlOREVYX0FUVFJfQklUTUFQX0lOREVYRUQJ CUNvbHVtbnMgcmVmZXJlbmNlZCBieSBhbnkgaW5kZXgNCisgKglJTkRFWF9BVFRSX0JJVE1BUF9F WFBSRVNTSU9OCUNvbHVtbnMgdGhhdCBub24tc3VtbWFyaXppbmcgaW5kZXhlcw0KKyAqCQkJCQkJ CQkJcmVmZXJlbmNlIG9ubHkgdGhyb3VnaCBleHByZXNzaW9ucyBvcg0KKyAqCQkJCQkJCQkJYXMg cGFydGlhbCBpbmRleGVzDQogICoNCiAgKiBBdHRyaWJ1dGUgbnVtYmVycyBhcmUgb2Zmc2V0IGJ5 IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgc28gdGhhdA0KICAqIHdlIGNhbiBp bmNsdWRlIHN5c3RlbSBhdHRyaWJ1dGVzIChlLmcuLCBPSUQpIGluIHRoZSBiaXRtYXAgcmVwcmVz ZW50YXRpb24uDQpAQCAtNTM1Myw2ICs1MzU3LDEwIEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAlC aXRtYXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJsb2NraW5n IGluZGV4ZXMgKi8NCiAJQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIHdp dGggc3VtbWFyaXppbmcgaW5kZXhlcyAqLw0KIAlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CS8q IGNvbHVtbnMgcmVmZXJlbmNlZCBieSBhbnkgaW5kZXggKi8NCisJQml0bWFwc2V0ICAqZXhwcmF0 dHJzOwkJLyogY29sdW1ucyBvZiBleHByZXNzaW9uIG9yIHBhcnRpYWwNCisJCQkJCQkJCSAqIG5v bi1zdW1tYXJpemluZyBpbmRleGVzICovDQorCUJpdG1hcHNldCAgKnBsYWluYXR0cnM7CQkvKiBj b2x1bW5zIG9mIG90aGVyIG5vbi1zdW1tYXJpemluZyBpbmRleGVzLA0KKwkJCQkJCQkJICogYW5k IHBsYWluIGNvbHVtbnMgb2YgZXhwcmVzc2lvbiBpbmRleGVzICovDQogCUxpc3QJICAgKmluZGV4 b2lkbGlzdDsNCiAJTGlzdAkgICAqbmV3aW5kZXhvaWRsaXN0Ow0KIAlPaWQJCQlyZWxwa2luZGV4 Ow0KQEAgLTUzNzcsNiArNTM4NSw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0 aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQ0KIAkJCQlyZXR1cm4g Ym1zX2NvcHkocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsNCiAJCQljYXNlIElOREVYX0FU VFJfQklUTUFQX0lOREVYRUQ6DQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5k ZXhlZGF0dHIpOw0KKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoNCisJCQkJ cmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9leHByYXR0cik7DQogCQkJZGVmYXVsdDoNCiAJ CQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7DQogCQl9DQpA QCAtNTQyMSw2ICs1NDMxLDggQEAgcmVzdGFydDoNCiAJaWRpbmRleGF0dHJzID0gTlVMTDsNCiAJ aG90YmxvY2tpbmdhdHRycyA9IE5VTEw7DQogCXN1bW1hcml6ZWRhdHRycyA9IE5VTEw7DQorCWV4 cHJhdHRycyA9IE5VTEw7DQorCXBsYWluYXR0cnMgPSBOVUxMOw0KIAlmb3JlYWNoKGwsIGluZGV4 b2lkbGlzdCkNCiAJew0KIAkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGwpOw0KQEAgLTU1 MDQsNiArNTUxNiwxNSBAQCByZXN0YXJ0Og0KIAkJCXsNCiAJCQkJKmF0dHJzID0gYm1zX2FkZF9t ZW1iZXIoKmF0dHJzLA0KIAkJCQkJCQkJCQlhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlcik7DQorCQkJCWlmIChhdHRycyA9PSAmaG90YmxvY2tpbmdhdHRycykNCisJ CQkJew0KKwkJCQkJaWYgKGluZGV4UHJlZGljYXRlICE9IE5VTEwpDQorCQkJCQkJZXhwcmF0dHJz ID0gYm1zX2FkZF9tZW1iZXIoZXhwcmF0dHJzLA0KKwkJCQkJCQkJCQkJCSAgIGF0dHJudW0gLSBG aXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsNCisJCQkJCWVsc2UNCisJCQkJCQlw bGFpbmF0dHJzID0gYm1zX2FkZF9tZW1iZXIocGxhaW5hdHRycywNCisJCQkJCQkJCQkJCQkJYXR0 cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOw0KKwkJCQl9DQogDQog CQkJCWlmIChpc0tleSAmJiBpIDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpDQog CQkJCQl1aW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKHVpbmRleGF0dHJzLA0KQEAgLTU1MjUs NiArNTU0NiwxMiBAQCByZXN0YXJ0Og0KIAkJLyogQ29sbGVjdCBhbGwgYXR0cmlidXRlcyBpbiB0 aGUgaW5kZXggcHJlZGljYXRlLCB0b28gKi8NCiAJCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGlj YXRlLCAxLCBhdHRycyk7DQogDQorCQlpZiAoYXR0cnMgPT0gJmhvdGJsb2NraW5nYXR0cnMpDQor CQl7DQorCQkJcHVsbF92YXJhdHRub3MoaW5kZXhFeHByZXNzaW9ucywgMSwgJmV4cHJhdHRycyk7 DQorCQkJcHVsbF92YXJhdHRub3MoaW5kZXhQcmVkaWNhdGUsIDEsICZleHByYXR0cnMpOw0KKwkJ fQ0KKw0KIAkJaW5kZXhfY2xvc2UoaW5kZXhEZXNjLCBBY2Nlc3NTaGFyZUxvY2spOw0KIAl9DQog DQpAQCAtNTU1MywxMiArNTU4MCwyNiBAQCByZXN0YXJ0Og0KIAkJYm1zX2ZyZWUoaWRpbmRleGF0 dHJzKTsNCiAJCWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMpOw0KIAkJYm1zX2ZyZWUoc3VtbWFy aXplZGF0dHJzKTsNCisJCWJtc19mcmVlKGV4cHJhdHRycyk7DQorCQlibXNfZnJlZShwbGFpbmF0 dHJzKTsNCiANCiAJCWdvdG8gcmVzdGFydDsNCiAJfQ0KIA0KIAlpbmRleGVkYXR0cnMgPSBibXNf dW5pb24oaG90YmxvY2tpbmdhdHRycywgc3VtbWFyaXplZGF0dHJzKTsNCiANCisJLyoNCisJICog UmVjb3JkIHdoYXQgYXR0cmlidXRlcyBub24tc3VtbWFyaXppbmcgaW5kZXhlcyByZWZlcmVuY2Ug b25seSB0aHJvdWdoDQorCSAqIGV4cHJlc3Npb25zLCBvciBvbmx5IGFzIHBhcnRpYWwgaW5kZXhl cy4gIEEgY2hhbmdlIHRvIG9uZSBvZiB0aGVzZQ0KKwkgKiBuZWVkcyBuZXcgaW5kZXggZW50cmll cyBvbmx5IGlmIGl0IGNoYW5nZXMgdGhlIHZhbHVlIG9mIGFuIGluZGV4J3MNCisJICogZXhwcmVz c2lvbnMgb3IgYSByb3cncyBtZW1iZXJzaGlwIGluLCBvciBrZXkgd2l0aGluLCBhIHBhcnRpYWwg aW5kZXguDQorCSAqIEFuIGF0dHJpYnV0ZSBhIHN1bW1hcml6aW5nIGluZGV4IHJlZmVyZW5jZXMg aXMgbGVmdCBvdXQsIGFzIHRoYXQgaW5kZXgNCisJICogbmVlZHMgdG8gc2VlIGFueSBjaGFuZ2Ug dG8gaXQuDQorCSAqLw0KKwlleHByYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoZXhwcmF0dHJzLCBw bGFpbmF0dHJzKTsNCisJZXhwcmF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKGV4cHJhdHRycywgc3Vt bWFyaXplZGF0dHJzKTsNCisJYm1zX2ZyZWUocGxhaW5hdHRycyk7DQorDQogCS8qIERvbid0IGxl YWsgdGhlIG9sZCB2YWx1ZXMgb2YgdGhlc2UgYml0bWFwcywgaWYgYW55ICovDQogCXJlbGF0aW9u LT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7DQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9rZXlhdHRy KTsNCkBAIC01NTczLDYgKzU2MTQsOCBAQCByZXN0YXJ0Og0KIAlyZWxhdGlvbi0+cmRfc3VtbWFy aXplZGF0dHIgPSBOVUxMOw0KIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOw0K IAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOw0KKwlibXNfZnJlZShyZWxhdGlvbi0+ cmRfZXhwcmF0dHIpOw0KKwlyZWxhdGlvbi0+cmRfZXhwcmF0dHIgPSBOVUxMOw0KIA0KIAkvKg0K IAkgKiBOb3cgc2F2ZSBjb3BpZXMgb2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5 LiAgV2UgaW50ZW50aW9uYWxseQ0KQEAgLTU1ODgsNiArNTYzMSw3IEBAIHJlc3RhcnQ6DQogCXJl bGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9ja2luZ2F0dHJzKTsN CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gYm1zX2NvcHkoc3VtbWFyaXplZGF0dHJz KTsNCiAJcmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyID0gYm1zX2NvcHkoaW5kZXhlZGF0dHJzKTsN CisJcmVsYXRpb24tPnJkX2V4cHJhdHRyID0gYm1zX2NvcHkoZXhwcmF0dHJzKTsNCiAJcmVsYXRp b24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOw0KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsNCiANCkBAIC01NjA2LDYgKzU2NTAsOCBAQCByZXN0YXJ0Og0KIAkJCXJldHVybiBzdW1tYXJp emVkYXR0cnM7DQogCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6DQogCQkJcmV0dXJu IGluZGV4ZWRhdHRyczsNCisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoNCisJ CQlyZXR1cm4gZXhwcmF0dHJzOw0KIAkJZGVmYXVsdDoNCiAJCQllbG9nKEVSUk9SLCAidW5rbm93 biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsNCiAJCQlyZXR1cm4gTlVMTDsNCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaA0KaW5kZXggNWNiZGIwOTI1NjQuLmM4MmRlZjg3ZjJhIDEwMDY0NA0KLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaA0KKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY3V0b3IuaA0KQEAgLTgxOSw2ICs4MTksNyBAQCBleHRlcm4gUmVzdWx0UmVsSW5mbyAq RXhlY0xvb2t1cFJlc3VsdFJlbEJ5T2lkKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUsDQogCQkJCQkJ CQkJCQkgICBib29sIHVwZGF0ZV9jYWNoZSk7DQogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY1VwZGF0 ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywNCiAJCQkJCQkJCQkJCSBU dXBsZVRhYmxlU2xvdCAqb2xkX3R0cywNCi0JCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqbmV3 X3R0cyk7DQorCQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMsDQorCQkJCQkJCQkJ CQkgRVN0YXRlICplc3RhdGUpOw0KIA0KICNlbmRpZgkJCQkJCQkvKiBFWEVDVVRPUl9IICAqLw0K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgNCmluZGV4IGZlODY4MWJhNjQyLi5lNjQ2YTg1NjIwZiAxMDA2NDQN Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oDQorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaA0KQEAgLTUwMiw2ICs1MDIsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVz dWx0UmVsSW5mbw0KIAkvKiBhcnJheSBvZiBrZXkvYXR0ciBpbmZvIGZvciBpbmRpY2VzICovDQog CUluZGV4SW5mbyAqKnJpX0luZGV4UmVsYXRpb25JbmZvOw0KIA0KKwkvKg0KKwkgKiBGb3IgVVBE QVRFLCB0aGUgdGFibGUgYXR0cmlidXRlcyBlYWNoIGluZGV4IHJlZmVyZW5jZXMgdGhyb3VnaA0K KwkgKiBleHByZXNzaW9ucyBvciBpdHMgcHJlZGljYXRlLCBvZmZzZXQgYnkNCisJICogRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlci4gIEJ1aWx0IG9uIGZpcnN0IHVzZTsgTlVMTCB1 bnRpbA0KKwkgKiB0aGVuLg0KKwkgKi8NCisJQml0bWFwc2V0ICoqcmlfSW5kZXhFeHByQXR0cnM7 DQorDQogCS8qDQogCSAqIEZvciBVUERBVEUvREVMRVRFL01FUkdFIHJlc3VsdCByZWxhdGlvbnMs IHRoZSBhdHRyaWJ1dGUgbnVtYmVyIG9mIHRoZQ0KIAkgKiByb3cgaWRlbnRpdHkganVuayBhdHRy aWJ1dGUgaW4gdGhlIHNvdXJjZSBwbGFuJ3Mgb3V0cHV0IHR1cGxlcw0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgNCmluZGV4IDU1 YjQ1OWFkYmE4Li5mZGQyYTFlMzIxMyAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jl bC5oDQorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaA0KQEAgLTE2NSw2ICsxNjUsOCBAQCB0 eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGENCiAJQml0bWFwc2V0ICAqcmRfaG90YmxvY2tpbmdh dHRyOyAvKiBjb2xzIGJsb2NraW5nIEhPVCB1cGRhdGUgKi8NCiAJQml0bWFwc2V0ICAqcmRfc3Vt bWFyaXplZGF0dHI7CS8qIGNvbHMgaW5kZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovDQog CUJpdG1hcHNldCAgKnJkX2luZGV4ZWRhdHRyOyAvKiBjb2xzIHJlZmVyZW5jZWQgYnkgYW55IGlu ZGV4ICovDQorCUJpdG1hcHNldCAgKnJkX2V4cHJhdHRyOwkvKiBjb2xzIG5vbi1zdW1tYXJpemlu ZyBpbmRleGVzIHJlZmVyZW5jZSBvbmx5DQorCQkJCQkJCQkgKiB2aWEgZXhwcmVzc2lvbnMgb3Ig YXMgcGFydGlhbCBpbmRleGVzICovDQogDQogCVB1YmxpY2F0aW9uRGVzYyAqcmRfcHViZGVzYzsJ LyogcHVibGljYXRpb24gZGVzY3JpcHRvciwgb3IgTlVMTCAqLw0KIA0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5o DQppbmRleCA0MTc5OTBlODAyMi4uOTU1ZDAxODZjMmQgMTAwNjQ0DQotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9yZWxjYWNoZS5oDQorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oDQpA QCAtNzMsNiArNzMsNyBAQCB0eXBlZGVmIGVudW0gSW5kZXhBdHRyQml0bWFwS2luZA0KIAlJTkRF WF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcsDQogCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUkla RUQsDQogCUlOREVYX0FUVFJfQklUTUFQX0lOREVYRUQsDQorCUlOREVYX0FUVFJfQklUTUFQX0VY UFJFU1NJT04sDQogfSBJbmRleEF0dHJCaXRtYXBLaW5kOw0KIA0KIGV4dGVybiBCaXRtYXBzZXQg KlJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLA0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9jaWMtZXhwcmVzc2lvbi1ob3Qub3V0IGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2NpYy1leHByZXNzaW9uLWhvdC5vdXQNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uNDEyOGY0MGMxNDENCi0tLSAvZGV2 L251bGwNCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9jaWMtZXhwcmVzc2lvbi1o b3Qub3V0DQpAQCAtMCwwICsxLDQzIEBADQorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lv bnMNCisNCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfbG9jayBzMl9jaWNfcyBzMV91cGRfcyBz MV91bmxvY2sgczFfdXBkMiBzMV9jaGVjaw0KK3N0ZXAgczFfbG9jazogU0VMRUNUIHBnX2Fkdmlz b3J5X2xvY2soNDI0Mik7DQorcGdfYWR2aXNvcnlfbG9jaw0KKy0tLS0tLS0tLS0tLS0tLS0NCisg ICAgICAgICAgICAgICAgDQorKDEgcm93KQ0KKw0KK3N0ZXAgczJfY2ljX3M6IENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX2V4cHJfaWR4IE9OIGNpY19leHByIChjaWNfbG93ZXIocykpOyA8 d2FpdGluZyAuLi4+DQorc3RlcCBzMV91cGRfczogVVBEQVRFIGNpY19leHByIFNFVCBzID0gdXBw ZXIocyk7DQorc3RlcCBzMV91bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDI0Mik7 DQorcGdfYWR2aXNvcnlfdW5sb2NrDQorLS0tLS0tLS0tLS0tLS0tLS0tDQordCAgICAgICAgICAg ICAgICAgDQorKDEgcm93KQ0KKw0KK3N0ZXAgczJfY2ljX3M6IDwuLi4gY29tcGxldGVkPg0KK3N0 ZXAgczFfdXBkMjogVVBEQVRFIGNpY19leHByIFNFVCBzID0gbG93ZXIocykgfHwgJyc7DQorc3Rl cCBzMV9jaGVjazogDQorCVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsNCisJU0VUIGVuYWJsZV9i aXRtYXBzY2FuID0gb2ZmOw0KKwlTRUxFQ1QgY291bnQoKikgRlJPTSBjaWNfZXhwciBXSEVSRSBj aWNfbG93ZXIocykgTElLRSAnYWJjJSc7DQorCVNFTEVDVCBjb3VudCgqKSBGUk9NIGNpY19leHBy IFdIRVJFIGNpY19sb3dlcihzKSA9ICdhYmM0Mic7DQorCVJFU0VUIGVuYWJsZV9zZXFzY2FuOw0K KwlSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsNCisJU0VMRUNUIGluZGlzdmFsaWQgRlJPTSBwZ19p bmRleCBXSEVSRSBpbmRleHJlbGlkID0gJ2NpY19leHByX2lkeCc6OnJlZ2NsYXNzOw0KKw0KK2Nv dW50DQorLS0tLS0NCisgIDEwMA0KKygxIHJvdykNCisNCitjb3VudA0KKy0tLS0tDQorICAgIDEN CisoMSByb3cpDQorDQoraW5kaXN2YWxpZA0KKy0tLS0tLS0tLS0NCit0ICAgICAgICAgDQorKDEg cm93KQ0KKw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1 bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlDQppbmRleCBkN2RhODk5 YWE4NS4uMmU5OWNhMDQzMDUgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9uX3NjaGVkdWxlDQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxl DQpAQCAtOTUsNiArOTUsNyBAQCB0ZXN0OiBza2lwLWxvY2tlZC0zDQogdGVzdDogc2tpcC1sb2Nr ZWQtNA0KIHRlc3Q6IGRyb3AtaW5kZXgtY29uY3VycmVudGx5LTENCiB0ZXN0OiBtdWx0aXBsZS1j aWMNCit0ZXN0OiBjaWMtZXhwcmVzc2lvbi1ob3QNCiB0ZXN0OiBhbHRlci1kb21haW4tdmFsaWRh dGUNCiB0ZXN0OiBhbHRlci10YWJsZS0xDQogdGVzdDogYWx0ZXItdGFibGUtMg0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9jaWMtZXhwcmVzc2lvbi1ob3Quc3BlYyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9jaWMtZXhwcmVzc2lvbi1ob3Quc3BlYw0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi5hZDFiNjEyYmUwMQ0KLS0tIC9kZXYvbnVs bA0KKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2NpYy1leHByZXNzaW9uLWhvdC5zcGVj DQpAQCAtMCwwICsxLDQzIEBADQorIyBVUERBVEVzIGR1cmluZyBDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIG9mIGFuIGV4cHJlc3Npb24gaW5kZXguDQorIw0KKyMgVGhlIGJ1aWxkIHdhaXRzIGZv ciBhbiBhZHZpc29yeSBsb2NrIHRoYXQgczEgaG9sZHMsIGluc2lkZSB0aGUgaW5kZXgNCisjIGV4 cHJlc3Npb24sIHNvIHMxJ3MgVVBEQVRFIHJ1bnMgd2hpbGUgdGhlIGluZGV4IGlzIG5vdCB5ZXQg cmVhZHkgZm9yDQorIyBpbnNlcnRzLiAgVGhlIHVwZGF0ZSBsZWF2ZXMgdGhlIGV4cHJlc3Npb24n cyB2YWx1ZSBhbG9uZTsgdGhlIGZpbmlzaGVkDQorIyBpbmRleCBtdXN0IGZpbmQgZXZlcnkgcm93 IHVuZGVyIGl0cyBjdXJyZW50IGtleS4NCisNCitzZXR1cA0KK3sNCisJQ1JFQVRFIFRBQkxFIGNp Y19leHByIChpZCBpbnQgUFJJTUFSWSBLRVksIHMgdGV4dCwgeCBpbnQpDQorCQlXSVRIIChmaWxs ZmFjdG9yID0gNTApOw0KKwlJTlNFUlQgSU5UTyBjaWNfZXhwciBTRUxFQ1QgZywgJ2FiYycgfHwg ZywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIGc7DQorCUNSRUFURSBGVU5DVElPTiBj aWNfbG93ZXIodGV4dCkgUkVUVVJOUyB0ZXh0IElNTVVUQUJMRSBMQU5HVUFHRSBwbHBnc3FsIEFT ICQkDQorCQlCRUdJTiBQRVJGT1JNIHBnX2Fkdmlzb3J5X2xvY2tfc2hhcmVkKDQyNDIpOyBQRVJG T1JNIHBnX2Fkdmlzb3J5X3VubG9ja19zaGFyZWQoNDI0Mik7IFJFVFVSTiBsb3dlcigkMSk7IEVO RDsNCisJJCQ7DQorfQ0KKw0KK3RlYXJkb3duDQorew0KKwlEUk9QIFRBQkxFIGNpY19leHByOw0K KwlEUk9QIEZVTkNUSU9OIGNpY19sb3dlcih0ZXh0KTsNCit9DQorDQorc2Vzc2lvbiBzMQ0KK3N0 ZXAgczFfbG9jawl7IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDQyNDIpOyB9DQorc3RlcCBzMV91 cGRfcwl7IFVQREFURSBjaWNfZXhwciBTRVQgcyA9IHVwcGVyKHMpOyB9DQorc3RlcCBzMV91bmxv Y2sJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyNDIpOyB9DQorc3RlcCBzMV91cGQyCXsg VVBEQVRFIGNpY19leHByIFNFVCBzID0gbG93ZXIocykgfHwgJyc7IH0NCitzdGVwIHMxX2NoZWNr DQorew0KKwlTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7DQorCVNFVCBlbmFibGVfYml0bWFwc2Nh biA9IG9mZjsNCisJU0VMRUNUIGNvdW50KCopIEZST00gY2ljX2V4cHIgV0hFUkUgY2ljX2xvd2Vy KHMpIExJS0UgJ2FiYyUnOw0KKwlTRUxFQ1QgY291bnQoKikgRlJPTSBjaWNfZXhwciBXSEVSRSBj aWNfbG93ZXIocykgPSAnYWJjNDInOw0KKwlSRVNFVCBlbmFibGVfc2Vxc2NhbjsNCisJUkVTRVQg ZW5hYmxlX2JpdG1hcHNjYW47DQorCVNFTEVDVCBpbmRpc3ZhbGlkIEZST00gcGdfaW5kZXggV0hF UkUgaW5kZXhyZWxpZCA9ICdjaWNfZXhwcl9pZHgnOjpyZWdjbGFzczsNCit9DQorDQorc2Vzc2lv biBzMg0KK3N0ZXAgczJfY2ljX3MJeyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19leHBy X2lkeCBPTiBjaWNfZXhwciAoY2ljX2xvd2VyKHMpKTsgfQ0KKw0KK3Blcm11dGF0aW9uIHMxX2xv Y2sgczJfY2ljX3MgczFfdXBkX3MgczFfdW5sb2NrIHMxX3VwZDIgczFfY2hlY2sNCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0DQppbmRleCBmODNhNjg2ZjNhOS4uMjc2 YTg0NWEzZTkgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRh dGVzLm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQN CkBAIC0zMjEsNyArMzIxLDcgQEAgU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOw0K IFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsNCiAgdXBkYXRl cyB8IGhvdCANCiAtLS0tLS0tLS0rLS0tLS0NCi0gICAgICAgMSB8ICAgMA0KKyAgICAgICAxIHwg ICAxDQogKDEgcm93KQ0KIA0KIFVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEg LSAnY2l0eScgV0hFUkUgaWQgPSAyOw0KQEAgLTMzNCw3ICszMzQsNyBAQCBTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7DQogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOw0KICB1cGRhdGVzIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAg ICAyIHwgICAwDQorICAgICAgIDIgfCAgIDINCiAoMSByb3cpDQogDQogVVBEQVRFIGhvdF9qc29u Yl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSIn KSBXSEVSRSBpZCA9IDI7DQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIFNFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsNCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90 ZXN0Jyk7DQogIHVwZGF0ZXMgfCBob3QgDQogLS0tLS0tLS0tKy0tLS0tDQotICAgICAgIDMgfCAg IDANCisgICAgICAgMyB8ICAgMw0KICgxIHJvdykNCiANCiBEUk9QIFRBQkxFIGhvdF9qc29uYl90 ZXN0Ow0KQEAgLTM3OSw3ICszNzksNyBAQCBTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KIE5P VElDRTogIHRhYmxlICJob3RfZXhwcl90ZXN0IiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcNCiAg dXBkYXRlZCB8IGhvdCANCiAtLS0tLS0tLS0rLS0tLS0NCi0gICAgICAxMCB8ICAgMA0KKyAgICAg IDEwIHwgIDEwDQogKDEgcm93KQ0KIA0KIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQpAQCAt Mzg5LDcgKzM4OSw3IEBAIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQogICAkJFVQREFURSBo b3RfZXhwcl90ZXN0IFNFVCBhID0gYSAtIDEsIGIgPSBiICsgMSQkKTsNCiAgdXBkYXRlZCB8IGhv dCANCiAtLS0tLS0tLS0rLS0tLS0NCi0gICAgICAxMCB8ICAgMA0KKyAgICAgIDEwIHwgIDEwDQog KDEgcm93KQ0KIA0KIC0tIEV4cHJlc3Npb24gdmFsdWUgY2hhbmdlZC4NCkBAIC00MjQsNyArNDI0 LDcgQEAgU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCiAgICQkVVBEQVRFIGhvdF9leHByX3Rl c3QgU0VUIHMgPSB1cHBlcihzKSQkKTsNCiAgdXBkYXRlZCB8IGhvdCANCiAtLS0tLS0tLS0rLS0t LS0NCi0gICAgICAxMCB8ICAgMA0KKyAgICAgIDEwIHwgIDEwDQogKDEgcm93KQ0KIA0KIFNFTEVD VCAqIEZST00gdXBkYXRlX2Nhc2UoDQpAQCAtNDM0LDcgKzQzNCw3IEBAIFNFTEVDVCAqIEZST00g dXBkYXRlX2Nhc2UoDQogICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBwID0gcG9pbnQocFsw XSwgcFsxXSArIDEpJCQpOw0KICB1cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAg ICAgIDEwIHwgICAwDQorICAgICAgMTAgfCAgMTANCiAoMSByb3cpDQogDQogLS0gQW4gZXhwcmVz c2lvbiB0aGF0IGlzIGEgcG9pbnQsIHN0b3JlZCBieSB0aGUgZ2lzdCBpbmRleCBhcyBhIGJveC4N CkBAIC00NDcsNyArNDQ3LDcgQEAgU0VMRUNUICogRlJPTSB1cGRhdGVfY2FzZSgNCiAgICQkVVBE QVRFIGhvdF9leHByX3Rlc3QgU0VUIGQgPSBkICsgNyQkKTsNCiAgdXBkYXRlZCB8IGhvdCANCiAt LS0tLS0tLS0rLS0tLS0NCi0gICAgICAxMCB8ICAgMA0KKyAgICAgIDEwIHwgIDEwDQogKDEgcm93 KQ0KIA0KIC0tIEEgcGxhaW4gaW5kZXggb24gdGhlIHNhbWUgY29sdW1uIGFzIGFuIGV4cHJlc3Np b24gaW5kZXguDQpAQCAtNDcyLDcgKzQ3Miw3IEBAIFNFTEVDVCAqIEZST00gdXBkYXRlX2Nhc2Uo DQogICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBzID0gdXBwZXIocyksIGIgPSBiICsgMSQk KTsNCiAgdXBkYXRlZCB8IGhvdCANCiAtLS0tLS0tLS0rLS0tLS0NCi0gICAgICAxMCB8ICAgMA0K KyAgICAgIDEwIHwgIDEwDQogKDEgcm93KQ0KIA0KIC0tIEEgQkVGT1JFIFJPVyB0cmlnZ2VyIHRo YXQgY2hhbmdlcyB0aGUgZXhwcmVzc2lvbidzIHZhbHVlLg0KQEAgLTUwMSw3ICs1MDEsNyBAQCBT RUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KICAgJCRVUERBVEUgaG90X2V4cHJfdGVzdCBTRVQg diA9IHYgKyAxJCQpOw0KICB1cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAg IDEwIHwgICAwDQorICAgICAgMTAgfCAgMTANCiAoMSByb3cpDQogDQogU0VMRUNUICogRlJPTSB1 cGRhdGVfY2FzZSgNCkBAIC01MTEsNyArNTExLDcgQEAgU0VMRUNUICogRlJPTSB1cGRhdGVfY2Fz ZSgNCiAgICQkVVBEQVRFIGhvdF9leHByX3Rlc3QgU0VUIHN0YXR1cyA9ICdhcmNoaXZlZCckJCk7 DQogIHVwZGF0ZWQgfCBob3QgDQogLS0tLS0tLS0tKy0tLS0tDQotICAgICAgMTAgfCAgIDANCisg ICAgICAxMCB8ICAxMA0KICgxIHJvdykNCiANCiAtLSBCb3RoIHZlcnNpb25zIGluc2lkZSB0aGUg cHJlZGljYXRlIHdpdGggdGhlIGtleSB1bmNoYW5nZWQuDQpAQCAtNTIyLDcgKzUyMiw3IEBAIFNF TEVDVCAqIEZST00gdXBkYXRlX2Nhc2UoDQogICAkJFVQREFURSBob3RfZXhwcl90ZXN0IFNFVCBz dGF0dXMgPSAnYickJCk7DQogIHVwZGF0ZWQgfCBob3QgDQogLS0tLS0tLS0tKy0tLS0tDQotICAg ICAgMTAgfCAgIDANCisgICAgICAxMCB8ICAxMA0KICgxIHJvdykNCiANCiAtLSBFbnRlcmluZyBv ciBsZWF2aW5nIHRoZSBwcmVkaWNhdGUsIG9yIGNoYW5naW5nIHRoZSBrZXkgaW5zaWRlIGl0Lg0K QEAgLTU2NSw3ICs1NjUsNyBAQCBTRUxFQ1QgKiBGUk9NIHVwZGF0ZV9jYXNlKA0KICAgJCRVUERB VEUgaG90X2V4cHJfdGVzdCBTRVQgdiA9IHYgKyAxMDAgV0hFUkUgc3RhdHVzID0gJ2RvbmUnJCQp Ow0KICB1cGRhdGVkIHwgaG90IA0KIC0tLS0tLS0tLSstLS0tLQ0KLSAgICAgICA1IHwgICAwDQor ICAgICAgIDUgfCAgIDUNCiAoMSByb3cpDQogDQogU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOw0K LS0gDQoyLjUwLjENCg0K --b1=_uGp1tKeY3HUluAeVLqpLnkVwjiw4ZvesQh9m6D8F2VA--