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 1r65vv-00H989-5l for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Nov 2023 09:23:40 +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 1r65vt-00Gyed-Oo for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Nov 2023 09:23:37 +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 1r65vt-00GyeQ-68 for pgsql-hackers@lists.postgresql.org; Thu, 23 Nov 2023 09:23:37 +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 1r65vl-00800i-AQ for pgsql-hackers@postgresql.org; Thu, 23 Nov 2023 09:23:36 +0000 Received: from [10.10.20.83] (node-6zq.pool-101-109.dynamic.totinternet.net [101.109.35.102]) (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 2415DE2103F; Thu, 23 Nov 2023 12:23:23 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1700731407; bh=xJ3vflzRTg5piqyiT81GgD6di1ZdCyKPIxEYN095xcw=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=W4AmGPte76N2wpfExRJDUJXMsxg9GKuRXcBsZeUZeXxYwJUmQjVRdxV3hwjw5cw2L xkZE7lMaXfjb7Vg3w33v4eOHWxMyYUryqL5be7lrOXRIUmxFaPkK68V8zF70FeFN+L 50jBG3aJ3AyUGsGb34945rPMR1TmpuYBUxq+WPatT/nOk9bpfAOiiyMMrYGoKoeom5 W1ffFu8knS1XmcS64f6ZXXhPdxnF++pnNa5GWyOuZebxMUqRNMpJSnp1fYpw86pI7X 4tGPC0d0FaqBVLoxh7dA8zmyDW1BiTdXxtd9CPXJEKEcXrDPqsIz5syqGhYToRfGmh ep90wZR5lP3+Q== Content-Type: multipart/mixed; boundary="------------vajc60IdKa0e0mF4ZebzpDXk" Message-ID: <43ad8a48-b980-410d-a83c-5beebf82a4ed@postgrespro.ru> Date: Thu, 23 Nov 2023 16:23:20 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes To: Alena Rybakina , pgsql-hackers@postgresql.org Cc: Peter Geoghegan , Robert Haas , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Ranier Vilela , Tomas Vondra , Peter Eisentraut , Alexander Korotkov References: <567ED6CA.2040504@sigaev.ru> <89fb769c-7d45-f0c5-a9b3-b706c9661c57@postgrespro.ru> <668892c1-fb11-3a79-ce5e-1c194b7b3263@postgrespro.ru> <16a7e3aa-24c0-4986-8820-ea2857bd7b6b@postgrespro.ru> <421656a9-5df7-41bb-9d58-1c1edbd5dc3e@postgrespro.ru> <28c727ba-5260-42a8-88b0-4ecdeeca6ef8@postgrespro.ru> <4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru> <52f0d302-7963-452f-8c5a-f66d261514eb@postgrespro.ru> Content-Language: en-US From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: <52f0d302-7963-452f-8c5a-f66d261514eb@postgrespro.ru> 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. --------------vajc60IdKa0e0mF4ZebzpDXk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 21/11/2023 18:31, Alena Rybakina wrote: > Sorry, I lost your changesĀ  during the revision process. I returned > them. I raised the patch version just in case to run ci successfully. I think the usage of nodeToString for the generation of clause hash is too expensive and buggy. Also, in the code, you didn't resolve hash collisions. So, I've rewritten the patch a bit (see the attachment). One more thing: I propose to enable transformation by default at least for quick detection of possible issues. This code changes tests in many places. But, as I see it, it mostly demonstrates the positive effect of the transformation. -- regards, Andrei Lepikhov Postgres Professional --------------vajc60IdKa0e0mF4ZebzpDXk Content-Type: text/plain; charset=UTF-8; name="v11-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Disposition: attachment; filename="v11-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSA1MDcxZDAyNDI2YWMzNDMwZjRkZDYxYThhZDMyYzI4NDdiYTZmOGE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVGh1LCAyMyBOb3YgMjAyMyAxNjowMDoxMyArMDcw MApTdWJqZWN0OiBbUEFUQ0hdIFRyYW5zZm9ybSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Np b25zLgoKUmVwbGFjZSAoWD1OMSkgT1IgKFg9TjIpIC4uLiB3aXRoIFggPSBBTlkoTjEsIE4y KSBvbiB0aGUgcHJlbGltaW5hcnkgc3RhZ2Ugb2YKb3B0aW1pemF0aW9uIHdoZW4gd2UgYXJl IHN0aWxsIHdvcmtpbmcgd2l0aCBhIHRyZWUgZXhwcmVzc2lvbi4KU29tZXRpbWVzIGl0IGNh biBsZWFkIHRvIG5vdCBvcHRpbWFsIHBsYW4uIEJ1dCB3ZSB0aGluayBpdCBpcyBiZXR0ZXIg dG8gaGF2ZQphcnJheSBvZiBlbGVtZW50cyBpbnN0ZWFkIG9mIGEgbG90IG9mIE9SIGNsYXVz ZXMuIEhlcmUgaXMgYSByb29tIGZvciBmdXJ0aGVyCm9wdGltaXphdGlvbnMgb24gZGVjb21w b3NpbmcgdGhhdCBhcnJheSBpbnRvIG1vcmUgb3B0aW1hbCBwYXJ0cy4KLS0tCiBzcmMvYmFj a2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMgICAgICAgICAgfCAgMzAgKysKIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8IDI4NSArKysrKysr KysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAg ICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmggICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgICAgfCAxNDEgKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ny ZWF0ZV92aWV3Lm91dCAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Z3VjLm91dCAgICAgICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9pbmhlcml0Lm91dCAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pvaW4ub3V0ICAgICAgICAgICAgfCAgNjIgKysrLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IHwgMjE1ICsrKysrKysrKysrLS0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICB8ICAxOCArLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0ICAgICAgIHwgIDEyICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCAgICAgICAgfCAgIDMgKy0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgICAgICAgICB8ICAyMyAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgICAgIHwgIDMy ICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbCAgICAgICAgICAgICAgICAgfCAg MTAgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAgIHwg IDIyICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbCAgICAgICAgICAgICAg fCAgIDYgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAg IHwgICAyICsKIDIxIGZpbGVzIGNoYW5nZWQsIDgxNSBpbnNlcnRpb25zKCspLCA2NiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKaW5kZXggMjgx OTA3YTRkOC4uOTkyMDdhODY3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcXVl cnlqdW1ibGVmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVu Y3MuYwpAQCAtMTM1LDYgKzEzNSwzNiBAQCBKdW1ibGVRdWVyeShRdWVyeSAqcXVlcnkpCiAJ cmV0dXJuIGpzdGF0ZTsKIH0KIAorSnVtYmxlU3RhdGUgKgorSnVtYmxlRXhwcihFeHByICpl eHByLCB1aW50NjQgKnF1ZXJ5SWQpCit7CisJSnVtYmxlU3RhdGUgKmpzdGF0ZSA9IE5VTEw7 CisKKwlBc3NlcnQocXVlcnlJZCAhPSBOVUxMKTsKKworCWpzdGF0ZSA9IChKdW1ibGVTdGF0 ZSAqKSBwYWxsb2Moc2l6ZW9mKEp1bWJsZVN0YXRlKSk7CisKKwkvKiBTZXQgdXAgd29ya3Nw YWNlIGZvciBxdWVyeSBqdW1ibGluZyAqLworCWpzdGF0ZS0+anVtYmxlID0gKHVuc2lnbmVk IGNoYXIgKikgcGFsbG9jKEpVTUJMRV9TSVpFKTsKKwlqc3RhdGUtPmp1bWJsZV9sZW4gPSAw OworCWpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSA9IDMyOworCWpzdGF0ZS0+Y2xvY2F0 aW9ucyA9IChMb2NhdGlvbkxlbiAqKQorCQlwYWxsb2MoanN0YXRlLT5jbG9jYXRpb25zX2J1 Zl9zaXplICogc2l6ZW9mKExvY2F0aW9uTGVuKSk7CisJanN0YXRlLT5jbG9jYXRpb25zX2Nv dW50ID0gMDsKKwlqc3RhdGUtPmhpZ2hlc3RfZXh0ZXJuX3BhcmFtX2lkID0gMDsKKworCS8q IENvbXB1dGUgcXVlcnkgSUQgKi8KKwlfanVtYmxlTm9kZShqc3RhdGUsIChOb2RlICopIGV4 cHIpOworCSpxdWVyeUlkID0gRGF0dW1HZXRVSW50NjQoaGFzaF9hbnlfZXh0ZW5kZWQoanN0 YXRlLT5qdW1ibGUsCisJCQkJCQkJCQkJCQlqc3RhdGUtPmp1bWJsZV9sZW4sCisJCQkJCQkJ CQkJCQkwKSk7CisKKwlpZiAoKnF1ZXJ5SWQgPT0gVUlOVDY0Q09OU1QoMCkpCisJCSpxdWVy eUlkID0gVUlOVDY0Q09OU1QoMSk7CisKKwlyZXR1cm4ganN0YXRlOworfQorCiAvKgogICog RW5hYmxlcyBxdWVyeSBpZGVudGlmaWVyIGNvbXB1dGF0aW9uLgogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCmluZGV4IDY0YzU4MmMzNDQuLmQ3ODI2NDI3NzEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25v ZGVGdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCiAjaW5jbHVkZSAi b3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBhcnNlci9hbmFseXplLmgiCiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2FnZy5oIgpAQCAtNDMsNiArNDQsNyBAQAogCiAvKiBH VUMgcGFyYW1ldGVycyAqLwogYm9vbAkJVHJhbnNmb3JtX251bGxfZXF1YWxzID0gZmFsc2U7 Citib29sCQllbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSB0cnVlOwogCiAKIHN0YXRpYyBO b2RlICp0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4 cHIpOwpAQCAtOTksNiArMTAxLDI4NyBAQCBzdGF0aWMgRXhwciAqbWFrZV9kaXN0aW5jdF9v cChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wbmFtZSwKIHN0YXRpYyBOb2RlICptYWtl X251bGx0ZXN0X2Zyb21fZGlzdGluY3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJ CSBBX0V4cHIgKmRpc3RpbmN0YSwgTm9kZSAqYXJnKTsKIAordHlwZWRlZiBzdHJ1Y3QgT3JD bGF1c2VHcm91cEVudHJ5Cit7CisJTm9kZQkJICAgKm5vZGU7CisJTGlzdAkJICAgKmNvbnN0 czsKKwlPaWQJCQkJc2NhbGFyX3R5cGU7CisJT2lkCQkJCW9wbm87CisJTGlzdCAJCSAgICpl eHByczsKK30gT3JDbGF1c2VHcm91cEVudHJ5OworCit0eXBlZGVmIHN0cnVjdCBPckNsYXVz ZUdyb3VwRW50cmllcworeworCXVpbnQ2NAloYXNoa2V5OworCUxpc3QgICAqbGlzdDsKK30g T3JDbGF1c2VHcm91cEVudHJpZXM7CisKK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUJvb2xF eHByT3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sRXhwciAqZXhwcikKK3sKKwlMaXN0CQkJ CSAgICpvcl9saXN0ID0gTklMOworCUxpc3RDZWxsCQkJICAgKmxjOworCUhBU0hDVEwJCQkJ CWluZm87CisJSFRBQiAJCQkJICAgKm9yX2dyb3VwX2h0YWIgPSBOVUxMOworCWludCAJCQkJ CWxlbl9vcnMgPSBsaXN0X2xlbmd0aChleHByLT5hcmdzKTsKKwlIQVNIX1NFUV9TVEFUVVMJ CQloYXNoX3NlcTsKKwlPckNsYXVzZUdyb3VwRW50cmllcyAgICplbnRyaWVzOworCisJLyog SWYgdGhpcyBpcyBub3QgYW4gJ09SJyBleHByZXNzaW9uLCBza2lwIHRoZSB0cmFuc2Zvcm1h dGlvbiAqLworCWlmICghZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uIHx8IGV4cHItPmJvb2xv cCAhPSBPUl9FWFBSIHx8IGxlbl9vcnMgPCAyKQorCQlyZXR1cm4gdHJhbnNmb3JtQm9vbEV4 cHIocHN0YXRlLCAoQm9vbEV4cHIgKikgZXhwcik7CisKKwlNZW1TZXQoJmluZm8sIDAsIHNp emVvZihpbmZvKSk7CisJaW5mby5rZXlzaXplID0gc2l6ZW9mKHVpbnQ2NCk7CisJaW5mby5l bnRyeXNpemUgPSBzaXplb2YoT3JDbGF1c2VHcm91cEVudHJpZXMpOworCW9yX2dyb3VwX2h0 YWIgPSBoYXNoX2NyZWF0ZSgiT1IgR3JvdXBzIiwKKwkJCQkJCQkJbGVuX29ycywKKwkJCQkJ CQkJJmluZm8sCisJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCisJZm9yZWFj aChsYywgZXhwci0+YXJncykKKwl7CisJCU5vZGUJCQkJICAgKmFyZyA9IGxmaXJzdChsYyk7 CisJCU5vZGUJCQkJICAgKm9ycXVhbDsKKwkJTm9kZQkJCQkgICAqY29uc3RfZXhwcjsKKwkJ Tm9kZQkJCQkgICAqbmNvbnN0X2V4cHI7CisJCU9yQ2xhdXNlR3JvdXBFbnRyaWVzICAgKmVu dHJpZXM7CisJCU9yQ2xhdXNlR3JvdXBFbnRyeQkgICAqZW50cnkgPSBOVUxMOworCQlib29s CQkJCQlmb3VuZDsKKwkJdWludDY0CQkJCQloYXNoOworCisJCS8qIEF0IGZpcnN0LCB0cmFu c2Zvcm0gdGhlIGFyZyBhbmQgZXZhbHVhdGUgY29uc3RhbnQgZXhwcmVzc2lvbnMuICovCisJ CW9ycXVhbCA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgKE5vZGUgKikgYXJnKTsK KwkJb3JxdWFsID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCBvcnF1YWwsICJPUiIpOwor CQlvcnF1YWwgPSBldmFsX2NvbnN0X2V4cHJlc3Npb25zKE5VTEwsIG9ycXVhbCk7CisKKwkJ aWYgKCFJc0Eob3JxdWFsLCBPcEV4cHIpKQorCQl7CisJCQlvcl9saXN0ID0gbGFwcGVuZChv cl9saXN0LCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBEZXRl Y3QgdGhlIGNvbnN0YW50IHNpZGUgb2YgdGhlIGNsYXVzZS4gUmVjYWxsIG5vbi1jb25zdGFu dAorCQkgKiBleHByZXNzaW9uIGNhbiBiZSBtYWRlIG5vdCBvbmx5IHdpdGggVmFycywgYnV0 IGFsc28gd2l0aCBQYXJhbXMsCisJCSAqIHdoaWNoIGlzIG5vdCBib25kZWQgd2l0aCBhbnkg cmVsYXRpb24uIFRodXMsIHdlIGRldGVjdCB0aGUgY29uc3QKKwkJICogc2lkZSAtIGlmIGFu b3RoZXIgc2lkZSBpcyBjb25zdGFudCB0b28sIHRoZSBvcnF1YWwgY291bGRuJ3QgYmUKKwkJ ICogYW4gT3BFeHByLgorCQkgKiBHZXQgcG9pbnRlcnMgdG8gY29uc3RhbnQgYW5kIGV4cHJl c3Npb24gc2lkZXMgb2YgdGhlIHF1YWwuCisJCSAqLworCQlpZiAoSXNBKGdldF9sZWZ0b3Ao b3JxdWFsKSwgQ29uc3QpKQorCQl7CisJCQluY29uc3RfZXhwciA9IGdldF9yaWdodG9wKG9y cXVhbCk7CisJCQljb25zdF9leHByID0gZ2V0X2xlZnRvcChvcnF1YWwpOworCQl9CisJCWVs c2UgaWYgKElzQShnZXRfcmlnaHRvcChvcnF1YWwpLCBDb25zdCkpCisJCXsKKwkJCWNvbnN0 X2V4cHIgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQkJbmNvbnN0X2V4cHIgPSBnZXRfbGVm dG9wKG9ycXVhbCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlvcl9saXN0ID0gbGFwcGVuZChv cl9saXN0LCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoIW9wX21lcmdl am9pbmFibGUoKChPcEV4cHIgKikgb3JxdWFsKS0+b3BubywgZXhwclR5cGUobmNvbnN0X2V4 cHIpKSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgb3JxdWFsKTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJKHZvaWQpIEp1bWJsZUV4cHIoKEV4cHIgKikgbmNvbnN0 X2V4cHIsICZoYXNoKTsKKworCQkvKgorCQkqIEF0IHRoaXMgcG9pbnQgd2UgZGVmaW5pdGVs eSBoYXZlIGEgdHJhbnNmb3JtYWJsZSBjbGF1c2UuCisJCSogQ2xhc3NpZnkgaXQgYW5kIGFk ZCBpbnRvIHNwZWNpZmljIGdyb3VwIG9mIGNsYXVzZXMsIG9yIGNyZWF0ZSBuZXcKKwkJKiBn cm91cC4KKwkJKiBUT0RPOiB0byBtYW5hZ2UgY29tcGxleGl0eSBpbiB0aGUgY2FzZSBvZiBt YW55IGRpZmZlcmVudCBjbGF1c2VzCisJCSogKFgxPUMxKSBPUiAoWDI9QzIgT1IpIC4uLiAo WE4gPSBDTikgd2UgY291bGQgaW52ZW50IHNvbWV0aGluZworCQkqIGxpa2UgYSBoYXNoIHRh YmxlLiBCdXQgYWxzbyB3ZSBiZWxpZXZlLCB0aGF0IHRoZSBjYXNlIG9mIG1hbnkKKwkJKiBk aWZmZXJlbnQgdmFyaWFibGUgc2lkZXMgaXMgdmVyeSByYXJlLgorCQkqLworCQllbnRyaWVz ID0gaGFzaF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmhhc2gsIEhBU0hfRU5URVIsICZmb3Vu ZCk7CisKKwkJaWYgKHVubGlrZWx5KGZvdW5kKSkKKwkJeworCQkJTGlzdENlbGwgKmxjMTsK KworCQkJQXNzZXJ0KGVudHJpZXMtPmxpc3QgIT0gTlVMTCk7CisKKwkJCS8qCisJCQkgKiBU cnkgdG8gZmluZCB0aGUgc2FtZSBleHByZXNzaW9uIGluIHRoZSBsaXN0IG9mIGV4cHJlc3Np b25zIHdpdGgKKwkJCSAqIHRoZSBzYW1lIGhhc2ggdmFsdWUKKwkJCSAqLworCQkJZm9yZWFj aChsYzEsIGVudHJpZXMtPmxpc3QpCisJCQl7CisJCQkJT3JDbGF1c2VHcm91cEVudHJ5ICpl bGVtID0gKE9yQ2xhdXNlR3JvdXBFbnRyeSAqKSBsZmlyc3QobGMxKTsKKworCQkJCWlmIChl cXVhbChuY29uc3RfZXhwciwgZWxlbS0+bm9kZSkpCisJCQkJeworCQkJCQllbnRyeSA9IGVs ZW07CisJCQkJCWVudHJ5LT5jb25zdHMgPSBsYXBwZW5kKGVudHJ5LT5jb25zdHMsIGNvbnN0 X2V4cHIpOworCQkJCQllbnRyeS0+ZXhwcnMgPSBsYXBwZW5kKGVudHJ5LT5leHBycywgb3Jx dWFsKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJCQlpZiAoZW50cnkgIT0gTlVM TCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRoZSBjbGF1c2UgY2xhc3NpZmllZCBzdWNjZXNz ZnVsbHkgYW5kIGFkZGVkIGludG8gZXhpc3RlZAorCQkJCSAqIGNsYXVzZSBncm91cC4KKwkJ CQkgKi8KKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJZm91bmQgPSBmYWxzZTsKKwkJfQor CQllbHNlCisJCQkvKiBQcmVwYXJlIGZvciBhZGRpbmcgdG8gdGhlIGxpc3QgdGhlIGZpcnN0 IGVsZW1lbnQgKi8KKwkJCWVudHJpZXMtPmxpc3QgPSBOSUw7CisKKwkJaWYgKCFmb3VuZCkK KwkJeworCQkJQXNzZXJ0KGVudHJ5ID09IE5VTEwpOworCisJCQllbnRyeSA9IHBhbGxvYyhz aXplb2YoT3JDbGF1c2VHcm91cEVudHJ5KSk7CisJCQllbnRyeS0+bm9kZSA9IG5jb25zdF9l eHByOworCQkJZW50cnktPmNvbnN0cyA9IGxpc3RfbWFrZTEoY29uc3RfZXhwcik7CisJCQll bnRyeS0+ZXhwcnMgPSBsaXN0X21ha2UxKG9ycXVhbCk7CisJCQllbnRyaWVzLT5saXN0ID0g bGFwcGVuZChlbnRyaWVzLT5saXN0LCBlbnRyeSk7CisJCX0KKwl9CisKKwlpZiAobGlzdF9s ZW5ndGgob3JfbGlzdCkgPT0gbGVuX29ycykKKwl7CisJCS8qCisJCSogTm8gYW55IHRyYW5z Zm9ybWF0aW9ucyBwb3NzaWJsZSB3aXRoIHRoaXMgbGlzdCBvZiBhcmd1bWVudHMuIEhlcmUg d2UKKwkJKiBhbHJlYWR5IG1hZGUgYWxsIHVuZGVybHlpbmcgdHJhbnNmb3JtYXRpb25zLiBU aHVzLCBqdXN0IHJldHVybiB0aGUKKwkJKiB0cmFuc2Zvcm1lZCBib29sIGV4cHJlc3Npb24u CisJCSovCisJCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFiKTsKKwkJcmV0dXJuIChOb2Rl ICopIG1ha2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBleHByLT5sb2NhdGlvbik7CisJ fQorCisJaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIG9yX2dyb3VwX2h0YWIpOworCisJLyog TGV0J3MgY29udmVydCBlYWNoIGdyb3VwIG9mIGNsYXVzZXMgdG8gYW4gSU4gb3BlcmF0aW9u LiAqLworCisJLyoKKwkgKiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIGdyb3VwcyBhbmQgY29u dmVydCBlYWNoLCB3aGVyZSBudW1iZXIgb2YKKwkqIGNvbnN0cyBtb3JlIHRoYW4gMS4gdHJp dmlhbCBncm91cHMgbW92ZSB0byBPUi1saXN0IGFnYWluCisJKi8KKworCXdoaWxlICgoZW50 cmllcyA9IChPckNsYXVzZUdyb3VwRW50cmllcyAqKSBoYXNoX3NlcV9zZWFyY2goJmhhc2hf c2VxKSkgIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICpsYzE7CisKKwkJZm9yZWFjaChsYzEs IGVudHJpZXMtPmxpc3QpCisJCXsKKwkJCU9yQ2xhdXNlR3JvdXBFbnRyeSAqZ2VudHJ5ID0g KE9yQ2xhdXNlR3JvdXBFbnRyeSAqKSBsZmlyc3QobGMxKTsKKwkJCUxpc3QJCQkgICAqYWxs ZXhwcnM7CisJCQlPaWQJCQkJICAgIHNjYWxhcl90eXBlOworCQkJT2lkCQkJCQlhcnJheV90 eXBlOworCisJCQlBc3NlcnQobGlzdF9sZW5ndGgoZ2VudHJ5LT5jb25zdHMpID4gMCk7CisJ CQlBc3NlcnQobGlzdF9sZW5ndGgoZ2VudHJ5LT5leHBycykgPT0gbGlzdF9sZW5ndGgoZ2Vu dHJ5LT5jb25zdHMpKTsKKworCQkJaWYgKGxpc3RfbGVuZ3RoKGdlbnRyeS0+Y29uc3RzKSA9 PSAxKQorCQkJeworCQkJCS8qCisJCQkJICogT25seSBvbmUgZWxlbWVudCBpbiB0aGUgY2xh c3MuIFJldHVybiByaW5mbyBpbnRvIHRoZSBCb29sRXhwcgorCQkJCSAqIGFyZ3MgbGlzdCB1 bmNoYW5nZWQuCisJCQkJICovCisJCQkJbGlzdF9mcmVlKGdlbnRyeS0+Y29uc3RzKTsKKwkJ CQlvcl9saXN0ID0gbGlzdF9jb25jYXQob3JfbGlzdCwgZ2VudHJ5LT5leHBycyk7CisJCQkJ Y29udGludWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBEbyB0aGUgdHJhbnNmb3JtYXRpb24u CisJCQkgKgorCQkJICogRmlyc3Qgb2YgYWxsLCB0cnkgdG8gc2VsZWN0IGEgY29tbW9uIHR5 cGUgZm9yIHRoZSBhcnJheSBlbGVtZW50cy4KKwkJCSAqIE5vdGUgdGhhdCBzaW5jZSB0aGUg TEhTJyB0eXBlIGlzIGZpcnN0IGluIHRoZSBsaXN0LCBpdCB3aWxsIGJlCisJCQkgKiBwcmVm ZXJyZWQgd2hlbiB0aGVyZSBpcyBkb3VidCAoZWcsIHdoZW4gYWxsIHRoZSBSSFMgaXRlbXMg YXJlCisJCQkgKiB1bmtub3duIGxpdGVyYWxzKS4KKwkJCSAqCisJCQkgKiBOb3RlOiB1c2Ug bGlzdF9jb25jYXQgaGVyZSBub3QgbGNvbnMsIHRvIGF2b2lkIGRhbWFnaW5nIHJub252YXJz LgorCQkJICoKKwkJCSAqIEFzIGEgc291cmNlIG9mIGluc2lkZXMsIHVzZSBtYWtlX3NjYWxh cl9hcnJheV9vcCgpCisJCQkgKi8KKwkJCWFsbGV4cHJzID0gbGlzdF9jb25jYXQobGlzdF9t YWtlMShnZW50cnktPm5vZGUpLCBnZW50cnktPmNvbnN0cyk7CisJCQlzY2FsYXJfdHlwZSA9 IHNlbGVjdF9jb21tb25fdHlwZShOVUxMLCBhbGxleHBycywgTlVMTCwgTlVMTCk7CisKKwkJ CWlmIChzY2FsYXJfdHlwZSAhPSBSRUNPUkRPSUQgJiYgT2lkSXNWYWxpZChzY2FsYXJfdHlw ZSkpCisJCQkJYXJyYXlfdHlwZSA9IGdldF9hcnJheV90eXBlKHNjYWxhcl90eXBlKTsKKwkJ CWVsc2UKKwkJCQlhcnJheV90eXBlID0gSW52YWxpZE9pZDsKKworCQkJaWYgKGFycmF5X3R5 cGUgIT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE9LOiBjb2VyY2UgYWxs IHRoZSByaWdodC1oYW5kIG5vbi1WYXIgaW5wdXRzIHRvIHRoZSBjb21tb24KKwkJCQkgKiB0 eXBlIGFuZCBidWlsZCBhbiBBcnJheUV4cHIgZm9yIHRoZW0uCisJCQkJICovCisJCQkJTGlz dAkJCSAgICphZXhwcnMgPSBOSUw7CisJCQkJQXJyYXlFeHByCQkgICAqbmV3YSA9IE5VTEw7 CisJCQkJU2NhbGFyQXJyYXlPcEV4cHIgICpzYW9wZXhwciA9IE5VTEw7CisJCQkJTGlzdENl bGwgKmw7CisKKwkJCQlhZXhwcnMgPSBOSUw7CisKKwkJCQlmb3JlYWNoKGwsIGdlbnRyeS0+ Y29uc3RzKQorCQkJCXsKKwkJCQkJTm9kZQkgICAqcmV4cHIgPSAoTm9kZSAqKSBsZmlyc3Qo bCk7CisKKwkJCQkJcmV4cHIgPSBjb2VyY2VfdG9fY29tbW9uX3R5cGUocHN0YXRlLCByZXhw ciwKKwkJCQkJCQkJCQkJCXNjYWxhcl90eXBlLAorCQkJCQkJCQkJCQkJIklOIik7CisJCQkJ CWFleHBycyA9IGxhcHBlbmQoYWV4cHJzLCByZXhwcik7CisJCQkJfQorCisJCQkJbmV3YSA9 IG1ha2VOb2RlKEFycmF5RXhwcik7CisJCQkJLyogYXJyYXlfY29sbGlkIHdpbGwgYmUgc2V0 IGJ5IHBhcnNlX2NvbGxhdGUuYyAqLworCQkJCW5ld2EtPmVsZW1lbnRfdHlwZWlkID0gc2Nh bGFyX3R5cGU7CisJCQkJbmV3YS0+YXJyYXlfdHlwZWlkID0gYXJyYXlfdHlwZTsKKwkJCQlu ZXdhLT5tdWx0aWRpbXMgPSBmYWxzZTsKKwkJCQluZXdhLT5lbGVtZW50cyA9IGFleHByczsK KwkJCQluZXdhLT5sb2NhdGlvbiA9IC0xOworCisJCQkJc2FvcGV4cHIgPQorCQkJCQkoU2Nh bGFyQXJyYXlPcEV4cHIgKikKKwkJCQkJCW1ha2Vfc2NhbGFyX2FycmF5X29wKHBzdGF0ZSwK KwkJCQkJCQkJCQkJIGxpc3RfbWFrZTEobWFrZVN0cmluZygoY2hhciAqKSAiPSIpKSwKKwkJ CQkJCQkJCQkJIHRydWUsCisJCQkJCQkJCQkJCSBnZW50cnktPm5vZGUsCisJCQkJCQkJCQkJ CSAoTm9kZSAqKSBuZXdhLAorCQkJCQkJCQkJCQkgLTEpOworCisJCQkJb3JfbGlzdCA9IGxh cHBlbmQob3JfbGlzdCwgKHZvaWQgKikgc2FvcGV4cHIpOworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCS8qCisJCQkJICogVGhpcyBwYXJ0IHdvcmtzIG9uIGludGFycmF5IHRlc3QgKE9S IHRoZXJlIGlzIG1hZGUgb24KKwkJCQkgKiBlbGVtZW50cyBvZiBhIGN1c3RvbSB0eXBlKQor CQkJCSAqLworCQkJCWxpc3RfZnJlZShnZW50cnktPmNvbnN0cyk7CisJCQkJb3JfbGlzdCA9 IGxpc3RfY29uY2F0KG9yX2xpc3QsIGdlbnRyeS0+ZXhwcnMpOworCQkJfQorCQl9CisJCWxp c3RfZnJlZShlbnRyaWVzLT5saXN0KTsKKwkJZW50cmllcy0+bGlzdCA9IE5JTDsKKwkJaGFz aF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmVudHJpZXMtPmhhc2hrZXksIEhBU0hfUkVNT1ZF LCBOVUxMKTsKKwl9CisJaGFzaF9kZXN0cm95KG9yX2dyb3VwX2h0YWIpOworCisJLyogT25l IG1vcmUgdHJpY2s6IGFzc2VtYmxlIGNvcnJlY3QgY2xhdXNlICovCisJcmV0dXJuIChOb2Rl ICopICgobGlzdF9sZW5ndGgob3JfbGlzdCkgPiAxKSA/CisJCQkJCSBtYWtlQm9vbEV4cHIo T1JfRVhQUiwgb3JfbGlzdCwgZXhwci0+bG9jYXRpb24pIDoKKwkJCQkJIGxpbml0aWFsKG9y X2xpc3QpKTsKK30KIAogLyoKICAqIHRyYW5zZm9ybUV4cHIgLQpAQCAtMjEyLDcgKzQ5NSw3 IEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhw cikKIAkJCX0KIAogCQljYXNlIFRfQm9vbEV4cHI6Ci0JCQlyZXN1bHQgPSB0cmFuc2Zvcm1C b29sRXhwcihwc3RhdGUsIChCb29sRXhwciAqKSBleHByKTsKKwkJCXJlc3VsdCA9IHRyYW5z Zm9ybUJvb2xFeHByT3IocHN0YXRlLCAoQm9vbEV4cHIgKikgZXhwcik7CiAJCQlicmVhazsK IAogCQljYXNlIFRfRnVuY0NhbGw6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j CmluZGV4IGI3NjRlZjY5OTguLjJjYThhMjFjYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCkBAIC0xMDQ4LDYgKzEwNDgsMTYgQEAgc3RydWN0IGNvbmZpZ19ib29s IENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAog CX0sCisJeworCQl7ImVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiIsIFBHQ19VU0VSU0VULCBR VUVSWV9UVU5JTkdfT1RIRVIsCisJCQlnZXR0ZXh0X25vb3AoIlRyYW5zZm9ybSBhIHNlcXVl bmNlIG9mIE9SIGNsYXVzZXMgdG8gYW4gSU4gZXhwcmVzc2lvbi4iKSwKKwkJCWdldHRleHRf bm9vcCgiVGhlIHBsYW5uZXIgd2lsbCByZXBsYWNlIGNsYXVzZXMgbGlrZSAneD1jMSBPUiB4 PWMyIC4uIgorCQkJCQkJICJ0byB0aGUgY2xhdXNlICd4IElOIChjMSxjMiwuLi4pJyIpCisJ CX0sCisJCSZlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24sCisJCXRydWUsCisJCU5VTEwsIE5V TEwsIE5VTEwKKwl9LAogCXsKIAkJLyoKIAkJICogTm90IGZvciBnZW5lcmFsIHVzZSAtLS0g dXNlZCBieSBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIGFuZCBTRVQKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBlNDhjMDY2 YTViLi4yNmJlZTMwYWQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNzEsNiArMzcxLDcgQEAKICMgLSBQbGFubmVyIE1l dGhvZCBDb25maWd1cmF0aW9uIC0KIAogI2VuYWJsZV9hc3luY19hcHBlbmQgPSBvbgorI2Vu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uCiAjZW5hYmxlX2JpdG1hcHNjYW4gPSBvbgog I2VuYWJsZV9nYXRoZXJtZXJnZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBvbgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3F1ZXJ5anVtYmxlLmgKaW5kZXggMDc2OTA4MWM3YS4uNGFhYTMxYWE4MCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCkBAIC02NSw2ICs2NSw3IEBAIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgY29tcHV0ZV9xdWVyeV9pZDsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKkNsZWFu UXVlcnl0ZXh0KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBpbnQgKmxlbik7 CiBleHRlcm4gSnVtYmxlU3RhdGUgKkp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSk7CitleHRl cm4gSnVtYmxlU3RhdGUgKkp1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVyeUlk KTsKIGV4dGVybiB2b2lkIEVuYWJsZVF1ZXJ5SWQodm9pZCk7CiAKIGV4dGVybiBQR0RMTElN UE9SVCBib29sIHF1ZXJ5X2lkX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2VfZXhwci5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaApp bmRleCA3ZDM4Y2E3NWY3Li4zYTg3ZGUwMjg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2VfZXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHBy LmgKQEAgLTE3LDYgKzE3LDcgQEAKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBQ R0RMTElNUE9SVCBib29sIFRyYW5zZm9ybV9udWxsX2VxdWFsczsKK2V4dGVybiBQR0RMTElN UE9SVCBib29sIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIAogZXh0ZXJuIE5vZGUgKnRy YW5zZm9ybUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBQYXJzZUV4cHJL aW5kIGV4cHJLaW5kKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf aW5kZXgub3V0CmluZGV4IGFjZmQ5ZDFmNGYuLjNiYjRiYmNhNDggMTAwNjQ0Ci0tLSBhL3Ny 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 dXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOwpAQCAtMTg2MSwyOCArMTg5MywxMDEgQEAgU0VM RUNUICogRlJPTSB0ZW5rMQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0ZQogICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5k cmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDk5KSkpCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0g QU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhv dXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAo J3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0 aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVS RSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1Ig dGhvdXNhbmQgPSA0MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVu azEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50 aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkpIE9SICh0aG91c2FuZCA9IDQxKSkK KyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwz fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodGhvdXNhbmQgPSA0MSkKKyg4IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVu dGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0tLQorICAgIDEw CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKGh1bmRy ZWQgPSA0MikgQU5EICgodGVudGhvdXMgPCAyKSBPUiAodGhvdXNhbmQgPSBBTlkgKCd7NDIs OTl9Jzo6aW50ZWdlcltdKSkpKSBPUiAodGhvdXNhbmQgPSA0MSkpCisgICAgICAgICAtPiAg Qml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0ZW50aG91cyA8IDIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3Rl bnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0 MSkKKygxNCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBo dW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVu dGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0tLQorICAgIDIw CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVu ZHJlZCA9IDQyKSBBTkQgKCgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKSBP UiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltdKSkpKQogICAgICAgICAg LT4gIEJpdG1hcEFuZAogICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5k cmVkID0gNDIpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0g OTkpIEFORCAodGVudGhvdXMgPSAyKSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gOTkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9Jzo6 aW50ZWdlcltdKSkKICgxMSByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQot ICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0g OTkpOworICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKICBjb3VudCAK IC0tLS0tLS0KICAgICAxMAogKDEgcm93KQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3Jt YXRpb247CiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29s dW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfdmlldy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV92 aWV3Lm91dAppbmRleCA2MTgyNWVmN2Q0Li5iM2IxNjcwZmQ5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV92aWV3Lm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV92aWV3Lm91dApAQCAtMjE5Niw3ICsyMTk2LDcgQEAg c2VsZWN0IHBnX2dldF92aWV3ZGVmKCd0dDI2dicsIHRydWUpOwogICAgICB4ICsgKHkgKyB6 KSBBUyBjNiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICB4ICsgKHkgIyB6 KSBBUyBjNywgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICB4ID4geSBBTkQg KHkgPiB6IE9SIHggPiB6KSBBUyBjOCwgICAgICAgICAgICAgKwotICAgICB4ID4geSBPUiB5 ID4geiBBTkQgTk9UIHggPiB6IEFTIGM5LCAgICAgICAgICAgKworICAgICB4ID4geSBPUiB5 ID4geiBBTkQgeCA8PSB6IEFTIGM5LCAgICAgICAgICAgICAgKwogICAgICAoKHgsIHkpIDw+ IEFMTCAoIFZBTFVFUyAoMSwyKSwgKDMsNCkpKSBBUyBjMTAsKwogICAgICAoKHgsIHkpIDw9 IEFOWSAoIFZBTFVFUyAoMSwyKSwgKDMsNCkpKSBBUyBjMTEgKwogICAgIEZST00gKCBWQUxV RVMgKDEsMiwzKSkgdih4LCB5LCB6KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZ3VjLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dApp bmRleCAxMjdjOTUzMjk3Li4wZjJiMWIxNjIwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2d1Yy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9n dWMub3V0CkBAIC04NjEsNyArODYxLDggQEAgU0VMRUNUIG5hbWUgRlJPTSB0YWJfc2V0dGlu Z3NfZmxhZ3MKICAgICAgICAgICAgbmFtZSAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldAotKDEgcm93KQorIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbgorKDIgcm93cykKIAogLS0gUnVudGltZS1jb21wdXRl ZCBHVUNzIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBwcmVzZXQgY2F0ZWdvcnkuCiBTRUxFQ1Qg bmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5oZXJpdC5vdXQKaW5kZXggMGYxYWE4MzFmNi4uMTc4MTI1MDEyMiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0CkBAIC0yNTYwLDcgKzI1NjAsNyBAQCBleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbGlzdF9wYXJ0ZWQgd2hlcmUgYSA9ICdh Yicgb3IgYSBpbiAobnVsbCwgJ2NkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBwYXJ0X2FiX2NkIGxp c3RfcGFydGVkCi0gICBGaWx0ZXI6ICgoKGEpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkgT1IgKChh KTo6dGV4dCA9IEFOWSAoJ3tOVUxMLGNkfSc6OnRleHRbXSkpKQorICAgRmlsdGVyOiAoKChh KTo6dGV4dCA9IEFOWSAoJ3tOVUxMLGNkfSc6OnRleHRbXSkpIE9SICgoYSk6OnRleHQgPSAn YWInOjp0ZXh0KSkKICgyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBsaXN0X3BhcnRlZCB3aGVyZSBhID0gJ2FiJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pvaW4ub3V0CmluZGV4IDJjNzMyNzAxNDMuLmU5NTJlNTQwMWYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qb2luLm91dApAQCAtNDIxMCwxMCArNDIxMCwxMCBAQCBleHBsYWluIChj b3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgIChh LnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgogICAoKGEudW5pcXVlMiA9IDMg b3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAotICAg Sm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9S ICgoKGEudW5pcXVlMiA9IDMpIE9SIChhLnVuaXF1ZTIgPSA3KSkgQU5EIChiLmh1bmRyZWQg PSA0KSkpCisgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1 ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpIEFO RCAoYi5odW5kcmVkID0gNCkpKQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEg YgogICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAyKSBPUiAoaHVuZHJlZCA9 IDQpKQogICAgICAgICAgLT4gIEJpdG1hcE9yCkBAIC00MjIzLDE2ICs0MjIzLDY0IEBAIHNl bGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNCkKICAgIC0+ICBNYXRlcmlhbGl6ZQogICAg ICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQotICAgICAgICAgICAgICAg UmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1bmlx dWUyID0gNykpCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEp IE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSkKICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXBPcgogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDMpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkK KygxNyByb3dzKQorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBs YWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9u CisgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVl MiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICgoKGEu dW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgoYS51bmlxdWUyID0gQU5Z ICgnezMsN30nOjppbnRlZ2VyW10pKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1 bmlxdWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKKyAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAtPiAgTWF0 ZXJpYWxpemUKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKKyAg ICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIg PSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1h cE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSAxKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX3VuaXF1ZTIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh1bmlxdWUyID0gNykKLSgxOSByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCiso MTcgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBh IGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxIDwgMjAgb3IgYS51bmlxdWUxID0gMyBv ciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9 IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAor ICAgSm9pbiBGaWx0ZXI6ICgoYS51bmlxdWUxIDwgMjApIE9SICgoYS51bmlxdWUxID0gMSkg QU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6Omlu dGVnZXJbXSkpIEFORCAoYi5odW5kcmVkID0gNCkpIE9SIChhLnVuaXF1ZTEgPSAzKSkKKyAg IC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSBiCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKKyAgICAgICAgICAgICAgIFJlY2hl Y2sgQ29uZDogKCh1bmlxdWUxIDwgMjApIE9SICh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIg PSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpIE9SICh1bmlxdWUxID0gMykpCisgICAgICAg ICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodW5pcXVlMSA8IDIwKQorICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6 aW50ZWdlcltdKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodW5pcXVlMSA9IDMpCisoMTUgcm93cykKIAorUkVTRVQgZW5hYmxlX29yX3RyYW5z Zm9ybWF0aW9uOwogLS0KIC0tIHRlc3QgcGxhY2VtZW50IG9mIG1vdmFibGUgcXVhbHMgaW4g YSBwYXJhbWV0ZXJpemVkIGpvaW4gdHJlZQogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAppbmRleCA5YTRjNDhjMDU1Li4xNGEyNTRm YmE3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9w cnVuZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1 bmUub3V0CkBAIC04MiwyNSArODIsNDcgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsKICgyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7Ci0gICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBB cHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCi0gICAgICAgICBGaWx0ZXI6 ICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkKKyAgICAgICAgIEZp bHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKICAgIC0+ICBTZXEgU2NhbiBv biBscF9iYyBscF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAo YSA9ICdjJzo6YnBjaGFyKSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6 OmJwY2hhcltdKSkKICg1IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBBcHBlbmQKICAgIC0+ICBT ZXEgU2NhbiBvbiBscF9hZCBscF8xCi0gICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVM TCkgQU5EICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkpCisgICAg ICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgne2EsY30nOjpi cGNoYXJbXSkpKQogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKLSAgICAgICAgIEZp bHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0g J2MnOjpicGNoYXIpKSkKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQg KGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCiAoNSByb3dzKQogCitTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gbHAgd2hlcmUgYSA9ICdhJyBvciBhID0gJ2MnOworICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24g bHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFy W10pKQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKKyAgICAgICAgIEZpbHRlcjog KGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9 ICdhJyBvciBhID0gJ2MnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVy OiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSBJ UyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQorKDUgcm93 cykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwogICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTUxNSwxMCArNTM3LDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBybHAgd2hlcmUgYSA8PSAzMTsKICgyNyByb3dzKQogCiBleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3OwotICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNlcSBTY2FuIG9u IHJscDIgcmxwCi0gICBGaWx0ZXI6ICgoYSA9IDEpIE9SIChhID0gNykpCisgICBGaWx0ZXI6 IChhID0gQU5ZICgnezEsN30nOjppbnRlZ2VyW10pKQogKDIgcm93cykKIAogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsK QEAgLTU5NiwxMyArNjE4LDEzIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsKIAogLS0gd2hlcmUg Y2xhdXNlIGNvbnRyYWRpY3RzIHN1Yi1wYXJ0aXRpb24ncyBjb25zdHJhaW50CiBleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyMCBvciBhID0gNDA7 Ci0gICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBBcHBlbmQKICAgIC0+ICBTZXEgU2NhbiBv biBybHA0XzEgcmxwXzEKLSAgICAgICAgIEZpbHRlcjogKChhID0gMjApIE9SIChhID0gNDAp KQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQog ICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfMgotICAgICAgICAgRmlsdGVy OiAoKGEgPSAyMCkgT1IgKGEgPSA0MCkpCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgn ezIwLDQwfSc6OmludGVnZXJbXSkpCiAoNSByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBhID0gMjA7ICAgLyogZW1wdHkgKi8KQEAgLTY3 MSw2ICs2OTMsMTYzIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAg d2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0KICAgICAgICAgIEZp bHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkp KQogKDExIHJvd3MpCiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4 cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9 IDc7CisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJs cDIgcmxwCisgICBGaWx0ZXI6IChhID0gQU5ZICgnezEsN30nOjppbnRlZ2VyW10pKQorKDIg cm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID0gMSBvciBiID0gJ2FiJzsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHAxIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAn YWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAyIHJscF8yCisgICAgICAgICBG aWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMworICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBP UiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8x IHJscF80CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWIn Ojp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzUKKyAgICAgICAgIEZp bHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNl cSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBfNgorICAgICAgICAgRmlsdGVyOiAoKGEgPSAx KSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxw NV8xIHJscF83CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAn YWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzgKKyAg ICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQor ICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzEwIHJscF85CisgICAgICAgICBGaWx0 ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBybHBfZGVmYXVsdF8zMCBybHBfMTAKKyAgICAgICAgIEZpbHRlcjogKChhID0g MSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJs cF9kZWZhdWx0X251bGwgcmxwXzExCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgo Yik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVs dF9kZWZhdWx0IHJscF8xMgorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0 ZXh0ID0gJ2FiJzo6dGV4dCkpCisoMjUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMjAgYW5kIGEgPCAyNzsKKyAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRf MSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAyMCkgQU5EIChhIDwgMjcpKQorICAg LT4gIFNlcSBTY2FuIG9uIHJscDRfMiBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAy MCkgQU5EIChhIDwgMjcpKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjk7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJs cDRfZGVmYXVsdCBybHAKKyAgIEZpbHRlcjogKGEgPSAyOSkKKygyIHJvd3MpCisKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+PSAyOTsKKyAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscF8xCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5 KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfMSBybHBfMgorICAgICAgICAgRmlsdGVyOiAo YSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzMKKyAgICAg ICAgIEZpbHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRf MzAgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4g b24gcmxwX2RlZmF1bHRfZGVmYXVsdCBybHBfNQorICAgICAgICAgRmlsdGVyOiAoYSA+PSAy OSkKKygxMSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxw IHdoZXJlIGEgPCAxIG9yIChhID4gMjAgYW5kIGEgPCAyNSk7CisgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAg LT4gIFNlcSBTY2FuIG9uIHJscDEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhIDwgMSkg T1IgKChhID4gMjApIEFORCAoYSA8IDI1KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8x IHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA8IDEpIE9SICgoYSA+IDIwKSBBTkQgKGEg PCAyNSkpKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOworICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24g cmxwNF8xIHJscF8xCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6Omlu dGVnZXJbXSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF8yCisgICAg ICAgICBGaWx0ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCisoNSByb3dz KQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBhID0g MjA7ICAgLyogZW1wdHkgKi8KKyAgICAgICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxz ZQorKDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3 aGVyZSBhID4gMSBhbmQgYSA9IDEwOwkvKiBvbmx5IGRlZmF1bHQgKi8KKyAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8xMCBybHAKKyAgIEZpbHRlcjogKChh ID4gMSkgQU5EIChhID0gMTApKQorKDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2Fy ZHMsIGluY2x1ZGluZyBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2Qgcmxw XzEKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHAzZWZnaCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBB TkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNudWxseHkgcmxwXzMKKyAg ICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHAzX2RlZmF1bHQgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5E IChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzUKKyAgICAgICAg IEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHA0XzIgcmxwXzYKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwXzcKKyAgICAgICAgIEZpbHRl cjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEg cmxwXzgKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzkKKyAgICAgICAgIEZpbHRlcjogKChh ID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8z MCBybHBfMTAKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9kZWZhdWx0IHJscF8xMQorICAgICAgICAg RmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorKDIzIHJvd3MpCisKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgYW5kIGEgPSAzOwkv KiBlbXB0eSAqLworICAgICAgICBRVUVSWSBQTEFOICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoMiBy b3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChh ID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAyIHJscF8x CisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkg QU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMgorICAg ICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAo YSA9IDE1KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2VmZ2ggcmxwXzMKKyAgICAgICAg IEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAx NSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNudWxseHkgcmxwXzQKKyAgICAgICAgIEZp bHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkp KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNfZGVmYXVsdCBybHBfNQorICAgICAgICAgRmls dGVyOiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkp CisoMTEgcm93cykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0gbXVs dGktY29sdW1uIGtleXMKIGNyZWF0ZSB0YWJsZSBtYzNwIChhIGludCwgYiBpbnQsIGMgaW50 KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEsIGFicyhiKSwgYyk7CiBjcmVhdGUgdGFibGUgbWMz cF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBtYzNwIGRlZmF1bHQ7CkBAIC0xOTMzLDEwICsyMTEy LDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBocCB3aGVyZSBhID0g MSBhbmQgYiA9ICdhYmNkZSc7CiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBocCB3aGVyZSBhID0gMSBhbmQgYiA9ICdhYmNkZScgYW5kCiAgIChjID0gMiBvciBjID0g Myk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBv biBocDIgaHAKLSAgIEZpbHRlcjogKChhID0gMSkgQU5EIChiID0gJ2FiY2RlJzo6dGV4dCkg QU5EICgoYyA9IDIpIE9SIChjID0gMykpKQorICAgRmlsdGVyOiAoKGMgPSBBTlkgKCd7Miwz fSc6OmludGVnZXJbXSkpIEFORCAoYSA9IDEpIEFORCAoYiA9ICdhYmNkZSc6OnRleHQpKQog KDIgcm93cykKIAogZHJvcCB0YWJsZSBocDI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CmluZGV4IDE0NDJjNDNkOWMuLmUzZWQ1MzM4MzIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0yMTQ1LDcgKzIxNDUsNyBAQCBwZ19zdGF0X3N5c19p bmRleGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgaWR4X3R1cF9yZWFkLAogICAgIGlkeF90dXBf ZmV0Y2gKICAgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcwotICBXSEVSRSAoKHNjaGVtYW5h bWUgPSBBTlkgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9uX3NjaGVt YSc6Om5hbWVdKSkgT1IgKHNjaGVtYW5hbWUgfiAnXnBnX3RvYXN0Jzo6dGV4dCkpOworICBX SEVSRSAoKHNjaGVtYW5hbWUgPSBBTlkgKCd7cGdfY2F0YWxvZyxpbmZvcm1hdGlvbl9zY2hl bWF9Jzo6bmFtZVtdKSkgT1IgKHNjaGVtYW5hbWUgfiAnXnBnX3RvYXN0Jzo6dGV4dCkpOwog cGdfc3RhdF9zeXNfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgc2NoZW1hbmFtZSwKICAg ICByZWxuYW1lLApAQCAtMjE3Myw3ICsyMTczLDcgQEAgcGdfc3RhdF9zeXNfdGFibGVzfCBT RUxFQ1QgcmVsaWQsCiAgICAgYW5hbHl6ZV9jb3VudCwKICAgICBhdXRvYW5hbHl6ZV9jb3Vu dAogICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKLSAgV0hFUkUgKChzY2hlbWFuYW1lID0g QU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpu YW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKKyAgV0hFUkUg KChzY2hlbWFuYW1lID0gQU5ZICgne3BnX2NhdGFsb2csaW5mb3JtYXRpb25fc2NoZW1hfSc6 Om5hbWVbXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKIHBnX3N0 YXRfdXNlcl9mdW5jdGlvbnN8IFNFTEVDVCBwLm9pZCBBUyBmdW5jaWQsCiAgICAgbi5uc3Bu YW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgcC5wcm9uYW1lIEFTIGZ1bmNuYW1lLApAQCAtMjI3 OSw3ICsyMjc5LDcgQEAgcGdfc3RhdF94YWN0X3N5c190YWJsZXN8IFNFTEVDVCByZWxpZCwK ICAgICBuX3R1cF9ob3RfdXBkLAogICAgIG5fdHVwX25ld3BhZ2VfdXBkCiAgICBGUk9NIHBn X3N0YXRfeGFjdF9hbGxfdGFibGVzCi0gIFdIRVJFICgoc2NoZW1hbmFtZSA9IEFOWSAoQVJS QVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBP UiAoc2NoZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CisgIFdIRVJFICgoc2NoZW1h bmFtZSA9IEFOWSAoJ3twZ19jYXRhbG9nLGluZm9ybWF0aW9uX3NjaGVtYX0nOjpuYW1lW10p KSBPUiAoc2NoZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CiBwZ19zdGF0X3hhY3Rf dXNlcl9mdW5jdGlvbnN8IFNFTEVDVCBwLm9pZCBBUyBmdW5jaWQsCiAgICAgbi5uc3BuYW1l IEFTIHNjaGVtYW5hbWUsCiAgICAgcC5wcm9uYW1lIEFTIGZ1bmNuYW1lLApAQCAtMjM1NCwx NCArMjM1NCwxNCBAQCBwZ19zdGF0aW9fc3lzX2luZGV4ZXN8IFNFTEVDVCByZWxpZCwKICAg ICBpZHhfYmxrc19yZWFkLAogICAgIGlkeF9ibGtzX2hpdAogICAgRlJPTSBwZ19zdGF0aW9f YWxsX2luZGV4ZXMKLSAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdfY2F0 YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hlbWFu YW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKKyAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5Z ICgne3BnX2NhdGFsb2csaW5mb3JtYXRpb25fc2NoZW1hfSc6Om5hbWVbXSkpIE9SIChzY2hl bWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKIHBnX3N0YXRpb19zeXNfc2VxdWVuY2Vz fCBTRUxFQ1QgcmVsaWQsCiAgICAgc2NoZW1hbmFtZSwKICAgICByZWxuYW1lLAogICAgIGJs a3NfcmVhZCwKICAgICBibGtzX2hpdAogICAgRlJPTSBwZ19zdGF0aW9fYWxsX3NlcXVlbmNl cwotICBXSEVSRSAoKHNjaGVtYW5hbWUgPSBBTlkgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFt ZSwgJ2luZm9ybWF0aW9uX3NjaGVtYSc6Om5hbWVdKSkgT1IgKHNjaGVtYW5hbWUgfiAnXnBn X3RvYXN0Jzo6dGV4dCkpOworICBXSEVSRSAoKHNjaGVtYW5hbWUgPSBBTlkgKCd7cGdfY2F0 YWxvZyxpbmZvcm1hdGlvbl9zY2hlbWF9Jzo6bmFtZVtdKSkgT1IgKHNjaGVtYW5hbWUgfiAn XnBnX3RvYXN0Jzo6dGV4dCkpOwogcGdfc3RhdGlvX3N5c190YWJsZXN8IFNFTEVDVCByZWxp ZCwKICAgICBzY2hlbWFuYW1lLAogICAgIHJlbG5hbWUsCkBAIC0yMzc0LDcgKzIzNzQsNyBA QCBwZ19zdGF0aW9fc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIHRpZHhfYmxrc19y ZWFkLAogICAgIHRpZHhfYmxrc19oaXQKICAgIEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMK LSAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUs ICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15wZ190 b2FzdCc6OnRleHQpKTsKKyAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZICgne3BnX2NhdGFs b2csaW5mb3JtYXRpb25fc2NoZW1hfSc6Om5hbWVbXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15w Z190b2FzdCc6OnRleHQpKTsKIHBnX3N0YXRpb191c2VyX2luZGV4ZXN8IFNFTEVDVCByZWxp ZCwKICAgICBpbmRleHJlbGlkLAogICAgIHNjaGVtYW5hbWUsCkBAIC0yNDcxLDcgKzI0NzEs NyBAQCBwZ19zdGF0c3wgU0VMRUNUIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgICBK T0lOIHBnX2NsYXNzIGMgT04gKChjLm9pZCA9IHMuc3RhcmVsaWQpKSkKICAgICAgSk9JTiBw Z19hdHRyaWJ1dGUgYSBPTiAoKChjLm9pZCA9IGEuYXR0cmVsaWQpIEFORCAoYS5hdHRudW0g PSBzLnN0YWF0dG51bSkpKSkKICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuIE9OICgo bi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQotICBXSEVSRSAoKE5PVCBhLmF0dGlzZHJvcHBl ZCkgQU5EIGhhc19jb2x1bW5fcHJpdmlsZWdlKGMub2lkLCBhLmF0dG51bSwgJ3NlbGVjdCc6 OnRleHQpIEFORCAoKGMucmVscm93c2VjdXJpdHkgPSBmYWxzZSkgT1IgKE5PVCByb3dfc2Vj dXJpdHlfYWN0aXZlKGMub2lkKSkpKTsKKyAgV0hFUkUgKChOT1QgYS5hdHRpc2Ryb3BwZWQp IEFORCBoYXNfY29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0sICdzZWxlY3QnOjp0 ZXh0KSBBTkQgKChOT1QgYy5yZWxyb3dzZWN1cml0eSkgT1IgKE5PVCByb3dfc2VjdXJpdHlf YWN0aXZlKGMub2lkKSkpKTsKIHBnX3N0YXRzX2V4dHwgU0VMRUNUIGNuLm5zcG5hbWUgQVMg c2NoZW1hbmFtZSwKICAgICBjLnJlbG5hbWUgQVMgdGFibGVuYW1lLAogICAgIHNuLm5zcG5h bWUgQVMgc3RhdGlzdGljc19zY2hlbWFuYW1lLApAQCAtMjUwMiw3ICsyNTAyLDcgQEAgcGdf c3RhdHNfZXh0fCBTRUxFQ1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICBXSEVSRSAo KE5PVCAoRVhJU1RTICggU0VMRUNUIDEKICAgICAgICAgICAgRlJPTSAodW5uZXN0KHMuc3R4 a2V5cykgayhrKQogICAgICAgICAgICAgIEpPSU4gcGdfYXR0cmlidXRlIGEgT04gKCgoYS5h dHRyZWxpZCA9IHMuc3R4cmVsaWQpIEFORCAoYS5hdHRudW0gPSBrLmspKSkpCi0gICAgICAg ICAgV0hFUkUgKE5PVCBoYXNfY29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0sICdz ZWxlY3QnOjp0ZXh0KSkpKSkgQU5EICgoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNlKSBPUiAo Tk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKSkpOworICAgICAgICAgIFdIRVJFIChO T1QgaGFzX2NvbHVtbl9wcml2aWxlZ2UoYy5vaWQsIGEuYXR0bnVtLCAnc2VsZWN0Jzo6dGV4 dCkpKSkpIEFORCAoKE5PVCBjLnJlbHJvd3NlY3VyaXR5KSBPUiAoTk9UIHJvd19zZWN1cml0 eV9hY3RpdmUoYy5vaWQpKSkpOwogcGdfc3RhdHNfZXh0X2V4cHJzfCBTRUxFQ1QgY24ubnNw bmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIGMucmVsbmFtZSBBUyB0YWJsZW5hbWUsCiAgICAg c24ubnNwbmFtZSBBUyBzdGF0aXN0aWNzX3NjaGVtYW5hbWUsCkBAIC0yNjE2LDcgKzI2MTYs NyBAQCBwZ191c2VyX21hcHBpbmdzfCBTRUxFQ1QgdS5vaWQgQVMgdW1pZCwKICAgICAgICAg ICAgIEVMU0UgYS5yb2xuYW1lCiAgICAgICAgIEVORCBBUyB1c2VuYW1lLAogICAgICAgICBD QVNFCi0gICAgICAgICAgICBXSEVOICgoKHUudW11c2VyIDw+ICgwKTo6b2lkKSBBTkQgKGEu cm9sbmFtZSA9IENVUlJFTlRfVVNFUikgQU5EIChwZ19oYXNfcm9sZShzLnNydm93bmVyLCAn VVNBR0UnOjp0ZXh0KSBPUiBoYXNfc2VydmVyX3ByaXZpbGVnZShzLm9pZCwgJ1VTQUdFJzo6 dGV4dCkpKSBPUiAoKHUudW11c2VyID0gKDApOjpvaWQpIEFORCBwZ19oYXNfcm9sZShzLnNy dm93bmVyLCAnVVNBR0UnOjp0ZXh0KSkgT1IgKCBTRUxFQ1QgcGdfYXV0aGlkLnJvbHN1cGVy CisgICAgICAgICAgICBXSEVOICgoKHUudW11c2VyIDw+ICcwJzo6b2lkKSBBTkQgKGEucm9s bmFtZSA9IENVUlJFTlRfVVNFUikgQU5EIChwZ19oYXNfcm9sZShzLnNydm93bmVyLCAnVVNB R0UnOjp0ZXh0KSBPUiBoYXNfc2VydmVyX3ByaXZpbGVnZShzLm9pZCwgJ1VTQUdFJzo6dGV4 dCkpKSBPUiAoKHUudW11c2VyID0gJzAnOjpvaWQpIEFORCBwZ19oYXNfcm9sZShzLnNydm93 bmVyLCAnVVNBR0UnOjp0ZXh0KSkgT1IgKCBTRUxFQ1QgcGdfYXV0aGlkLnJvbHN1cGVyCiAg ICAgICAgICAgICAgICBGUk9NIHBnX2F1dGhpZAogICAgICAgICAgICAgICBXSEVSRSAocGdf YXV0aGlkLnJvbG5hbWUgPSBDVVJSRU5UX1VTRVIpKSkgVEhFTiB1LnVtb3B0aW9ucwogICAg ICAgICAgICAgRUxTRSBOVUxMOjp0ZXh0W10KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3RhdHNfZXh0Lm91dAppbmRleCBhNDMwMTUzYjIyLi42NTlkNzEyZjc1IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0xMzIyLDE5ICsxMzIyLDE5 IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00g ZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0 aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hF UkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5EIGIgPSAnJzEnJycpOwogIGVzdGltYXRlZCB8IGFj dHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAg ICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUg KGEgPSAxIE9SIGEgPSA1MSkgQU5EIChiID0gJycxJycgT1IgYiA9ICcnMicnKScpOwogIGVz dGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwg ICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00g Y2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRl bmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSAyIE9SIGEgPSA1MSBPUiBhID0gNTIpIEFORCAo YiA9ICcnMScnIE9SIGIgPSAnJzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0t LS0tLS0tLSstLS0tLS0tLQotICAgICAgIDE5NyB8ICAgIDIwMAorICAgICAgIDIwMCB8ICAg IDIwMAogKDEgcm93KQogCiAtLSBPUiBjbGF1c2VzIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBh dHRyaWJ1dGVzIGFyZSBpbmNvbXBhdGlibGUKQEAgLTE2NjQsMTkgKzE2NjQsMTkgQEAgU0VM RUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlv bmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoKGEg KiAyKSA9IDIgT1IgKGEgKiAyKSA9IDEwMikgQU5EIHVwcGVyKGIpID0gJycxJycnKTsKICBl c3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8 ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5k ZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgKHVwcGVy KGIpID0gJycxJycgT1IgdXBwZXIoYikgPSAnJzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1 YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAg IDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRl ZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgo YSAqIDIpID0gMiBPUiAoYSAqIDIpID0gNCBPUiAoYSAqIDIpID0gMTAyIE9SIChhICogMikg PSAxMDQpIEFORCAodXBwZXIoYikgPSAnJzEnJyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwog IGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgMTk3 IHwgICAgMjAwCisgICAgICAgMjAwIHwgICAgMjAwCiAoMSByb3cpCiAKIC0tIE9SIGNsYXVz ZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50IGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5kZXggMjcxMzEzZWJmOC4uYzZjNmI5ZmI4ZCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTEyMyw2ICsxMjMs NyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUg bGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX21lbW9pemUgICAgICAgICAgICAgICAgIHwgb24K ICBlbmFibGVfbWVyZ2Vqb2luICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9uZXN0bG9v cCAgICAgICAgICAgICAgICB8IG9uCisgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uICAgICAg IHwgb24KICBlbmFibGVfcGFyYWxsZWxfYXBwZW5kICAgICAgICAgfCBvbgogIGVuYWJsZV9w YXJhbGxlbF9oYXNoICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5n ICAgICAgIHwgb24KQEAgLTEzMyw3ICsxMzQsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBm cm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3Nl cXNjYW4gICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAg ICAgICAgfCBvbgogIGVuYWJsZV90aWRzY2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjIg cm93cykKKygyMyByb3dzKQogCiAtLSBUaGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVz Y3JpcHRpb25zIGZvciB2YXJpb3VzIHR5cGVzLgogc2VsZWN0IHR5cGUsIGNvdW50KCopID4g MCBhcyBvayBGUk9NIHBnX3dhaXRfZXZlbnRzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90 aWRzY2FuLm91dAppbmRleCBmMTMzYjVhNGFjLi4yYTA3OWU5OTZiIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQKQEAgLTQzLDEwICs0MywyNiBAQCBTRUxFQ1Qg Y3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgJygwLDEpJyA9IGN0aWQ7CiAtLSBPUidkIGNs YXVzZXMKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2Nh biBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFRpZCBTY2FuIG9uIHRpZHNjYW4KKyAgIFRJRCBDb25kOiAoY3Rp ZCA9IEFOWSAoJ3siKDAsMikiLCIoMCwxKSJ9Jzo6dGlkW10pKQorKDIgcm93cykKKworU0VM RUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwx KScgPSBjdGlkOworIGN0aWQgIHwgaWQgCistLS0tLS0tKy0tLS0KKyAoMCwxKSB8ICAxCisg KDAsMikgfCAgMgorKDIgcm93cykKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9 IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2Fu IFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFRpZCBT Y2FuIG9uIHRpZHNjYW4KLSAgIFRJRCBDb25kOiAoKGN0aWQgPSAnKDAsMiknOjp0aWQpIE9S ICgnKDAsMSknOjp0aWQgPSBjdGlkKSkKKyAgIFRJRCBDb25kOiAoY3RpZCA9IEFOWSAoJ3si KDAsMikiLCIoMCwxKSJ9Jzo6dGlkW10pKQogKDIgcm93cykKIAogU0VMRUNUIGN0aWQsICog RlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwpA QCAtNTYsNiArNzIsNyBAQCBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3Rp ZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CiAgKDAsMikgfCAgMgogKDIgcm93cykK IAorUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0gY3RpZCA9IFNjYWxhckFy cmF5T3AgLSBpbXBsZW1lbnRlZCBhcyB0aWRzY2FuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBT RUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9IEFOWShBUlJBWVsnKDAs MSknLCAnKDAsMiknXTo6dGlkW10pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRl eC5zcWwKaW5kZXggZDQ5Y2U5ZjMwMC4uNDhiYjFiYzBhMCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC03MzcsNiArNzM3LDM4IEBAIFNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlbmsxCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBo dW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwogCitT RVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50 aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworU0VMRUNUICog RlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFO RCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1Ig dGhvdXNhbmQgPSA5OSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgq KSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEg T1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0 ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQg KHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRo b3VzYW5kID0gNDE7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5k cmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhv dXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91 c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhv dXMgPSAyKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9 IDk5IEFORCB0ZW50aG91cyA9IDIpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9u OworCiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1u IGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAppbmRleCA4YThhNjNiZDJmLi41 NWQ3ZTJhZTdkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbApAQCAtMTQwOCw2ICsxNDA4LDE2 IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRl bmsxIGIgb24KICAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCiAgICgo YS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitT RVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYp CitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEg PSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlx dWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2Vs ZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxIDwgMjAg b3IgYS51bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBv cgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9 IDQpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogCiAtLQogLS0gdGVzdCBw bGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVl CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCA3YmYz OTIwODI3Li4xZTI3MGFlOWMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlv bl9wcnVuZS5zcWwKQEAgLTIxLDYgKzIxLDEyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsOwogZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsKIGV4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7CiBleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQg KGEgPSAnYScgb3IgYSA9ICdjJyk7CisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24g PSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0g J2EnIG9yIGEgPSAnYyc7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAg d2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CitSRVNFVCBl bmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBscCB3aGVyZSBhIDw+ICdnJzsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBscCB3aGVyZSBhIDw+ICdhJyBhbmQgYSA8PiAnZCc7CiBleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBub3QgaW4gKCdhJywgJ2QnKTsKQEAg LTk5LDYgKzEwNSwyMiBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxw IHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253YXJkcywgaQogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8q IGVtcHR5ICovCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKIAorCitTRVQgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3OworZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDIwIGFuZCBhIDwgMjc7 CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyOTsK K2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+PSAyOTsK K2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8IDEgb3Ig KGEgPiAyMCBhbmQgYSA8IDI1KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAzIHdoZXJlIGEgPSAyMDsgICAvKiBlbXB0eSAqLworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA9IDEwOwkv KiBvbmx5IGRlZmF1bHQgKi8KK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpbmNsdWRpbmcg ZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQg YSA9IDE1KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogLS0gbXVsdGkt Y29sdW1uIGtleXMKIGNyZWF0ZSB0YWJsZSBtYzNwIChhIGludCwgYiBpbnQsIGMgaW50KSBw YXJ0aXRpb24gYnkgcmFuZ2UgKGEsIGFicyhiKSwgYyk7CiBjcmVhdGUgdGFibGUgbWMzcF9k ZWZhdWx0IHBhcnRpdGlvbiBvZiBtYzNwIGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNj YW4uc3FsCmluZGV4IDMxM2UwZmI5YjYuLjA0OTliZWRiOWUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3RpZHNjYW4uc3FsCkBAIC0yMiw2ICsyMiwxMiBAQCBFWFBMQUlOIChDT1NUUyBPRkYpCiBT RUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygw LDEpJyA9IGN0aWQ7CiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9 ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3Jt YXRpb24gPSBvbjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjdGlkLCAqIEZST00g dGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKK1NFTEVD VCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSkn ID0gY3RpZDsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogLS0gY3RpZCA9 IFNjYWxhckFycmF5T3AgLSBpbXBsZW1lbnRlZCBhcyB0aWRzY2FuCiBFWFBMQUlOIChDT1NU UyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9IEFOWShB UlJBWVsnKDAsMSknLCAnKDAsMiknXTo6dGlkW10pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAppbmRleCBkYmEzNDk4YTEzLi5iMjAwMzYzZDRlIDEwMDY0NAotLS0gYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtMTY0MSw2ICsxNjQxLDggQEAgTnVtZXJpY1ZhcgogT01fdWludDMy CiBPUAogT1NBUGVyR3JvdXBTdGF0ZQorT3JDbGF1c2VHcm91cEVudHJpZXMKK09yQ2xhdXNl R3JvdXBFbnRyeQogT1NBUGVyUXVlcnlTdGF0ZQogT1NJbmZvCiBPU1NMQ2lwaGVyCi0tIAoy LjQzLjAKCg== --------------vajc60IdKa0e0mF4ZebzpDXk--