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.94.2) (envelope-from ) id 1rkHY4-00Bgaf-Uo for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Mar 2024 05:53:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rkHY2-00BkHR-Da for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Mar 2024 05:53:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkHY1-00BkHI-Pw for pgsql-hackers@lists.postgresql.org; Wed, 13 Mar 2024 05:53:06 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkHXw-004FFV-Ir for pgsql-hackers@postgresql.org; Wed, 13 Mar 2024 05:53:05 +0000 Received: from [172.30.8.38] (unknown [172.30.8.38]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id B9296E20E3A; Wed, 13 Mar 2024 08:52:53 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1710309178; bh=B5OarBlgqnMNP43GyLrts65nYHvhZOqMZG3pb1Lw43w=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=5kDHBaYrpbThPbYf15geDkSxnQ8NdOkG0qk7wgxJ9gL35ZT97W3025s602/v5sHEx CNNzMmjYZGHtLx6KLpA1C4H3cyZDVLMe09cx/tly/+TJmZ8eXPqr/yEJwqT3/1yieU Zr3Lcvv1PGcbRF3042KlMxAYj2uqBdXyoOpDZBAAwhSF3BcGCm9DfxQFy5nYXRN2ML lJCE2INPLHM1Y04qclsdfSZj/iQtyvFwQH0b1w98EuNC24K4afrvwrHF/cnKF/Y5UL GM8uKBB3YGW7bCjyWE0Dv1LG7TMhrAi8UYLYK9Ye9bSkNeDMtEsSd9tZUU9Sbd+s/w UjuU+shClrfjw== Content-Type: multipart/mixed; boundary="------------0L03VTRPYN4hb3ZsetsoeCkJ" Message-ID: Date: Wed, 13 Mar 2024 12:52:50 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US To: Alexander Korotkov Cc: jian he , Alena Rybakina , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <11ee9c04-281f-43c8-a0ff-d481c1e01c09@postgrespro.ru> <54009ba5-4aea-4344-a30d-e3558a59e2a9@postgrespro.ru> <380e5683-cdfd-4220-ab9b-7cccb9d3e480@postgrespro.ru> <7389d0dd-05d5-41b7-a12d-2e73f939f851@postgrespro.ru> <74e3c8bc-dccd-45e5-ad2d-6a6e96fc5864@postgrespro.ru> From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------0L03VTRPYN4hb3ZsetsoeCkJ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 12/3/2024 22:20, Alexander Korotkov wrote: > On Mon, Mar 11, 2024 at 2:43 PM Andrei Lepikhov >> I think you are right. It is probably a better place than any other to >> remove duplicates in an array. I just think we should sort and remove >> duplicates from entry->consts in one pass. Thus, this optimisation >> should be applied to sortable constants. > > Ok. New version of the patch set implemented all we have agreed on for now. We can return MAX_SAOP_ARRAY_SIZE constraint and Alena's approach to duplicates deletion for non-sortable cases at the end. > >> Hmm, we already tried to do it at that point. I vaguely recall some >> issues caused by this approach. Anyway, it should be done as quickly as >> possible to increase the effect of the optimization. > > I think there were provided quite strong reasons why this shouldn't be > implemented at the parse analysis stage [1], [2], [3]. The > canonicalize_qual() looks quite appropriate place for that since it > does similar transformations. Ok. Let's discuss these reasons. In Robert's opinion [1,3], we should do the transformation based on the cost model. But in the canonicalize_qual routine, we still make the transformation blindly. Moreover, the second patch reduces the weight of this reason, doesn't it? Maybe we shouldn't think about that as about optimisation but some 'general form of expression'? Peter [2] worries about the possible transformation outcomes at this stage. But remember, we already transform clauses like ROW() IN (...) to a series of ORs here, so it is not an issue. Am I wrong? Why did we discard the attempt with canonicalize_qual on the previous iteration? - The stage of parsing is much more native for building SAOP quals. We can reuse make_scalar_array_op and other stuff, for example. During the optimisation stage, the only list partitioning machinery creates SAOP based on a list of constants. So, in theory, it is possible to implement. But do we really need to make the code more complex? > > Links. > 1. https://www.postgresql.org/message-id/CA%2BTgmoZCgP6FrBQEusn4yaWm02XU8OPeoEMk91q7PRBgwaAkFw%40mail.gmail.com > 2. https://www.postgresql.org/message-id/CAH2-Wzm2%3Dnf_JhiM3A2yetxRs8Nd2NuN3JqH%3Dfm_YWYd1oYoPg%40mail.gmail.com > 3. https://www.postgresql.org/message-id/CA%2BTgmoaOiwMXBBTYknczepoZzKTp-Zgk5ss1%2BCuVQE-eFTqBmA%40mail.gmail.com -- regards, Andrei Lepikhov Postgres Professional --------------0L03VTRPYN4hb3ZsetsoeCkJ Content-Type: text/plain; charset=UTF-8; name="v22-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Disposition: attachment; filename="v22-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Transfer-Encoding: base64 RnJvbSA4NmQ5NjlmMjU5OGEwM2IxZWJhODRjMGMwNjQ3MDdkZTM0ZWU2MGFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogRnJpLCAyIEZlYiAyMDI0IDIyOjAxOjA5ICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUiBjbGF1c2VzIHRvIEFOWSBleHByZXNzaW9u LgoKUmVwbGFjZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4cHIg b3AgQU5ZKEFSUkFZW0MxLCBDMiwgLi4uXSkgb24gdGhlCnByZWxpbWluYXJ5IHN0YWdlIG9m IG9wdGltaXphdGlvbiB3aGVuIHdlIGFyZSBzdGlsbCB3b3JraW5nIHdpdGggdGhlCmV4cHJl c3Npb24gdHJlZS4KSGVyZSBDPFg+IGlzIGEgY29uc3RhbnQgZXhwcmVzc2lvbiwgJ2V4cHIn IGlzIG5vbi1jb25zdGFudCBleHByZXNzaW9uLCAnb3AnIGlzCmFuIG9wZXJhdG9yIHdoaWNo IHJldHVybnMgYm9vbGVhbiByZXN1bHQgYW5kIGhhcyBhIGNvbW11dGVyIChmb3IgdGhlIGNh c2Ugb2YKcmV2ZXJzZSBvcmRlciBvZiBjb25zdGFudCBhbmQgbm9uLWNvbnN0YW50IHBhcnRz IG9mIHRoZSBleHByZXNzaW9uLApsaWtlICdDWCBvcCBleHByJykuClNvbWV0aW1lcyBpdCBj YW4gbGVhZCB0byBub3Qgb3B0aW1hbCBwbGFuLiBCdXQgd2UgdGhpbmsgaXQgaXMgYmV0dGVy IHRvIGhhdmUKYXJyYXkgb2YgZWxlbWVudHMgaW5zdGVhZCBvZiBhIGxvdCBvZiBPUiBjbGF1 c2VzLiBIZXJlIGlzIGEgcm9vbSBmb3IgZnVydGhlcgpvcHRpbWl6YXRpb25zIG9uIGRlY29t cG9zaW5nIHRoYXQgYXJyYXkgaW50byBtb3JlIG9wdGltYWwgcGFydHMuCkF1dGhvcnM6IEFs ZW5hIFJ5YmFraW5hIDxsZW5hLnJpYmFja2luYUB5YW5kZXgucnU+LCBBbmRyZXkgTGVwaWto b3YgPGEubGVwaWtob3ZAcG9zdGdyZXNwcm8ucnU+ClJldmlld2VkLWJ5OiBQZXRlciBHZW9n aGVnYW4gPHBnQGJvd3QuaWU+LCBSYW5pZXIgVmlsZWxhIDxyYW5pZXIudmZAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNv bT4sIFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBq aWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+Ci0tLQogLi4uL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICA4ICstCiBkb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2JhY2tl bmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jICAgICAgICAgIHwgIDI3ICsrCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCA0MTYgKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgMTEgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAg ICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgICAgfCAxNTYgKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2lu Lm91dCAgICAgICAgICAgIHwgIDYyICsrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fcHJ1bmUub3V0IHwgMjE1ICsrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdGF0c19leHQub3V0ICAgICAgIHwgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N5c3ZpZXdzLm91dCAgICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgICAgICAgICB8ICAyMyArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgICAgIHwgIDM1ICsrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9qb2luLnNxbCAgICAgICAgICAgICAgICAgfCAgMTAgKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAgIHwgIDIyICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMjAgZmls ZXMgY2hhbmdlZCwgOTc0IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4 IDU4YTYwM2FjNTYuLmE5NjViNDNjYzYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtODgzOCwxOCArODgzOCwxOCBAQCBp bnNlcnQgaW50byB1dHJ0ZXN0IHZhbHVlcyAoMiwgJ3F1eCcpOwogLS0gQ2hlY2sgY2FzZSB3 aGVyZSB0aGUgZm9yZWlnbiBwYXJ0aXRpb24gaXMgYSBzdWJwbGFuIHRhcmdldCByZWwKIGV4 cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKIHVwZGF0ZSB1dHJ0ZXN0IHNldCBhID0gMSB3 aGVyZSBhID0gMSBvciBhID0gMiByZXR1cm5pbmcgKjsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFVwZGF0ZSBvbiBwdWJsaWMudXRydGVz dAogICAgT3V0cHV0OiB1dHJ0ZXN0XzEuYSwgdXRydGVzdF8xLmIKICAgIEZvcmVpZ24gVXBk YXRlIG9uIHB1YmxpYy5yZW1wIHV0cnRlc3RfMQogICAgVXBkYXRlIG9uIHB1YmxpYy5sb2Nw IHV0cnRlc3RfMgogICAgLT4gIEFwcGVuZAogICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRl IG9uIHB1YmxpYy5yZW1wIHV0cnRlc3RfMQotICAgICAgICAgICAgICAgUmVtb3RlIFNRTDog VVBEQVRFIHB1YmxpYy5sb2N0IFNFVCBhID0gMSBXSEVSRSAoKChhID0gMSkgT1IgKGEgPSAy KSkpIFJFVFVSTklORyBhLCBiCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUg cHVibGljLmxvY3QgU0VUIGEgPSAxIFdIRVJFICgoYSA9IEFOWSAoJ3sxLDJ9Jzo6aW50ZWdl cltdKSkpIFJFVFVSTklORyBhLCBiCiAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmxvY3AgdXRydGVzdF8yCiAgICAgICAgICAgICAgICBPdXRwdXQ6IDEsIHV0cnRlc3RfMi50 YWJsZW9pZCwgdXRydGVzdF8yLmN0aWQsIE5VTEw6OnJlY29yZAotICAgICAgICAgICAgICAg RmlsdGVyOiAoKHV0cnRlc3RfMi5hID0gMSkgT1IgKHV0cnRlc3RfMi5hID0gMikpCisgICAg ICAgICAgICAgICBGaWx0ZXI6ICh1dHJ0ZXN0XzIuYSA9IEFOWSAoJ3sxLDJ9Jzo6aW50ZWdl cltdKSkKICgxMCByb3dzKQogCiAtLSBUaGUgbmV3IHZhbHVlcyBhcmUgY29uY2F0ZW5hdGVk IHdpdGggJyB0cmlnZ2VyZWQgIScKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCA2NWE2ZTZjNDA4Li4yZGU2 YWUzMDFhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC01NDcyLDYgKzU0NzIsMjMgQEAgQU5ZIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJl cGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGUtb3ItdHJhbnNmb3Jt YXRpb24iIHhyZWZsYWJlbD0iZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uIj4KKyAgICAgIDx0 ZXJtPjx2YXJuYW1lPmVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjwvdmFybmFtZT4gKDx0eXBl PmJvb2xlYW48L3R5cGU+KQorICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPmVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjwvdmFybmFtZT4gY29uZmlndXJh dGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJs ZXMgb3IgZGlzYWJsZXMgdGhlIHF1ZXJ5IHBsYW5uZXIncyBhYmlsaXR5IHRvIGxvb2t1cCBh bmQgZ3JvdXAgbXVsdGlwbGUKKyAgICAgICAgc2ltaWxhciBPUiBleHByZXNzaW9ucyB0byBB TlkgKDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1jb21wYXJpc29ucy1hbnktc29tZSIvPikg ZXhwcmVzc2lvbnMuCisgICAgICAgIFRoZSBncm91cGluZyB0ZWNobmlxdWUgb2YgdGhpcyB0 cmFuc2Zvcm1hdGlvbiBpcyBiYXNlZCBvbiB0aGUgZXF1aXZhbGVuY2Ugb2YgdmFyaWFibGUg c2lkZXMuCisgICAgICAgIE9uZSBzaWRlIG9mIHN1Y2ggYW4gZXhwcmVzc2lvbiBtdXN0IGJl IGEgY29uc3RhbnQgY2xhdXNlLCBhbmQgdGhlIG90aGVyIG11c3QgY29udGFpbiBhIHZhcmlh YmxlIGNsYXVzZS4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b248L2xpdGVy YWw+LgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLXBhcmFsbGVs LWFwcGVuZCIgeHJlZmxhYmVsPSJlbmFibGVfcGFyYWxsZWxfYXBwZW5kIj4KICAgICAgIDx0 ZXJtPjx2YXJuYW1lPmVuYWJsZV9wYXJhbGxlbF9hcHBlbmQ8L3Zhcm5hbWU+ICg8dHlwZT5i b29sZWFuPC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9xdWVy eWp1bWJsZWZ1bmNzLmMKaW5kZXggMmMxMTZjODcyOC4uMGM1YjRhMDExYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYwpAQCAtMTQxLDYgKzE0MSwzMyBAQCBKdW1i bGVRdWVyeShRdWVyeSAqcXVlcnkpCiAJcmV0dXJuIGpzdGF0ZTsKIH0KIAorSnVtYmxlU3Rh dGUgKgorSnVtYmxlRXhwcihFeHByICpleHByLCB1aW50NjQgKnF1ZXJ5SWQpCit7CisJSnVt YmxlU3RhdGUgKmpzdGF0ZSA9IE5VTEw7CisKKwlBc3NlcnQocXVlcnlJZCAhPSBOVUxMKTsK KworCWpzdGF0ZSA9IChKdW1ibGVTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEp1bWJsZVN0YXRl KSk7CisKKwkvKiBTZXQgdXAgd29ya3NwYWNlIGZvciBxdWVyeSBqdW1ibGluZyAqLworCWpz dGF0ZS0+anVtYmxlID0gKHVuc2lnbmVkIGNoYXIgKikgcGFsbG9jKEpVTUJMRV9TSVpFKTsK Kwlqc3RhdGUtPmp1bWJsZV9sZW4gPSAwOworCWpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6 ZSA9IDMyOworCWpzdGF0ZS0+Y2xvY2F0aW9ucyA9IChMb2NhdGlvbkxlbiAqKQorCQlwYWxs b2MoanN0YXRlLT5jbG9jYXRpb25zX2J1Zl9zaXplICogc2l6ZW9mKExvY2F0aW9uTGVuKSk7 CisJanN0YXRlLT5jbG9jYXRpb25zX2NvdW50ID0gMDsKKwlqc3RhdGUtPmhpZ2hlc3RfZXh0 ZXJuX3BhcmFtX2lkID0gMDsKKworCS8qIENvbXB1dGUgcXVlcnkgSUQgKi8KKwlfanVtYmxl Tm9kZShqc3RhdGUsIChOb2RlICopIGV4cHIpOworCSpxdWVyeUlkID0gRGF0dW1HZXRVSW50 NjQoaGFzaF9hbnlfZXh0ZW5kZWQoanN0YXRlLT5qdW1ibGUsCisJCQkJCQkJCQkJCQlqc3Rh dGUtPmp1bWJsZV9sZW4sCisJCQkJCQkJCQkJCQkwKSk7CisKKwlyZXR1cm4ganN0YXRlOwor fQorCiAvKgogICogRW5hYmxlcyBxdWVyeSBpZGVudGlmaWVyIGNvbXB1dGF0aW9uLgogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWIuLjg0MDM4YWI2OGYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMTYsMTIgKzE2LDE1IEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2RiY29tbWFuZHMuaCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvcXVlcnlqdW1ibGUu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicGFyc2Vy L2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfYWdnLmgiCkBAIC0zOCwxMSAr NDEsMTMgQEAKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1n cm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGls cy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUg InV0aWxzL3htbC5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogYm9vbAkJVHJhbnNmb3Jt X251bGxfZXF1YWxzID0gZmFsc2U7Citib29sCQllbmFibGVfb3JfdHJhbnNmb3JtYXRpb24g PSB0cnVlOwogCiAKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpOwpAQCAtOTksNiArMTA0LDQxMiBAQCBzdGF0aWMg RXhwciAqbWFrZV9kaXN0aW5jdF9vcChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wbmFt ZSwKIHN0YXRpYyBOb2RlICptYWtlX251bGx0ZXN0X2Zyb21fZGlzdGluY3QoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkJCQkJCQkJCSBBX0V4cHIgKmRpc3RpbmN0YSwgTm9kZSAqYXJnKTsK IAordHlwZWRlZiBzdHJ1Y3QgT3JDbGF1c2VHcm91cEtleQoreworCU5vZGVUYWcJdHlwZTsK KworCUV4cHIgICAqZXhwcjsgLyogUG9pbnRlciB0byB0aGUgZXhwcmVzc2lvbiB0cmVlIHdo aWNoIGhhcyBiZWVuIGEgc291cmNlIGZvcgorCQkJCQl0aGUgaGFzaGtleSB2YWx1ZSAqLwor CU9pZAkJb3BubzsKKwlPaWQJCWV4cHJ0eXBlOworfSBPckNsYXVzZUdyb3VwS2V5OworCit0 eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3VwRW50cnkKK3sKKwlPckNsYXVzZUdyb3VwS2V5 CWtleTsKKworCUxpc3QJCQkgICAqY29uc3RzOworCUxpc3QgCQkJICAgKmV4cHJzOworCUZ1 bmN0aW9uQ2FsbEluZm8JZmNpbmZvOworfSBPckNsYXVzZUdyb3VwRW50cnk7CisKKy8qCisg KiBIYXNoIGZ1bmN0aW9uIHRvIGZpbmQgY2FuZGlkYXRlIGNsYXVzZXMuCisgKi8KK3N0YXRp YyB1aW50MzIKK29yY2xhdXNlX2hhc2goY29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBrZXlzaXpl KQoreworCU9yQ2xhdXNlR3JvdXBLZXkgICAqa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikg ZGF0YTsKKwl1aW50NjQJCQkJZXhwckhhc2g7CisKKwlBc3NlcnQoa2V5c2l6ZSA9PSBzaXpl b2YoT3JDbGF1c2VHcm91cEtleSkpOworCUFzc2VydChJc0EoZGF0YSwgSW52YWxpZCkpOwor CisJKHZvaWQpIEp1bWJsZUV4cHIoa2V5LT5leHByLCAmZXhwckhhc2gpOworCisJcmV0dXJu IGhhc2hfY29tYmluZSgodWludDMyKSBleHBySGFzaCwKKwkJCQkJCWhhc2hfY29tYmluZSgo dWludDMyKSBrZXktPm9wbm8sCisJCQkJCQkJCQkgKHVpbnQzMikga2V5LT5leHBydHlwZSkp OworfQorCitzdGF0aWMgdm9pZCAqCitvcmNsYXVzZV9rZXljb3B5KHZvaWQgKmRlc3QsIGNv bnN0IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKQoreworCU9yQ2xhdXNlR3JvdXBLZXkgKnNy Y19rZXkgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBzcmM7CisJT3JDbGF1c2VHcm91cEtleSAq ZHN0X2tleSA9IChPckNsYXVzZUdyb3VwS2V5ICopIGRlc3Q7CisKKwlBc3NlcnQoc2l6ZW9m KE9yQ2xhdXNlR3JvdXBLZXkpID09IGtleXNpemUpOworCUFzc2VydChJc0Eoc3JjLCBJbnZh bGlkKSk7CisKKwlkc3Rfa2V5LT50eXBlID0gVF9JbnZhbGlkOworCWRzdF9rZXktPmV4cHIg PSBzcmNfa2V5LT5leHByOworCWRzdF9rZXktPm9wbm8gPSBzcmNfa2V5LT5vcG5vOworCWRz dF9rZXktPmV4cHJ0eXBlID0gc3JjX2tleS0+ZXhwcnR5cGU7CisJcmV0dXJuIGRzdF9rZXk7 Cit9CisKKy8qCisgKiBEeW5haGFzaCBtYXRjaCBmdW5jdGlvbiB0byB1c2UgaW4gb3JfZ3Jv dXBfaHRhYgorICovCitzdGF0aWMgaW50CitvcmNsYXVzZV9tYXRjaChjb25zdCB2b2lkICpk YXRhMSwgY29uc3Qgdm9pZCAqZGF0YTIsIFNpemUga2V5c2l6ZSkKK3sKKwlPckNsYXVzZUdy b3VwS2V5ICAgKmtleTEgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMTsKKwlPckNsYXVz ZUdyb3VwS2V5ICAgKmtleTIgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMjsKKworCUFz c2VydChzaXplb2YoT3JDbGF1c2VHcm91cEtleSkgPT0ga2V5c2l6ZSk7CisJQXNzZXJ0KElz QShrZXkxLCBJbnZhbGlkKSk7CisJQXNzZXJ0KElzQShrZXkyLCBJbnZhbGlkKSk7CisKKwlp ZiAoa2V5MS0+b3BubyA9PSBrZXkyLT5vcG5vICYmCisJCWtleTEtPmV4cHJ0eXBlID09IGtl eTItPmV4cHJ0eXBlICYmCisJCWVxdWFsKGtleTEtPmV4cHIsIGtleTItPmV4cHIpKQorCQly ZXR1cm4gMDsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgRnVuY3Rpb25DYWxsSW5mbyBs b2NmY2luZm8gPSBOVUxMOworCitzdGF0aWMgaW50CitzYW9wX2NvbnN0X2NvbXBhcmF0b3Io Y29uc3QgTGlzdENlbGwgKmEsIGNvbnN0IExpc3RDZWxsICpiKQoreworCU5vZGUgICAqbGVm dG9wID0gKE5vZGUgKikgbGZpcnN0KGEpOworCU5vZGUgICAqcmlnaHRvcCA9IChOb2RlICop IGxmaXJzdChiKTsKKworCWlmIChJc0EobGVmdG9wLCBSZWxhYmVsVHlwZSkpCisJCWxlZnRv cCA9IChOb2RlICopICgoUmVsYWJlbFR5cGUgKikgbGVmdG9wKS0+YXJnOworCisJaWYgKElz QShyaWdodG9wLCBSZWxhYmVsVHlwZSkpCisJCXJpZ2h0b3AgPSAoTm9kZSAqKSAoKFJlbGFi ZWxUeXBlICopIHJpZ2h0b3ApLT5hcmc7CisKKwlBc3NlcnQoSXNBKGxlZnRvcCwgQ29uc3Qp ICYmIElzQShyaWdodG9wLCBDb25zdCkpOworCisJbG9jZmNpbmZvLT5hcmdzWzBdLnZhbHVl ID0gKChDb25zdCAqKSBsZWZ0b3ApLT5jb25zdHZhbHVlOworCWxvY2ZjaW5mby0+YXJnc1sw XS5pc251bGwgPSBmYWxzZTsKKwlsb2NmY2luZm8tPmFyZ3NbMV0udmFsdWUgPSAoKENvbnN0 ICopIHJpZ2h0b3ApLT5jb25zdHZhbHVlOworCWxvY2ZjaW5mby0+YXJnc1sxXS5pc251bGwg PSBmYWxzZTsKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihGdW5jdGlvbkNhbGxJbnZva2UobG9j ZmNpbmZvKSk7Cit9CisKK3N0YXRpYyBMaXN0ICoKK3Nhb3BfZGVsZXRlX2R1cGxpY2F0ZXMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBPckNsYXVzZUdyb3VwRW50cnkgKmVudHJ5LAorCQkJCQkg ICBPaWQgc2NhbGFyX3R5cGUpCit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqcmVz dWx0OworCisJbG9jZmNpbmZvID0gZW50cnktPmZjaW5mbzsKKwlsaXN0X3NvcnQoZW50cnkt PmNvbnN0cywgc2FvcF9jb25zdF9jb21wYXJhdG9yKTsKKworCXJlc3VsdCA9IGxpc3RfbWFr ZTEobGluaXRpYWwoZW50cnktPmNvbnN0cykpOworCWZvcl9lYWNoX2Zyb20obGMsIGVudHJ5 LT5jb25zdHMsIDEpCisJeworCQlOb2RlICpub2RlID0gKE5vZGUgKikgbGZpcnN0KGxjKTsK KworCQlpZiAoZXF1YWwobGxhc3QocmVzdWx0KSwgbm9kZSkpCisJCQljb250aW51ZTsKKwor CQlub2RlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgbm9kZSwgc2NhbGFyX3R5 cGUsICJJTiIpOworCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgbm9kZSk7CisJfQorCisJ cmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFRyYW5zZm9ybU9yRXhwclRvQU5ZIC0KKyAq CSAgRGlzY292ZXIgdGhlIGFyZ3Mgb2YgYW4gT1IgZXhwcmVzc2lvbiBhbmQgdHJ5IHRvIGdy b3VwIHNpbWlsYXIgT1IKKyAqCSAgZXhwcmVzc2lvbnMgdG8gYW4gQU5ZIG9wZXJhdGlvbi4K KyAqCSAgVHJhbnNmb3JtYXRpb24gbXVzdCBiZSBhbHJlYWR5IGRvbmUgb24gaW5wdXQgYXJn cyBsaXN0IGJlZm9yZSB0aGUgY2FsbC4KKyAqCSAgVHJhbnNmb3JtYXRpb24gZ3JvdXBzIHR3 by1zaWRlZCBlcXVhbGl0eSBvcGVyYXRpb25zLiBPbmUgc2lkZSBvZiBzdWNoIGFuCisgKgkg IG9wZXJhdGlvbiBtdXN0IGJlIHBsYWluIGNvbnN0YW50IG9yIGNvbnN0YW50IGV4cHJlc3Np b24uIFRoZSBvdGhlciBzaWRlIG9mCisgKgkgIHRoZSBjbGF1c2UgbXVzdCBiZSBhIHZhcmlh YmxlIGV4cHJlc3Npb24gd2l0aG91dCB2b2xhdGlsZSBmdW5jdGlvbnMuCisgKgkgIFRoZSBn cm91cGluZyB0ZWNobmlxdWUgaXMgYmFzZWQgb24gYW4gZXF1aXZhbGVuY2Ugb2YgdmFyaWFi bGUgc2lkZXMgb2YgdGhlCisgKgkgIGV4cHJlc3Npb246IHVzaW5nIHF1ZXJ5SWQgYW5kIGVx dWFsKCkgcm91dGluZSwgaXQgZ3JvdXBzIGNvbnN0YW50IHNpZGVzIG9mCisgKgkgIHNpbWls YXIgY2xhdXNlcyBpbnRvIGFuIGFycmF5LiBBZnRlciB0aGUgZ3JvdXBpbmcgcHJvY2VkdXJl LCBlYWNoIGNvdXBsZQorICoJICAoJ3ZhcmlhYmxlIGV4cHJlc3Npb24nIGFuZCAnY29uc3Rh bnQgYXJyYXknKSBmb3JtIGEgbmV3IFNBT1Agb3BlcmF0aW9uLAorICoJICB3aGljaCBpcyBh ZGRlZCB0byB0aGUgYXJncyBsaXN0IG9mIHRoZSByZXR1cm5pbmcgZXhwcmVzc2lvbi4KKyAq CisgKgkgIE5PVEU6IGZ1bmN0aW9uIHJldHVybnMgT1IgQm9vbEV4cHIgaWYgbW9yZSB0aGFu IG9uZSBjbGF1c2UgYXJlIGRldGVjdGVkIGluCisgKgkgIHRoZSBmaW5hbCBhcmdzIGxpc3Qs IG9yIFNjYWxhckFycmF5T3BFeHByIGlmIGFsbCBhcmdzIHdlcmUgZ3JvdXBlZCBpbnRvCisg KgkgIHRoZSBzaW5nbGUgU0FPUCBleHByZXNzaW9uLgorICovCitzdGF0aWMgTm9kZSAqCitU cmFuc2Zvcm1PckV4cHJUb0FOWShQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmFyZ3MsIGlu dCBsb2NhdGlvbikKK3sKKwlMaXN0CQkJCSAgICpvcl9saXN0ID0gTklMOworCUxpc3QJCQkJ ICAgKmVudHJpZXMgPSBOSUw7CisJTGlzdENlbGwJCQkgICAqbGM7CisJSEFTSENUTAkJCQkJ aW5mbzsKKwlIVEFCIAkJCQkgICAqb3JfZ3JvdXBfaHRhYiA9IE5VTEw7CisJaW50IAkJCQkJ bGVuX29ycyA9IGxpc3RfbGVuZ3RoKGFyZ3MpOworCU9yQ2xhdXNlR3JvdXBFbnRyeQkgICAq ZW50cnkgPSBOVUxMOworCisJQXNzZXJ0KGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiAmJiBs ZW5fb3JzID4gMSk7CisKKwlNZW1TZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CisJaW5m by5rZXlzaXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBLZXkpOworCWluZm8uZW50cnlzaXpl ID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBFbnRyeSk7CisJaW5mby5oYXNoID0gb3JjbGF1c2Vf aGFzaDsKKwlpbmZvLmtleWNvcHkgPSBvcmNsYXVzZV9rZXljb3B5OworCWluZm8ubWF0Y2gg PSBvcmNsYXVzZV9tYXRjaDsKKwlvcl9ncm91cF9odGFiID0gaGFzaF9jcmVhdGUoIk9SIEdy b3VwcyIsCisJCQkJCQkJCWxlbl9vcnMsCisJCQkJCQkJCSZpbmZvLAorCQkJCQkJCQlIQVNI X0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9LRVlDT1BZKTsK KworCWZvcmVhY2gobGMsIGFyZ3MpCisJeworCQlOb2RlCQkJCSAgICpvcnF1YWwgPSBsZmly c3QobGMpOworCQlOb2RlCQkJCSAgICpjb25zdF9leHByOworCQlOb2RlCQkJCSAgICpuY29u c3RfZXhwcjsKKwkJT3JDbGF1c2VHcm91cEtleQkJaGFzaGtleTsKKwkJYm9vbAkJCQkJZm91 bmQ7CisJCU9pZAkJCQkJCW9wbm87CisJCU9pZAkJCQkJCWV4cHJ0eXBlOworCQlOb2RlCQkJ CSAgICpsZWZ0b3AsICpyaWdodG9wOworCQlUeXBlQ2FjaGVFbnRyeQkJICAgKnR5cGVudHJ5 OworCisJCWlmICghSXNBKG9ycXVhbCwgT3BFeHByKSkKKwkJeworCQkJZW50cmllcyA9IGxh cHBlbmQoZW50cmllcywgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJb3BubyA9 ICgoT3BFeHByICopIG9ycXVhbCktPm9wbm87CisJCWlmIChnZXRfb3BfcmV0dHlwZShvcG5v KSAhPSBCT09MT0lEKQorCQl7CisJCQkvKiBPbmx5IG9wZXJhdG9yIHJldHVybmluZyBib29s ZWFuIHN1aXRzIE9SIC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiAqLworCQkJZW50cmllcyA9IGxh cHBlbmQoZW50cmllcywgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJ ICogRGV0ZWN0IHRoZSBjb25zdGFudCBzaWRlIG9mIHRoZSBjbGF1c2UuIFJlY2FsbCBub24t Y29uc3RhbnQKKwkJICogZXhwcmVzc2lvbiBjYW4gYmUgbWFkZSBub3Qgb25seSB3aXRoIFZh cnMsIGJ1dCBhbHNvIHdpdGggUGFyYW1zLAorCQkgKiB3aGljaCBpcyBub3QgYm9uZGVkIHdp dGggYW55IHJlbGF0aW9uLiBUaHVzLCB3ZSBkZXRlY3QgdGhlIGNvbnN0CisJCSAqIHNpZGUg LSBpZiBhbm90aGVyIHNpZGUgaXMgY29uc3RhbnQgdG9vLCB0aGUgb3JxdWFsIGNvdWxkbid0 IGJlCisJCSAqIGFuIE9wRXhwci4KKwkJICogR2V0IHBvaW50ZXJzIHRvIGNvbnN0YW50IGFu ZCBleHByZXNzaW9uIHNpZGVzIG9mIHRoZSBxdWFsLgorCQkgKi8KKwkJbGVmdG9wID0gZ2V0 X2xlZnRvcChvcnF1YWwpOworCQlpZiAoSXNBKGxlZnRvcCwgUmVsYWJlbFR5cGUpKQorCQkJ bGVmdG9wID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBsZWZ0b3ApLT5hcmc7CisJCXJp Z2h0b3AgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQlpZiAoSXNBKHJpZ2h0b3AsIFJlbGFi ZWxUeXBlKSkKKwkJCXJpZ2h0b3AgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0 b3ApLT5hcmc7CisKKwkJaWYgKElzQShsZWZ0b3AsIENvbnN0KSkKKwkJeworCQkJb3BubyA9 IGdldF9jb21tdXRhdG9yKG9wbm8pOworCisJCQlpZiAoIU9pZElzVmFsaWQob3BubykpCisJ CQl7CisJCQkJLyogY29tbXV0YXRvciBkb2Vzbid0IGV4aXN0LCB3ZSBjYW4ndCByZXZlcnNl IHRoZSBvcmRlciAqLworCQkJCWVudHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIG9ycXVhbCk7 CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCW5jb25zdF9leHByID0gZ2V0X3JpZ2h0b3Ao b3JxdWFsKTsKKwkJCWNvbnN0X2V4cHIgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJ ZWxzZSBpZiAoSXNBKHJpZ2h0b3AsIENvbnN0KSkKKwkJeworCQkJY29uc3RfZXhwciA9IGdl dF9yaWdodG9wKG9ycXVhbCk7CisJCQluY29uc3RfZXhwciA9IGdldF9sZWZ0b3Aob3JxdWFs KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVudHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIG9y cXVhbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFRyYW5zZm9ybWF0aW9u IG9ubHkgd29ya3Mgd2l0aCBib3RoIHNpZGUgdHlwZSBpcyBub3QKKwkJICogeyBhcnJheSB8 IGNvbXBvc2l0ZSB8IGRvbWFpbiB8IHJlY29yZCB9LgorCQkgKiBBbHNvLCBmb3JiaWQgaXQg Zm9yIHZvbGF0aWxlIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJZXhwcnR5cGUgPSBleHByVHlw ZShuY29uc3RfZXhwcik7CisJCWlmICh0eXBlX2lzX3Jvd3R5cGUoZXhwclR5cGUoY29uc3Rf ZXhwcikpIHx8CisJCQl0eXBlX2lzX3Jvd3R5cGUoZXhwcnR5cGUpIHx8CisJCQljb250YWlu X3ZvbGF0aWxlX2Z1bmN0aW9ucygoTm9kZSAqKSBuY29uc3RfZXhwcikpCisJCXsKKwkJCWVu dHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIG9ycXVhbCk7CisJCQljb250aW51ZTsKKwkJfQor CisJCXR5cGVudHJ5ID0gbG9va3VwX3R5cGVfY2FjaGUoZXhwcnR5cGUsIFRZUEVDQUNIRV9D TVBfUFJPQ19GSU5GTyk7CisKKwkJLyoKKwkJICogV2l0aGluIHRoaXMgdHJhbnNmb3JtYXRp b24gd2UgcmVtb3ZlIGR1cGxpY2F0ZXMuIFRvIGF2b2lkCisJCSAqIHF1YWRyYXRpYyBiZWhh dmlvciB3ZSBuZWVkIHRvIHNvcnQgY2xhdXNlcyBhZnRlciBtYWtpbmcgYSBsaXN0IG9mCisJ CSAqIGVsZW1lbnRzLiBTbywgbmVlZCBzb3J0IG9wZXJhdG9yIHRvIGltcGxlbWVudCB0aGF0 LgorCQkgKi8KKwkJaWYgKCFPaWRJc1ZhbGlkKHR5cGVudHJ5LT5jbXBfcHJvY19maW5mby5m bl9vaWQpKQorCQl7CisJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBvcnF1YWwpOwor CQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkqIEF0IHRoaXMgcG9pbnQgd2UgZGVmaW5p dGVseSBoYXZlIGEgdHJhbnNmb3JtYWJsZSBjbGF1c2UuCisJCSogQ2xhc3NpZnkgaXQgYW5k IGFkZCBpbnRvIHNwZWNpZmljIGdyb3VwIG9mIGNsYXVzZXMsIG9yIGNyZWF0ZSBuZXcKKwkJ KiBncm91cC4KKwkJKi8KKwkJaGFzaGtleS50eXBlID0gVF9JbnZhbGlkOworCQloYXNoa2V5 LmV4cHIgPSAoRXhwciAqKSBuY29uc3RfZXhwcjsKKwkJaGFzaGtleS5vcG5vID0gb3BubzsK KwkJaGFzaGtleS5leHBydHlwZSA9IGV4cHJ0eXBlOworCQllbnRyeSA9IGhhc2hfc2VhcmNo KG9yX2dyb3VwX2h0YWIsICZoYXNoa2V5LCBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJCWlm ICh1bmxpa2VseShmb3VuZCkpCisJCXsKKwkJCWVudHJ5LT5jb25zdHMgPSBsYXBwZW5kKGVu dHJ5LT5jb25zdHMsIGNvbnN0X2V4cHIpOworCQkJZW50cnktPmV4cHJzID0gbGFwcGVuZChl bnRyeS0+ZXhwcnMsIG9ycXVhbCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllbnRyeS0+Y29u c3RzID0gbGlzdF9tYWtlMShjb25zdF9leHByKTsKKwkJCWVudHJ5LT5leHBycyA9IGxpc3Rf bWFrZTEob3JxdWFsKTsKKworCQkJLyogUHJlcGFyZSBmdW5jYWxsIGZvciBzb3J0IGNvbXBh cmF0b3IgKi8KKwkJCWVudHJ5LT5mY2luZm8gPQorCQkJCQkJKEZ1bmN0aW9uQ2FsbEluZm8p IHBhbGxvYyhTaXplRm9yRnVuY3Rpb25DYWxsSW5mbygyKSk7CisJCQlJbml0RnVuY3Rpb25D YWxsSW5mb0RhdGEoKihlbnRyeS0+ZmNpbmZvKSwKKwkJCQkJCQkJCSAmdHlwZW50cnktPmNt cF9wcm9jX2ZpbmZvLCAyLAorCQkJCQkJCQkJIHR5cGVudHJ5LT50eXBjb2xsYXRpb24sIE5V TEwsIE5VTEwpOworCisJCQkvKgorCQkJICogQWRkIHRoZSBlbnRyeSB0byB0aGUgbGlzdC4g SXQgaXMgbmVlZGVkIGV4Y2x1c2l2ZWx5IHRvIG1hbmFnZSB0aGUKKwkJCSAqIHByb2JsZW0g d2l0aCB0aGUgb3JkZXIgb2YgdHJhbnNmb3JtZWQgY2xhdXNlcyBpbiBleHBsYWluLgorCQkJ ICogSGFzaCB2YWx1ZSBjYW4gZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybSBhbmQgdmVyc2lvbi4g SGVuY2UsCisJCQkgKiBzZXF1ZW50YWwgc2NhbiBvZiB0aGUgaGFzaCB0YWJsZSB3b3VsZCBw cm9uZSB0byBjaGFuZ2UgdGhlIG9yZGVyCisJCQkgKiBvZiBjbGF1c2VzIGluIGxpc3RzIGFu ZCwgYXMgYSByZXN1bHQsIGJyZWFrIHJlZ3Jlc3Npb24gdGVzdHMKKwkJCSAqIGFjY2lkZW50 aWFsbHkuCisJCQkgKi8KKwkJCWVudHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIGVudHJ5KTsK KwkJfQorCX0KKworCS8qIExldCdzIGNvbnZlcnQgZWFjaCBncm91cCBvZiBjbGF1c2VzIHRv IGFuIElOIG9wZXJhdGlvbi4gKi8KKworCS8qCisJICogR28gdGhyb3VnaCB0aGUgbGlzdCBv ZiBncm91cHMgYW5kIGNvbnZlcnQgZWFjaCwgd2hlcmUgbnVtYmVyIG9mCisJICogY29uc3Rz IG1vcmUgdGhhbiAxLiB0cml2aWFsIGdyb3VwcyBtb3ZlIHRvIE9SLWxpc3QgYWdhaW4KKwkg Ki8KKwlmb3JlYWNoIChsYywgZW50cmllcykKKwl7CisJCU9pZAkJCQkgICAgc2NhbGFyX3R5 cGU7CisJCU9pZAkJCQkJYXJyYXlfdHlwZTsKKworCQlpZiAoIUlzQShsZmlyc3QobGMpLCBJ bnZhbGlkKSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgbGZpcnN0KGxj KSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWVudHJ5ID0gKE9yQ2xhdXNlR3JvdXBFbnRy eSAqKSBsZmlyc3QobGMpOworCisJCUFzc2VydChsaXN0X2xlbmd0aChlbnRyeS0+Y29uc3Rz KSA+IDApOworCQlBc3NlcnQobGlzdF9sZW5ndGgoZW50cnktPmV4cHJzKSA9PSBsaXN0X2xl bmd0aChlbnRyeS0+Y29uc3RzKSk7CisKKwkJaWYgKGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25z dHMpID09IDEpCisJCXsKKwkJCS8qCisJCQkgKiBPbmx5IG9uZSBlbGVtZW50IHJldHVybnMg b3JpZ2luIGV4cHJlc3Npb24gaW50byB0aGUgQm9vbEV4cHIgYXJncworCQkJICogbGlzdCB1 bmNoYW5nZWQuCisJCQkgKi8KKwkJCWxpc3RfZnJlZShlbnRyeS0+Y29uc3RzKTsKKwkJCW9y X2xpc3QgPSBsaXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ZXhwcnMpOworCQkJY29udGlu dWU7CisJCX0KKworCQkvKgorCQkgKiBEbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCSAqLwor CisJCXNjYWxhcl90eXBlID0gZW50cnktPmtleS5leHBydHlwZTsKKwkJYXJyYXlfdHlwZSA9 IE9pZElzVmFsaWQoc2NhbGFyX3R5cGUpID8gZ2V0X2FycmF5X3R5cGUoc2NhbGFyX3R5cGUp IDoKKwkJCQkJCQkJCQkJICAgSW52YWxpZE9pZDsKKworCQlpZiAoT2lkSXNWYWxpZChhcnJh eV90eXBlKSkKKwkJeworCQkJLyoKKwkJCSAqIE9LOiBjb2VyY2UgYWxsIHRoZSByaWdodC1o YW5kIG5vbi1WYXIgaW5wdXRzIHRvIHRoZSBjb21tb24KKwkJCSAqIHR5cGUgYW5kIGJ1aWxk IGFuIEFycmF5RXhwciBmb3IgdGhlbS4KKwkJCSAqLworCQkJTGlzdAkJCSAgICphZXhwcnMg PSBOSUw7CisJCQlBcnJheUV4cHIJCSAgICpuZXdhID0gTlVMTDsKKwkJCVNjYWxhckFycmF5 T3BFeHByICAqc2FvcGV4cHIgPSBOVUxMOworCQkJSGVhcFR1cGxlCQkJb3BlcnR1cDsKKwkJ CUZvcm1fcGdfb3BlcmF0b3IJb3BlcmZvcm07CisJCQlMaXN0CQkJICAgKm5hbWVsaXN0ID0g TklMOworCisJCQlhZXhwcnMgPSBzYW9wX2RlbGV0ZV9kdXBsaWNhdGVzKHBzdGF0ZSwgZW50 cnksIHNjYWxhcl90eXBlKTsKKworCQkJbmV3YSA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisJ CQkvKiBhcnJheV9jb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCisJ CQluZXdhLT5lbGVtZW50X3R5cGVpZCA9IHNjYWxhcl90eXBlOworCQkJbmV3YS0+YXJyYXlf dHlwZWlkID0gYXJyYXlfdHlwZTsKKwkJCW5ld2EtPm11bHRpZGltcyA9IGZhbHNlOworCQkJ bmV3YS0+ZWxlbWVudHMgPSBhZXhwcnM7CisJCQluZXdhLT5sb2NhdGlvbiA9IC0xOworCisJ CQlvcGVydHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQsCisJCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0oZW50cnktPmtleS5vcG5vKSk7CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQob3BlcnR1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IG9wZXJhdG9yICV1IiwKKwkJCQkJIGVudHJ5LT5rZXkub3Bubyk7CisKKwkJCW9wZXJmb3Jt ID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVydHVwKTsKKwkJCWlmICghT3Bl cmF0b3JJc1Zpc2libGUoZW50cnktPmtleS5vcG5vKSkKKwkJCQluYW1lbGlzdCA9IGxhcHBl bmQobmFtZWxpc3QsIG1ha2VTdHJpbmcoZ2V0X25hbWVzcGFjZV9uYW1lKG9wZXJmb3JtLT5v cHJuYW1lc3BhY2UpKSk7CisKKwkJCW5hbWVsaXN0ID0gbGFwcGVuZChuYW1lbGlzdCwgbWFr ZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIob3BlcmZvcm0tPm9wcm5hbWUpKSkpOworCQkJUmVs ZWFzZVN5c0NhY2hlKG9wZXJ0dXApOworCisJCQlzYW9wZXhwciA9CisJCQkJKFNjYWxhckFy cmF5T3BFeHByICopCisJCQkJCW1ha2Vfc2NhbGFyX2FycmF5X29wKHBzdGF0ZSwKKwkJCQkJ CQkJCQkgbmFtZWxpc3QsCisJCQkJCQkJCQkJIHRydWUsCisJCQkJCQkJCQkJIChOb2RlICop IGVudHJ5LT5rZXkuZXhwciwKKwkJCQkJCQkJCQkgKE5vZGUgKikgbmV3YSwKKwkJCQkJCQkJ CQkgLTEpOworCisJCQlvcl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCAodm9pZCAqKSBzYW9w ZXhwcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlIGNvbnN0IG5v ZGUgKHJpZ2h0IHNpZGUgb2Ygb3BlcmF0b3IgZXhwcmVzc2lvbikgJ3MgdHlwZQorCQkJICog IGRvbid0IGhhdmUg4oCcdHJ1ZeKAnSBhcnJheSB0eXBlLCB0aGVuIHdlIGNhbm5ub3QgZG8g dGhlIHRyYW5zZm9ybWF0aW9uLgorCQkJICogV2Ugc2ltcGx5IGNvbmNhdGVuYXRlIHRoZSBl eHByZXNzaW9uIG5vZGUuCisJCQkgKgorCQkJICovCisJCQlsaXN0X2ZyZWUoZW50cnktPmNv bnN0cyk7CisJCQlvcl9saXN0ID0gbGlzdF9jb25jYXQob3JfbGlzdCwgZW50cnktPmV4cHJz KTsKKwkJfQorCX0KKwloYXNoX2Rlc3Ryb3kob3JfZ3JvdXBfaHRhYik7CisJbGlzdF9mcmVl KGVudHJpZXMpOworCisJLyogT25lIG1vcmUgdHJpY2s6IGFzc2VtYmxlIGNvcnJlY3QgY2xh dXNlICovCisJcmV0dXJuIChOb2RlICopICgobGlzdF9sZW5ndGgob3JfbGlzdCkgPiAxKSA/ CisJCQkJCSBtYWtlQm9vbEV4cHIoT1JfRVhQUiwgb3JfbGlzdCwgbG9jYXRpb24pIDoKKwkJ CQkJIGxpbml0aWFsKG9yX2xpc3QpKTsKK30KIAogLyoKICAqIHRyYW5zZm9ybUV4cHIgLQpA QCAtMTM4Niw2ICsxNzk3LDExIEBAIHRyYW5zZm9ybUJvb2xFeHByKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQm9vbEV4cHIgKmEpCiAJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIGFyZyk7CiAJfQog CisJLyogTWFrZSBhbiBhdHRlbXB0IHRvIGdyb3VwIHNpbWlsYXIgT1IgY2xhdXNlcyBpbnRv IEFOWSBvcGVyYXRpb24gKi8KKwlpZiAoZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uICYmIGEt PmJvb2xvcCA9PSBPUl9FWFBSICYmCisJCWxpc3RfbGVuZ3RoKGFyZ3MpID4gMSkKKwkJcmV0 dXJuIFRyYW5zZm9ybU9yRXhwclRvQU5ZKHBzdGF0ZSwgYXJncywgYS0+bG9jYXRpb24pOwor CiAJcmV0dXJuIChOb2RlICopIG1ha2VCb29sRXhwcihhLT5ib29sb3AsIGFyZ3MsIGEtPmxv Y2F0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBk NzcyMTQ3OTVkLi4wYzNmMjc4NDIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYwpAQCAtMTAyNiw2ICsxMDI2LDE3IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1 cmVOYW1lc0Jvb2xbXSA9CiAJCXRydWUsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsK KwkJeyJlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24iLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVO SU5HX09USEVSLAorCQkJZ2V0dGV4dF9ub29wKCJUcmFuc2Zvcm0gYSBzZXF1ZW5jZSBvZiBP UiBjbGF1c2VzIHRvIGFuIGFycmF5IGV4cHJlc3Npb24uIiksCisJCQlnZXR0ZXh0X25vb3Ao IlRoZSBwbGFubmVyIHdpbGwgcmVwbGFjZSBleHByZXNzaW9uIGxpa2UgJ3g9YzEgT1IgeD1j MiAuLiciCisJCQkJCQkgInRvIHRoZSBleHByZXNzaW9uICd4ID0gQU5ZKEFSUkFZW2MxLGMy LC4uXSknIiksCisJCQlHVUNfRVhQTEFJTgorCQl9LAorCQkmZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uLAorCQl0cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCS8qCiAJ CSAqIE5vdCBmb3IgZ2VuZXJhbCB1c2UgLS0tIHVzZWQgYnkgU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiBhbmQgU0VUCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKaW5kZXggMjI0NGVlNTJmNy4uNTI0NTE2NTkzZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzkx LDYgKzM5MSw3IEBACiAjIC0gUGxhbm5lciBNZXRob2QgQ29uZmlndXJhdGlvbiAtCiAKICNl bmFibGVfYXN5bmNfYXBwZW5kID0gb24KKyNlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBv bgogI2VuYWJsZV9iaXRtYXBzY2FuID0gb24KICNlbmFibGVfZ2F0aGVybWVyZ2UgPSBvbgog I2VuYWJsZV9oYXNoYWdnID0gb24KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXgg MDBiNTA5MjcxMy4uZDI4YmY2MTdkYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwK QEAgLTIwOTUsOSArMjA5NSw5IEBAIG15ICV0ZXN0cyA9ICgKIAkJcmVnZXhwID0+IHFyL14K IAkJCVxRQ1JFQVRFIERPTUFJTiBkdW1wX3Rlc3QudXNfcG9zdGFsX2NvZGUgQVMgdGV4dCBD T0xMQVRFIHBnX2NhdGFsb2cuIkMiIERFRkFVTFQgJzEwMDE0Jzo6dGV4dFxFXG5ccysKIAkJ CVxRQ09OU1RSQUlOVCB1c19wb3N0YWxfY29kZV9jaGVjayBDSEVDSyBcRQotCQkJXFEoKChW QUxVRSB+ICdeXGR7NX1cRQotCQkJXCRcUSc6OnRleHQpIE9SIChWQUxVRSB+ICdeXGR7NX0t XGR7NH1cRVwkCi0JCQlcUSc6OnRleHQpKSk7XEUoLnxcbikqCisJCQlcUSgoVkFMVUUgfiBB TlkgKEFSUkFZWydeXGR7NX1cRQorCQkJXCRcUSc6OnRleHQsICdeXGR7NX0tXGR7NH1cRVwk CisJCQlcUSc6OnRleHRdKSkpO1xFKC58XG4pKgogCQkJXFFDT01NRU5UIE9OIENPTlNUUkFJ TlQgdXNfcG9zdGFsX2NvZGVfY2hlY2sgT04gRE9NQUlOIGR1bXBfdGVzdC51c19wb3N0YWxf Y29kZSBJUyAnY2hlY2sgaXQnO1xFCiAJCQkveG0sCiAJCWxpa2UgPT4KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9x dWVyeWp1bWJsZS5oCmluZGV4IGYxYzU1YzgwNjcuLmE5YWUwNDhhZjUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcXVlcnlqdW1ibGUuaApAQCAtNjUsNiArNjUsNyBAQCBleHRlcm4gUEdETExJTVBPUlQg aW50IGNvbXB1dGVfcXVlcnlfaWQ7CiAKIGV4dGVybiBjb25zdCBjaGFyICpDbGVhblF1ZXJ5 dGV4dChjb25zdCBjaGFyICpxdWVyeSwgaW50ICpsb2NhdGlvbiwgaW50ICpsZW4pOwogZXh0 ZXJuIEp1bWJsZVN0YXRlICpKdW1ibGVRdWVyeShRdWVyeSAqcXVlcnkpOworZXh0ZXJuIEp1 bWJsZVN0YXRlICpKdW1ibGVFeHByKEV4cHIgKmV4cHIsIHVpbnQ2NCAqcXVlcnlJZCk7CiBl eHRlcm4gdm9pZCBFbmFibGVRdWVyeUlkKHZvaWQpOwogCiBleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBxdWVyeV9pZF9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1p emVyL29wdGltaXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmlu ZGV4IDdiNjNjNWNmNzEuLjM1YWI1Nzc1MDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29w dGltaXplci9vcHRpbWl6ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1p emVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFBsYW5uZWRTdG10Owogc3RydWN0IFBh cmFtTGlzdEluZm9EYXRhOwogc3RydWN0IEhlYXBUdXBsZURhdGE7CiAKK2V4dGVybiBQR0RM TElNUE9SVCBib29sIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIAogLyogaW4gcGF0aC9j bGF1c2VzZWwuYzogKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf aW5kZXgub3V0CmluZGV4IDc5ZmExMTdjYjUuLjRhNGRmYjNiYjUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE4MzgsMTggKzE4Mzgs NTAgQEAgRFJPUCBUQUJMRSBvbmVrX3dpdGhfbnVsbDsKIEVYUExBSU4gKENPU1RTIE9GRikK IFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRo b3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBC aXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCi0gICBSZWNoZWNrIENvbmQ6ICgoKHRob3VzYW5k ID0gNDIpIEFORCAodGVudGhvdXMgPSAxKSkgT1IgKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRl bnRob3VzID0gMykpIE9SICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDQyKSkp Ci0gICAtPiAgQml0bWFwT3IKLSAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0 ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91 c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpCi0gICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDMpKQotICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSA0 MikpCi0oOSByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9u IHRlbmsxCisgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMg PSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJbXSkpKQorKDIgcm93cykKKworU0VMRUNUICog RlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKyB1bmlxdWUxIHwgdW5pcXVlMiB8 IHR3byB8IGZvdXIgfCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQgfCB0d290 aG91c2FuZCB8IGZpdmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0cmluZ3Ux IHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0t LS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tCisgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwgICAyIHwg ICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAgICAgNDIg fCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwgT09PT3h4 CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA5OSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIp IEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkpCisgICAgICAg ICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1 bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0 ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisoOCByb3dzKQorCitT RUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50IAorLS0tLS0tLQorICAg IDEwCisoMSByb3cpCisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNh bmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMg PSA0Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEluZGV4IFNjYW4gdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEK KyAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAo J3sxLDMsNDJ9Jzo6aW50ZWdlcltdKSkpCisoMiByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIHRl bmsxCiAgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhv dXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOwpAQCAtMTg2MSwyOCArMTg5MywxMTYgQEAgU0VM RUNUICogRlJPTSB0ZW5rMQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5k cmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkp CisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisoOCBy b3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0g NDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50IAorLS0t LS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBj b3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5k IDwgNDIgT1IgdGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNh bmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBB TkQgKHRob3VzYW5kIDwgQU5ZICgnezQyLDQzLDk5fSc6OmludGVnZXJbXSkpKQorICAgICAg ICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICho dW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw0Myw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAg V0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMp IE9SIHRob3VzYW5kID0gNDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKHRob3VzYW5kID0gNDIpIEFORCAo dGVudGhvdXMgPSBBTlkgKCd7MSwzfSc6OmludGVnZXJbXSkpKSBPUiAodGhvdXNhbmQgPSA0 MSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgn ezEsM30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHRob3VzYW5kID0gNDEpCisoOCByb3dzKQorCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAxMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9S IHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKCho dW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJb XSkpIE9SICh0ZW50aG91cyA8IDIpKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAg LT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQg PSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRlbnRob3VzIDwg MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91 c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5k ID0gNDEpCisoMTQgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9S IHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAyMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9S IHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25kOiAo KGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gOTkp KSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3Vz YW5kID0gQU5ZICgnezQxLDQyfSc6OmludGVnZXJbXSkpIE9SICgodGhvdXNhbmQgPSA5OSkg QU5EICh0ZW50aG91cyA9IDIpKSkpCiAgICAgICAgICAtPiAgQml0bWFwQW5kCiAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAogICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXBPcgogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0MSw0Mn0nOjppbnRlZ2Vy W10pKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodGhvdXNhbmQgPSA5OSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKQogKDExIHJvd3Mp CiAKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCi0gIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9 IDk5IEFORCB0ZW50aG91cyA9IDIpOwogIGNvdW50IAogLS0tLS0tLQogICAgIDEwCiAoMSBy b3cpCiAKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tCiAtLSBDaGVjayBi ZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRleCA5NjA1NDAwMDIxLi5kODAxOGJlZjRm IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKQEAgLTQyMTAsMTAgKzQyMTAs MTAgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4g dGVuazEgYiBvbgogICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKICAg KChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg TmVzdGVkIExvb3AKLSAgIEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIu dW5pcXVlMSA9IDIpKSBPUiAoKChhLnVuaXF1ZTIgPSAzKSBPUiAoYS51bmlxdWUyID0gNykp IEFORCAoYi5odW5kcmVkID0gNCkpKQorICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9 IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgoYS51bmlxdWUyID0gQU5ZICgnezMsN30n OjppbnRlZ2VyW10pKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKICAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIHRlbmsxIGIKICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0g MikgT1IgKGh1bmRyZWQgPSA0KSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgpAQCAtNDIyMywx NiArNDIyMyw2NCBAQCBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCiAgICAtPiAg TWF0ZXJpYWxpemUKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEK LSAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1 ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25k OiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltd KSkpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSAzKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3 fSc6OmludGVnZXJbXSkpCisoMTcgcm93cykKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1h dGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBh IGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikg b3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQg PSA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpv aW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAo KGEudW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQg PSA0KSkpCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBiCisgICAgICAgICBS ZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0gNCkpCisgICAgICAg ICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5p cXVlMSA9IDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQg PSA0KQorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiB0ZW5rMSBhCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9 IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAg ICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDcpCi0oMTkgcm93cykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30n OjppbnRlZ2VyW10pKQorKDE3IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVj dCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA8IDIwIG9y IGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IK KyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0 KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoKGEudW5pcXVlMSA8IDIwKSBPUiAo YS51bmlxdWUxID0gMykgT1IgKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIp KSBPUiAoKGEudW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1 bmRyZWQgPSA0KSkpCisgICAtPiAgU2VxIFNjYW4gb24gdGVuazEgYgorICAgLT4gIE1hdGVy aWFsaXplCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCisgICAg ICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8IDIwKSBPUiAodW5pcXVlMSA9 IDMpIE9SICh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVn ZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPCAyMCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDMpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEg PSAxKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE1IHJvd3MpCiAKK1JFU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tCiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBt b3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBqb2luIHRyZWUKIC0tCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggYmYw NjU3YjlmMi4uMWUxNTNjM2JiNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtODIsMjUgKzgyLDQ3IEBAIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG51bGw7CiAoMiByb3dzKQog CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdhJyBv ciBhID0gJ2MnOwotICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQot ICAgICAgICAgRmlsdGVyOiAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hh cikpCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpCiAg ICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMgotICAgICAgICAgRmlsdGVyOiAoKGEgPSAn YSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpCisgICAgICAgICBGaWx0ZXI6IChh ID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpCiAoNSByb3dzKQogCiBleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAn YScgb3IgYSA9ICdjJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg QXBwZW5kCiAgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQotICAgICAgICAgRmlsdGVy OiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6 OmJwY2hhcikpKQorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9 IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBs cF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6 YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkpCisgICAgICAgICBGaWx0ZXI6ICgoYSBJ UyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQogKDUgcm93 cykKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKKyAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAg LT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkg KCd7YSxjfSc6OmJwY2hhcltdKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yCisg ICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpCisoNSByb3dz KQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBu b3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEK KyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxj fSc6OmJwY2hhcltdKSkpCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMgorICAgICAg ICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBj aGFyW10pKSkKKyg1IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsK IGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdnJzsK ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MTUsMTAgKzUzNywxMCBAQCBleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPD0gMzE7CiAoMjcgcm93cykK IAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBv ciBhID0gNzsKLSAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICBTZXEgU2NhbiBvbiBybHAyIHJscAotICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoYSA9 IDcpKQorICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3sxLDd9Jzo6aW50ZWdlcltdKSkKICgyIHJv d3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9 IDEgb3IgYiA9ICdhYic7CkBAIC01OTYsMTMgKzYxOCwxMyBAQCBleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChhID4gMjAgYW5kIGEgPCAy NSk7CiAKIC0tIHdoZXJlIGNsYXVzZSBjb250cmFkaWN0cyBzdWItcGFydGl0aW9uJ3MgY29u c3RyYWludAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID0gMjAgb3IgYSA9IDQwOwotICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAg ICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9 IDIwKSBPUiAoYSA9IDQwKSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9 Jzo6aW50ZWdlcltdKSkKICAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzIK LSAgICAgICAgIEZpbHRlcjogKChhID0gMjApIE9SIChhID0gNDApKQorICAgICAgICAgRmls dGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQogKDUgcm93cykKIAogZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8q IGVtcHR5ICovCkBAIC02NzEsNiArNjkzLDE2MyBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQg YSA9CiAgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4g MSkgQU5EIChhID0gMTUpKSkKICgxMSByb3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdo ZXJlIGEgPSAxIG9yIGEgPSA3OworICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTZXEgU2NhbiBvbiBybHAyIHJscAorICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3sxLDd9Jzo6 aW50ZWdlcltdKSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYiA9ICdhYic7CisgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAt PiAgU2VxIFNjYW4gb24gcmxwMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBP UiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwMiBy bHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6 dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzMKKyAgICAgICAgIEZp bHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNl cSBTY2FuIG9uIHJscDRfMSBybHBfNAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAo KGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJs cF81CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0 ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwXzYKKyAgICAgICAg IEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4g IFNlcSBTY2FuIG9uIHJscDVfMSBybHBfNworICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBP UiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9k ZWZhdWx0IHJscF84CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQg PSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8xMCBybHBf OQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4 dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzEwCisgICAgICAg ICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9udWxsIHJscF8xMQorICAgICAgICAgRmlsdGVy OiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBybHBfMTIKKyAgICAgICAgIEZpbHRlcjogKChh ID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorKDI1IHJvd3MpCisKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDIwIGFuZCBhIDwg Mjc7CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHA0XzEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhID4gMjApIEFO RCAoYSA8IDI3KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzIKKyAgICAgICAg IEZpbHRlcjogKChhID4gMjApIEFORCAoYSA8IDI3KSkKKyg1IHJvd3MpCisKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDI5OworICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwCisgICBGaWx0ZXI6IChhID0gMjkpCiso MiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IGEgPj0gMjk7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFw cGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBfMQorICAgICAgICAg RmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzIKKyAg ICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZh dWx0IHJscF8zCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscF9kZWZhdWx0XzMwIHJscF80CisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQor ICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X2RlZmF1bHQgcmxwXzUKKyAgICAgICAg IEZpbHRlcjogKGEgPj0gMjkpCisoMTEgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBvciAoYSA+IDIwIGFuZCBhIDwgMjUpOwor ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAxIHJscF8xCisgICAgICAgICBG aWx0ZXI6ICgoYSA8IDEpIE9SICgoYSA+IDIwKSBBTkQgKGEgPCAyNSkpKQorICAgLT4gIFNl cSBTY2FuIG9uIHJscDRfMSBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPCAxKSBPUiAo KGEgPiAyMCkgQU5EIChhIDwgMjUpKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKKyAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAg LT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFO WSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVm YXVsdCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRl Z2VyW10pKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCisgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE9uZS1U aW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPSAxMDsJLyogb25seSBkZWZhdWx0 ICovCisgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMTAgcmxw CisgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA9IDEwKSkKKygyIHJvd3MpCisKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0x NTsJLyogcmxwMyBvbndhcmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAqLworICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2Fu IG9uIHJscDNhYmNkIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+ PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2VmZ2ggcmxwXzIKKyAgICAgICAgIEZp bHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAz bnVsbHh5IHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwM19kZWZhdWx0IHJscF80CisgICAgICAgICBGaWx0 ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8x IHJscF81CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAt PiAgU2VxIFNjYW4gb24gcmxwNF8yIHJscF82CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEp IEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscF83 CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwNV8xIHJscF84CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAo YSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF85CisgICAg ICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4g b24gcmxwX2RlZmF1bHRfMzAgcmxwXzEwCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFO RCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBy bHBfMTEKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKygyMyBy b3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEg PSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KKyAgICAgICAgUVVFUlkgUExBTiAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT25lLVRpbWUgRmls dGVyOiBmYWxzZQorKDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIHJscCB3aGVyZSAoYSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEgYW5kIGEgPSAxNSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNj YW4gb24gcmxwMiBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0g MykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxw M2FiY2QgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBP UiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNlZmdo IHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChh ID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzbnVsbHh5IHJs cF80CisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4g MSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzX2RlZmF1bHQgcmxw XzUKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAx KSBBTkQgKGEgPSAxNSkpKQorKDExIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zv cm1hdGlvbjsKIC0tIG11bHRpLWNvbHVtbiBrZXlzCiBjcmVhdGUgdGFibGUgbWMzcCAoYSBp bnQsIGIgaW50LCBjIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhLCBhYnMoYiksIGMpOwog Y3JlYXRlIHRhYmxlIG1jM3BfZGVmYXVsdCBwYXJ0aXRpb24gb2YgbWMzcCBkZWZhdWx0OwpA QCAtMjA3MiwxMCArMjI1MSwxMCBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gaHAgd2hlcmUgYSA9IDEgYW5kIGIgPSAnYWJjZGUnOwogCiBleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gaHAgd2hlcmUgYSA9IDEgYW5kIGIgPSAnYWJjZGUnIGFuZAog ICAoYyA9IDIgb3IgYyA9IDMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgU2VxIFNjYW4gb24gaHAyIGhwCi0gICBGaWx0ZXI6ICgoYSA9IDEpIEFORCAoYiA9 ICdhYmNkZSc6OnRleHQpIEFORCAoKGMgPSAyKSBPUiAoYyA9IDMpKSkKKyAgIEZpbHRlcjog KChjID0gQU5ZICgnezIsM30nOjppbnRlZ2VyW10pKSBBTkQgKGEgPSAxKSBBTkQgKGIgPSAn YWJjZGUnOjp0ZXh0KSkKICgyIHJvd3MpCiAKIGRyb3AgdGFibGUgaHAyOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CmluZGV4IDEwOTAzYmRhYjAuLjZmNTVi OWUzZWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0 Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKQEAg LTEzMjIsMTkgKzEzMjIsMTkgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93 cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNU ICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFs X2RlcGVuZGVuY2llcyBXSEVSRSAoYSA9IDEgT1IgYSA9IDUxKSBBTkQgYiA9ICcnMScnJyk7 CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAg OTkgfCAgICAxMDAKKyAgICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICog RlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2Rl cGVuZGVuY2llcyBXSEVSRSAoYSA9IDEgT1IgYSA9IDUxKSBBTkQgKGIgPSAnJzEnJyBPUiBi ID0gJycyJycpJyk7CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0t LS0KLSAgICAgICAgOTkgfCAgICAxMDAKKyAgICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykK IAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBm dW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoYSA9IDEgT1IgYSA9IDIgT1IgYSA9IDUx IE9SIGEgPSA1MikgQU5EIChiID0gJycxJycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRl ZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAw CisgICAgICAgMjAwIHwgICAgMjAwCiAoMSByb3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJl bmNpbmcgZGlmZmVyZW50IGF0dHJpYnV0ZXMgYXJlIGluY29tcGF0aWJsZQpAQCAtMTY2NCwx OSArMTY2NCwxOSBAQCBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxF Q1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFCiBTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5k ZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgdXBwZXIo YikgPSAnJzEnJycpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0t LS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cp CiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00g ZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKChhICogMikgPSAyIE9SIChhICogMikg PSAxMDIpIEFORCAodXBwZXIoYikgPSAnJzEnJyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwog IGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5 IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBl bmRlbmNpZXMgV0hFUkUgKChhICogMikgPSAyIE9SIChhICogMikgPSA0IE9SIChhICogMikg PSAxMDIgT1IgKGEgKiAyKSA9IDEwNCkgQU5EICh1cHBlcihiKSA9ICcnMScnIE9SIHVwcGVy KGIpID0gJycyJycpJyk7CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0t LS0tLS0KLSAgICAgICAxOTcgfCAgICAyMDAKKyAgICAgICAyMDAgfCAgICAyMDAKICgxIHJv dykKIAogLS0gT1IgY2xhdXNlcyByZWZlcmVuY2luZyBkaWZmZXJlbnQgYXR0cmlidXRlcwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAppbmRleCA5YmU3YWNhMmI4 Li4xZjkwMjliNWIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5 c3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91 dApAQCAtMTI0LDYgKzEyNCw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0 dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfbWVtb2l6ZSAgICAg ICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9tZXJnZWpvaW4gICAgICAgICAgICAgICB8IG9u CiAgZW5hYmxlX25lc3Rsb29wICAgICAgICAgICAgICAgIHwgb24KKyBlbmFibGVfb3JfdHJh bnNmb3JtYXRpb24gICAgICAgfCBvbgogIGVuYWJsZV9wYXJhbGxlbF9hcHBlbmQgICAgICAg ICB8IG9uCiAgZW5hYmxlX3BhcmFsbGVsX2hhc2ggICAgICAgICAgIHwgb24KICBlbmFibGVf cGFydGl0aW9uX3BydW5pbmcgICAgICAgfCBvbgpAQCAtMTM0LDcgKzEzNSw3IEBAIHNlbGVj dCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFi bGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9z b3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAg ICAgICAgIHwgb24KLSgyMyByb3dzKQorKDI0IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdh eXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuCiBzZWxlY3Qg dHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdfd2FpdF9ldmVudHMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CmluZGV4IGYxMzNiNWE0YWMuLmFkOTFhYmZm N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dApAQCAtNDMsMTAg KzQzLDI2IEBAIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSAnKDAsMSknID0g Y3RpZDsKIC0tIE9SJ2QgY2xhdXNlcwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGN0 aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBj dGlkOwotICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGlkIFNjYW4gb24gdGlkc2Nhbgor ICAgVElEIENvbmQ6IChjdGlkID0gQU5ZICgneyIoMCwxKSIsIigwLDIpIn0nOjp0aWRbXSkp CisoMiByb3dzKQorCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9 ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgY3RpZCAgfCBpZCAKKy0tLS0tLS0rLS0t LQorICgwLDEpIHwgIDEKKyAoMCwyKSB8ICAyCisoMiByb3dzKQorCitTRVQgZW5hYmxlX29y X3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3Rp ZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0 aWQ7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgVGlkIFNjYW4gb24gdGlkc2NhbgotICAgVElEIENvbmQ6ICgoY3RpZCA9 ICcoMCwyKSc6OnRpZCkgT1IgKCcoMCwxKSc6OnRpZCA9IGN0aWQpKQorICAgVElEIENvbmQ6 IChjdGlkID0gQU5ZICgneyIoMCwxKSIsIigwLDIpIn0nOjp0aWRbXSkpCiAoMiByb3dzKQog CiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1Ig JygwLDEpJyA9IGN0aWQ7CkBAIC01Niw2ICs3Miw3IEBAIFNFTEVDVCBjdGlkLCAqIEZST00g dGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKICAoMCwy KSB8ICAyCiAoMiByb3dzKQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAt LSBjdGlkID0gU2NhbGFyQXJyYXlPcCAtIGltcGxlbWVudGVkIGFzIHRpZHNjYW4KIEVYUExB SU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlk ID0gQU5ZKEFSUkFZWycoMCwxKScsICcoMCwyKSddOjp0aWRbXSk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBkNDljZTlmMzAwLi41NmZkZTE1YmMxIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTczNyw2ICs3Mzcs NDEgQEAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKIFNFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA5OSk7CiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNh bmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMg PSA0Mik7CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5E ICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwor U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAo dGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQg KHRob3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQy ID4gdGhvdXNhbmQpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVu dGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91 c2FuZCA9IDQxOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3Vz IDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNh bmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3Vz ID0gMik7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0g NDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5 OSBBTkQgdGVudGhvdXMgPSAyKTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsK KwogLS0KIC0tIENoZWNrIGJlaGF2aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBj b250ZW50cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKaW5kZXggYzRjNmM3YjhiYS4uMTY2 MzYwODA0MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKQEAgLTE0MDgsNiArMTQwOCwxNiBA QCBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5r MSBiIG9uCiAgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgogICAoKGEu dW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQor c2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxID0g MSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVl MiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVj dCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA8IDIwIG9y IGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IK KyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0 KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIAogLS0KIC0tIHRlc3QgcGxh Y2VtZW50IG9mIG1vdmFibGUgcXVhbHMgaW4gYSBwYXJhbWV0ZXJpemVkIGpvaW4gdHJlZQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKaW5kZXggYTA5YjI3 ZDgyMC4uOTcxN2M4YzgzNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3BydW5lLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f cHJ1bmUuc3FsCkBAIC0yMSw2ICsyMSwxMiBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbDsKIGV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG51bGw7CiBleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdhJyBvciBhID0gJ2MnOwogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGwgYW5kIChh ID0gJ2EnIG9yIGEgPSAnYycpOworCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0g b247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdh JyBvciBhID0gJ2MnOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdo ZXJlIGEgaXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOworUkVTRVQgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gbHAgd2hlcmUgYSA8PiAnZyc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gbHAgd2hlcmUgYSA8PiAnYScgYW5kIGEgPD4gJ2QnOwogZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgbm90IGluICgnYScsICdkJyk7CkBAIC05 OSw2ICsxMDUsMjIgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3 aGVyZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGkKIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgYW5kIGEgPSAzOwkvKiBl bXB0eSAqLwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAo YSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEgYW5kIGEgPSAxNSk7CiAKKworU0VUIGVuYWJs ZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBhID0gNzsKK2V4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYiA9ICdhYic7CitleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAyMCBhbmQgYSA8IDI3Owor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjk7Citl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPj0gMjk7Citl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChh ID4gMjAgYW5kIGEgPCAyNSk7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPSAyMCBvciBhID0gNDA7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwMyB3aGVyZSBhID0gMjA7ICAgLyogZW1wdHkgKi8KK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPSAxMDsJLyog b25seSBkZWZhdWx0ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxw IHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253YXJkcywgaW5jbHVkaW5nIGRl ZmF1bHQgKi8KK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA9IDEgYW5kIGEgPSAzOwkvKiBlbXB0eSAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIHJscCB3aGVyZSAoYSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEgYW5kIGEg PSAxNSk7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKIC0tIG11bHRpLWNv bHVtbiBrZXlzCiBjcmVhdGUgdGFibGUgbWMzcCAoYSBpbnQsIGIgaW50LCBjIGludCkgcGFy dGl0aW9uIGJ5IHJhbmdlIChhLCBhYnMoYiksIGMpOwogY3JlYXRlIHRhYmxlIG1jM3BfZGVm YXVsdCBwYXJ0aXRpb24gb2YgbWMzcCBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2Fu LnNxbAppbmRleCAzMTNlMGZiOWI2Li4wNDk5YmVkYjllIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90 aWRzY2FuLnNxbApAQCAtMjIsNiArMjIsMTIgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwx KScgPSBjdGlkOwogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAn KDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRp ZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CitTRUxFQ1Qg Y3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9 IGN0aWQ7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKIC0tIGN0aWQgPSBT Y2FsYXJBcnJheU9wIC0gaW1wbGVtZW50ZWQgYXMgdGlkc2NhbgogRVhQTEFJTiAoQ09TVFMg T0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSBBTlkoQVJS QVlbJygwLDEpJywgJygwLDIpJ106OnRpZFtdKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggYWE3YTI1YjhmOC4uYzYwMjdjNTg4ZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTE2NTcsNiArMTY1Nyw4IEBAIE51bWVyaWNWYXIKIE9NX3VpbnQzMgog T1AKIE9TQVBlckdyb3VwU3RhdGUKK09yQ2xhdXNlR3JvdXBFbnRyeQorT3JDbGF1c2VHcm91 cEtleQogT1NBUGVyUXVlcnlTdGF0ZQogT1NJbmZvCiBPU1NMQ2lwaGVyCi0tIAoyLjQ0LjAK Cg== --------------0L03VTRPYN4hb3ZsetsoeCkJ Content-Type: text/plain; charset=UTF-8; name="v22-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pat.patch" Content-Disposition: attachment; filename*0="v22-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pa"; filename*1="t.patch" Content-Transfer-Encoding: base64 RnJvbSBjNTNiNjU4NTIxZjkxMTJmZTRkOWI3ZTljY2FiYTk3OGZlNDIyODI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogV2VkLCAxMyBNYXIgMjAyNCAxMjoyNjowMiArMDcw MApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBUZWFjaCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMg dG8gYnVpbGQgQml0bWFwT3IgcGF0aHMKIG92ZXIgU0FPUCBjbGF1c2VzLgoKTGlrZXdpc2Ug T1IgY2xhdXNlcywgZGlzY292ZXIgU0FPUCBhcnJheSBhbmQgdHJ5IHRvIHNwbGl0IGl0cyBl bGVtZW50cwpiZXR3ZWVuIHNtYWxsZXIgc2l6ZWQgYXJyYXlzIHRvIGZpdCBhIHNldCBvZiBw YXJ0aWFsIGluZGV4ZXMuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu YyAgICAgfCAzMTUgKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcHJlZHRlc3QuYyAgICAgfCAgNDYgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcmVzdHJpY3RpbmZvLmMgfCAgMTMgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVy L29wdGltaXplci5oICAgICAgICAgfCAgMTYgKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9y ZXN0cmljdGluZm8uaCAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c2VsZWN0Lm91dCAgICAgIHwgMjgyICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3NlbGVjdC5zcWwgICAgICAgICAgIHwgIDgyICsrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDEgKwogOSBmaWxlcyBjaGFu Z2VkLCA3MDYgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmlu ZGV4IDJkZTZhZTMwMWEuLjBkZjU2ZjQ0ZTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU0ODUsNiAr NTQ4NSw5IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICAgIFRoZSBncm91 cGluZyB0ZWNobmlxdWUgb2YgdGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBiYXNlZCBvbiB0aGUg ZXF1aXZhbGVuY2Ugb2YgdmFyaWFibGUgc2lkZXMuCiAgICAgICAgIE9uZSBzaWRlIG9mIHN1 Y2ggYW4gZXhwcmVzc2lvbiBtdXN0IGJlIGEgY29uc3RhbnQgY2xhdXNlLCBhbmQgdGhlIG90 aGVyIG11c3QgY29udGFpbiBhIHZhcmlhYmxlIGNsYXVzZS4KICAgICAgICAgVGhlIGRlZmF1 bHQgaXMgPGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICAgICBBbHNvLCBkdXJpbmcgQml0 bWFwU2NhbiBwYXRocyBnZW5lcmF0aW9uIGl0IGVuYWJsZXMgYW5hbHlzaXMgb2YgZWxlbWVu dHMKKyAgICAgICAgb2YgSU4gb3IgQU5ZIGNvbnN0YW50IGFycmF5cyB0byBjb3ZlciBzdWNo IGNsYXVzZSB3aXRoIEJpdG1hcE9yIHNldCBvZgorICAgICAgICBwYXJ0aWFsIGluZGV4IHNj YW5zLgogICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhw YXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDMy YzZhOGJiZGMuLmY5MmE0N2MzZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5k eHBhdGguYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jl c3RyaWN0aW5mby5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIApAQCAtMTIy MCwxMSArMTIyMSwxODggQEAgYnVpbGRfcGF0aHNfZm9yX09SKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEJ1aWxk aW5nIGluZGV4IHBhdGhzIG92ZXIgU0FPUCBjbGF1c2UgZGlmZmVycyBmcm9tIHRoZSBsb2dp YyBvZiBPUiBjbGF1c2VzLgorICogSGVyZSB3ZSBpdGVyYXRlIGFjcm9zcyBhbGwgdGhlIGFy cmF5IGVsZW1lbnRzIGFuZCBzcGxpdCB0aGVtIHRvIFNBT1BzLAorICogY29ycmVzcG9uZGlu ZyB0byBkaWZmZXJlbnQgaW5kZXhlcy4gV2UgbXVzdCBtYXRjaCBlYWNoIGVsZW1lbnQgdG8g YW4gaW5kZXguCisgKi8KK3N0YXRpYyBMaXN0ICoKK2J1aWxkX3BhdGhzX2Zvcl9TQU9QKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0SW5mbyAqcmluZm8s CisJCQkJCSBMaXN0ICpvdGhlcl9jbGF1c2VzKQoreworCUxpc3QJCQkgICAqcmVzdWx0ID0g TklMOworCUxpc3QJCQkgICAqcHJlZGljYXRlX2xpc3RzID0gTklMOworCUxpc3RDZWxsCQkg ICAqbGM7CisJUHJlZGljYXRlc0RhdGEJICAgKnBkOworCVNjYWxhckFycmF5T3BFeHByICAq c2FvcCA9IChTY2FsYXJBcnJheU9wRXhwciAqKSByaW5mby0+Y2xhdXNlOworCisJQXNzZXJ0 KElzQShzYW9wLCBTY2FsYXJBcnJheU9wRXhwcikgJiYgc2FvcC0+dXNlT3IpOworCisJaWYg KCFJc0EobHNlY29uZChzYW9wLT5hcmdzKSwgQ29uc3QpKQorCQkvKgorCQkgKiBIYXMgaXQg cHJhY3RpY2FsIG91dGNvbWUgdG8gbWVyZ2UgYXJyYXlzIHdoaWNoIGNvdWxkbid0IGNvbnN0 YW50aWZpZWQKKwkJICogYmVmb3JlIHRoYXQgc3RlcD8KKwkJICovCisJCXJldHVybiBOSUw7 CisKKwkvKiBDb2xsZWN0IHByZWRpY2F0ZXMgKi8KKwlmb3JlYWNoKGxjLCByZWwtPmluZGV4 bGlzdCkKKwl7CisJCUluZGV4T3B0SW5mbyAqaW5kZXggPSAoSW5kZXhPcHRJbmZvICopIGxm aXJzdChsYyk7CisKKwkJLyogVGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gcGFydGlhbCBpbmRl eGVzIHN1cHBvcnRpbmcgYml0bWFwIHNjYW5zICovCisJCWlmICghaW5kZXgtPmFtaGFzZ2V0 Yml0bWFwIHx8IGluZGV4LT5pbmRwcmVkID09IE5JTCB8fCBpbmRleC0+cHJlZE9LKQorCQkJ Y29udGludWU7CisKKwkJcGQgPSBwYWxsb2MwKHNpemVvZihQcmVkaWNhdGVzRGF0YSkpOwor CQlwZC0+aWQgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgobGMpOworCQkvKiBUaGUgdHJpY2sg d2l0aCByZWR1Y2luZyByZWN1cnNpb24gaXMgc3RvbGVuIGZyb20gcHJlZGljYXRlX2ltcGxp ZWRfYnkgKi8KKwkJcGQtPnByZWRpY2F0ZSA9IGxpc3RfbGVuZ3RoKGluZGV4LT5pbmRwcmVk KSA9PSAxID8KKwkJCQkJCQkJCQkoTm9kZSAqKSBsaW5pdGlhbChpbmRleC0+aW5kcHJlZCkg OgorCQkJCQkJCQkJCShOb2RlICopIGluZGV4LT5pbmRwcmVkOworCQlwcmVkaWNhdGVfbGlz dHMgPSBsYXBwZW5kKHByZWRpY2F0ZV9saXN0cywgKHZvaWQgKikgcGQpOworCX0KKworCS8q IFNwbGl0IHRoZSBhcnJheSBkYXRhIGFjY29yZGluZyB0byBpbmRleCBwcmVkaWNhdGVzLiAq LworCWlmIChwcmVkaWNhdGVfbGlzdHMgPT0gTklMIHx8CisJCSFzYW9wX2NvdmVyZWRfYnlf cHJlZGljYXRlcyhzYW9wLCBwcmVkaWNhdGVfbGlzdHMpKQorCQlyZXR1cm4gTklMOworCisJ b3RoZXJfY2xhdXNlcyA9IGxpc3RfZGVsZXRlX3B0cihvdGhlcl9jbGF1c2VzLCByaW5mbyk7 CisKKwkvKgorCSAqIEhhdmluZyBpbmNvbWluZyBTQU9QIHNwbGl0IHRvIHNldCBvZiBzbWFs bGVyIFNBT1BzIHdoaWNoIGNhbiBiZSBhcHBsaWVkCisJICogdG8gcGFydGlhbCBpbmRleGVz LCBnZW5lcmF0ZSBwYXRocyBmb3IgZWFjaCBvbmUuCisJICovCisJZm9yZWFjaChsYywgcHJl ZGljYXRlX2xpc3RzKQorCXsKKwkJSW5kZXhPcHRJbmZvCSAgICppbmRleDsKKwkJSW5kZXhD bGF1c2VTZXQJCWNsYXVzZXNldDsKKwkJTGlzdAkJCSAgICppbmRleHBhdGhzOworCQlSZXN0 cmljdEluZm8JICAgKnJpbmZvMSA9IE5VTEw7CisJCUV4cHIJCQkgICAqY2xhdXNlOworCQlB cnJheVR5cGUJCSAgICphcnJheXZhbCA9IE5VTEw7CisJCUFycmF5RXhwcgkJICAgKmFyciA9 IE5VTEw7CisJCUNvbnN0CQkJICAgKmFycmF5Y29uc3Q7CisJCVNjYWxhckFycmF5T3BFeHBy ICAqZGVzdDsKKworCQlwZCA9IChQcmVkaWNhdGVzRGF0YSAqKSBsZmlyc3QobGMpOworCQlp ZiAocGQtPmVsZW1zID09IE5JTCkKKwkJCS8qIFRoZSBpbmRleCBkb2Vzbid0IHBhcnRpY2lw YXRlIGluIHRoaXMgb3BlcmF0aW9uICovCisJCQljb250aW51ZTsKKworCQkvKiBNYWtlIHVw IG5ldyBhcnJheSAqLworCQlhcnJheWNvbnN0ID0gbHNlY29uZF9ub2RlKENvbnN0LCBzYW9w LT5hcmdzKTsKKwkJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAoYXJyYXljb25zdC0+ Y29uc3R2YWx1ZSk7CisJCWFyciA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisJCWFyci0+YXJy YXlfY29sbGlkID0gYXJyYXljb25zdC0+Y29uc3Rjb2xsaWQ7CisJCWFyci0+YXJyYXlfdHlw ZWlkID0gYXJyYXljb25zdC0+Y29uc3R0eXBlOworCQlhcnItPmVsZW1lbnRfdHlwZWlkID0g YXJyYXl2YWwtPmVsZW10eXBlOworCQlhcnItPmVsZW1lbnRzID0gcGQtPmVsZW1zOworCQlh cnItPmxvY2F0aW9uID0gLTE7CisJCWFyci0+bXVsdGlkaW1zID0gZmFsc2U7CisKKwkJLyog Q29tcG9zZSBuZXcgU0FPUCwgcGFydGlhbGx5IGNvdmVyaW5nIHRoZSBzb3VyY2Ugb25lICov CisJCWRlc3QgPSBtYWtlTm9kZShTY2FsYXJBcnJheU9wRXhwcik7CisJCW1lbWNweShkZXN0 LCBzYW9wLCBzaXplb2YoU2NhbGFyQXJyYXlPcEV4cHIpKTsKKwkJZGVzdC0+YXJncyA9IGxp c3RfbWFrZTIobGluaXRpYWwoc2FvcC0+YXJncyksIGFycik7CisJCWNsYXVzZSA9IChFeHBy ICopIGVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUocm9vdCwgKE5vZGUgKikgZGVzdCk7CisK KwkJLyoKKwkJICogQ3JlYXRlIG5ldyBSZXN0cmljdEluZm8uIEl0IG1heWJlIG1vcmUgaGVh dnkgdGhhbiBqdXN0IGNvcHkgbm9kZSwKKwkJICogYnV0IHJlbWVtYmVyIHNvbWUgaW50ZXJu YWxzOiB0aGUgc2VyaWFsIG51bWJlciwgc2VsZWN0aXZpdHkKKwkJICogY2FjaGUgZXRjLgor CQkgKi8KKwkJcmluZm8xID0gbWFrZV9yZXN0cmljdGluZm8ocm9vdCwgY2xhdXNlLAorCQkJ CQkJCQkgICByaW5mby0+aXNfcHVzaGVkX2Rvd24sCisJCQkJCQkJCSAgIHJpbmZvLT5oYXNf Y2xvbmUsCisJCQkJCQkJCSAgIHJpbmZvLT5pc19jbG9uZSwKKwkJCQkJCQkJICAgcmluZm8t PnBzZXVkb2NvbnN0YW50LAorCQkJCQkJCQkgICByaW5mby0+c2VjdXJpdHlfbGV2ZWwsCisJ CQkJCQkJCSAgIHJpbmZvLT5yZXF1aXJlZF9yZWxpZHMsCisJCQkJCQkJCSAgIHJpbmZvLT5p bmNvbXBhdGlibGVfcmVsaWRzLAorCQkJCQkJCQkgICByaW5mby0+b3V0ZXJfcmVsaWRzKTsK KworCQlpbmRleCA9IGxpc3RfbnRoKHJlbC0+aW5kZXhsaXN0LCBwZC0+aWQpOworCQlBc3Nl cnQocHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWQsIGxpc3RfbWFrZTEocmlu Zm8xKSwgdHJ1ZSkpOworCisJCS8qIEV4Y2x1ZGluZyBwYXJ0aWFsIGluZGV4ZXMgd2l0aCBw cmVkT0sgd2UgbWFrZSB0aGlzIHN0YXRlbWVudCBmYWxzZSAqLworCQlBc3NlcnQoIXByZWRp Y2F0ZV9pbXBsaWVkX2J5KGluZGV4LT5pbmRwcmVkLCBvdGhlcl9jbGF1c2VzLCBmYWxzZSkp OworCisJCS8qIFRpbWUgdG8gZ2VuZXJhdGUgaW5kZXggcGF0aHMgKi8KKworCQlNZW1TZXQo JmNsYXVzZXNldCwgMCwgc2l6ZW9mKGNsYXVzZXNldCkpOworCQltYXRjaF9jbGF1c2VzX3Rv X2luZGV4KHJvb3QsIGxpc3RfbWFrZTEocmluZm8xKSwgaW5kZXgsICZjbGF1c2VzZXQpOwor CQltYXRjaF9jbGF1c2VzX3RvX2luZGV4KHJvb3QsIG90aGVyX2NsYXVzZXMsIGluZGV4LCAm Y2xhdXNlc2V0KTsKKworCQkvKiBQcmVkaWNhdGUgaGFzIGZvdW5kIGFscmVhZHkuIFNvLCBp dCBpcyBvayBmb3IgdGhlIGVtcHR5IG1hdGNoICovCisKKwkJaW5kZXhwYXRocyA9IGJ1aWxk X2luZGV4X3BhdGhzKHJvb3QsIHJlbCwKKwkJCQkJCQkJCSAgIGluZGV4LCAmY2xhdXNlc2V0 LAorCQkJCQkJCQkJICAgdHJ1ZSwKKwkJCQkJCQkJCSAgIFNUX0JJVE1BUFNDQU4sCisJCQkJ CQkJCQkgICBOVUxMLAorCQkJCQkJCQkJICAgTlVMTCk7CisJCUFzc2VydChpbmRleHBhdGhz ICE9IE5JTCk7CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBpbmRleHBhdGhzKTsKKwl9 CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEFuYWx5c2UgaW5jb21pbmcgU0FPUCBu b2RlIHRvIGNvdmVyIGl0IGJ5IHBhcnRpYWwgaW5kZXhlcy4KKyAqCisgKiBUaGUgcmV0dXJu aW5nIHBhdGhsaXN0IG11c3QgYmUgQU5EZWQgdG8gdGhlIGZpbmFsIEJpdG1hcFNjYW4gcGF0 aC4KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIE5VTEwgd2hlbiBhbiBhcnJheSBlbGVtZW50 IGNhbm5vdCBiZSBmaXR0ZWQgd2l0aCBzb21lCisgKiBwYXJ0aWFsIGluZGV4LiBUaGUgUmF0 aW9uYWxlIGZvciBzdWNoIGFuIG9wZXJhdGlvbiBpcyB0aGF0IHdoZW4gc2NoZW1hCisgKiBj b250YWlucyBtYW55IHBhcnRpYWwgaW5kZXhlcywgdGhlIFNBT1AgY2xhdXNlIG1heSBiZSBl ZmZlY3RpdmVseSBmdWxmaWxsZWQKKyAqIGJ5IGFwcGVuZGluZyByZXN1bHRzIG9mIHNjYW5u aW5nIHNvbWUgbWluaW1hbCBzZXQgb2YgdGlueSBwYXJ0aWFsIGluZGV4ZXMuCisgKgorICog V29ya2luZyBqb2ludGx5IHdpdGggdGhlIFRyYW5zZm9ybU9yRXhwclRvQU5ZIHJvdXRpbmUs IGl0IHByb3ZpZGVzIGEgdXNlcgorICogd2l0aCBzb21lIHNvcnQgb2YgaW5kZXBlbmRlbmNl IG9mIHRoZSBxdWVyeSBwbGFuIGZyb20gdGhlIGFwcHJvYWNoIHRvIHdyaXRpbmcKKyAqIGFs dGVybmF0aXZlcyBmb3IgdGhlIHNhbWUgZW50aXR5IGluIHRoZSBXSEVSRSBzZWN0aW9uLgor ICovCitzdGF0aWMgTGlzdCAqCitnZW5lcmF0ZV9zYW9wX3BhdGhsaXN0KFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCSAgIFJlc3RyaWN0SW5mbyAqcmluZm8s IExpc3QgKmFsbF9jbGF1c2VzKQoreworCUxpc3QJICAgKnBhdGhsaXN0ID0gTklMOworCVBh dGgJICAgKmJpdG1hcHF1YWw7CisJTGlzdAkgICAqaW5kbGlzdDsKKwlMaXN0Q2VsbCAgICps YzsKKworCWlmICghZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uKQorCQlyZXR1cm4gTklMOwor CisJLyoKKwkgKiBXZSBtdXN0IGJlIGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25lIGluZGV4 IHRvIGVhY2ggZWxlbWVudCBvZgorCSAqIHRoZSBhcnJheSwgZWxzZSB3ZSBjYW4ndCB1c2Ug aXQuCisJICovCisJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9TQU9QKHJvb3QsIHJlbCwg cmluZm8sIGFsbF9jbGF1c2VzKTsKKwlpZiAoaW5kbGlzdCA9PSBOSUwpCisJCXJldHVybiBO SUw7CisKKwkvKgorCSAqIE9LLCBwaWNrIHRoZSBtb3N0IHByb21pc2luZyBBTkQgY29tYmlu YXRpb24sIGFuZCBhZGQgaXQgdG8KKwkgKiBwYXRobGlzdC4KKwkgKi8KKwlmb3JlYWNoIChs YywgaW5kbGlzdCkKKwl7CisJCUxpc3QgKnBsaXN0ID0gbGZpcnN0X25vZGUoTGlzdCwgbGMp OworCisJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0bWFwX2FuZChyb290LCByZWwsIHBsaXN0 KTsKKwkJcGF0aGxpc3QgPSBsYXBwZW5kKHBhdGhsaXN0LCBiaXRtYXBxdWFsKTsKKwl9CisK KwlyZXR1cm4gcGF0aGxpc3Q7Cit9CisKIC8qCiAgKiBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0 aHMKLSAqCQlMb29rIHRocm91Z2ggdGhlIGxpc3Qgb2YgY2xhdXNlcyB0byBmaW5kIE9SIGNs YXVzZXMsIGFuZCBnZW5lcmF0ZQotICoJCWEgQml0bWFwT3JQYXRoIGZvciBlYWNoIG9uZSB3 ZSBjYW4gaGFuZGxlIHRoYXQgd2F5LiAgUmV0dXJuIGEgbGlzdAotICoJCW9mIHRoZSBnZW5l cmF0ZWQgQml0bWFwT3JQYXRocy4KKyAqCQlMb29rIHRocm91Z2ggdGhlIGxpc3Qgb2YgY2xh dXNlcyB0byBmaW5kIE9SIGFuZCBTQU9QIGNsYXVzZXMsIGFuZAorICoJCUVhY2ggc2FvcCBj bGF1c2UgYXJlIHNwbGl0dGVkIHRvIGJlIGNvdmVyZWQgYnkgcGFydGlhbCBpbmRleGVzLgor ICoJCWdlbmVyYXRlIGEgQml0bWFwT3JQYXRoIGZvciBlYWNoIG9uZSB3ZSBjYW4gaGFuZGxl IHRoYXQgd2F5LgorICoJCVJldHVybiBhIGxpc3Qgb2YgdGhlIGdlbmVyYXRlZCBCaXRtYXBP clBhdGhzLgogICoKICAqIG90aGVyX2NsYXVzZXMgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwg Y2xhdXNlcyB0aGF0IGNhbiBiZSBhc3N1bWVkIHRydWUKICAqIGZvciB0aGUgcHVycG9zZSBv ZiBnZW5lcmF0aW5nIGluZGV4cXVhbHMsIGJ1dCBhcmUgbm90IHRvIGJlIHNlYXJjaGVkIGZv cgpAQCAtMTI0Nyw2OCArMTQyNSw5OSBAQCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlmb3JlYWNoKGxjLCBjbGF1c2Vz KQogCXsKIAkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxmaXJzdF9ub2RlKFJlc3RyaWN0SW5m bywgbGMpOwotCQlMaXN0CSAgICpwYXRobGlzdDsKKwkJTGlzdAkgICAqcGF0aGxpc3QgPSBO SUw7CiAJCVBhdGgJICAgKmJpdG1hcHF1YWw7CiAJCUxpc3RDZWxsICAgKmo7CiAKLQkJLyog SWdub3JlIFJlc3RyaWN0SW5mb3MgdGhhdCBhcmVuJ3QgT1JzICovCi0JCWlmICghcmVzdHJp Y3Rpb25faXNfb3JfY2xhdXNlKHJpbmZvKSkKKwkJaWYgKHJlc3RyaWN0aW9uX2lzX3Nhb3Bf Y2xhdXNlKHJpbmZvKSkKKwkJeworCQkJcGF0aGxpc3QgPSBnZW5lcmF0ZV9zYW9wX3BhdGhs aXN0KHJvb3QsIHJlbCwgcmluZm8sCisJCQkJCQkJCQkJCSAgYWxsX2NsYXVzZXMpOworCQl9 CisJCWVsc2UgaWYgKCFyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmluZm8pKQorCQkJLyog SWdub3JlIFJlc3RyaWN0SW5mb3MgdGhhdCBhcmVuJ3QgT1JzICovCiAJCQljb250aW51ZTsK LQotCQkvKgotCQkgKiBXZSBtdXN0IGJlIGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25lIGlu ZGV4IHRvIGVhY2ggb2YgdGhlIGFybXMgb2YKLQkJICogdGhlIE9SLCBlbHNlIHdlIGNhbid0 IHVzZSBpdC4KLQkJICovCi0JCXBhdGhsaXN0ID0gTklMOwotCQlmb3JlYWNoKGosICgoQm9v bEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJncykKKwkJZWxzZQogCQl7Ci0JCQlOb2Rl CSAgICpvcmFyZyA9IChOb2RlICopIGxmaXJzdChqKTsKLQkJCUxpc3QJICAgKmluZGxpc3Q7 Ci0KLQkJCS8qIE9SIGFyZ3VtZW50cyBzaG91bGQgYmUgQU5EcyBvciBzdWItUmVzdHJpY3RJ bmZvcyAqLwotCQkJaWYgKGlzX2FuZGNsYXVzZShvcmFyZykpCisJCQkvKgorCQkJICogV2Ug bXVzdCBiZSBhYmxlIHRvIG1hdGNoIGF0IGxlYXN0IG9uZSBpbmRleCB0byBlYWNoIG9mIHRo ZSBhcm1zIG9mCisJCQkgKiB0aGUgT1IsIGVsc2Ugd2UgY2FuJ3QgdXNlIGl0LgorCQkJICov CisJCQlmb3JlYWNoKGosICgoQm9vbEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJncykK IAkJCXsKLQkJCQlMaXN0CSAgICphbmRhcmdzID0gKChCb29sRXhwciAqKSBvcmFyZyktPmFy Z3M7CisJCQkJTm9kZQkgICAqb3JhcmcgPSAoTm9kZSAqKSBsZmlyc3Qoaik7CisJCQkJTGlz dAkgICAqaW5kbGlzdDsKIAotCQkJCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9v dCwgcmVsLAotCQkJCQkJCQkJCQkgYW5kYXJncywKLQkJCQkJCQkJCQkJIGFsbF9jbGF1c2Vz KTsKKwkJCQkvKiBPUiBhcmd1bWVudHMgc2hvdWxkIGJlIEFORHMgb3Igc3ViLVJlc3RyaWN0 SW5mb3MgKi8KKwkJCQlpZiAoaXNfYW5kY2xhdXNlKG9yYXJnKSkKKwkJCQl7CisJCQkJCUxp c3QJICAgKmFuZGFyZ3MgPSAoKEJvb2xFeHByICopIG9yYXJnKS0+YXJnczsKIAotCQkJCS8q IFJlY3Vyc2UgaW4gY2FzZSB0aGVyZSBhcmUgc3ViLU9ScyAqLwotCQkJCWluZGxpc3QgPSBs aXN0X2NvbmNhdChpbmRsaXN0LAotCQkJCQkJCQkJICBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0 aHMocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCQkJICAgYW5kYXJncywKLQkJCQkJCQkJCQkJ CQkJCSAgIGFsbF9jbGF1c2VzKSk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJUmVzdHJp Y3RJbmZvICpyaSA9IGNhc3ROb2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpOwotCQkJCUxpc3QJ ICAgKm9yYXJnczsKKwkJCQkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9PUihyb290LCBy ZWwsCisJCQkJCQkJCQkJCQkgYW5kYXJncywKKwkJCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7 CiAKLQkJCQlBc3NlcnQoIXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaSkpOwotCQkJCW9y YXJncyA9IGxpc3RfbWFrZTEocmkpOworCQkJCQkvKiBSZWN1cnNlIGluIGNhc2UgdGhlcmUg YXJlIHN1Yi1PUnMgKi8KKwkJCQkJaW5kbGlzdCA9IGxpc3RfY29uY2F0KGluZGxpc3QsCisJ CQkJCQkJCQkJICBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMocm9vdCwgcmVsLAorCQkJCQkJ CQkJCQkJCQkJCSAgIGFuZGFyZ3MsCisJCQkJCQkJCQkJCQkJCQkJICAgYWxsX2NsYXVzZXMp KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJUmVzdHJpY3RJbmZvICpyaSA9IGNh c3ROb2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpOworCQkJCQlMaXN0CSAgICpvcmFyZ3M7CiAK LQkJCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09SKHJvb3QsIHJlbCwKLQkJCQkJCQkJ CQkJIG9yYXJncywKLQkJCQkJCQkJCQkJIGFsbF9jbGF1c2VzKTsKLQkJCX0KKwkJCQkJQXNz ZXJ0KCFyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmkpKTsKIAotCQkJLyoKLQkJCSAqIElm IG5vdGhpbmcgbWF0Y2hlZCB0aGlzIGFybSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0 aGlzIE9SCi0JCQkgKiBjbGF1c2UuCi0JCQkgKi8KLQkJCWlmIChpbmRsaXN0ID09IE5JTCkK LQkJCXsKLQkJCQlwYXRobGlzdCA9IE5JTDsKLQkJCQlicmVhazsKLQkJCX0KKwkJCQkJb3Jh cmdzID0gbGlzdF9tYWtlMShyaSk7CiAKLQkJCS8qCi0JCQkgKiBPSywgcGljayB0aGUgbW9z dCBwcm9taXNpbmcgQU5EIGNvbWJpbmF0aW9uLCBhbmQgYWRkIGl0IHRvCi0JCQkgKiBwYXRo bGlzdC4KLQkJCSAqLwotCQkJYml0bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3Qs IHJlbCwgaW5kbGlzdCk7Ci0JCQlwYXRobGlzdCA9IGxhcHBlbmQocGF0aGxpc3QsIGJpdG1h cHF1YWwpOworCQkJCQlpZiAocmVzdHJpY3Rpb25faXNfc2FvcF9jbGF1c2UocmkpKQorCQkJ CQl7CisJCQkJCQlMaXN0ICpwYXRoczsKKworCQkJCQkJcGF0aHMgPSBnZW5lcmF0ZV9zYW9w X3BhdGhsaXN0KHJvb3QsIHJlbCwgcmksCisJCQkJCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7 CisKKwkJCQkJCWlmIChwYXRocyAhPSBOSUwpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJ CQkgKiBBZGQgcGF0aHMgdG8gcGF0aGxpc3QgYW5kIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhl CisJCQkJCQkJICogbmV4dCBlbGVtZW50IG9mIHRoZSBPUiBjbGF1c2UuCisJCQkJCQkJICov CisJCQkJCQkJcGF0aGxpc3QgPSBsaXN0X2NvbmNhdChwYXRobGlzdCwgcGF0aHMpOworCQkJ CQkJCWNvbnRpbnVlOworCQkJCQkJfQorCisJCQkJCQkvKgorCQkJCQkJICogUGFzcyBkb3du IG91dCBvZiB0aGlzIGlmIGNvbnN0cnVjdGlvbjoKKwkJCQkJCSAqIElmIHNhb3AgaXNuJ3Qg Y292ZXJlZCBieSBwYXJ0aWFsIGluZGV4ZXMsIHRyeSB0bworCQkJCQkJICogYnVpbGQgc2Nh biBwYXRoIGZvciB0aGUgc2FvcCBhcyBhIHdob2xlLgorCQkJCQkJICovCisJCQkJCX0KKwor CQkJCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09SKHJvb3QsIHJlbCwKKwkJCQkJCQkJ CQkJCSBvcmFyZ3MsCisJCQkJCQkJCQkJCQkgYWxsX2NsYXVzZXMpOworCQkJCX0KKworCQkJ CS8qCisJCQkJICogSWYgbm90aGluZyBtYXRjaGVkIHRoaXMgYXJtLCB3ZSBjYW4ndCBkbyBh bnl0aGluZyB3aXRoIHRoaXMgT1IKKwkJCQkgKiBjbGF1c2UuCisJCQkJICovCisJCQkJaWYg KGluZGxpc3QgPT0gTklMKQorCQkJCXsKKwkJCQkJcGF0aGxpc3QgPSBOSUw7CisJCQkJCWJy ZWFrOworCQkJCX0KKworCQkJCS8qCisJCQkJICogT0ssIHBpY2sgdGhlIG1vc3QgcHJvbWlz aW5nIEFORCBjb21iaW5hdGlvbiwgYW5kIGFkZCBpdCB0bworCQkJCSAqIHBhdGhsaXN0Lgor CQkJCSAqLworCQkJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0bWFwX2FuZChyb290LCByZWws IGluZGxpc3QpOworCQkJCXBhdGhsaXN0ID0gbGFwcGVuZChwYXRobGlzdCwgYml0bWFwcXVh bCk7CisJCQl9CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcHJlZHRlc3QuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0 ZXN0LmMKaW5kZXggYzM3YjQxNmUyNC4uOGVkODBhNzhiNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0xMTIsNiArMTEyLDUyIEBAIHN0YXRpYyBPaWQJ Z2V0X2J0cmVlX3Rlc3Rfb3AoT2lkIHByZWRfb3AsIE9pZCBjbGF1c2Vfb3AsIGJvb2wgcmVm dXRlX2l0KTsKIHN0YXRpYyB2b2lkIEludmFsaWRhdGVPcHJQcm9vZkNhY2hlQ2FsbEJhY2so RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiAKIAorLyoKKyAq IENvdWxkIHRoaXMgQU5ZICgpIGV4cHJlc3Npb24gY2FuIGJlIHNwbGl0IGludG8gYSBzZXQg b2YgQU5ZcyBvdmVyIHBhcnRpYWwKKyAqIGluZGV4ZXM/IElmIHllcywgcmV0dXJuIHRoZXNl IHNhb3BzIGluIHRoZSBQcmVkaWNhdGVzRGF0YSBzdHJ1Y3R1cmUuCisgKi8KK2Jvb2wKK3Nh b3BfY292ZXJlZF9ieV9wcmVkaWNhdGVzKFNjYWxhckFycmF5T3BFeHByICpzYW9wLCBMaXN0 ICpwcmVkaWNhdGVfbGlzdHMpCit7CisJTGlzdENlbGwJCSAgICpsYzsKKwlQcmVkSXRlcklu Zm9EYXRhCWNsYXVzZV9pbmZvOworCWJvb2wJCQkJcmVzdWx0ID0gZmFsc2U7CisKKwlpZiAo cHJlZGljYXRlX2NsYXNzaWZ5KChOb2RlICopIHNhb3AsICZjbGF1c2VfaW5mbykgIT0gQ0xB U1NfT1IpCisJCXJldHVybiBmYWxzZTsKKworCWl0ZXJhdGVfYmVnaW4ocGl0ZW0sIChOb2Rl ICopIHNhb3AsIGNsYXVzZV9pbmZvKQorCXsKKwkJcmVzdWx0ID0gZmFsc2U7CisKKwkJZm9y ZWFjaChsYywgcHJlZGljYXRlX2xpc3RzKQorCQl7CisJCQlQcmVkaWNhdGVzRGF0YSAqcGQg PSAoUHJlZGljYXRlc0RhdGEgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKCFwcmVkaWNhdGVf aW1wbGllZF9ieV9yZWN1cnNlKHBpdGVtLCBwZC0+cHJlZGljYXRlLCBmYWxzZSkpCisJCQkJ Y29udGludWU7CisKKwkJCS8qIFByZWRpY2F0ZSBpcyBmb3VuZC4gQWRkIHRoZSBlbGVtIHRv IHRoZSBzYW9wIGNsYXVzZSAqLworCQkJQXNzZXJ0KElzQShwaXRlbSwgT3BFeHByKSk7CisK KwkJCS8qIEV4dHJhY3QgY29uc3RhbnQgZnJvbSB0aGUgZXhwcmVzc2lvbiAqLworCQkJcGQt PmVsZW1zID0gbGFwcGVuZChwZC0+ZWxlbXMsCisJCQkJCWNvcHlPYmplY3QobHNlY29uZF9u b2RlKENvbnN0LCAoKE9wRXhwciAqKSBwaXRlbSktPmFyZ3MpKSk7CisJCQlyZXN1bHQgPSB0 cnVlOworCQkJYnJlYWs7CisJCX0KKworCQlpZiAoIXJlc3VsdCkKKwkJCS8qCisJCQkgKiBU aGUgZWxlbWVudCBkb2Vzbid0IGZpdCBhbnkgaW5kZXguIEludGVycnVwdCB0aGUgcHJvY2Vz cyBpbW1lZGlhdGVseQorCQkJICovCisJCQlicmVhazsKKwl9CisJaXRlcmF0ZV9lbmQoY2xh dXNlX2luZm8pOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIHByZWRpY2F0ZV9p bXBsaWVkX2J5CiAgKgkgIFJlY3Vyc2l2ZWx5IGNoZWNrcyB3aGV0aGVyIHRoZSBjbGF1c2Vz IGluIGNsYXVzZV9saXN0IGltcGx5IHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3Jlc3RyaWN0aW5mby5jCmluZGV4IDBiNDA2ZTkzMzQuLjFkYWQxZGM2NTQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCkBAIC00MjEs NiArNDIxLDE5IEBAIHJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShSZXN0cmljdEluZm8gKnJl c3RyaWN0aW5mbykKIAkJcmV0dXJuIGZhbHNlOwogfQogCitib29sCityZXN0cmljdGlvbl9p c19zYW9wX2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbykKK3sKKwlpZiAocmVz dHJpY3RpbmZvLT5jbGF1c2UgJiYgSXNBKHJlc3RyaWN0aW5mby0+Y2xhdXNlLCBTY2FsYXJB cnJheU9wRXhwcikpCisJeworCQlTY2FsYXJBcnJheU9wRXhwciAqc2FvcCA9IChTY2FsYXJB cnJheU9wRXhwciAqKSByZXN0cmljdGluZm8tPmNsYXVzZTsKKworCQlpZiAoc2FvcC0+dXNl T3IpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICog cmVzdHJpY3Rpb25faXNfc2VjdXJlbHlfcHJvbW90YWJsZQogICoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXpl ci9vcHRpbWl6ZXIuaAppbmRleCAzNWFiNTc3NTAxLi43MmNmODhkY2JkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL29wdGltaXplci5oCkBAIC0xNjAsNiArMTYwLDIyIEBAIGV4dGVybiBMaXN0 ICpleHBhbmRfZnVuY3Rpb25fYXJndW1lbnRzKExpc3QgKmFyZ3MsIGJvb2wgaW5jbHVkZV9v dXRfYXJndW1lbnRzLAogCiAvKiBpbiB1dGlsL3ByZWR0ZXN0LmM6ICovCiAKKy8qCisgKiBD b250YWlucyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZXh0cmFjdCBmcm9tIHNhb3AgYSBzZXQg b2YgZWxlbWVudHMgd2hpY2ggY2FuCisgKiBiZSBjb3ZlcmVkIGJ5IHRoZSBwYXJ0aWFsIGlu ZGV4OgorICogaWQgLSBjYWxsZXIncyBpZGVudGlmaWNhdGlvbiBvZiB0aGUgaW5kZXguCisg KiBwcmVkaWNhdGUgLSBwcmVkaWNhdGUgZXhwcmVzc2lvbiBvZiB0aGUgaW5kZXgKKyAqIGVs ZW1zIC0gcmV0dXJuaW5nIGxpc3Qgb2YgYXJyYXkgZWxlbWVudHMgd2hpY2ggY29ycmVzcG9u ZHMgdG8gdGhpcyBwcmVkaWNhdGUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUHJlZGljYXRlc0Rh dGEKK3sKKwlpbnQJCWlkOworCU5vZGUgICAqcHJlZGljYXRlOworCUxpc3QgICAqZWxlbXM7 Cit9IFByZWRpY2F0ZXNEYXRhOworCitleHRlcm4gYm9vbCBzYW9wX2NvdmVyZWRfYnlfcHJl ZGljYXRlcyhTY2FsYXJBcnJheU9wRXhwciAqc2FvcCwKKwkJCQkJCQkJCSAgIExpc3QgKnBy ZWRpY2F0ZV9saXN0cyk7CiBleHRlcm4gYm9vbCBwcmVkaWNhdGVfaW1wbGllZF9ieShMaXN0 ICpwcmVkaWNhdGVfbGlzdCwgTGlzdCAqY2xhdXNlX2xpc3QsCiAJCQkJCQkJCSBib29sIHdl YWspOwogZXh0ZXJuIGJvb2wgcHJlZGljYXRlX3JlZnV0ZWRfYnkoTGlzdCAqcHJlZGljYXRl X2xpc3QsIExpc3QgKmNsYXVzZV9saXN0LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3Jlc3RyaWN0aW5mby5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jlc3RyaWN0 aW5mby5oCmluZGV4IDFiNDJjODMyYzUuLjJjZDVmYmY5NDMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL29wdGltaXplci9yZXN0cmljdGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcmVzdHJpY3RpbmZvLmgKQEAgLTM0LDYgKzM0LDcgQEAgZXh0ZXJuIFJlc3RyaWN0 SW5mbyAqbWFrZV9yZXN0cmljdGluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkg ICBSZWxpZHMgb3V0ZXJfcmVsaWRzKTsKIGV4dGVybiBSZXN0cmljdEluZm8gKmNvbW11dGVf cmVzdHJpY3RpbmZvKFJlc3RyaWN0SW5mbyAqcmluZm8sIE9pZCBjb21tX29wKTsKIGV4dGVy biBib29sIHJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0 aW5mbyk7CitleHRlcm4gYm9vbCByZXN0cmljdGlvbl9pc19zYW9wX2NsYXVzZShSZXN0cmlj dEluZm8gKnJlc3RyaWN0aW5mbyk7CiBleHRlcm4gYm9vbCByZXN0cmljdGlvbl9pc19zZWN1 cmVseV9wcm9tb3RhYmxlKFJlc3RyaWN0SW5mbyAqcmVzdHJpY3RpbmZvLAogCQkJCQkJCQkJ CQkgICBSZWxPcHRJbmZvICpyZWwpOwogZXh0ZXJuIExpc3QgKmdldF9hY3R1YWxfY2xhdXNl cyhMaXN0ICpyZXN0cmljdGluZm9fbGlzdCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nl bGVjdC5vdXQKaW5kZXggMzNhNmRjZWIwZS4uODEzOTllYzViMSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc2VsZWN0Lm91dApAQCAtOTA3LDYgKzkwNywyODggQEAgc2VsZWN0IHVu aXF1ZTEsIHVuaXF1ZTIgZnJvbSBvbmVrMgogICAgICAgIDAgfCAgICAgOTk4CiAoMiByb3dz KQogCitTRVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4g VE8gb2ZmOyAtLSBPbmx5IEJpdG1hcFNjYW4gaXMgYSBzdWJqZWN0IG1hdHRlciBoZXJlCitT RVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gJ29mZic7CitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSA9ICdBJyBP UiBzdHJpbmd1MSA9ICdKJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIK KyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKHN0 cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgICAgICAgIEZpbHRlcjogKChzdHJpbmd1MSA9ICdB Jzo6bmFtZSkgT1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgICAgICAgIC0+ICBCaXRt YXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3Uy X3BydGwKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9z dHUxX3BydGwKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9 ICdKJzo6bmFtZSkKKyg4IHJvd3MpCisKKy0tIFdpdGhvdXQgdGhlIHRyYW5zZm9ybWF0aW9u IG9ubHkgc2Vxc2NhbiBwb3NzaWJsZSBoZXJlCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMiA8IDEgQU5E IHN0cmluZ3UxIElOICgnQScsJ0onKSBBTkQgc3RyaW5ndTEgPCAnWic7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsyCisgICBGaWx0ZXI6ICgodW5p cXVlMiA8IDEpIEFORCAoc3RyaW5ndTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpIEFORCAo c3RyaW5ndTEgPCAnWic6Om5hbWUpKQorKDIgcm93cykKKworLS0gVXNlIHBhcnRpYWwgaW5k ZXhlcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIK K1dIRVJFIHN0cmluZ3UxIElOICgnQicsJ0onKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVu aXF1ZTEgPSAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICAgICAg ICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SICh1bmlxdWUxID0g MSkpCisgICAgICAgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSBBTlkgKCd7QixKfSc6Om5hbWVb XSkpIEFORCAoKHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBPUiAodW5pcXVlMSA9IDEpKSkKKyAg ICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodW5pcXVlMSA9IDEpCisoOCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEgT1Ig KHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRt YXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8IDEp IE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkK KyAgIEZpbHRlcjogKCh1bmlxdWUxIDwgMSkgT1IgKHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBP UiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHVuaXF1ZTEgPCAxKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1 MSA9ICdKJzo6bmFtZSkKKyg5IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBPUiB1 bmlxdWUyID0gUEkoKTo6aW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsyCisgICBGaWx0ZXI6ICgodW5pcXVlMSA9IDEp IE9SICh1bmlxdWUyID0gMykpCisoMiByb3dzKQorCitSRVNFVCBlbmFibGVfb3JfdHJhbnNm b3JtYXRpb247CistLSBPUiA8LT4gQU5ZIHRyYW5zZm9ybWF0aW9uIG11c3QgZmluZCBhIHBh dGggd2l0aCBwYXJ0aWFsIGluZGV4ZXMgc2NhbgorLS0gcmVnYXJkbGVzcyB0aGUgY2xhdXNl IHJlcHJlc2VudGF0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCop IEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSic7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIK KyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVb XSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpCisgICAgICAgICBGaWx0ZXI6IChzdHJp bmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0 bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gQU5ZICgn e0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91Ml9wcnRsCisoOCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCdKJyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIK KyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVb XSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpCisgICAgICAgICBGaWx0ZXI6IChzdHJp bmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0 bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gQU5ZICgn e0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91Ml9wcnRsCisoOCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25l azIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5h bWVbXSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpCisgICAgICAgICBGaWx0ZXI6IChz dHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXBP cgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFf cHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gQU5Z ICgne0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBvbmVrMl91Ml9wcnRsCisoOCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnKSBPUiBz dHJpbmd1MSBJTiAoJ0onKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3Ux ID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAg ICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKQorICAg ICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJvd3MpCisKKy0tIERv bid0IHNjYW4gcGFydGlhbCBpbmRleGVzIGJlY2F1c2Ugb2YgZXh0cmEgdmFsdWUuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJp bmd1MSBJTiAoJ0EnLCAnSicsICdDJyk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFNlcSBT Y2FuIG9uIG9uZWsyCisgICAgICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEos Q30nOjpuYW1lW10pKQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IHVuaXF1ZTIgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywgJ0EnKSBBTkQg KHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0EnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRt YXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6IChzdHJpbmd1MSA8ICdC Jzo6bmFtZSkKKyAgIEZpbHRlcjogKChzdHJpbmd1MSA9IEFOWSAoJ3tBfSc6Om5hbWVbXSkp IEFORCAoc3RyaW5ndTEgPSBBTlkgKCd7QSxBfSc6Om5hbWVbXSkpKQorICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg0IHJvd3MpCisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1 bmlxdWUyIDwgMSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICda JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAg SGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgoKHN0cmluZ3UxID0gQU5Z ICgne0p9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA8ICdaJzo6bmFtZSkpIE9SICgodW5p cXVlMiA8IDEpIEFORCAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKSkKKyAgIEZpbHRlcjogKCh1 bmlxdWUyIDwgMSkgQU5EIChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkpCisg ICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVr Ml9zdHUxX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc3RyaW5ndTEgPSBB TlkgKCd7Sn0nOjpuYW1lW10pKSBBTkQgKHN0cmluZ3UxIDwgJ1onOjpuYW1lKSkKKyAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA8IDEpCisoOCByb3dzKQorCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUg dW5pcXVlMSA9IDEgT1IgdW5pcXVlMSA9IFBJKCk6OmludGVnZXI7CisgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2Fu IG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUx ID0gMykpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVl MSA9IDEpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0 bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAzKQorKDcgcm93cykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00g b25lazIKK1dIRVJFIHVuaXF1ZTEgSU4gKDEsIFBJKCk6OmludGVnZXIpOyAtLSBUT0RPOiB3 aHkgaXQgaXMgZGlmZmVycyBmcm9tIHByZXZpb3VzIGV4YW1wbGU/CisgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Qml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAodW5pcXVlMSA9 IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91MV9wcnRsCisgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IEFOWSAo J3sxLDN9Jzo6aW50ZWdlcltdKSkKKyg0IHJvd3MpCisKKy0tIERvbid0IGFwcGx5IHRoZSBv cHRpbWl6YXRpb24gdG8gY2xhdXNlcywgY29udGFpbmluZyB2b2xhdGlsZSBmdW5jdGlvbnMK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25l azIKK1dIRVJFIHVuaXF1ZTEgPSAocmFuZG9tKCkqMik6OmludGVnZXIgT1IgdW5pcXVlMSA9 IChyYW5kb20oKSozKTo6aW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjog KCh1bmlxdWUxID0gKChyYW5kb20oKSAqICcyJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRl Z2VyKSBPUiAodW5pcXVlMSA9ICgocmFuZG9tKCkgKiAnMyc6OmRvdWJsZSBwcmVjaXNpb24p KTo6aW50ZWdlcikpCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg dW5pcXVlMixzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIElOICgocmFuZG9t KCkqMik6OmludGVnZXIsIChyYW5kb20oKSozKTo6aW50ZWdlcik7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsyCisg ICBGaWx0ZXI6ICh1bmlxdWUxID0gQU5ZIChBUlJBWVsoKHJhbmRvbSgpICogJzInOjpkb3Vi bGUgcHJlY2lzaW9uKSk6OmludGVnZXIsICgocmFuZG9tKCkgKiAnMyc6OmRvdWJsZSBwcmVj aXNpb24pKTo6aW50ZWdlcl0pKQorKDIgcm93cykKKworLS0gQ29tYmluZSBkaWZmZXJlbnQg c2FvcHMuIFNvZSBvZiB0aGVtIGRvZXNudCcgZml0IGEgc2V0IG9mIHBhcnRpYWwgaW5kZXhl cywKKy0tIGJ1dCBvdGhlciBmaXRzLgorLS0gVW5mb3J0dW5hdGVseSwgd2UgZG9uJ3QgY29t YmluZSBzYW9wIGFuZCBPUiBjbGF1c2VzIHNvIGZhci4KK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFCisgIHVuaXF1ZTEg SU4gKDEsMiwyMSkgQU5ECisgIChzdHJpbmd1MSBJTiAoJ0EnLCdKJykgT1IgdW5pcXVlMSBJ TiAoMyw0KSBPUiBzdHJpbmd1MSA9ICdKJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBv biBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFt ZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAoKHVuaXF1ZTEgPSBBTlkgKCd7 Myw0fSc6OmludGVnZXJbXSkpIEFORCAodW5pcXVlMSA9IEFOWSAoJ3sxLDIsMjF9Jzo6aW50 ZWdlcltdKSkpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFtZSkpCisgICBGaWx0ZXI6ICgodW5p cXVlMSA9IEFOWSAoJ3sxLDIsMjF9Jzo6aW50ZWdlcltdKSkgQU5EICgoc3RyaW5ndTEgPSBB TlkgKCd7QSxKfSc6Om5hbWVbXSkpIE9SICh1bmlxdWUxID0gQU5ZICgnezMsNH0nOjppbnRl Z2VyW10pKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKSkKKyAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtd KSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKCh1bmlxdWUxID0gQU5ZICgnezMsNH0nOjppbnRlZ2Vy W10pKSBBTkQgKHVuaXF1ZTEgPSBBTlkgKCd7MSwyLDIxfSc6OmludGVnZXJbXSkpKQorICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorKDExIHJvd3Mp CisKKy0tIENoZWNrIHJlY3Vyc2l2ZSBjb21iaW5hdGlvbiBvZiBPUiBhbmQgU0FPUCBleHBy ZXNzaW9ucworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3Ux IEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPCAxIE9SIChzdHJpbmd1MSA9ICdBJyBPUiBz dHJpbmd1MSA9ICdKJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRt YXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8IDEp IE9SIChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChzdHJpbmd1MSA8ICdC Jzo6bmFtZSkpCisgICBGaWx0ZXI6ICgodW5pcXVlMSA8IDEpIE9SIChzdHJpbmd1MSA9IEFO WSAoJ3tBLEp9Jzo6bmFtZVtdKSkpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMSA8IDEpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5n dTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIG9uZWsyX3UyX3BydGwKKyg5IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSAodW5pcXVlMSA8 IDEgT1Igc3RyaW5ndTEgSU4gKCdBJywnSicpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDog KCh1bmlxdWUxIDwgMSkgT1IgKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1Ig KHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUxIDwgMSkgT1Ig KHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKSkKKyAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxIDwgMSkKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpCisgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorKDkgcm93cykKKworLS0gQWx0 aG91Z2ggU0FPUCBkb2Vzbid0IGZpdCBwYXJ0aWFsIGluZGV4ZXMgZnVsbHksIHdlIGNhbiB1 c2UgYW5kZWQgT1IgY2xhdXNlCistLSB0byBzY2FuIGFub3RoZXIgY291cGxlIG9mIHBhcnRp YWwgaW5kZXhlcy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJTiAoJ0InLCdKJykgQU5EIChzdHJpbmd1MSA9ICdB JyBPUiB1bmlxdWUxID0gMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgor ICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAodW5p cXVlMSA9IDEpKQorICAgICAgICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gQU5ZICgne0IsSn0n OjpuYW1lW10pKSBBTkQgKChzdHJpbmd1MSA9ICdBJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPSAx KSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTEgPSAxKQorKDggcm93cykKKworUkVTRVQgZW5hYmxlX2luZGV4 c2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwogLS0KIC0tIFRlc3Qgc29tZSBjb3JuZXIg Y2FzZXMgdGhhdCBoYXZlIGJlZW4ga25vd24gdG8gY29uZnVzZSB0aGUgcGxhbm5lcgogLS0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zZWxlY3Quc3FsCmluZGV4IDAxOWYxZTc2NzMuLjIyM2Y1NWFmNGUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbApAQCAtMjM0LDYgKzIzNCw4OCBAQCBzZWxl Y3QgdW5pcXVlMSwgdW5pcXVlMiBmcm9tIG9uZWsyCiBzZWxlY3QgdW5pcXVlMSwgdW5pcXVl MiBmcm9tIG9uZWsyCiAgIHdoZXJlICh1bmlxdWUyID0gMTEgYW5kIHN0cmluZ3UxIDwgJ0In KSBvciB1bmlxdWUxID0gMDsKIAorU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBl bmFibGVfaW5kZXhzY2FuIFRPIG9mZjsgLS0gT25seSBCaXRtYXBTY2FuIGlzIGEgc3ViamVj dCBtYXR0ZXIgaGVyZQorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9ICdvZmYnOwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUg c3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSic7CistLSBXaXRob3V0IHRoZSB0cmFu c2Zvcm1hdGlvbiBvbmx5IHNlcXNjYW4gcG9zc2libGUgaGVyZQorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1 ZTIgPCAxIEFORCBzdHJpbmd1MSBJTiAoJ0EnLCdKJykgQU5EIHN0cmluZ3UxIDwgJ1onOwor LS0gVXNlIHBhcnRpYWwgaW5kZXhlcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gb25lazIKK1dIRVJFIHN0cmluZ3UxIElOICgnQicsJ0onKSBBTkQgKHN0 cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAxKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIDwgMSBP UiAoc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSicpOworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1 ZTEgPSAxIE9SIHVuaXF1ZTIgPSBQSSgpOjppbnRlZ2VyOworUkVTRVQgZW5hYmxlX29yX3Ry YW5zZm9ybWF0aW9uOworCistLSBPUiA8LT4gQU5ZIHRyYW5zZm9ybWF0aW9uIG11c3QgZmlu ZCBhIHBhdGggd2l0aCBwYXJ0aWFsIGluZGV4ZXMgc2NhbgorLS0gcmVnYXJkbGVzcyB0aGUg Y2xhdXNlIHJlcHJlc2VudGF0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAn Sic7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBX SEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCdKJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jyk7 CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVS RSBzdHJpbmd1MSBJTiAoJ0EnKSBPUiBzdHJpbmd1MSBJTiAoJ0onKTsKKworLS0gRG9uJ3Qg c2NhbiBwYXJ0aWFsIGluZGV4ZXMgYmVjYXVzZSBvZiBleHRyYSB2YWx1ZS4KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3Ux IElOICgnQScsICdKJywgJ0MnKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlx dWUyIEZST00gb25lazIKK1dIRVJFIHN0cmluZ3UxIElOICgnQScsICdBJykgQU5EIChzdHJp bmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdBJyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUyIDwg MSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICdaJzsKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitX SEVSRSB1bmlxdWUxID0gMSBPUiB1bmlxdWUxID0gUEkoKTo6aW50ZWdlcjsKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVS RSB1bmlxdWUxIElOICgxLCBQSSgpOjppbnRlZ2VyKTsgLS0gVE9ETzogd2h5IGl0IGlzIGRp ZmZlcnMgZnJvbSBwcmV2aW91cyBleGFtcGxlPworCistLSBEb24ndCBhcHBseSB0aGUgb3B0 aW1pemF0aW9uIHRvIGNsYXVzZXMsIGNvbnRhaW5pbmcgdm9sYXRpbGUgZnVuY3Rpb25zCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMixzdHJpbmd1MSBGUk9NIG9uZWsy CitXSEVSRSB1bmlxdWUxID0gKHJhbmRvbSgpKjIpOjppbnRlZ2VyIE9SIHVuaXF1ZTEgPSAo cmFuZG9tKCkqMyk6OmludGVnZXI7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5p cXVlMixzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIElOICgocmFuZG9tKCkq Mik6OmludGVnZXIsIChyYW5kb20oKSozKTo6aW50ZWdlcik7CisKKy0tIENvbWJpbmUgZGlm ZmVyZW50IHNhb3BzLiBTb2Ugb2YgdGhlbSBkb2VzbnQnIGZpdCBhIHNldCBvZiBwYXJ0aWFs IGluZGV4ZXMsCistLSBidXQgb3RoZXIgZml0cy4KKy0tIFVuZm9ydHVuYXRlbHksIHdlIGRv bid0IGNvbWJpbmUgc2FvcCBhbmQgT1IgY2xhdXNlcyBzbyBmYXIuCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgdW5pcXVlMixzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRQorICB1 bmlxdWUxIElOICgxLDIsMjEpIEFORAorICAoc3RyaW5ndTEgSU4gKCdBJywnSicpIE9SIHVu aXF1ZTEgSU4gKDMsNCkgT1Igc3RyaW5ndTEgPSAnSicpOworCistLSBDaGVjayByZWN1cnNp dmUgY29tYmluYXRpb24gb2YgT1IgYW5kIFNBT1AgZXhwcmVzc2lvbnMKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1 bmlxdWUxIDwgMSBPUiAoc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSicpOworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIK K1dIRVJFICh1bmlxdWUxIDwgMSBPUiBzdHJpbmd1MSBJTiAoJ0EnLCdKJykpOworLS0gQWx0 aG91Z2ggU0FPUCBkb2Vzbid0IGZpdCBwYXJ0aWFsIGluZGV4ZXMgZnVsbHksIHdlIGNhbiB1 c2UgYW5kZWQgT1IgY2xhdXNlCistLSB0byBzY2FuIGFub3RoZXIgY291cGxlIG9mIHBhcnRp YWwgaW5kZXhlcy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJTiAoJ0InLCdKJykgQU5EIChzdHJpbmd1MSA9ICdB JyBPUiB1bmlxdWUxID0gMSk7CisKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBl bmFibGVfc2Vxc2NhbjsKKwogLS0KIC0tIFRlc3Qgc29tZSBjb3JuZXIgY2FzZXMgdGhhdCBo YXZlIGJlZW4ga25vd24gdG8gY29uZnVzZSB0aGUgcGxhbm5lcgogLS0KZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggYzYwMjdjNTg4ZC4uYmFjNGUzYzJjOCAxMDA2NDQKLS0t IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIxNDMsNiArMjE0Myw3IEBAIFByZWRJdGVySW5m b0RhdGEKIFByZWRYYWN0TGlzdAogUHJlZGljYXRlTG9ja0RhdGEKIFByZWRpY2F0ZUxvY2tU YXJnZXRUeXBlCitQcmVkaWNhdGVzRGF0YQogUHJlZmV0Y2hCdWZmZXJSZXN1bHQKIFByZXBQ YXJhbGxlbFJlc3RvcmVQdHJUeXBlCiBQcmVwYXJlU3RtdAotLSAKMi40NC4wCgo= --------------0L03VTRPYN4hb3ZsetsoeCkJ--