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 1uRe7Z-00EVKA-WF for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Jun 2025 21:45:35 +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 1uRe7X-00DJZM-2R for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Jun 2025 21:45:31 +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 1uRe7W-00DJZD-4a for pgsql-hackers@lists.postgresql.org; Tue, 17 Jun 2025 21:45:31 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uRe7S-002eN8-2y for pgsql-hackers@lists.postgresql.org; Tue, 17 Jun 2025 21:45:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1750196725; bh=P1SIU9ddbhdAhis/bxMMrT2LTTMmkmENOvhF8pk5cuA=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=O7hM7ohBYIxcZ+5iGAL+sAf4Ofv3yjHEeMxUwMaDkM5bXPcWBSDtUCzA6TYZg/Y9W MiW2S0Lxk6y87qjA2yLtQqp+J6gbVOvZ4kGvGE5R9d2t4Lr2bAtFaz76Oe0Td5LDQf xeqWxDPFzDzxDV01g+qDOThI3Om2VFLfSeNCRSCnoZaNpFCWFtD/D+4LaxHugjx9Uh LGa+YS3UHEcdDlk/8YdN7He7MEOTNQ4zcHqwMxFx6qAg7MXTLyap/EmwsDAkc6dtEB trCkYvczwG8BHaRnx6Jg+QdcIYIaaRY26LG5QT0f1wFCuWs9hBuNiSQ+dY4En6uEnP 0go4kVdPm0KSg== Received: from [172.30.48.214] (unknown [93.174.131.138]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 86E1B60BEB; Wed, 18 Jun 2025 00:45:24 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------Wk1KT8NhM0G6BtX8G147dPEm" Message-ID: <4f19550b-eb41-4649-8bf5-566dc020a720@postgrespro.ru> Date: Wed, 18 Jun 2025 00:45:24 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <884bcf9e-d6e3-4b0c-8dcb-7f2110070ac9@postgrespro.ru> <1e74c9fd-830e-4544-b0de-e49ea4b04029@postgrespro.ru> <9c1b75f1-5c40-4a86-9a61-a4b3f1d7ec60@postgrespro.ru> <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/06/17 21:01:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/06/17 18:21:00 #27577332 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------Wk1KT8NhM0G6BtX8G147dPEm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! >v46-0001-regress-test-refactoring-and-others.no-cfbot Thanks, applied. Two comments: >+ errmsg("relation \"%s\" already exists", cmd->name->relname)); >There are no regress tests for this, I have added a simple test for it. Test for this is in the second commit (SPLIT PARTITION) but it's okay to have test here. >+SELECT tableoid::regclass, * FROM sales_range ORDER BY ... Similar changes are also made for SPLIT PARTITION. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------Wk1KT8NhM0G6BtX8G147dPEm Content-Type: text/plain; charset=UTF-8; name="v47-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v47-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhNDVlZTUzZDllNDc1MjYyYTQ4MzRhNTNmYjE0MTYxM2YzNGYzMTE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDcgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3Vt bWFyeSBpbmZvcm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVy IFdhbmcsIFJpY2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczog RnVqaWkgTWFzYW8sIEppYW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwg Um9iZXJ0IEhhYXMsIEp1c3RpbiBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6 IE1hc2FoaWtvIFNhd2FkYQpSZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGlu IFByeXpieSwgS3lvdGFybyBIb3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEwNCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTEyICsrKysrKysrKysr Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAg MjIgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8 ICAxNDggKysrCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jICAgICAg ICAgfCAgMTk5ICsrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAg ICAgICAgIHwgICAxMCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAg ICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAg ICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuaCAgICAgICAgIHwgICAgNiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRp dGlvbi1tZXJnZS5vdXQgICAgfCAgMTk5ICsrKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNl L3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IHwgMTEyMyArKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCAgICAgIHwgIDc5 NCArKysrKysrKysrKysKIDIxIGZpbGVzIGNoYW5nZWQsIDM2MzIgaW5zZXJ0aW9ucygrKSwg MjggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9u L2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVy Z2Uuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9z Z21sL2RkbC5zZ21sCmluZGV4IDk2OTM2YmNkM2EuLjYyYzJiYjU0ZWEgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAg LTQ0NDAsNiArNDQ0MCwyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudF95MjAwNm0wMiBB REQgVU5JUVVFIChjaXR5X2lkLCBsb2dkYXRlKTsKIEFMVEVSIElOREVYIG1lYXN1cmVtZW50 X2NpdHlfaWRfbG9nZGF0ZV9rZXkKICAgICBBVFRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50 X3kyMDA2bTAyX2NpdHlfaWRfbG9nZGF0ZV9rZXk7CiAuLi4KKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZXJlIGlzIGFsc28gYW4gb3B0 aW9uIGZvciBtZXJnaW5nIG11bHRpcGxlIHRhYmxlIHBhcnRpdGlvbnMgaW50bworICAgICBh IHNpbmdsZSBwYXJ0aXRpb24gdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1h bHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPjxjb21tYW5kPkFMVEVSIFRBQkxFIC4uLiBN RVJHRSBQQVJUSVRJT05TPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMgZmVhdHVyZSBz aW1wbGlmaWVzIHRoZSBtYW5hZ2VtZW50IG9mIHBhcnRpdGlvbmVkIHRhYmxlcyBieSBhbGxv d2luZworICAgICB1c2VycyB0byBjb21iaW5lIHBhcnRpdGlvbnMgdGhhdCBhcmUgbm8gbG9u Z2VyIG5lZWRlZCBhcworICAgICBzZXBhcmF0ZSBlbnRpdGllcy4gIEl0J3MgaW1wb3J0YW50 IHRvIG5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBub3QKKyAgICAgc3VwcG9ydGVkIGZv ciBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMgYW4KKyAgICAgPGxpdGVy YWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0 IGhpZ2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0aXZl IG5hdHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4KKyAgICAgbWVyZ2UgdGhyZWUgbW9udGhs eSBwYXJ0aXRpb25zIGludG8gb25lIHF1YXJ0ZXIgcGFydGl0aW9uOgorPHByb2dyYW1saXN0 aW5nPgorQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKKyAgICBNRVJHRSBQQVJUSVRJT05TICht ZWFzdXJlbWVudF95MjAwNm0wMSwKKyAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVu dF95MjAwNm0wMiwKKyAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudF95MjAwNm0w MykgSU5UTyBtZWFzdXJlbWVudF95MjAwNnExOwogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8 L3BhcmE+CiAgICA8L3NlY3QzPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4 IGQ2M2YzYTYyMWEuLmU1MDNhMDYwMjggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNn bWwKQEAgLTM3LDYgKzM3LDkgQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQVRUQUNI IFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWU8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0K IEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIERFVEFDSCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBD T05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBN RVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKQorICAgICAgICBJTlRP IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFj ZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTE0Nywx NCArMTE1MCwxMDEgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1h bHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPgorICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdF IFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVy YWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMg Zm9ybSBtZXJnZXMgc2V2ZXJhbCBwYXJ0aXRpb25zIG9mIHRoZSB0YXJnZXQgdGFibGUgaW50 byBhIG5ldyBwYXJ0aXRpb24uCisgICAgICBIYXNoLXBhcnRpdGlvbmVkIHRhcmdldCB0YWJs ZSBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgSWYgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJh bD4gcGFydGl0aW9uIGlzIG5vdCBpbiB0aGUKKyAgICAgIGxpc3Qgb2YgcGFydGl0aW9ucyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNl YWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToKKyAgICAgIDxpdGVtaXplZGxpc3Q+Cisg ICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEZvciByYW5nZS1w YXJ0aXRpb25lZCB0YWJsZXMsIHRoZSByYW5nZXMgb2YgdGhlIHBhcnRpdGlvbnMKKyAgICAg ICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3Jl cGxhY2VhYmxlPiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIG11c3QgYmUg YWRqYWNlbnQgaW4gb3JkZXIgdG8gYmUgbWVyZ2VkLiBPdGhlcndpc2UsIGFuIGVycm9yIHdp bGwgYmUKKyAgICAgICAgIHJhaXNlZC4gVGhlIHJlc3VsdGluZyBjb21iaW5lZCByYW5nZSB3 aWxsIGJlIHRoZSBuZXcgcGFydGl0aW9uIGJvdW5kCisgICAgICAgICBmb3IgdGhlIHBhcnRp dGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3Jl cGxhY2VhYmxlPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEZvciBsaXN0LXBhcnRp dGlvbmVkIHRhYmxlcywgdGhlIHBhcnRpdGlvbiBib3VuZHMgb2YKKyAgICAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIGFyZSBjb21iaW5lZCB0byBm b3JtIHRoZSBuZXcgcGFydGl0aW9uIGJvdW5kIGZvcgorICAgICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAg ICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+ CisgICAgICBJZiA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24gaXMgaW4g dGhlIGxpc3Qgb2YgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToK KyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIFRoZSBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgIHdpbGwgYmUgdGhl IG5ldyA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24gb2YgdGhlIHRhcmdl dCB0YWJsZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBwYXJ0aXRpb24gYm91 bmQgc3BlY2lmaWNhdGlvbnMgZm9yIGFsbCBwYXJ0aXRpb25zLQorICAgICAgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+ LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgY2FuIGJlIGFyYml0cmFyeS4K KyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVk bGlzdD4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICBjYW4gaGF2ZSB0 aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuIE9ubHkgc2lt cGxlLAorICAgICAgbm9uLXBhcnRpdGlvbmVkIHBhcnRpdGlvbnMgY2FuIGJlIG1lcmdlZC4K KyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIG1lcmdlZCBwYXJ0aXRpb25z IGhhdmUgZGlmZmVyZW50IG93bmVycywgYW4gZXJyb3Igd2lsbCBiZSBnZW5lcmF0ZWQuCisg ICAgICBUaGUgb3duZXIgb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zIHdpbGwgYmUgdGhlIG93 bmVyIG9mIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNw b25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5BQ0w8L2Fjcm9ueW0+IG9uIHRoZQorICAg ICAgbmV3IHBhcnRpdGlvbi4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFRo ZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3JlYXRlZCBsYXRlciwgYWZ0ZXIgbW92aW5n IHRoZSBkYXRhCisgICAgICBpbnRvIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAgRXh0ZW5k ZWQgc3RhdGlzdGljcyBhcmVuJ3QgY29waWVkIGZyb20gdGhlIHBhcmVudCB0YWJsZSwgZm9y IGNvbnNpc3RlbmN5IHdpdGgKKyAgICAgIDxjb21tYW5kPkNSRUFURSBUQUJMRSBQQVJUSVRJ T04gT0Y8L2NvbW1hbmQ+LgorICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gd2lsbCBpbmhlcml0 IHRoZSBzYW1lIHRhYmxlIGFjY2VzcyBtZXRob2QsIHBlcnNpc3RlbmNlCisgICAgICB0eXBl LCBhbmQgdGFibGVzcGFjZSBhcyB0aGUgcGFyZW50IHRhYmxlLgorICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgV2hlbiBwYXJ0aXRpb25zIGFyZSBtZXJnZWQsIGFueSBpbmRp dmlkdWFsIG9iamVjdHMgYmVsb25naW5nIHRvIHRob3NlCisgICAgICBwYXJ0aXRpb25zLCBz dWNoIGFzIGNvbnN0cmFpbnRzIG9yIHN0YXRpc3RpY3Mgd2lsbCBiZSBkcm9wcGVkLiBUaGlz IG9jY3VycworICAgICAgYmVjYXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJMRSBNRVJHRSBQQVJU SVRJT05TPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYgYXMg dGhlCisgICAgICB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2JqZWN0cy4KKyAgICAgPC9w YXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIG1lcmdlZCBwYXJ0aXRpb25zIGhhdmUgc29t ZSBvYmplY3RzIGRlcGVuZGVudCBvbiB0aGVtLCB0aGUgY29tbWFuZCBjYW4KKyAgICAgIG5v dCBiZSBkb25lICg8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpcyBub3QgdXNlZCwgYW4g ZXJyb3Igd2lsbCBiZSByZXR1cm5lZCkuCisgICAgIDwvcGFyYT4KKyAgICAgPG5vdGU+Cisg ICAgICA8cGFyYT4KKyAgICAgICBNZXJnaW5nIHBhcnRpdGlvbnMgYWNxdWlyZXMgYSA8bGl0 ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCisgICAgICAgdGhlIHBh cmVudCB0YWJsZSwgaW4gYWRkaXRpb24gdG8gdGhlIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJ VkU8L2xpdGVyYWw+CisgICAgICAgbG9ja3Mgb24gdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQg YW5kIG9uIHRoZSBkZWZhdWx0IHBhcnRpdGlvbiAoaWYgYW55KS4KKyAgICAgIDwvcGFyYT4K KyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgogICAgQWxsIHRoZSBm b3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gdGhhdCBhY3Qgb24gYSBz aW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxp dGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCi0gICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElU SU9OPC9saXRlcmFsPiwgYW5kCi0gICA8bGl0ZXJhbD5ERVRBQ0ggUEFSVElUSU9OPC9saXRl cmFsPiBjYW4gYmUgY29tYmluZWQgaW50bworICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElP TjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LAorICAg YW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+IGNhbiBiZSBjb21iaW5l ZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUgYXBwbGll ZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8gYWRkIHNl dmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAogICAgY29s dW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs IHdpdGggbGFyZ2UKQEAgLTEzOTcsNyArMTQ4Nyw4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxl PiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KICAg ICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBh cyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZS4KKyAgICAg ICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24g b3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhlIG5hbWUgb2Yg dGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlz dGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTgzMCw2ICsxOTIxLDEzIEBAIEFM VEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVu dF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAg VG8gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBvZiB0aGUg dGFyZ2V0IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50 cmFsKQorICAgIElOVE8gc2FsZXNfYWxsOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisK ICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3ku YwppbmRleCAxODMxNmEzOTY4Li41YWZjNDkzODIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVu ZGVuY3kuYwpAQCAtMzE5LDYgKzMxOSw1NiBAQCBwZXJmb3JtRGVsZXRpb24oY29uc3QgT2Jq ZWN0QWRkcmVzcyAqb2JqZWN0LAogCXRhYmxlX2Nsb3NlKGRlcFJlbCwgUm93RXhjbHVzaXZl TG9jayk7CiB9CiAKKy8qCisgKiBwZXJmb3JtRGVsZXRpb25DaGVjazogQ2hlY2sgd2hldGhl ciBhIHNwZWNpZmljIG9iamVjdCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQuCisgKiBUaGlzIGZ1 bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlbGV0aW9uOyBpbnN0ZWFkLCBpdCByYWlz ZXMgYW4gZXJyb3IKKyAqIGlmIHRoZSBvYmplY3QgY2Fubm90IGJlIGRlbGV0ZWQgZHVlIHRv IGV4aXN0aW5nIGRlcGVuZGVuY2llcy4KKyAqCisgKiBJdCBjYW4gYmUgdXNlZnVsIHdoZW4g eW91IG5lZWQgZGVsZXRlIHNvbWUgb2JqZWN0cyBsYXRlci4gIFNlZSBjb21tZW50cyBpbgor ICogcGVyZm9ybURlbGV0aW9uIHRvby4KKyAqIFRoZSBiZWhhdmlvciBtdXN0IHNwZWNpZmll ZCBhcyBEUk9QX1JFU1RSSUNULgorICovCit2b2lkCitwZXJmb3JtRGVsZXRpb25DaGVjayhj b25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZp b3IsIGludCBmbGFncykKK3sKKwlSZWxhdGlvbglkZXBSZWw7CisJT2JqZWN0QWRkcmVzc2Vz ICp0YXJnZXRPYmplY3RzOworCisJQXNzZXJ0KGJlaGF2aW9yID09IERST1BfUkVTVFJJQ1Qp OworCisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCUFjcXVpcmVEZWxldGlvbkxvY2sob2JqZWN0LCAwKTsKKworCS8qCisJ ICogQ29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3RzIHdlIHdhbnQgZGVsZXRlIGxhdGVyIChp ZSwgdGhlIGdpdmVuIG9iamVjdCBwbHVzCisJICogZXZlcnl0aGluZyBkaXJlY3RseSBvciBp bmRpcmVjdGx5IGRlcGVuZGVudCBvbiBpdCkuCisJICovCisJdGFyZ2V0T2JqZWN0cyA9IG5l d19vYmplY3RfYWRkcmVzc2VzKCk7CisKKwlmaW5kRGVwZW5kZW50T2JqZWN0cyhvYmplY3Qs CisJCQkJCQkgREVQRkxBR19PUklHSU5BTCwKKwkJCQkJCSBmbGFncywKKwkJCQkJCSBOVUxM LAkvKiBlbXB0eSBzdGFjayAqLworCQkJCQkJIHRhcmdldE9iamVjdHMsCisJCQkJCQkgTlVM TCwJLyogbm8gcGVuZGluZ09iamVjdHMgKi8KKwkJCQkJCSAmZGVwUmVsKTsKKworCS8qCisJ ICogQ2hlY2sgaWYgZGVsZXRpb24gaXMgYWxsb3dlZC4KKwkgKi8KKwlyZXBvcnREZXBlbmRl bnRPYmplY3RzKHRhcmdldE9iamVjdHMsCisJCQkJCQkgICBiZWhhdmlvciwKKwkJCQkJCSAg IGZsYWdzLAorCQkJCQkJICAgb2JqZWN0KTsKKworCS8qIEFuZCBjbGVhbiB1cCAqLworCWZy ZWVfb2JqZWN0X2FkZHJlc3Nlcyh0YXJnZXRPYmplY3RzKTsKKworCXRhYmxlX2Nsb3NlKGRl cFJlbCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBwZXJmb3JtTXVsdGlwbGVE ZWxldGlvbnM6IFNpbWlsYXIgdG8gcGVyZm9ybURlbGV0aW9uLCBidXQgYWN0IG9uIG11bHRp cGxlCiAgKiBvYmplY3RzIGF0IG9uY2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IGZiYWVkNTM1 OWEuLjU0Yzk1ZTQyNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC0xMDIsMTEgKzEwMiwxMSBA QCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBZGROZXdSZWxhdGlvblR5cGUoY29uc3QgY2hhciAq dHlwZU5hbWUsCiAJCQkJCQkJCQkJT2lkIG5ld19yb3dfdHlwZSwKIAkJCQkJCQkJCQlPaWQg bmV3X2FycmF5X3R5cGUpOwogc3RhdGljIHZvaWQgUmVsYXRpb25SZW1vdmVJbmhlcml0YW5j ZShPaWQgcmVsaWQpOworc3RhdGljIHZvaWQgU3RvcmVDb25zdHJhaW50cyhSZWxhdGlvbiBy ZWwsIExpc3QgKmNvb2tlZF9jb25zdHJhaW50cywKKwkJCQkJCQkgYm9vbCBpc19pbnRlcm5h bCk7CiBzdGF0aWMgT2lkCVN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFy ICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkgIGJvb2wgaXNfZW5mb3JjZWQsIGJvb2wg aXNfdmFsaWRhdGVkLCBib29sIGlzX2xvY2FsLAogCQkJCQkJICBpbnQxNiBpbmhjb3VudCwg Ym9vbCBpc19ub19pbmhlcml0LCBib29sIGlzX2ludGVybmFsKTsKLXN0YXRpYyB2b2lkIFN0 b3JlQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLCBMaXN0ICpjb29rZWRfY29uc3RyYWludHMs Ci0JCQkJCQkJIGJvb2wgaXNfaW50ZXJuYWwpOwogc3RhdGljIGJvb2wgTWVyZ2VXaXRoRXhp c3RpbmdDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2Rl ICpleHByLAogCQkJCQkJCQkJCWJvb2wgYWxsb3dfbWVyZ2UsIGJvb2wgaXNfbG9jYWwsCiAJ CQkJCQkJCQkJYm9vbCBpc19lbmZvcmNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfY29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJh aW50LmMKaW5kZXggMmQ1YWMxZWE4MS4uMWY5NDg4NzZkOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19jb25zdHJhaW50LmMKQEAgLTg3NSw3ICs4NzUsNyBAQCBSZWxhdGlvbkdldE5vdE51 bGxDb25zdHJhaW50cyhPaWQgcmVsaWQsIGJvb2wgY29va2VkLCBib29sIGluY2x1ZGVfbm9p bmgpCiAJCQkJCQkJCQkJCQkJCQkgZmFsc2UpKSk7CiAJCQljb25zdHItPmlzX2VuZm9yY2Vk ID0gdHJ1ZTsKIAkJCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0gIWNvbkZvcm0tPmNvbnZh bGlkYXRlZDsKLQkJCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKKwkJCWNvbnN0 ci0+aW5pdGlhbGx5X3ZhbGlkID0gY29uRm9ybS0+Y29udmFsaWRhdGVkOwogCQkJY29uc3Ry LT5pc19ub19pbmhlcml0ID0gY29uRm9ybS0+Y29ubm9pbmhlcml0OwogCQkJbm90bnVsbHMg PSBsYXBwZW5kKG5vdG51bGxzLCBjb25zdHIpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCmluZGV4IGVhOTY5NDdkODEuLmI3MjRlMmQ3MTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC03NDAsNiArNzQwLDggQEAgc3RhdGljIHZvaWQgQVREZXRhY2hD aGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFy IEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29t cHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlw aWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKIAorc3RhdGljIHZvaWQgQVRFeGVjTWVy Z2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVs YXRpb24gcmVsLAorCQkJCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVs YXRpb24KQEAgLTQ4MzQsNiArNDgzNiwxMCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExp c3QgKmNtZHMpCiAJCQkJY21kX2xvY2ttb2RlID0gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2Nr OwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQljbWRf bG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQlkZWZh dWx0OgkJCS8qIG9vcHMgKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVy IHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC01MjY5 LDYgKzUyNzUsMTEgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwg QWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJyZWFrOworCQljYXNlIEFU X01lcmdlUGFydGl0aW9uczoKKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBl LCByZWwsIEFUVF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQkvKiBObyBjb21tYW5kLXNwZWNp ZmljIHByZXAgbmVlZGVkICovCisJCQlwYXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpA QCAtNTY2NSw2ICs1Njc2LDE0IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsCiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJ CQlhZGRyZXNzID0gQVRFeGVjRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBhcnRp dGlvbkNtZCAqKSBjbWQtPmRlZiktPm5hbWUpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVy Z2VQYXJ0aXRpb25zOgorCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRh YiwgcmVsLCBjbWQsIGZhbHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNv bnRleHQpOworCQkJQXNzZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY01l cmdlUGFydGl0aW9ucyh3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ ZGVmLAorCQkJCQkJCQkgIGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8q IG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlw ZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjcwNSw2ICs2NzI0LDgg QEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkK IAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiI7CiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0 aW9uRmluYWxpemU6CiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpF IjsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlyZXR1cm4gIk1FUkdFIFBBUlRJ VElPTlMiOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJcmV0dXJuICJBTFRFUiBDT0xV TU4gLi4uIEFERCBJREVOVElUWSI7CiAJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CkBAIC0yMDE2 OSw2ICsyMDE5MCwzNyBAQCBRdWV1ZVBhcnRpdGlvbkNvbnN0cmFpbnRWYWxpZGF0aW9uKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHNjYW5yZWwsCiAJfQogfQogCisvKgorICogYXR0YWNo UGFydGl0aW9uVGFibGU6IGF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlv bmVkIHRhYmxlCisgKgorICogd3F1ZXVlOiB0aGUgQUxURVIgVEFCTEUgd29yayBxdWV1ZTsg Y2FuIGJlIE5VTEwgd2hlbiBub3QgcnVubmluZyBhcyBwYXJ0CisgKiAgIG9mIGFuIEFMVEVS IFRBQkxFIHNlcXVlbmNlLgorICogcmVsOiBwYXJ0aXRpb25lZCByZWxhdGlvbjsKKyAqIGF0 dGFjaHJlbDogcmVsYXRpb24gb2YgYXR0YWNoZWQgcGFydGl0aW9uOworICogYm91bmQ6IGJv dW5kcyBvZiBhdHRhY2hlZCByZWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2F0dGFjaFBh cnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0 YWNocmVsLCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKQoreworCS8qIE9LIHRvIGNyZWF0 ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8K KwlDcmVhdGVJbmhlcml0YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7CisKKwkvKiBVcGRh dGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLworCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0YWNo cmVsLCByZWwsIGJvdW5kKTsKKworCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0 IHNldCBvZiBpbmRleGVzIGluIHRoZSBwYXJ0aXRpb24uICovCisJQXR0YWNoUGFydGl0aW9u RW5zdXJlSW5kZXhlcyh3cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKKworCS8qIGFuZCB0cmln Z2VycyAqLworCUNsb25lUm93VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7 CisKKwkvKgorCSAqIENsb25lIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlz IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwCisJICogZm9yIHBoYXNlIDMgY29uc3RyYWlu dCB2ZXJpZmljYXRpb24uCisJICovCisJQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1 ZXVlLCByZWwsIGF0dGFjaHJlbCk7Cit9CisKIC8qCiAgKiBBTFRFUiBUQUJMRSA8bmFtZT4g QVRUQUNIIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IEZPUiBWQUxVRVMKICAqCkBAIC0y MDM3MiwyMyArMjA0MjQsOCBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1 ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAljaGVja19uZXdfcGFydGl0 aW9uX2JvdW5kKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGF0dGFjaHJlbCksIHJlbCwKIAkJ CQkJCQkgIGNtZC0+Ym91bmQsIHBzdGF0ZSk7CiAKLQkvKiBPSyB0byBjcmVhdGUgaW5oZXJp dGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICovCi0JQ3JlYXRl SW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUpOwotCi0JLyogVXBkYXRlIHRoZSBw Z19jbGFzcyBlbnRyeS4gKi8KLQlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVs LCBjbWQtPmJvdW5kKTsKLQotCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNl dCBvZiBpbmRleGVzIGluIHRoZSBwYXJ0aXRpb24uICovCi0JQXR0YWNoUGFydGl0aW9uRW5z dXJlSW5kZXhlcyh3cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKLQotCS8qIGFuZCB0cmlnZ2Vy cyAqLwotCUNsb25lUm93VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7Ci0K LQkvKgotCSAqIENsb25lIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJl c3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwCi0JICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2 ZXJpZmljYXRpb24uCi0JICovCi0JQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVl LCByZWwsIGF0dGFjaHJlbCk7CisJLyogQXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUg cGFydGl0aW9uZWQgdGFibGUuICovCisJYXR0YWNoUGFydGl0aW9uVGFibGUod3F1ZXVlLCBy ZWwsIGF0dGFjaHJlbCwgY21kLT5ib3VuZCk7CiAKIAkvKgogCSAqIEdlbmVyYXRlIHBhcnRp dGlvbiBjb25zdHJhaW50IGZyb20gdGhlIHBhcnRpdGlvbiBib3VuZCBzcGVjaWZpY2F0aW9u LgpAQCAtMjIwMzUsMyArMjIwNzIsODQ0IEBAIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0 dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSkKIAogCXJldHVybiBjc3RvcmFnZTsK IH0KKworCisvKgorICogYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzOiBidWlsZCB0 aGUgbmVlZGVkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcworICogZm9yIG5ldyBwYXJ0 aXRpb24gKG5ld1BhcnRSZWwpIGNoZWNrcyBhbmQgaW5pdGlhbGl6ZSBleHByZXNzaW9ucyBm b3IKKyAqIGdlbmVyYXRlZCBjb2x1bW5zLiBBbGwgZXhwcmVzc2lvbnMgc2hvdWxkIGJlIGNy ZWF0ZWQgaW4gInRhYiIKKyAqIChBbHRlcmVkVGFibGVJbmZvIHN0cnVjdHVyZSkuCisgKi8K K3N0YXRpYyB2b2lkCitidWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXMoQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiBuZXdQYXJ0UmVsLCBFU3RhdGUgKmVzdGF0ZSkKK3sK KwkvKiBCdWlsZCB0aGUgbmVlZGVkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcy4gKi8K Kwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJ eworCQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6 CisJCQkJY29uLT5xdWFsc3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgZXhwYW5k X2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4cHIoY29uLT5xdWFsLCBuZXdQYXJ0UmVsLCAxKSwg ZXN0YXRlKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSX0ZPUkVJR046CisJCQkJLyog Tm90aGluZyB0byBkbyBoZXJlLiAqLworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJfTk9U TlVMTDoKKwkJCQkvKiBOb3RoaW5nIHRvIGRvIGhlcmUuICovCisJCQkJYnJlYWs7CisJCQlk ZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBl OiAlZCIsCisJCQkJCSAoaW50KSBjb24tPmNvbnR5cGUpOworCQl9CisJfQorCisJZm9yZWFj aF9wdHIoTmV3Q29sdW1uVmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJeworCQkvKiBFeHBy ZXNzaW9uIGFscmVhZHkgcGxhbm5lZC4gKi8KKwkJZXgtPmV4cHJzdGF0ZSA9IEV4ZWNJbml0 RXhwcigoRXhwciAqKSBleC0+ZXhwciwgTlVMTCk7CisJfQorfQorCisvKgorICogZXZhbHVh dGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHM6IGV2YWx1YXRlIGFu eSBnZW5lcmF0ZWQKKyAqIGV4cHJlc3Npb25zIGZvciAidGFiIiAoQWx0ZXJlZFRhYmxlSW5m byBzdHJ1Y3R1cmUpIHdob3NlIGlucHV0cyBjb21lIGZyb20KKyAqIHRoZSBuZXcgdHVwbGUg KGluc2VydHNsb3QpIG9mIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnRSZWwpLgorICovCitzdGF0 aWMgdm9pZAorZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWlu dHMoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkJCQkJUmVsYXRpb24gbmV3UGFy dFJlbCwKKwkJCQkJCQkJCQkJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90LAorCQkJCQkJ CQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCWVjb250ZXh0LT5lY3h0X3NjYW50 dXBsZSA9IGluc2VydHNsb3Q7CisKKwlmb3JlYWNoX3B0cihOZXdDb2x1bW5WYWx1ZSwgZXgs IHRhYi0+bmV3dmFscykKKwl7CisJCWlmICghZXgtPmlzX2dlbmVyYXRlZCkKKwkJCWNvbnRp bnVlOworCisJCWluc2VydHNsb3QtPnR0c192YWx1ZXNbZXgtPmF0dG51bSAtIDFdCisJCQk9 IEV4ZWNFdmFsRXhwcihleC0+ZXhwcnN0YXRlLAorCQkJCQkJCWVjb250ZXh0LAorCQkJCQkJ CSZpbnNlcnRzbG90LT50dHNfaXNudWxsW2V4LT5hdHRudW0gLSAxXSk7CisJfQorCisJZm9y ZWFjaF9wdHIoTmV3Q29uc3RyYWludCwgY29uLCB0YWItPmNvbnN0cmFpbnRzKQorCXsKKwkJ c3dpdGNoIChjb24tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2UgQ09OU1RSX0NIRUNLOgorCQkJ CWlmICghRXhlY0NoZWNrKGNvbi0+cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiksCisJ CQkJCQkJZXJybXNnKCJjaGVjayBjb25zdHJhaW50IFwiJXNcIiBvZiByZWxhdGlvbiBcIiVz XCIgaXMgdmlvbGF0ZWQgYnkgc29tZSByb3ciLAorCQkJCQkJCQkgICBjb24tPm5hbWUsIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKG5ld1BhcnRSZWwpKSwKKwkJCQkJCQllcnJ0YWJsZWNv bnN0cmFpbnQobmV3UGFydFJlbCwgY29uLT5uYW1lKSk7CisJCQkJYnJlYWs7CisJCQljYXNl IENPTlNUUl9OT1ROVUxMOgorCQkJY2FzZSBDT05TVFJfRk9SRUlHTjoKKwkJCQkvKiBOb3Ro aW5nIHRvIGRvIGhlcmUgKi8KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBjb25zdHJhaW50IHR5cGU6ICVkIiwKKwkJCQkJIChpbnQp IGNvbi0+Y29udHlwZSk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBnZXRBdHRyaWJ1dGVzTGlz dDogcmV0dXJuIGxpc3Qgb2YgY29sdW1ucyAoQ29sdW1uRGVmKSBsaWtlIG1vZGVsIHRhYmxl CisgKiAobW9kZWxSZWwpCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldEF0dHJpYnV0ZXNMaXN0 KFJlbGF0aW9uIG1vZGVsUmVsKQoreworCUF0dHJOdW1iZXIJcGFyZW50X2F0dG5vOworCVR1 cGxlRGVzYwltb2RlbERlc2M7CisJTGlzdAkgICAqY29sTGlzdCA9IE5JTDsKKworCW1vZGVs RGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IobW9kZWxSZWwpOworCisJZm9yIChwYXJlbnRfYXR0 bm8gPSAxOyBwYXJlbnRfYXR0bm8gPD0gbW9kZWxEZXNjLT5uYXR0czsKKwkJIHBhcmVudF9h dHRubysrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNj QXR0cihtb2RlbERlc2MsCisJCQkJCQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisJCUNv bHVtbkRlZiAgKmRlZjsKKworCQkvKiBJZ25vcmUgZHJvcHBlZCBjb2x1bW5zIGluIHRoZSBw YXJlbnQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVl OworCisJCWRlZiA9IG1ha2VDb2x1bW5EZWYoTmFtZVN0cihhdHRyaWJ1dGUtPmF0dG5hbWUp LCBhdHRyaWJ1dGUtPmF0dHR5cGlkLAorCQkJCQkJCWF0dHJpYnV0ZS0+YXR0dHlwbW9kLCBh dHRyaWJ1dGUtPmF0dGNvbGxhdGlvbik7CisKKwkJZGVmLT5pc19ub3RfbnVsbCA9IGF0dHJp YnV0ZS0+YXR0bm90bnVsbDsKKworCQkvKiBDb3B5IGlkZW50aXR5IGZvciBuZXcgcGFydGl0 aW9uLiAqLworCQlkZWYtPmlkZW50aXR5ID0gYXR0cmlidXRlLT5hdHRpZGVudGl0eTsKKwor CQkvKiBBZGQgdG8gY29sdW1uIGxpc3QgKi8KKwkJY29sTGlzdCA9IGxhcHBlbmQoY29sTGlz dCwgZGVmKTsKKworCQkvKgorCQkgKiBBbHRob3VnaCB3ZSBkb24ndCB0cmFuc2ZlciB0aGUg Y29sdW1uJ3MgZGVmYXVsdC9nZW5lcmF0aW9uCisJCSAqIGV4cHJlc3Npb24gbm93LCB3ZSBu ZWVkIHRvIG1hcmsgaXQgR0VORVJBVEVEIGlmIGFwcHJvcHJpYXRlLgorCQkgKi8KKwkJaWYg KGF0dHJpYnV0ZS0+YXR0aGFzZGVmICYmIGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkKQorCQkJ ZGVmLT5nZW5lcmF0ZWQgPSBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZDsKKworCQlkZWYtPnN0 b3JhZ2UgPSBhdHRyaWJ1dGUtPmF0dHN0b3JhZ2U7CisKKwkJLyogTGlrZXdpc2UsIGNvcHkg Y29tcHJlc3Npb24gaWYgcmVxdWVzdGVkICovCisJCWlmIChDb21wcmVzc2lvbk1ldGhvZElz VmFsaWQoYXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpCisJCQlkZWYtPmNvbXByZXNzaW9u ID0KKwkJCQlwc3RyZHVwKEdldENvbXByZXNzaW9uTWV0aG9kTmFtZShhdHRyaWJ1dGUtPmF0 dGNvbXByZXNzaW9uKSk7CisJCWVsc2UKKwkJCWRlZi0+Y29tcHJlc3Npb24gPSBOVUxMOwor CX0KKworCXJldHVybiBjb2xMaXN0OworfQorCisKKy8qCisgKiBjcmVhdGVUYWJsZUNvbnN0 cmFpbnRzOiBjcmVhdGUgY29uc3RyYWludHMsIGRlZmF1bHQgdmFsdWVzIGFuZCBnZW5lcmF0 ZWQKKyAqIHZhbHVlcyAocHJvdG90eXBlIGlzIGZ1bmN0aW9uIGV4cGFuZFRhYmxlTGlrZUNs YXVzZSkuCisgKiB0YWIgaXMgcGVuZGluZy13b3JrIHF1ZXVlIGZvciBuZXdSZWwsIHdlIG1h eSBuZWVkIGl0IGluIG1vdmVNZXJnZWRUYWJsZXNSb3dzLgorICovCitzdGF0aWMgdm9pZAor Y3JlYXRlVGFibGVDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsCisJCQkJCSAgIFJlbGF0aW9uIG1vZGVsUmVsLCBSZWxhdGlvbiBuZXdSZWwpCit7 CisJVHVwbGVEZXNjCXR1cGxlRGVzYzsKKwlUdXBsZUNvbnN0ciAqY29uc3RyOworCUF0dHJN YXAgICAgKmF0dG1hcDsKKwlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKKwlpbnQJCQljY251 bTsKKwlMaXN0CSAgICpDb25zdHJhaW50cyA9IE5JTDsKKwlMaXN0CSAgICpjb29rZWRDb25z dHJhaW50cyA9IE5JTDsKKworCXR1cGxlRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IobW9kZWxS ZWwpOworCWNvbnN0ciA9IHR1cGxlRGVzYy0+Y29uc3RyOworCisJaWYgKCFjb25zdHIpCisJ CXJldHVybjsKKworCS8qCisJICogQ29uc3RydWN0IGEgbWFwIGZyb20gdGhlIExJS0UgcmVs YXRpb24ncyBhdHRub3MgdG8gdGhlIGNoaWxkIHJlbCdzLgorCSAqIFRoaXMgcmUtY2hlY2tz IHR5cGUgbWF0Y2ggZXRjLCBhbHRob3VnaCBpdCBzaG91bGRuJ3QgYmUgcG9zc2libGUgdG8K KwkgKiBoYXZlIGEgZmFpbHVyZSBzaW5jZSBib3RoIHRhYmxlcyBhcmUgbG9ja2VkLgorCSAq LworCWF0dG1hcCA9IGJ1aWxkX2F0dHJtYXBfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKG5l d1JlbCksCisJCQkJCQkJCSAgIHR1cGxlRGVzYywKKwkJCQkJCQkJICAgZmFsc2UpOworCisJ LyogQ3ljbGUgZm9yIGRlZmF1bHQgdmFsdWVzLiAqLworCWZvciAocGFyZW50X2F0dG5vID0g MTsgcGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7IHBhcmVudF9hdHRubysrKQor CXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0dXBs ZURlc2MsCisJCQkJCQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisKKwkJLyogSWdub3Jl IGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRlLT5h dHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQkvKiBDb3B5IGRlZmF1bHQsIGlmIHBy ZXNlbnQgYW5kIGl0IHNob3VsZCBiZSBjb3BpZWQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0 dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqdGhpc19kZWZhdWx0ID0gTlVMTDsKKwkJCWJv b2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJCUF0dHJOdW1iZXIJbnVtOworCQkJTm9kZQkgICAq ZGVmOworCQkJTmV3Q29sdW1uVmFsdWUgKm5ld3ZhbDsKKworCQkJaWYgKGF0dHJpYnV0ZS0+ YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQl0aGlz X2RlZmF1bHQgPSBidWlsZF9nZW5lcmF0aW9uX2V4cHJlc3Npb24obW9kZWxSZWwsIGF0dHJp YnV0ZS0+YXR0bnVtKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQl0aGlzX2RlZmF1bHQgPSBUdXBs ZURlc2NHZXREZWZhdWx0KHR1cGxlRGVzYywgYXR0cmlidXRlLT5hdHRudW0pOworCQkJCWlm ICh0aGlzX2RlZmF1bHQgPT0gTlVMTCkKKwkJCQkJZWxvZyhFUlJPUiwgImRlZmF1bHQgZXhw cmVzc2lvbiBub3QgZm91bmQgZm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiBcIiVzXCIi LAorCQkJCQkJIGF0dHJpYnV0ZS0+YXR0bnVtLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSht b2RlbFJlbCkpOworCQkJfQorCisJCQludW0gPSBhdHRtYXAtPmF0dG51bXNbcGFyZW50X2F0 dG5vIC0gMV07CisJCQlkZWYgPSBtYXBfdmFyaWFibGVfYXR0bm9zKHRoaXNfZGVmYXVsdCwg MSwgMCwgYXR0bWFwLCBJbnZhbGlkT2lkLCAmZm91bmRfd2hvbGVfcm93KTsKKworCQkJLyoK KwkJCSAqIFByZXZlbnQgdGhpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGZvciBjb25zdHJh aW50cyBiZWxvdy4gTm90ZQorCQkJICogdGhhdCBkZWZhdWx0cyBjYW5ub3QgY29udGFpbiBh bnkgdmFycywgc28gaXQncyBPSyB0aGF0IHRoZQorCQkJICogZXJyb3IgbWVzc2FnZSByZWZl cnMgdG8gZ2VuZXJhdGVkIGNvbHVtbnMuCisJCQkgKi8KKwkJCWlmIChmb3VuZF93aG9sZV9y b3cgJiYgYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJykKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJCQllcnJtc2coImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2Ui KSwKKwkJCQkJCWVycmRldGFpbCgiR2VuZXJhdGlvbiBleHByZXNzaW9uIGZvciBjb2x1bW4g XCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVzXCIu IiwKKwkJCQkJCQkJIE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwKKwkJCQkJCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKG1vZGVsUmVsKSkpOworCisJCQkvKiBBZGQgYSBwcmUt Y29va2VkIGRlZmF1bHQgZXhwcmVzc2lvbi4gKi8KKwkJCVN0b3JlQXR0ckRlZmF1bHQobmV3 UmVsLCBudW0sIGRlZiwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBTdG9yZWQgZ2VuZXJhdGVk IGNvbHVtbiBleHByZXNzaW9ucyBpbiBtb2RlbFJlbCBtaWdodCByZWZlcmVuY2UKKwkJCSAq IHRhYmxlb2lkLiAgbmV3UmVsLCBtb2RlbFJlbCB0YWJsZW9pZCBjbGVhciBpcyBub3QgdGhl IHNhbWUuIElmCisJCQkgKiBzbywgdGhlc2Ugc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zIHJl cXVpcmUgcmVjb21wdXRhdGlvbiBmb3IKKwkJCSAqIG5ld1JlbCB3aXRoaW4gbW92ZU1lcmdl ZFRhYmxlc1Jvd3MuCisJCQkqLworCQkJaWYgKGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkID09 IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQkJeworCQkJCW5ld3ZhbCA9IChOZXdD b2x1bW5WYWx1ZSAqKSBwYWxsb2MwKHNpemVvZihOZXdDb2x1bW5WYWx1ZSkpOworCQkJCW5l d3ZhbC0+YXR0bnVtID0gbnVtOworCQkJCW5ld3ZhbC0+ZXhwciA9IGV4cHJlc3Npb25fcGxh bm5lcigoRXhwciAqKSBkZWYpOworCQkJCW5ld3ZhbC0+aXNfZ2VuZXJhdGVkID0gKGF0dHJp YnV0ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpOworCQkJCXRhYi0+bmV3dmFscyA9IGxhcHBl bmQodGFiLT5uZXd2YWxzLCBuZXd2YWwpOworCQkJfQorCQl9CisJfQorCisJLyogQ3ljbGUg Zm9yIENIRUNLIGNvbnN0cmFpbnRzLiAqLworCWZvciAoY2NudW0gPSAwOyBjY251bSA8IGNv bnN0ci0+bnVtX2NoZWNrOyBjY251bSsrKQorCXsKKwkJY2hhcgkgICAqY2NuYW1lID0gY29u c3RyLT5jaGVja1tjY251bV0uY2NuYW1lOworCQljaGFyCSAgICpjY2JpbiA9IGNvbnN0ci0+ Y2hlY2tbY2NudW1dLmNjYmluOworCQlib29sCQljY2VuZm9yY2VkID0gY29uc3RyLT5jaGVj a1tjY251bV0uY2NlbmZvcmNlZDsKKwkJYm9vbAkJY2Nub2luaGVyaXQgPSBjb25zdHItPmNo ZWNrW2NjbnVtXS5jY25vaW5oZXJpdDsKKwkJYm9vbAkJY2N2YWxpZCA9IGNvbnN0ci0+Y2hl Y2tbY2NudW1dLmNjdmFsaWQ7CisJCU5vZGUJICAgKmNjYmluX25vZGU7CisJCWJvb2wJCWZv dW5kX3dob2xlX3JvdzsKKwkJQ29uc3RyYWludCAqY29uc3RyOworCisJCS8qCisJCSAqIFBh cnRpdGlvbmVkIHRhYmxlIGNhbiBub3QgaGF2ZSBOTyBJTkhFUklUIGNoZWNrIGNvbnN0cmFp bnQgKHNlZQorCQkgKiBTdG9yZVJlbENoZWNrIGZ1bmN0aW9uKS4KKwkJICovCisJCUFzc2Vy dCghY2Nub2luaGVyaXQpOworCisJCWNjYmluX25vZGUgPSBtYXBfdmFyaWFibGVfYXR0bm9z KHN0cmluZ1RvTm9kZShjY2JpbiksCisJCQkJCQkJCQkJIDEsIDAsCisJCQkJCQkJCQkJIGF0 dG1hcCwKKwkJCQkJCQkJCQkgSW52YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJ LyoKKwkJICogV2UgcmVqZWN0IHdob2xlLXJvdyB2YXJpYWJsZXMgYmVjYXVzZSB0aGUgd2hv bGUgcG9pbnQgb2YgTElLRSBpcworCQkgKiB0aGF0IHRoZSBuZXcgdGFibGUncyByb3d0eXBl IG1pZ2h0IGxhdGVyIGRpdmVyZ2UgZnJvbSB0aGUgcGFyZW50J3MuCisJCSAqIFNvLCB3aGls ZSB0cmFuc2xhdGlvbiBtaWdodCBiZSBwb3NzaWJsZSByaWdodCBub3csIGl0IHdvdWxkbid0 IGJlCisJCSAqIHBvc3NpYmxlIHRvIGd1YXJhbnRlZSBpdCB3b3VsZCB3b3JrIGluIGZ1dHVy ZS4KKwkJICovCisJCWlmIChmb3VuZF93aG9sZV9yb3cpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJy bXNnKCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlIiksCisJCQkJ CWVycmRldGFpbCgiQ29uc3RyYWludCBcIiVzXCIgY29udGFpbnMgYSB3aG9sZS1yb3cgcmVm ZXJlbmNlIHRvIHRhYmxlIFwiJXNcIi4iLAorCQkJCQkJCSAgIGNjbmFtZSwKKwkJCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShtb2RlbFJlbCkpKTsKKworCQljb25zdHIgPSBt YWtlTm9kZShDb25zdHJhaW50KTsKKwkJY29uc3RyLT5jb250eXBlID0gQ09OU1RSX0NIRUNL OworCQljb25zdHItPmNvbm5hbWUgPSBwc3RyZHVwKGNjbmFtZSk7CisJCWNvbnN0ci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQljb25zdHItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQlj b25zdHItPmlzX2VuZm9yY2VkID0gY2NlbmZvcmNlZDsKKwkJY29uc3RyLT5za2lwX3ZhbGlk YXRpb24gPSAhY2N2YWxpZDsKKwkJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSBjY3ZhbGlk OworCQljb25zdHItPmlzX25vX2luaGVyaXQgPSBjY25vaW5oZXJpdDsKKwkJY29uc3RyLT5y YXdfZXhwciA9IE5VTEw7CisJCWNvbnN0ci0+Y29va2VkX2V4cHIgPSBub2RlVG9TdHJpbmco Y2NiaW5fbm9kZSk7CisJCWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwkJQ29uc3RyYWludHMg PSBsYXBwZW5kKENvbnN0cmFpbnRzLCBjb25zdHIpOworCX0KKworCS8qIGluc3RhbGwgYWxs IENIRUNLIGNvbnN0cmFpbnRzLiAqLworCWNvb2tlZENvbnN0cmFpbnRzID0gQWRkUmVsYXRp b25OZXdDb25zdHJhaW50cyhuZXdSZWwsIE5JTCwgQ29uc3RyYWludHMsCisJCQkJCQkJCQkJ CQkgIGZhbHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKworCS8qIE1ha2UgdGhlIGFkZGl0aW9u YWwgY2F0YWxvZyBjaGFuZ2VzIHZpc2libGUgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCisJLyoKKwkgKiBtb2RlbFJlbCBjaGVjayBjb25zdHJhaW50IGV4cHJlc3NzaW9u IG1heSByZWZlcmVuY2UgdGFibGVvaWQsIHNvIGxhdGVyIGluCisJICogbW92ZU1lcmdlZFRh Ymxlc1Jvd3MsIHdlIG5lZWQgZXZ1bGF0ZSB0aGUgY2hlY2sgY29uc3RyYWludCBhZ2FpbiBm b3IgdGhlCisJICogbmV3UmVsLiBXZSBjYW4gY2hlY2sgd2VhdGhlciBjaGVjayBjb25zdHJh aW50IGNvbnRhaW4gdGFibGVvaWQgcmVmZXJlbmNlCisJICogb3Igbm90IHZpYSBwdWxsX3Zh cmF0dG5vcy4KKwkqLworCWZvcmVhY2hfcHRyKENvb2tlZENvbnN0cmFpbnQsIGNjb24sIGNv b2tlZENvbnN0cmFpbnRzKQorCXsKKwkJaWYgKCFjY29uLT5za2lwX3ZhbGlkYXRpb24gJiYg Y2Nvbi0+Y29udHlwZSA9PSBDT05TVFJfQ0hFQ0spCisJCXsKKwkJCU5vZGUJCSpxdWFsOwor CQkJQml0bWFwc2V0CSAgKmF0dG51bXMgPSBOVUxMOworCisJCQlxdWFsID0gZXhwYW5kX2dl bmVyYXRlZF9jb2x1bW5zX2luX2V4cHIoY2Nvbi0+ZXhwciwgbmV3UmVsLCAxKTsKKwkJCXB1 bGxfdmFyYXR0bm9zKHF1YWwsIDEsICZhdHRudW1zKTsKKworCQkJLyoKKwkJCSAqIEFkZCBj aGVjayBvbmx5IGlmIGl0IGNvbnRhaW5zIHRhYmxlb2lkCisJCQkgKiAoVGFibGVPaWRBdHRy aWJ1dGVOdW1iZXIpLgorCQkJICovCisJCQlpZiAoYm1zX2lzX21lbWJlcihUYWJsZU9pZEF0 dHJpYnV0ZU51bWJlciAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJ CQkJCQkJICBhdHRudW1zKSkKKwkJCXsKKwkJCQlOZXdDb25zdHJhaW50ICpuZXdjb247CisK KwkJCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2MwKHNpemVvZihOZXdDb25z dHJhaW50KSk7CisJCQkJbmV3Y29uLT5uYW1lID0gY2Nvbi0+bmFtZTsKKwkJCQluZXdjb24t PmNvbnR5cGUgPSBjY29uLT5jb250eXBlOworCQkJCW5ld2Nvbi0+cXVhbCA9IHF1YWw7CisK KwkJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdj b24pOworCQkJfQorCQl9CisJfQorCisJLyogRG9uJ3QgbmVlZCB0aGUgY29va2VkQ29uc3Ry YWludHMgYW55IG1vcmUuICovCisJbGlzdF9mcmVlX2RlZXAoY29va2VkQ29uc3RyYWludHMp OworCisJLyogUmVwcm9kdWNlIG5vdC1udWxsIGNvbnN0cmFpbnRzLiAqLworCWlmIChjb25z dHItPmhhc19ub3RfbnVsbCkKKwl7CisJCUxpc3QJICAgKm5uY29uc3RyYWludHM7CisKKwkJ LyoKKwkJICogVGhlICJpbmNsdWRlX25vaW5oIiBhcmd1bWVudCBpcyBmYWxzZSBiZWNhdXNl IGEgcGFydGl0aW9uZWQgdGFibGUKKwkJICogY2Fubm90IGhhdmUgTk8gSU5IRVJJVCBjb25z dHJhaW50LgorCQkgKi8KKwkJbm5jb25zdHJhaW50cyA9IFJlbGF0aW9uR2V0Tm90TnVsbENv bnN0cmFpbnRzKFJlbGF0aW9uR2V0UmVsaWQobW9kZWxSZWwpLAorCQkJCQkJCQkJCQkJCSAg ZmFsc2UsIGZhbHNlKTsKKworCQlBc3NlcnQobGlzdF9sZW5ndGgobm5jb25zdHJhaW50cykg PiAwKTsKKworCQkvKgorCQkgKiBXZSBhbHJlYWR5IHNldCBwZ19hdHRyaWJ1dGUuYXR0bm90 bnVsbCBpbiBjcmVhdGVQYXJ0aXRpb25UYWJsZS4gTm8KKwkJICogbmVlZCBjYWxsIHNldF9h dHRub3RudWxsIGFnYWluLgorCQkqLworCQlBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKG5l d1JlbCwgTklMLCBubmNvbnN0cmFpbnRzLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisJ fQorfQorCisKKy8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZTogY3JlYXRlIHRhYmxlIGZv ciBhIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZlbiBuYW1lCisgKiAobmV3UGFydE5hbWUpIGxp a2UgdGFibGUgKG1vZGVsUmVsLCBwYXJ0aXRpb25lZCB0YWJsZSkuIG93bmVySWQgaXMKKyAq IGRldGVybWluZWQgYnkgdGhlIHBhcnRpdGlvbiBvbiB3aGljaCB0aGUgb3BlcmF0aW9uIGlz IHBlcmZvcm1lZCwgc28gaXQKKyAqIGlzIHBhc3NlZCBzZXBhcmF0ZWx5LgorICoKKyAqIEFs c28sIHRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbmV3IHBhcnRpdGlvbiBhY2Nlc3MgbWV0aG9k IHNhbWUgYXMgcGFyZW50CisgKiB0YWJsZSBhY2Nlc3MgbWV0aG9kcyAoc2ltaWxhcmx5IHRv IENSRUFURSBUQUJMRSAuLi4gUEFSVElUSU9OIE9GKS4gIEl0CisgKiBjaGVja3MgdGhhdCBw YXJlbnQgYW5kIGNoaWxkIHRhYmxlcyBoYXZlIGNvbXBhdGlibGUgcGVyc2lzdGVuY2UuCisg KgorICogRnVuY3Rpb24gcmV0dXJucyB0aGUgY3JlYXRlZCByZWxhdGlvbiAobG9ja2VkIGlu IEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgbW9kZSkuCisgKi8KK3N0YXRpYyBSZWxhdGlvbgorY3Jl YXRlUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmFuZ2VWYXIgKm5ld1BhcnROYW1l LAorCQkJCQkgUmVsYXRpb24gbW9kZWxSZWwsIE9pZCBvd25lcklkKQoreworCVJlbGF0aW9u CW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOworCVR1 cGxlRGVzYwlkZXNjcmlwdG9yOworCUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisJT2lkCQkJ cmVsYW1JZDsKKwlPaWQJCQluYW1lc3BhY2VJZDsKKwlBbHRlcmVkVGFibGVJbmZvICpuZXdf cGFydHJlbF90YWI7CisKKwkvKiBJZiBleGlzdGluZyByZWwgaXMgdGVtcCwgaXQgbXVzdCBi ZWxvbmcgdG8gdGhpcyBzZXNzaW9uICovCisJaWYgKFJFTEFUSU9OX0lTX09USEVSX1RFTVAo bW9kZWxSZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGFzIHBhcnRpdGlv biBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gb2YgYW5vdGhlciBzZXNzaW9uIikpOworCisJLyog TG9vayB1cCBpbmhlcml0YW5jZSBhbmNlc3RvcnMgYW5kIGdlbmVyYXRlIHJlbGF0aW9uIHNj aGVtYS4gKi8KKwljb2xMaXN0ID0gZ2V0QXR0cmlidXRlc0xpc3QobW9kZWxSZWwpOworCisJ LyogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBmcm9tIHRoZSByZWxhdGlvbiBzY2hlbWEu ICovCisJZGVzY3JpcHRvciA9IEJ1aWxkRGVzY0ZvclJlbGF0aW9uKGNvbExpc3QpOworCisJ LyogTG9vayB1cCB0aGUgYWNjZXNzIG1ldGhvZCBmb3IgbmV3IHJlbGF0aW9uLiAqLworCXJl bGFtSWQgPSAobW9kZWxSZWwtPnJkX3JlbC0+cmVsYW0gIT0gSW52YWxpZE9pZCkgPyBtb2Rl bFJlbC0+cmRfcmVsLT5yZWxhbSA6IEhFQVBfVEFCTEVfQU1fT0lEOworCisJLyogTG9vayB1 cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBzdXBwb3NlZCB0byBjcmVhdGUgdGhl IHJlbGF0aW9uLiAqLworCW5hbWVzcGFjZUlkID0KKwkJUmFuZ2VWYXJHZXRBbmRDaGVja0Ny ZWF0aW9uTmFtZXNwYWNlKG5ld1BhcnROYW1lLCBOb0xvY2ssICZleGlzdGluZ1JlbGlkKTsK KwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQllcnJtc2coInJlbGF0 aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIG5ld1BhcnROYW1lLT5yZWxuYW1lKSk7CisK KwkvKiBDcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5ld1JlbElkID0gaGVhcF9jcmVhdGVf d2l0aF9jYXRhbG9nKG5ld1BhcnROYW1lLT5yZWxuYW1lLAorCQkJCQkJCQkJCW5hbWVzcGFj ZUlkLAorCQkJCQkJCQkJCW1vZGVsUmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsCisJCQkJ CQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUlu dmFsaWRPaWQsCisJCQkJCQkJCQkJb3duZXJJZCwKKwkJCQkJCQkJCQlyZWxhbUlkLAorCQkJ CQkJCQkJCWRlc2NyaXB0b3IsCisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCVJFTEtJTkRf UkVMQVRJT04sCisJCQkJCQkJCQkJbmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlLAorCQkJ CQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCU9OQ09NTUlUX05P T1AsCisJCQkJCQkJCQkJKERhdHVtKSAwLAorCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJ YWxsb3dTeXN0ZW1UYWJsZU1vZHMsCisJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJSW52 YWxpZE9pZCwKKwkJCQkJCQkJCQlOVUxMKTsKKworCS8qCisJICogV2UgbXVzdCBidW1wIHRo ZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3bHktY3JlYXRlZCByZWxhdGlvbgor CSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5pbmcuCisJICovCisJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKworCS8qCisJICogT3BlbiB0aGUgbmV3IHBhcnRpdGlvbiB3aXRoIG5v IGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlCisJICogQWNjZXNzRXhjbHVzaXZlTG9j ayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCisJICovCisJbmV3UmVsID0gdGFibGVf b3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKKworCS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVl dWUgZW50cnkgZm9yIG5ld2x5IGNyZWF0ZWQgdGFibGUuICovCisJbmV3X3BhcnRyZWxfdGFi ID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UmVsKTsKKworCS8qCisJICogV2UgaW50 ZW5kZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBwZXJzaXN0ZW5j ZSBhcyB0aGUKKwkgKiBwYXJlbnQgdGFibGUsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHJlY2hl Y2sgYmVjYXVzZSB0aGF0IG1pZ2h0IGJlCisJICogYWZmZWN0ZWQgYnkgdGhlIHNlYXJjaF9w YXRoLiAgSWYgdGhlIHBhcmVudCBpcyBwZXJtYW5lbnQsIHNvIG11c3QgYmUKKwkgKiBhbGwg b2YgaXRzIHBhcnRpdGlvbnMuCisJICovCisJaWYgKG1vZGVsUmVsLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJbmV3UmVsLT5yZF9yZWwt PnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJt c2coImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9m IHBlcm1hbmVudCByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShtb2RlbFJlbCkpKTsKKworCS8qIFBlcm1hbmVudCByZWxzIGNhbm5vdCBiZSBw YXJ0aXRpb25zIGJlbG9uZ2luZyB0byB0ZW1wb3JhcnkgcGFyZW50ICovCisJaWYgKG5ld1Jl bC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QICYmCisJ CW1vZGVsUmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RF TVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRp b24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShtb2RlbFJlbCkpKTsKKworCS8qIENyZWF0ZSBj b25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVyYXRlZCB2YWx1ZXMgKi8KKwlj cmVhdGVUYWJsZUNvbnN0cmFpbnRzKHdxdWV1ZSwgbmV3X3BhcnRyZWxfdGFiLCBtb2RlbFJl bCwgbmV3UmVsKTsKKworCS8qCisJICogTmVlZCB0byBjYWxsIENvbW1hbmRDb3VudGVySW5j cmVtZW50LCBzbyBmcmVzaCByZWxjYWNoZSBlbnRyeSBoYXZlIG5ld2x5CisJICogaW5zdGFs bGVkIGNvbnN0cmFpbnQgaW5mby4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OworCisJcmV0dXJuIG5ld1JlbDsKK30KKworLyoKKyAqIG1vdmVNZXJnZWRUYWJsZXNSb3dz OiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIChtZXJnaW5nUGFydGl0aW9ucykKKyAq IG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSAocmVsKSBhbmQgbW92ZSByb3dzIGludG8gdGhl IG5ldyBwYXJ0aXRpb24KKyAqIChuZXdQYXJ0UmVsKS4gV2UgYWxzbyByZWV2YXVsYXRlIGNo ZWNrIGNvbnN0cmFpbnRzIGFnYWluc3QgdGhlc2Ugcm93cy4KKyAqLworc3RhdGljIHZvaWQK K21vdmVNZXJnZWRUYWJsZXNSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwKKwkJ CQkJIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlvbiBuZXdQYXJ0UmVsKQorewor CUNvbW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlFeHByQ29udGV4dCAq ZWNvbnRleHQ7CisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiOworCUxpc3RDZWxsICAgKmx0YWI7 CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICov CisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlCdWxrSW5z ZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRp b24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKworCS8qIEZpbmQgdGhlIHdvcmsg cXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJ dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UGFydFJlbCk7CisKKwkvKiBHZW5l cmF0ZSB0aGUgY29uc3RyYWludCBhbmQgZGVmYXVsdCBleGVjdXRpb24gc3RhdGVzLiAqLwor CWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWJ1aWxkRXhwcmVzc2lvbkV4 ZWN1dGlvblN0YXRlcyh0YWIsIG5ld1BhcnRSZWwsIGVzdGF0ZSk7CisKKwllY29udGV4dCA9 IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCW15Y2lkID0gR2V0Q3VycmVu dENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9y IHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRl KCk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJZHN0c2xvdCA9 IHRhYmxlX3Nsb3RfY3JlYXRlKG5ld1BhcnRSZWwsIE5VTEwpOworCisJZm9yZWFjaF9vaWQo bWVyZ2luZ19vaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsKKwkJVHVwbGVUYWJsZVNsb3Qg KnNyY3Nsb3Q7CisJCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCQlUYWJsZVNj YW5EZXNjIHNjYW47CisJCVNuYXBzaG90CXNuYXBzaG90OworCQlSZWxhdGlvbiAJbWVyZ2lu Z1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBQYXJ0aXRpb24gaXMgYWxyZWFkeSBsb2NrZWQg aW4gdGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCisJCSAqIGZ1bmN0aW9uLgor CQkgKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbiA9IHRhYmxlX29wZW4obWVyZ2luZ19vaWQsIE5v TG9jayk7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICov CisJCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShtZXJnaW5nUGFydGl0aW9uLCBOVUxM KTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBv ZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0aXRpb24uCisJCSAqLworCQl0 dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobWVy Z2luZ1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihuZXdQYXJ0 UmVsKSk7CisKKwkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCQlzbmFwc2hvdCA9 IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCisJ CXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0 aW9uLCBzcmNzbG90KSkKKwkJeworCQkJVHVwbGVUYWJsZVNsb3QgKmluc2VydHNsb3Q7CisK KwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCWlmICh0dXBsZV9tYXApCisJCQl7 CisJCQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlp bnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwg c3Jjc2xvdCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc2xvdF9nZXRh bGxhdHRycyhzcmNzbG90KTsKKworCQkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4g Ki8KKwkJCQlpbnNlcnRzbG90ID0gZHN0c2xvdDsKKworCQkJCUV4ZWNDbGVhclR1cGxlKGlu c2VydHNsb3QpOworCisJCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Ns b3QtPnR0c192YWx1ZXMsCisJCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNf bnZhbGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+ dHRzX2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxp ZCk7CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCQl9CisK KwkJCS8qCisJCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4cHJlc3Npb25zIG1p Z2h0IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRhYmxlb2lkIGNvbHVtbiwgc28gZmlsbCB0dHNf dGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZAorCQkJICogdmFsdWUuICAoV2UgbXVzdCBkbyB0 aGlzIGVhY2ggdGltZSwgYmVjYXVzZSBpdCBnZXRzCisJCQkgKiBvdmVyd3JpdHRlbiB3aXRo IG5ld3JlbCdzIE9JRCBkdXJpbmcgc3RvcmluZy4pCisJCQkgKi8KKwkJCWluc2VydHNsb3Qt PnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQobmV3UGFydFJlbCk7CisKKwkJCS8q CisJCQkgKiBOb3csIGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQgZXhwcmVzc2lvbnMgd2hvc2Ug aW5wdXRzIGNvbWUgZnJvbQorCQkJICogdGhlIG5ldyB0dXBsZS4gIFdlIGFzc3VtZSB0aGVz ZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5jZSBlYWNoCisJCQkgKiBvdGhlciwgc28gdGhhdCB0 aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVuY3kuCisJCQkgKi8KKwkJCWV2YWx1YXRlR2Vu ZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKHRhYiwgbmV3UGFydFJlbCwK KwkJCQkJCQkJCQkJCQkJCWluc2VydHNsb3QsIGVjb250ZXh0KTsKKworCQkJLyogV3JpdGUg dGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLworCQkJdGFibGVfdHVwbGVf aW5zZXJ0KG5ld1BhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLAorCQkJCQkJCSAgIHRpX29w dGlvbnMsIGJpc3RhdGUpOworCisJCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJ fQorCisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFw c2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVfY29udmVyc2lvbl9tYXAodHVw bGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOwor CQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2spOworCX0KKworCUZyZWVF eGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChk c3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKGJpc3RhdGUpOworCisJdGFibGVfZmlu aXNoX2J1bGtfaW5zZXJ0KG5ld1BhcnRSZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBX ZSBkb24ndCBuZWVkIHByb2Nlc3MgdGhpcyBuZXdQYXJ0UmVsIHNpbmNlIHdlIGFscmVhZHkg cHJvY2Vzc2VkIGluIGhlcmUsCisJICogc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1 ZSBvZiBpdC4KKwkgKi8KKwlmb3JlYWNoKGx0YWIsICp3cXVldWUpCisJeworCQl0YWIgPSAo QWx0ZXJlZFRhYmxlSW5mbyAqKSBsZmlyc3QobHRhYik7CisJCWlmICh0YWItPnJlbGlkID09 IFJlbGF0aW9uR2V0UmVsaWQobmV3UGFydFJlbCkpCisJCQkqd3F1ZXVlID0gbGlzdF9kZWxl dGVfY2VsbCgqd3F1ZXVlLCBsdGFiKTsKKwl9Cit9CisKKy8qCisgKiBkZXRhY2hQYXJ0aXRp b25UYWJsZTogZGV0YWNoIHBhcnRpdGlvbiAiY2hpbGRfcmVsIiBmcm9tIHBhcnRpdGlvbmVk IHRhYmxlCisgKiAicGFyZW50X3JlbCIgd2l0aCBkZWZhdWx0IHBhcnRpdGlvbiBpZGVudGlm aWVyICJkZWZhdWx0UGFydE9pZCIKKyAqLworc3RhdGljIHZvaWQKK2RldGFjaFBhcnRpdGlv blRhYmxlKFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIGNoaWxkX3JlbCwgT2lkIGRl ZmF1bHRQYXJ0T2lkKQoreworCS8qIFJlbW92ZSB0aGUgcGdfaW5oZXJpdHMgcm93IGZpcnN0 LiAqLworCVJlbW92ZUluaGVyaXRhbmNlKGNoaWxkX3JlbCwgcGFyZW50X3JlbCwgZmFsc2Up OworCisJLyoKKwkgKiBEZXRhY2hpbmcgdGhlIHBhcnRpdGlvbiBtaWdodCBpbnZvbHZlIFRP QVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBz aG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCisJLyogRG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCURldGFj aFBhcnRpdGlvbkZpbmFsaXplKHBhcmVudF9yZWwsIGNoaWxkX3JlbCwgZmFsc2UsIGRlZmF1 bHRQYXJ0T2lkKTsKKworCVBvcEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKKy8qCisgKiBBTFRF UiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8cGFydGl0aW9uLWxpc3Q+IElOVE8g PHBhcnRpdGlvbi1uYW1lPgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjTWVyZ2VQYXJ0aXRp b25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAorCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQg KmNvbnRleHQpCit7CisJUmVsYXRpb24JbmV3UGFydFJlbDsKKwlMaXN0CSAgICptZXJnaW5n UGFydGl0aW9ucyA9IE5JTDsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlleGlz dGluZ1JlbGlkOworCU9pZAkJCW93bmVySWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCXNhdmVf dXNlcmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2 ZWw7CisKKwkvKgorCSAqIENoZWNrIG93bmVyc2hpcCBvZiBtZXJnZWQgcGFydGl0aW9ucyDi gJQgcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25lcnMKKwkgKiBjYW5ub3QgYmUgbWVy Z2VkLiBBbHNvLCBjb2xsZWN0IHRoZSBPSURzIG9mIHRoZXNlIHBhcnRpdGlvbnMgZHVyaW5n IHRoZQorCSAqIGNoZWNrLgorCSovCisJZm9yZWFjaF9ub2RlKFJhbmdlVmFyLCBuYW1lLCBj bWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbjsKKworCQkv KgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gZGV0YWNoIGFuZCByZW1vdmUgdGhpcyBwYXJ0aXRp b24uICBXZSBhbHJlYWR5IHRvb2sKKwkJICogQWNjZXNzRXhjbHVzaXZlTG9jayBsb2NrIG9u IHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlLCBzbyBoZXJlLAorCQkgKiBOb0xvY2sg aXMgZmluZS4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9vcGVucnZfZXh0 ZW5kZWQobmFtZSwgTm9Mb2NrLCBmYWxzZSk7CisJCUFzc2VydChDaGVja1JlbGF0aW9uTG9j a2VkQnlNZShtZXJnaW5nUGFydGl0aW9uLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCBmYWxzZSkp OworCisJCWlmIChPaWRJc1ZhbGlkKG93bmVySWQpKQorCQl7CisJCQkvKiBEbyB0aGUgcGFy dGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzPyAqLworCQkJaWYg KG93bmVySWQgIT0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcikKKwkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlm ZmVyZW50IG93bmVycyIpKTsKKwkJfQorCQllbHNlCisJCQlvd25lcklkID0gbWVyZ2luZ1Bh cnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcjsKKworCQkvKiBTdG9yZSBhIG5leHQgbWVyZ2lu ZyBwYXJ0aXRpb24gaW50byB0aGUgbGlzdC4gKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbnMgPSBs YXBwZW5kX29pZChtZXJnaW5nUGFydGl0aW9ucywKKwkJCQkJCQkJCQlSZWxhdGlvbkdldFJl bGlkKG1lcmdpbmdQYXJ0aXRpb24pKTsKKworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0 aW9uLCBOb0xvY2spOworCX0KKworCS8qCisJICogTG9vayB1cCBleGlzdGluZyByZWxhdGlv biBieSBuZXcgcGFydGl0aW9uIG5hbWUsIGNoZWNrIHdlIGhhdmUKKwkgKiBwZXJtaXNzaW9u IHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdCBhZ2FpbnN0IGNvbmN1cnJlbnQgZHJvcCwgYW5k IG1hcmsKKwkgKiBzdG10LT5yZWxhdGlvbiBhcyBSRUxQRVJTSVNURU5DRV9URU1QIGlmIGEg dGVtcG9yYXJ5IG5hbWVzcGFjZSBpcworCSAqIHNlbGVjdGVkLgorCSAqLworCWNtZC0+bmFt ZS0+cmVscGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CisJUmFu Z2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKGNtZC0+bmFtZSwgTm9Mb2NrLCAm ZXhpc3RpbmdSZWxpZCk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoaXMgbmFtZSBpcyBhbHJl YWR5IHRha2VuLiAgVGhpcyBoZWxwcyB1cyB0byBkZXRlY3QgdGhlCisJICogc2l0dWF0aW9u IHdoZW4gb25lIG9mIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgaGFzIHRoZSBzYW1lIG5hbWUg YXMgdGhlCisJICogbmV3IHBhcnRpdGlvbi4gIE90aGVyd2lzZSwgdGhpcyB3b3VsZCBmYWls IGxhdGVyIG9uIGFueXdheSBidXQgY2F0Y2hpbmcKKwkgKiB0aGlzIGhlcmUgYWxsb3dzIHVz IHRvIGVtaXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorCSAqLworCWlmIChPaWRJc1ZhbGlk KGV4aXN0aW5nUmVsaWQpKQorCXsKKwkJT2lkCQluZXdQYXJ0aXRpb25PaWQgPSBJbnZhbGlk T2lkOworCisJCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0 aXRpb25zKQorCQl7CisJCQlpZiAobWVyZ2luZ1BhcnRpdGlvbk9pZCA9PSBleGlzdGluZ1Jl bGlkKQorCQkJeworCQkJCW5ld1BhcnRpdGlvbk9pZCA9IG1lcmdpbmdQYXJ0aXRpb25PaWQ7 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoT2lkSXNWYWxpZChuZXdQYXJ0aXRp b25PaWQpKQorCQl7CisJCQkvKgorCQkJICogVGhlIG5ldyBwYXJ0aXRpb24gaGFzIHRoZSBz YW1lIG5hbWUgYXMgb25lIG9mIG1lcmdpbmcKKwkJCSAqIHBhcnRpdGlvbnMuCisJCQkgKi8K KwkJCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCisJCQkvKiBHZW5lcmF0ZSB0 ZW1wb3JhcnkgbmFtZS4gKi8KKwkJCXNwcmludGYodG1wUmVsTmFtZSwgIm1lcmdlLSV1LSVY LXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsKKworCQkJLyoKKwkJ CSAqIFJlbmFtZSB0aGUgZXhpc3RpbmcgcGFydGl0aW9uIHdpdGggYSB0ZW1wb3JhcnkgbmFt ZSwgbGVhdmluZyBpdAorCQkJICogZnJlZSBmb3IgdGhlIG5ldyBwYXJ0aXRpb24uICBXZSBk b24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcworCQkJICogaW4gdGhlIGZ1dHVyZSBiZWNh dXNlIHdlJ3JlIGdvaW5nIHRvIGV2ZW50dWFsbHkgZHJvcCB0aGUKKwkJCSAqIGV4aXN0aW5n IHBhcnRpdGlvbiBhbnl3YXkuCisJCQkgKi8KKwkJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwo bmV3UGFydGl0aW9uT2lkLCB0bXBSZWxOYW1lLCB0cnVlLCBmYWxzZSk7CisKKwkJCS8qCisJ CQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcg cGFydGl0aW9uCisJCQkgKiB0dXBsZSB2aXNpYmxlIGZvciByZW5hbWUuCisJCQkgKi8KKwkJ CUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJ CQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBjbWQtPm5hbWUt PnJlbG5hbWUpKTsKKwkJfQorCX0KKworCWRlZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1 bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1 ZSkpOworCisJLyoKKwkgKiBEZXRhY2ggYWxsIG1lcmdlZCBwYXJ0aXRpb25zLgorCSAqCisJ ICogUGVyZm9ybSBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0 J3Mgc2FmZSB0byBkcm9wIGFsbAorCSAqIG1lcmdpbmcgcGFydGl0aW9ucyBiZWZvcmUgd2Ug YWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cworCSAqIGludG8gdGhl IG5ldyBwYXJ0aXRpb25zIHZpYSBtb3ZlTWVyZ2VkVGFibGVzUm93cywgYWxsIG9sZCBwYXJ0 aXRpb25zIG5lZWQKKwkgKiBiZSBkcm9wcGVkLiBIb3dldmVyLCBzaW5jZSB0aGUgZHJvcCBi ZWhhdmlvciBpcyBEUk9QX1JFU1RSSUNUIGFuZCB0aGUKKwkgKiBtZXJnZSBwcm9jZXNzICht b3ZlTWVyZ2VkVGFibGVzUm93cykgY2FuIGJlIHRpbWUtY29uc3VtaW5nLCBwZXJmb3JtaW5n IGFuCisJICogZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxpZ2liaWxpdHkgb2Ygb2xkIHBh cnRpdGlvbnMgaXMgcHJlZmVyYWJsZS4KKwkgKi8KKwlmb3JlYWNoX29pZChtZXJnaW5nUGFy dGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCVJlbGF0aW9uCWNoaWxkX3Jl bDsKKworCQljaGlsZF9yZWwgPSB0YWJsZV9vcGVuKG1lcmdpbmdQYXJ0aXRpb25PaWQsIE5v TG9jayk7CisKKwkJZGV0YWNoUGFydGl0aW9uVGFibGUocmVsLCBjaGlsZF9yZWwsIGRlZmF1 bHRQYXJ0T2lkKTsKKworCQl0YWJsZV9jbG9zZShjaGlsZF9yZWwsIE5vTG9jayk7CisJfQor CisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMp CisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkvKiBHZXQgb2lkIG9mIHRoZSBs YXRlciB0byBiZSBkcm9wcGVkIHJlbGF0aW9uICovCisJCW9iamVjdC5vYmplY3RJZCA9IG1l cmdpbmdQYXJ0aXRpb25PaWQ7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlv bklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlvbkNo ZWNrKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwp OworCX0KKworCS8qIENyZWF0ZSB0YWJsZSBmb3IgbmV3IHBhcnRpdGlvbiwgdXNlIHBhcnRp dGlvbmVkIHRhYmxlIGFzIG1vZGVsLiAqLworCUFzc2VydChPaWRJc1ZhbGlkKG93bmVySWQp KTsKKwluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUod3F1ZXVlLCBjbWQtPm5h bWUsIHJlbCwgb3duZXJJZCk7CisKKwkvKgorCSAqIFN3aXRjaCB0byB0aGUgdGFibGUgb3du ZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4IGZ1bmN0aW9ucyBhcmUgcnVuCisJICog YXMgdGhhdCB1c2VyLiAgQWxzbyBsb2NrIGRvd24gc2VjdXJpdHktcmVzdHJpY3RlZCBvcGVy YXRpb25zIGFuZAorCSAqIGFycmFuZ2UgdG8gbWFrZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBs b2NhbCB0byB0aGlzIGNvbW1hbmQuCisJICoKKwkgKiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRl dGVybWluZSBuYW1lc3BhY2UgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUgY2FsbC4KKwkgKi8K KwlHZXRVc2VySWRBbmRTZWNDb250ZXh0KCZzYXZlX3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRl eHQpOworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQob3duZXJJZCwKKwkJCQkJCSAgIHNhdmVf c2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CisJc2F2ZV9u ZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNlYXJjaFBhdGgoKTsK KworCS8qIENvcHkgZGF0YSBmcm9tIG1lcmdlZCBwYXJ0aXRpb25zIHRvIG5ldyBwYXJ0aXRp b24uICovCisJbW92ZU1lcmdlZFRhYmxlc1Jvd3Mod3F1ZXVlLCByZWwsIG1lcmdpbmdQYXJ0 aXRpb25zLCBuZXdQYXJ0UmVsKTsKKworCS8qIERyb3AgdGhlIGN1cnJlbnQgcGFydGl0aW9u cyBiZWZvcmUgYXR0YWNoaW5nIHRoZSBuZXcgb25lLiAqLworCWZvcmVhY2hfb2lkKG1lcmdp bmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsKKwkJT2JqZWN0QWRkcmVz cyBvYmplY3Q7CisKKwkJb2JqZWN0Lm9iamVjdElkID0gbWVyZ2luZ1BhcnRpdGlvbk9pZDsK KwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5vYmpl Y3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJ Q1QsIDApOworCX0KKworCWxpc3RfZnJlZShtZXJnaW5nUGFydGl0aW9ucyk7CisKKwkvKgor CSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiB3 cXVldWUgPSBOVUxMOgorCSAqIHZlcmlmaWNhdGlvbiBmb3IgZWFjaCBjbG9uZWQgY29uc3Ry YWludCBpcyBub3QgbmVlZGVkLgorCSAqLworCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEws IHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3VuZCk7CisKKwkvKiBLZWVwIHRoZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCisJ LyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlv bnMuICovCisJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkvKiBS ZXN0b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KKwlTZXRVc2VySWRBbmRT ZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDUwZjUzMTU5ZDUuLjQ2YmJkY2JjNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt NzU1LDcgKzc1NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JE SU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBP VkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBB UlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAorCVBBUkFMTEVMIFBBUkFN RVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFSVElUSU9OUyBQQVNTSU5HIFBBU1NX T1JEIFBBVEgKIAlQRVJJT0QgUExBQ0lORyBQTEFOIFBMQU5TIFBPTElDWQogCVBPU0lUSU9O IFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZ CiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBS T0dSQU0gUFVCTElDQVRJT04KQEAgLTIzMzEsNiArMjMzMSw3IEBAIHBhcnRpdGlvbl9jbWQ6 CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFt ZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gJDQ7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBO SUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9k ZSAqKSBjbWQ7CiAKQEAgLTIzNDUsNiArMjM0Niw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJ CW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQz OwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsK IAkJCQkJY21kLT5jb25jdXJyZW50ID0gJDQ7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNt ZDsKIApAQCAtMjM1OCw2ICsyMzYwLDIxIEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1 YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZTsKIAkJCQkJY21kLT5uYW1lID0g JDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklM OworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUg KikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJLyogQUxURVIgVEFC TEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICov CisJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElO VE8gcXVhbGlmaWVkX25hbWUKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtl Tm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9k ZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9NZXJnZVBhcnRpdGlv bnM7CisJCQkJCWNtZC0+bmFtZSA9ICQ3OworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJ CQkJY21kLT5wYXJ0bGlzdCA9ICQ0OwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsK IAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBA IC0yMzc0LDYgKzIzOTEsNyBAQCBpbmRleF9wYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0 eXBlID0gQVRfQXR0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJ Y21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJCQkJCWNt ZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAK QEAgLTE3ODc2LDYgKzE3ODk0LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJT RVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJ fCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgKQEAgLTE4NTAzLDYgKzE4NTIy LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAog CQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBB U1NXT1JECiAJCQl8IFBBVEgKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4 IDYyMDE1NDMxZmQuLmY1NWFkMTc1MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCkBAIC01OCw2ICs1OSw4IEBACiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcv cGFydGRlc2MuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2lu Y2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTM0ODgsNiArMzQ5MSwxMzggQEAg dHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nLAogfQogCiAKKy8qCisgKiBjaGVja1BhcnRpdGlvbgorICogQ2hlY2sgd2hldGhlciBw YXJ0UmVsT2lkIGlzIGEgbGVhZiBwYXJ0aXRpb24gb2YgdGhlIHBhcmVudCB0YWJsZSAocmVs KS4KKyAqIFBhcnRpdGlvbiB3aXRoIE9JRCBwYXJ0UmVsT2lkIG11c3QgYmUgbG9ja2VkIGJl Zm9yZSBmdW5jdGlvbiBjYWxsLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tQYXJ0aXRpb24o UmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK3sKKwlSZWxhdGlvbglwYXJ0UmVsOwor CisJcGFydFJlbCA9IHRhYmxlX29wZW4ocGFydFJlbE9pZCwgTm9Mb2NrKTsKKworCWlmIChw YXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocGFydFJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJU SVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0 aW9ucyIpKTsKKworCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25l ZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0 UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCisJCQkJZXJyaGludCgiQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9u cyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCisJaWYgKGdldF9wYXJ0aXRpb25f cGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSks CisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJl bGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRS ZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQllcnJoaW50KCJBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25z IGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisKKwl0YWJsZV9jbG9zZShwYXJ0UmVs LCBOb0xvY2spOworfQorCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UK KyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21t YW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBtZXJnZWQgcGFydGl0aW9ucy4g Q2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHRpbmcKKyAqIHBhcnRpdGlvbi4KKyAqLworc3Rh dGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlkZWZhdWx0UGFy dE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOwor CVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwgICAqbGlz dHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0gZmFsc2U7 CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlrZXkgPSBSZWxhdGlvbkdldFBhcnRp dGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJhdGVneShr ZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUg Y2Fubm90IGJlIG1lcmdlZCIpKTsKKworCS8qIElzIGN1cnJlbnQgcGFydGl0aW9uIGEgREVG QVVMVCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVsdF9vaWRf ZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7 CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VW YXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogUGFy dGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJ CWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRjbWQtPnBhcnRsaXN0LCBsbmV4dChwYXJ0 Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCVJhbmdlVmFyICAgKm5hbWUyID0g KFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisKKwkJCWlmIChlcXVhbChuYW1lLCBu YW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBuYW1lIFwiJXNc IiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisJCX0KKworCQkvKgor CQkgKiBTZWFyY2ggREVGQVVMVCBwYXJ0aXRpb24gaW4gdGhlIGxpc3QuIE9wZW4gYW5kIGxv Y2sgcGFydGl0aW9ucyBiZWZvcmUKKwkJICogY2FsY3VsYXRpbmcgdGhlIGJvdW5kYXJ5IGZv ciByZXN1bHRpbmcgcGFydGl0aW9uLCB3ZSBhbHNvIGNoZWNrIGZvcgorCQkgKiBvd25lcnNo aXAgYWxvbmcgdGhlIHdheS4gIFdlIG5lZWQgdG8gdXNlIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sg aGVyZSwKKwkJICogYmVjYXVzZSB0aGVzZSBtZXJnZWQgcGFydGl0aW9ucyB3aWxsIGJlIGRl dGFjaGVkIHRoZW4gZHJvcHBlZCBpbgorCQkgKiBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMuCisJ CSAqLworCQlwYXJ0T2lkID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKG5hbWUsCisJCQkJ CQkJCQkJICAgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkgICBmYWxzZSwKKwkJ CQkJCQkJCQkgICBSYW5nZVZhckNhbGxiYWNrT3duc1JlbGF0aW9uLAorCQkJCQkJCQkJCSAg IE5VTEwpOworCisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZh dWx0UGFydCA9IHRydWU7CisKKwkJLyoKKwkJICogRXh0ZW5kZWQgY2hlY2sgYmVjYXVzZSB0 aGUgc2FtZSBwYXJ0aXRpb24gY2FuIGhhdmUgZGlmZmVyZW50IG5hbWVzCisJCSAqIChmb3Ig ZXhhbXBsZSwgInBhcnRfbmFtZSIgYW5kICJwdWJsaWMucGFydF9uYW1lIikuCisJCSAqLwor CQlmb3JlYWNoKGxpc3RwdHIyLCBwYXJ0T2lkcykKKwkJeworCQkJT2lkCQljdXJPaWQgPSBs Zmlyc3Rfb2lkKGxpc3RwdHIyKTsKKworCQkJaWYgKGN1ck9pZCA9PSBwYXJ0T2lkKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxF KSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFk eSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0 LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7CisJCX0KKworCQljaGVja1BhcnRpdGlvbihw YXJlbnQsIHBhcnRPaWQpOworCisJCXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMs IHBhcnRPaWQpOworCX0KKworCS8qIEFsbG9jYXRlIGJvdW5kIG9mIHJlc3VsdGluZyBwYXJ0 aXRpb24uICovCisJQXNzZXJ0KHBhcnRjbWQtPmJvdW5kID09IE5VTEwpOworCXBhcnRjbWQt PmJvdW5kID0gbWFrZU5vZGUoUGFydGl0aW9uQm91bmRTcGVjKTsKKworCS8qIEZpbGwgcGFy dGl0aW9uIGJvdW5kLiAqLworCXBhcnRjbWQtPmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5 OworCXBhcnRjbWQtPmJvdW5kLT5sb2NhdGlvbiA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5p c19kZWZhdWx0ID0gaXNEZWZhdWx0UGFydDsKKwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNh bGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFy dGxpc3QsCisJCQkJCQkJCQkJCXBhcnRPaWRzLCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJ CQkJY3h0LT5wc3RhdGUpOworfQorCiAvKgogICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQg LQogICoJCXBhcnNlIGFuYWx5c2lzIGZvciBBTFRFUiBUQUJMRQpAQCAtMzc2NSw2ICszOTAw LDE5IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0 bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQli cmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJeworCQkJCQlQYXJ0 aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJ CWlmIChsaXN0X2xlbmd0aChwYXJ0Y21kLT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCQkJCQllcnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxk IGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zIikpOworCQkJCQl0cmFuc2Zvcm1QYXJ0aXRp b25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQo bmV3Y21kcywgY21kKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQlkZWZhdWx0OgogCiAJ CQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmluZGV4IDRiZGMy OTQxZWYuLjlmN2MwMWI3ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYwpAQCAtMzIxNCw4ICszMjE0LDkgQEAgY2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChj aGFyICpyZWxuYW1lLCBSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQlQYXJ0aXRpb25SYW5nZURh dHVtICpkYXR1bTsKIAogCQkJCQkJLyoKLQkJCQkJCSAqIFBvaW50IHRvIHByb2JsZW1hdGlj IGtleSBpbiB0aGUgbG93ZXIgZGF0dW1zIGxpc3Q7Ci0JCQkJCQkgKiBpZiB3ZSBoYXZlIGVx dWFsaXR5LCBwb2ludCB0byB0aGUgZmlyc3Qgb25lLgorCQkJCQkJICogUG9pbnQgdG8gcHJv YmxlbWF0aWMga2V5IGluIHRoZSBsaXN0IG9mIGxvd2VyCisJCQkJCQkgKiBkYXR1bXM7IGlm IHdlIGhhdmUgZXF1YWxpdHksIHBvaW50IHRvIHRoZSBmaXJzdAorCQkJCQkJICogb25lLgog CQkJCQkJICovCiAJCQkJCQlkYXR1bSA9IGNtcHZhbCA9PSAwID8gbGluaXRpYWwoc3BlYy0+ bG93ZXJkYXR1bXMpIDoKIAkJCQkJCQlsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJz KGNtcHZhbCkgLSAxKTsKQEAgLTQ5NzcsMyArNDk3OCwxOTcgQEAgc2F0aXNmaWVzX2hhc2hf cGFydGl0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChyb3dIYXNo ICUgbW9kdWx1cyA9PSByZW1haW5kZXIpOwogfQorCisvKgorICogY2hlY2tfdHdvX3BhcnRp dGlvbnNfYm91bmRzX3JhbmdlCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0 aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2FsY3Vs YXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KKyAqIFRoaXMgZnVuY3Rpb24gY29t cGFyZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCisg KiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKgorICog cGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBmaXJzdF9uYW1lOgkJbmFtZSBvZiBm aXJzdCBwYXJ0aXRpb24KKyAqIGZpcnN0X2JvdW5kOgkJYm91bmQgb2YgZmlyc3QgcGFydGl0 aW9uCisgKiBzZWNvbmRfbmFtZToJCW5hbWUgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogc2Vj b25kX2JvdW5kOglib3VuZCBvZiBzZWNvbmQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9p bnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5pbmcgZXJyb3IgcG9zaXRp b24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5n ZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCSAgUmFuZ2VWYXIgKmZpcnN0X25hbWUsCisJ CQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpmaXJzdF9ib3VuZCwKKwkJCQkJCQkJICBS YW5nZVZhciAqc2Vjb25kX25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpz ZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRp dGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRp dGlvblJhbmdlQm91bmQgKmZpcnN0X3VwcGVyOworCVBhcnRpdGlvblJhbmdlQm91bmQgKnNl Y29uZF9sb3dlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9 PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJZmlyc3RfdXBwZXIgPSBtYWtlX29u ZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIGZpcnN0X2JvdW5kLT51cHBlcmRhdHVtcywg ZmFsc2UpOworCXNlY29uZF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5 LCAtMSwgc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisKKwkvKgorCSAqIGxv d2VyMT1mYWxzZSAodGhlIHNlY29uZCB0byBsYXN0IGFyZ3VtZW50KSBmb3IgY29ycmVjdCBj b21wYXJpc29uIG9mCisJICogbG93ZXIgYW5kIHVwcGVyIGJvdW5kcy4KKwkgKi8KKwljbXB2 YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJICBr ZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJ CQkJICBzZWNvbmRfbG93ZXItPmRhdHVtcywgc2Vjb25kX2xvd2VyLT5raW5kLAorCQkJCQkJ CQkgIGZhbHNlLCBmaXJzdF91cHBlcik7CisJaWYgKGNtcHZhbCkKKwl7CisJCVBhcnRpdGlv blJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVt cyk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u IFwiJXNcIiIsCisJCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5y ZWxuYW1lKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4iKSwKKwkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwl9Cit9 CisKKy8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMKKyAqCisgKiBSZXR1cm5zIHRo ZSBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgZ2l2ZW4g T0lEIHBhcnRPaWQuCisgKi8KK3N0YXRpYyBQYXJ0aXRpb25Cb3VuZFNwZWMgKgorZ2V0X3Bh cnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lkKQoreworCUhlYXBUdXBsZQl0dXBsZTsK KwlEYXR1bQkJZGF0dW07CisJYm9vbAkJaXNudWxsOworCVBhcnRpdGlvbkJvdW5kU3BlYyAq Ym91bmRzcGVjID0gTlVMTDsKKworCS8qIFRyeSBmZXRjaGluZyB0aGUgdHVwbGUgZnJvbSB0 aGUgY2F0Y2FjaGUsIGZvciBzcGVlZC4gKi8KKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShS RUxPSUQsIHBhcnRPaWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHBhcnRP aWQpOworCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUkVMT0lELCB0dXBsZSwKKwkJCQkJ CQlBbnVtX3BnX2NsYXNzX3JlbHBhcnRib3VuZCwKKwkJCQkJCQkmaXNudWxsKTsKKwlpZiAo aXNudWxsKQorCQllbG9nKEVSUk9SLCAicGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAl dSBpcyBudWxsIiwKKwkJCSBwYXJ0T2lkKTsKKworCWJvdW5kc3BlYyA9IHN0cmluZ1RvTm9k ZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisKKwlpZiAoIUlzQShib3VuZHNwZWMs IFBhcnRpdGlvbkJvdW5kU3BlYykpCisJCWVsb2coRVJST1IsICJleHBlY3RlZCBQYXJ0aXRp b25Cb3VuZFNwZWMgZm9yIHJlbGF0aW9uICV1IiwKKwkJCSBwYXJ0T2lkKTsKKworCVJlbGVh c2VTeXNDYWNoZSh0dXBsZSk7CisJcmV0dXJuIGJvdW5kc3BlYzsKK30KKworLyoKKyAqIGNh bGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlCisgKgorICogQ2FsY3VsYXRlcyB0 aGUgYm91bmQgb2YgbWVyZ2VkIHBhcnRpdGlvbiAic3BlYyIgYnkgdXNpbmcgdGhlIGJvdW5k cyBvZgorICogcGFydGl0aW9ucyB0byBiZSBtZXJnZWQuCisgKgorICogcGFyZW50OgkJCXBh cnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0TmFtZXM6CQluYW1lcyBvZiBwYXJ0aXRpb25zIHRv IGJlIG1lcmdlZAorICogcGFydE9pZHM6CQlPaWRzIG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVy Z2VkCisgKiBzcGVjIChvdXQpOgkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG1lcmdl ZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0 IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwordm9pZAorY2FsY3VsYXRlX3Bh cnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJTGlz dCAqcGFydE5hbWVzLAorCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCisJCQkJCQkJCQlQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQlQYXJzZVN0YXRlICpwc3RhdGUpCit7 CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7 CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKworCUFzc2VydCghc3BlYy0+aXNfZGVm YXVsdCk7CisKKwlzd2l0Y2ggKGtleS0+c3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElP Tl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQlpbnQJCQlpOworCQkJCVBhcnRpdGlvblJh bmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCQkJaW50CQkJbnBhcnRzID0gbGlzdF9sZW5n dGgocGFydE9pZHMpOworCQkJCUxpc3QJICAgKmJvdW5kcyA9IE5JTDsKKworCQkJCWxvd2Vy X2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoqKQorCQkJCQlwYWxsb2MwKG5wYXJ0 cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkJCS8qCisJCQkJICog Q3JlYXRlIGFycmF5IG9mIGxvd2VyIGJvdW5kcyBhbmQgbGlzdCBvZgorCQkJCSAqIFBhcnRp dGlvbkJvdW5kU3BlYy4KKwkJCQkgKi8KKwkJCQlmb3JlYWNoX29pZChwYXJ0b2lkLCBwYXJ0 T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHBh cnRvaWQpOworCQkJCQlpID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KHBhcnRvaWQpOworCisJ CQkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBp LCBib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQkJCQlib3VuZHMgPSBsYXBwZW5kKGJv dW5kcywgYm91bmQpOworCQkJCX0KKworCQkJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91 bmRzLiAqLworCQkJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0cywgc2l6ZW9mKFBh cnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRf Y21wLCAodm9pZCAqKSBrZXkpOworCisJCQkJLyogUmFuZ2VzIG9mIHBhcnRpdGlvbnMgc2hv dWxkIG5vdCBvdmVybGFwLiAqLworCQkJCWZvciAoaSA9IDE7IGkgPCBucGFydHM7IGkrKykK KwkJCQl7CisJCQkJCWludAkJCWluZGV4ID0gbG93ZXJfYm91bmRzW2ldLT5pbmRleDsKKwkJ CQkJaW50CQkJcHJldl9pbmRleCA9IGxvd2VyX2JvdW5kc1tpIC0gMV0tPmluZGV4OworCisJ CQkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShwYXJlbnQsCisJCQkJCQkJ CQkJCQkJICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBwcmV2X2luZGV4KSwK KwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRz LCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChw YXJ0TmFtZXMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMg KikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJICBwc3RhdGUpOwor CQkJCX0KKworCQkJCS8qCisJCQkJICogTG93ZXIgYm91bmQgb2YgZmlyc3QgcGFydGl0aW9u IGlzIHRoZSBsb3dlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJ ICovCisJCQkJc3BlYy0+bG93ZXJkYXR1bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3Bl YyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1swXS0+aW5kZXgpKS0+bG93ZXJk YXR1bXM7CisKKwkJCQkvKgorCQkJCSAqIFVwcGVyIGJvdW5kIG9mIGxhc3QgcGFydGl0aW9u IGlzIHRoZSB1cHBlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJ ICovCisJCQkJc3BlYy0+dXBwZXJkYXR1bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3Bl YyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1tucGFydHMgLSAxXS0+aW5kZXgp KS0+dXBwZXJkYXR1bXM7CisKKwkJCQlwZnJlZShsb3dlcl9ib3VuZHMpOworCQkJCWxpc3Rf ZnJlZShib3VuZHMpOworCQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgUEFSVElUSU9OX1NU UkFURUdZX0xJU1Q6CisJCQl7CisJCQkJLyogQ29uc29saWRhdGUgYm91bmRzIGZvciBhbGwg cGFydGl0aW9ucyBpbiB0aGUgbGlzdC4gKi8KKwkJCQlmb3JlYWNoX29pZChwYXJ0b2lkLCBw YXJ0T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVj KHBhcnRvaWQpOworCQkJCQlzcGVjLT5saXN0ZGF0dW1zID0gbGlzdF9jb25jYXQoc3BlYy0+ bGlzdGRhdHVtcywgYm91bmQtPmxpc3RkYXR1bXMpOworCQkJCX0KKwkJCQlicmVhazsKKwkJ CX0KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGFydGl0aW9u IHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+c3RyYXRlZ3kpOworCX0KK30KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYwppbmRleCAyYzBiNGYyOGMxLi42NDI0OGI1YjFmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yNzIxLDYgKzI3MjEsNyBAQCBtYXRjaF9wcmV2 aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJCQkJICAiT1dORVIgVE8iLCAiU0VUIiwg IlZBTElEQVRFIENPTlNUUkFJTlQiLAogCQkJCQkgICJSRVBMSUNBIElERU5USVRZIiwgIkFU VEFDSCBQQVJUSVRJT04iLAogCQkJCQkgICJERVRBQ0ggUEFSVElUSU9OIiwgIkZPUkNFIFJP VyBMRVZFTCBTRUNVUklUWSIsCisJCQkJCSAgIk1FUkdFIFBBUlRJVElPTlMgKCIsCiAJCQkJ CSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRBQkxFIHh4eCBBREQgKi8KIAllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQUREIikpCkBAIC0y OTg3LDYgKzI5ODgsMTUgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQs CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFD SCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJF TlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBB UlRJVElPTlMgKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0 Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkKKwl7CisJCXNldF9jb21wbGV0 aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZ KFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOworCX0KKwllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIsICIo KikiKSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyIpOworCiAJLyogQUxURVIgVEFCTEUgPG5h bWU+IE9GICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFu eSwgIk9GIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX2NvbXBvc2l0ZV9kYXRhdHlwZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApp bmRleCAwZWE3Y2NmNTI0Li5mNTQyMzM0OTliIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVu Y3kuaApAQCAtMTA3LDYgKzEwNyw4IEBAIGV4dGVybiB2b2lkIFJlbGVhc2VEZWxldGlvbkxv Y2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KTsKIGV4dGVybiB2b2lkIHBlcmZvcm1E ZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQkJCQkJRHJvcEJlaGF2 aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogCitleHRlcm4gdm9pZCBwZXJmb3JtRGVsZXRp b25DaGVjayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJCQkJCQkJCSBEcm9wQmVo YXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiBleHRlcm4gdm9pZCBwZXJmb3JtTXVsdGlw bGVEZWxldGlvbnMoY29uc3QgT2JqZWN0QWRkcmVzc2VzICpvYmplY3RzLAogCQkJCQkJCQkJ IERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCmluZGV4IGJhMTI2NzhkMWMuLmI4ZTJhNjc5Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKQEAgLTk2OSw4ICs5NjksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9u UmFuZ2VEYXR1bQogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiB7CiAJTm9kZVRhZwkJ dHlwZTsKLQlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0 dGFjaC9kZXRhY2ggKi8KKwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0 aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2UgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJv dW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KKwlMaXN0CSAgICpwYXJ0bGlz dDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1FUkdFCisJCQkJCQkJCSAqIFBBUlRJ VElPTiBjb21tYW5kICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwog CkBAIC0yNDczLDYgKzI0NzUsNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlB VF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFj aFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0 aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9NZXJn ZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5 LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlk ZW50aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1Ag SURFTlRJVFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBi L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBhNGFmM2Y3MTdhLi45MGU4Y2Rk ZjhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcsNiArMzM3LDcgQEAgUEdfS0VZV09S RCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJ T04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhcnRp dGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5oCmluZGV4IDY1ZjE2MWY3MTguLjY5MGQyNTk2MTkgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0MywxMCBAQCBleHRlcm4gaW50 CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywK IGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8g Ym91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAK K2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0 aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCQkJ CUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0aW9uQm91bmRTcGVjICpzcGVj LAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8q IFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVj dGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv cGFydGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi45ODQ0NmFhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9u L2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAsMCArMSwxOTkgQEAKK1BhcnNl ZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz MmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBC RUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzog QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6 IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7Cisg aXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0 MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFi cnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9k aWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3Rl cCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBT RUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisg NXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0 MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBh cnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRw YXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBT RVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAor LS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4 dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBz MnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBz MW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEw LCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0 ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAx OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29t cGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRw YXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAor MTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4 dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMy aSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0 ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8w MF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47 CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBp ID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJP TSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAg ICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1 fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJy ciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5T RVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlU Oworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3Rl cCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAw XzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsK K3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkg PSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9N IHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAg IAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8 dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMg czJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVH SU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFS VElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOwor c3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0 MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7 CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0t LS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1 fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMg czJzCitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVB VEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJU SVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7Citz dGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQw MW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsK K3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMy czogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0t LQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8 dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3Rl cCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTEla QUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05T ICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMy YjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlm JyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8 dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1 ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lz b2xhdGlvbl9zY2hlZHVsZQppbmRleCBlM2M2NjlhMjljLi4wZGNhNjg0OTU1IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEwNyw2ICsxMDcsNyBAQCB0 ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0 ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5 LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKIHRlc3Q6IHBscGdzcWwtdG9hc3QK IHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0 aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1l cmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNw ZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGMyYjlkMzQ0NQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24t bWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0IE1FUkdFIG9wZXJh dGlvbiBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3Nl dHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUg dHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUg VEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0 cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBh cnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBE RUZBVUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAg SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0 cGFydDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJy cgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFi cwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFtZXJn CXsgQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRw YXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQor CisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJ TiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMydQl7IFVQREFURSB0 cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJjCXsg Q09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMy IGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBNRVJHRSBQQVJUSVRJT05TIHRo ZW4KKyMgczIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRlZCByb3cgYW5kIHdhaXRzIHVu dGlsIHMxIGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczJi IHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBz MmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRp b24gczJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJt dXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycwor cGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJj IHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBz MnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWJyciBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYnMgczFt ZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDE5MzY2OWYyYmMu LjdkZTVkZGI4NzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVw YXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Rk bF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5IEBAIGdldF9h bHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0 YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9O IC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9u czoKKwkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOworCQkJCWJyZWFrOwogCQkJ Y2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCQlzdHJ0eXBlID0gIkFERCBJREVOVElUWSI7CiAJ CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9t ZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjVlNmVj NjE4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFy dGl0aW9uX21lcmdlLm91dApAQCAtMCwwICsxLDExMjMgQEAKKy0tCistLSBQQVJUSVRJT05T X01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05T IC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hl bWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkg UkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor LS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJl YWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNf ZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19m ZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVz X21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOwor RVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0hJTlQ6ICBBTFRFUiBU QUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRv bid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rp b25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIy KSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBN RVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFk amFjZW50LgorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ph bjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAy MSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LgorLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOwor RVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5 IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBz YWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS1FUlJPUiwgc2FsZXNf YXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIp IElOVE8gc2FsZXNfYXByXzI7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19hcHJfMiIgYWxy ZWFkeSBleGlzdHMKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBv cmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0aAorU0VUIHNl YXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBU QUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJ T05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAyMiwKKyAgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworUFJF UEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMKK1NFTEVDVCAgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVyc2lzdGVuY2UsCisgICAg ICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5nLAorICAgICAgICBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKK0ZST00gICAg cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKK1dIRVJF ICAgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICB8IHJlbHBlcnNpc3Rl bmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2phbl9m ZWJfbWFyMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykK KyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAg ICAgICAgICAgICAgfCBwICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2RlYzIwMjEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMTItMDEtMjAy MScpIFRPICgnMTItMzEtMjAyMScpCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBERUZBVUxUCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2Ug cGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBz YWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAn TWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUw MCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAg MTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5 LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywg ICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIy LTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAg KDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFy dGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSQU5HRSAoc2FsZXNfZGF0ZSkKKygxIHJvdykK KworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3Bh cnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBl cnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAg ICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXBy MjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxl c19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKQor IHNhbGVzX2phbjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAy MicpCisgc2FsZXNfbWFyMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0w MS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg1IHJvd3MpCisKKy0tIGNoZWNrIHNjaGVt YS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAy Miwgc2FsZXNfYXByMjAyMikgSU5UTyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNf ZmViX21hcl9hcHIyMDIyOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICB8IHJlbHBlcnNpc3Rl bmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykK KyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAg ICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQorIHNhbGVzX290aGVycyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworU0VMRUNU ICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWJfbWFyX2Fw cjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMic7Cisg ICAgICAgIHNjaGVtYW5hbWUgICAgICAgIHwgICAgICAgdGFibGVuYW1lICAgICAgIHwgICAg ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy IHwgc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgc2FsZXNfZmViX21hcl9hcHIyMDIyX3NhbGVz X2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWJfbWFyX2Fw cjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVz X2ZlYl9tYXJfYXByMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZ IHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVv aWQgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19qYW4yMDIy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCBN YXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2ph bjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAx MCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2Fs ZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIK KyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIg fCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAw Mi0xMC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXBy MjAyMiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAw MCB8IDA0LTMwLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21h cl9hcHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19m ZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNh bGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcy MDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBT bWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAg ICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIK KyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAw Mi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAg ICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAg ICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwg ICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDEwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBNZXJnZSBzb21lIHBh cnRpdGlvbnMgaW50byBERUZBVUxUIHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAor ICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwg ICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEn KSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0w OScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CistLSBNZXJn ZSBwYXJ0aXRpb25zIChpbmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBpbnRvIHBhcnRpdGlv biB3aXRoIHRoZSBzYW1lCistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TCisgIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYS5zYWxlc19vdGhlcnMpIElOVE8gc2FsZXNfb3RoZXJzOworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcnMgT1JERVIgQlkgc2FsZXNwZXJzb25faWQ7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAg ICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkg fCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIw MjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAg ICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAg ICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyg3IHJvd3MpCisKKy0tIHNob3cg cGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5m bygne3NhbGVzX3JhbmdlfScpOworICAgICAgb2lkICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8 IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCBwICAg ICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBG Uk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8 IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19vdGhl cnMgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERF RkFVTFQKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVz dCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJB VEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxl c19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxl c195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0 LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RP UkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRl cGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXkpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIs IDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1Ig VkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyks CisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAx LCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAy MiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScs IDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdl cjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAg MTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAy MDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAy MDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAy MDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorKDkgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOwor IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19k YXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAg ICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAg ICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3ll YXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBh cnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2Vy MyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAy Mi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRl cGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5 IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAg IDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAz LjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAg ICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKwor QUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIy LCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8g c2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwg c2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdN YW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5 IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAg ICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAg IDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAg IDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAg MTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAg IDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDExIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfZGVjMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVh ciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFy dG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIx ICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIx LjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVw YXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsK KyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNf ZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0 IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgMTAgfCAyMDIyLjAyLjEw IHwgU2FsZXMgZGVwYXJ0bWVudAorKDYgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwg c2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMg fCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIy LjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxl c19kYXRlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQg dGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUz MF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8g KDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsK K0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigp IFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgor ICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4g PSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7 CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxl c3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNF UlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVY RUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUn KTsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dl cgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0gg Uk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdz YWxlc3Blb3BsZScpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBz dGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScp OworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNF UlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNw ZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0g U1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNF OiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4g PSBBRlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVv cGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxk IGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3Bs ZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cK K05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJU LCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxk IGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVT ICgzMCwgJ0ZvcmQnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDog YWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitTRUxFQ1QgKiBG Uk9NIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBf NDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAg ICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorICAgICAg ICAgICAgIDMwIHwgRm9yZAorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsK K0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0gVGVz dDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJz b25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNh bGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBwYXJ0 aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZTIwXzMwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCAg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUzMF80MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8y MCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlMjBfMzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYnKTsKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMSwgbm93KCksICdQb3BvdicpOwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUg QVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNh bGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1Ig VkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFM VUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3Bs ZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVz cGVvcGxlMTBfNDA7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyAgICAgICAgICAgICAxOSB8IEl2 YW5vdgorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMjAgfCBTbWlybm9m ZgorICAgICAgICAgICAgIDMxIHwgUG9wb3YKKyAgICAgICAgICAgICAzMCB8IEZvcmQKKyg2 IHJvd3MpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK3NlbGVjdCAq IGZyb20gc2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAy MCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgICAgIDMw IHwgRm9yZAorKDUgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsKKy0tCistLSBU ZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NS RUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBV U0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJsZW9pZCwgc2Fs ZXNwZXJzb25faWQ7CisgICAgICB0YWJsZW9pZCAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8ICAgICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIw MjIKKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2FwcjIwMjJfMTBf MjAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMl8yMF8zMCB8ICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3Mp CisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf YXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8z MCkgSU5UTyBzYWxlc19hcHJfYWxsOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHNhbGVzX2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOwor ICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAg ICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBz YWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1QgcGFydGl0 aW9uaW5nCistLQorLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBw YXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29u X2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1v dW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNf c3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2kn KTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfbGlz dDIgKExJS0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9S IFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZB VUxUOworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsIChMSUtFIHNhbGVzX2xpc3QpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsMiAodmNoIFZBUkNIQVIoNSkpOworLS0gRVJS T1I6ICAic2FsZXNfZXh0ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25l ZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8g c2FsZXNfYWxsOworRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlv biBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICAic2Fs ZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUg InNhbGVzX2xpc3QiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg Y2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCist LSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9m IHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBz YWxlc19hbGw7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFy dGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2 ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRB QkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJMRSBzYWxlc19saXN0MjsKK0RST1AgVEFC TEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVS R0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAor KHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCks Cisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkg TElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJz b25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFt ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNf bGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25v cmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3Qu IFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7 CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdC ZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAn TmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAg J1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAg ICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAg ICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcs ICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAg ICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAg ICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScs ICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxk ZXInLCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVs bGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1Nt aXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdH YW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgn UGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworLS0g c2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlv bl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKyAgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVu Y2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2Nl bnRyYWwgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpCisgc2FsZXNfZWFz dCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJykKKyBzYWxl c19ub3JkICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtp JykKKyBzYWxlc193ZXN0ICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IERFRkFVTFQKKyg1IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNf Y2VudHJhbCkgSU5UTyBzYWxlc19hbGw7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOwor ICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBl bmRpbmcgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hbGwgICAgfCBwICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9r JywgJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpCisgc2FsZXNfbm9yZCAgIHwgcCAgICAg ICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4g KCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJykKKyBzYWxlc19vdGhlcnMg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVM VAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0OworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsgICAgICAgfCAgICAgICAgICA1 MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwg TGlzYm9uICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAg ICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgICAgfCAgICAgICAgICA2 NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgICAgIHwg TGlzYm9uICAgICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAg ICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAgIHwg VmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwg QmVybGluICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAg ICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwg V2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisgICAgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIw MDAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwg SGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAg ICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEy MDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg T3NsbyAgICAgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoMTQgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0y MDIyCisgICAgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgSGVsc2lua2kgICAg ICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgICAgIDkgfCBNYXkg ICAgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0y MDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgT3NsbyAgICAgICAg ICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FsbDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8IE5ldyBZ b3JrICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8IExpc2JvbiAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDct MjAyMgorICAgICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICAgICB8IE1hZHJpZCAgICAg IHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgICAgIDE0IHwgUGxhdG8g ICAgICAgICAgICB8IExpc2JvbiAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgor ICAgICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICAgICB8IEJlamluZyAgICAgIHwgICAg ICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAg ICAgICB8IFZsYWRpdm9zdG9rIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorICAgICAg ICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAg NzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8 IEJlcmxpbiAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICAg IDEyIHwgU21pdGggICAgICAgICAgICB8IEt5aXYgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTAtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDEwIHJvd3MpCisKKy0tIFVz ZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBtZXJnaW5nIHBhcnRpdGlv bnMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxs IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAg ICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf bGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIy CisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAg ICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAw My0wNC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJM RSBzYWxlc19saXN0OworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3Ro ZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBj IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBB UlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFU RSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NS RUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykg VE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworLS0gRVJST1I6 ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIK K0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQxcDEsIHQycGEpIElOVE8gdDJw OworRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0 aW9uICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4g b25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVS Uk9SOiAgInQzIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInQy IgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJw OworRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJs ZSAidDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9u bHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRB QkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CistLQorLS0gVHJ5IHRv IE1FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1Q IFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOwor ICBvaWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcg fCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdHBfMF8xIHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBfMV8yIHwgdCAgICAg ICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpCisoMiByb3dzKQorCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFBhcnRpdGlvbiBzaG91bGQg YmUgdGVtcG9yYXJ5LgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworICBv aWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgdHBfMF8yIHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCisoMSByb3cpCisKK0RST1AgVEFC TEUgdDsKKy0tCistLSBDaGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBh cnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0 aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBJTkRF WCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzFf MiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJl ICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorLS0gTm90LW51bGwgY29uc3Ry YWludCBuYW1lIHNob3VsZCBiZSAndHBfMV8yX2lfbm90X251bGwnLgorXGQrIHRwXzFfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9zY2hl bWEudHBfMV8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQYXJ0 aXRpb24gY29uc3RyYWludDogKChpIElTIE5PVCBOVUxMKSBBTkQgKGkgPj0gMCkgQU5EIChp IDwgMikpCitJbmRleGVzOgorICAgICJ0cF8xXzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVl IChpKQorICAgICJ0cF8xXzJfaV9pZHgiIGJ0cmVlIChpKQorTm90LW51bGwgY29uc3RyYWlu dHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisKK0RS T1AgVEFCTEUgdDsKKy0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5 IHBhcnRpdGlvbnMuCistLQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKyBvaWQgfCByZWxwZXJz aXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgfCBwCisoMSByb3cpCisK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKyAgb2lkICAgfCByZWxwZXJz aXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgIHBnX2dldF9l eHByICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMSB8 IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKQorIHRwXzFfMiB8IHAgICAgICAgICAgICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKQorKDIg cm93cykKKworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBp bnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVh dGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxh dGlvbiAidCIKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBw dWJsaWM7CistLSBDYW4ndCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRl bXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MF8xLCB0cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVh dGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxh dGlvbiAidCIKK0RST1AgVEFCTEUgdDsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitCRUdJTjsKK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFC TEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOwor U0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsK KyBvaWQgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAg fCB0CisoMSByb3cpCisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKyAg b2lkICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwg ICAgICAgIHBnX2dldF9leHByICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHRwXzBfMSB8IHQgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKQorIHRwXzFfMiB8IHQgICAgICAg ICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKQorKDIgcm93cykKKworREVBTExPQ0FURSBnZXRfcGFydGl0aW9uX2luZm87 CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwg cHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgdGVtcG9yYXJ5IHBhcnRpdGlvbnMgaW50byBhIHBl cnNpc3RlbnQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JPTExCQUNLOworLS0gQ2hlY2sgdGhlIG5l dyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQorU0VUIHNlYXJjaF9w YXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0 IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3Ri bHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUs IHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcs ICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScK KyAgT1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICAgIHRh Ymxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAg ICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgcmVncmVzc190YmxzcGFjZQor KDIgcm93cykKKworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZS T00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFO RCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0 YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUgfCAgaW5kZXhu YW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190 YmxzcGFjZQorIHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5IHwgcmVncmVzc190YmxzcGFjZQor KDIgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24g aW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBBQ0NFU1MgTUVU SE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJs ZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBf MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBU QUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7 CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMg Sk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6 cmVnY2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZTsKKyBy ZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorIHRwXzBf MiAgfCBwYXJ0aXRpb25zX21lcmdlX2hlYXAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgdDsK K0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CistLSBUZXN0IHBl cm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFi bGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0aGUgbWVyZ2Uu CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxp Y2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7 CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRw XzBfMQorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMF8x IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJP UjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMV8yCitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRp b25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsK K0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitSRVZPS0UgQUxM IE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0 aW9uX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGlj ZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBUZXN0OiB3 ZSBjYW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGlmZmVyZW50IG93bmVycworQ1JFQVRF IFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOwor R1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNz X3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50 KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0NSRUFURSBUQUJMRSB0cF8x XzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQ1JFQVRFIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQUxURVIgVEFCTEUgdCBBVFRB Q0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlJzoK K1xkdCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFi bGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAg ICAgICAgIE93bmVyICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdyZXNzX3BhcnRp dGlvbnNfbWVyZ2VfYWxpY2UKKygxIHJvdykKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFy dGl0aW9uc19tZXJnZV9ib2InOgorXGR0IHRwXzFfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAgIHwgIE5h bWUgIHwgVHlwZSAgfCAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUg fCByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iCisoMSByb3cpCisKKy0tIEVSUk9SOiAg cGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzCitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK K0VSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJz CitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK1JFVk9LRSBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0 aXRpb25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2Vf YWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKKy0tIFRl c3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFC TEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1B SU5ERVIgMSk7CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRh YmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHAxLCB0cDIpIElOVE8gdHAzOworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRp b25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBh cnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CitFUlJPUjogIGxpc3Qgb2Yg bmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitEUk9Q IFRBQkxFIHQ7CistLSBUZXN0IGZvciBtZXJnZWQgcGFydGl0aW9uIHByb3BlcnRpZXM6Cist LSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBE RUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxl CistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQg dGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMg R0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICog VFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBF WFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdp bnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVE KSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0Lmkg SVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRwXzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQg dGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50 LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7 CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5p JzsKK0NSRUFURSBUQUJMRSB0cF8xXzIKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RP UkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMV8yJywKKyBiIGJpZ2ludCwKKyBkIGRh dGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDMtMDMnKSBTVE9SRUQpOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzFfMi5pIElTICd0cF8xXzIuaSc7CitDUkVB VEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitD UkVBVEUgU1RBVElTVElDUyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZy b20gdHBfMF8xOworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERFUEVOREVOQ0lF Uykgb24gaSwgYiBmcm9tIHRwXzFfMjsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQg dF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5U IHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJ RDsKK0lOU0VSVCBJTlRPIHRwXzBfMShpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7 CitJTlNFUlQgSU5UTyB0cF8xXzIoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOwor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMg dHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0Ug Tk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVs ID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJO IG5ldzsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9y b3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg UFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwXzBf MV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8w XzEnKTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2Vy IEJFRk9SRSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NF RFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKK1xkKyB0cF8wXzEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9u c19tZXJnZV9zY2hlbWEudHBfMF8xIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAg ICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwXzBfMS5pCisgdCAgICAgIHwgdGV4dCAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdHBfMF8xJzo6dGV4dCAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBtYWluICAgIHwgICAgICAgICAgICAgIHwgCisgYiAg ICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2Vu ZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSkKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkg QU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkgPCAxKSkKK0NoZWNrIGNvbnN0cmFpbnRz OgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hF Q0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAw KSBOT1QgVkFMSUQKK1N0YXRpc3RpY3Mgb2JqZWN0czoKKyAgICAicGFydGl0aW9uc19tZXJn ZV9zY2hlbWEudHBfMF8xX3N0YXQiIChkZXBlbmRlbmNpZXMpIE9OIGksIGIgRlJPTSB0cF8w XzEKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0cF8wXzFfaV9ub3RfbnVsbCIgTk9U IE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhl cml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190 cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZV TkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorICAgIHRwXzBfMV9i ZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBF QUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzBfMScpCisK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8xOworXGQrIHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAg ICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlICB8IFN0YXRz IHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAg ICAgIHwgCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2Rl ZmF1bHRfdCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRl ZCB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDEtMDEtMjAy Mic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRp b24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJh aW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMo aSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChi ID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAg ICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0 cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQor ICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdn ZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9O IHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9u KCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMoMSwg REVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAgICB0ICAg ICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0rLS0tLS0tLS0tLS0tCisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF8wXzEgfCAx IHwgMDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdHBfMV8yIHwgMiB8IDAx LTAxLTIwMjIKKyB0cF8wXzEgICB8IDEgfCBkZWZhdWx0X3QgICAgICB8IDMgfCAwMS0wMS0y MDIyCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJf ZnVuY3Rpb24oKTsKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCB2YWxpZCBm b3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBL RVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsK K0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIgVEFCTEUgdF9mayBB REQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0 IE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtF WQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9zY2hlbWEudHBf MF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK1BhcnRp dGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorSW5kZXhlczoKKyAgICAi dHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKK1JlZmVyZW5jZWQgYnk6Cisg ICAgVEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9ma2V5IiBGT1JFSUdOIEtFWSAo aSkgUkVGRVJFTkNFUyB0KGkpIE5PVCBWQUxJRAorCistLSBFUlJPUjogIGluc2VydCBvciB1 cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRf ZmtfaV9ma2V5OworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDog IEtleSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUg dF9mazsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5v dCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJ TlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRf ZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIg VEFCTEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkg UkVGRVJFTkNFUyB0IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBF TkZPUkNFRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9u c19tZXJnZV9zY2hlbWEudHBfMF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KQorSW5kZXhlczoKKyAgICAidHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkK K1JlZmVyZW5jZWQgYnk6CisgICAgVEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9m a2V5IiBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0KGkpIE5PVCBFTkZPUkNFRAorCist LSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBB TFRFUiBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEVORk9SQ0VEOworRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDogIEtleSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50 IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUgdF9mazsKK0RST1AgVEFCTEUgdDsKKy0tIFRl c3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JF QVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRh Ymxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQg PD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hv dWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0w IGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdp dGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lk IElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0t LS0tCisgICAgIDAKKygxIHJvdykKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2Vu ZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0g cmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBh cnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0t IHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQo KikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJP TSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQor CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciBnZW5lcmF0ZWQgY29sdW1ucyAoZGlmZmVy ZW50IG9yZGVyIG9mIGNvbHVtbnMgaW4gcGFydGl0aW9uZWQgdGFibGUKKy0tIGFuZCBwYXJ0 aXRpb25zKS4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgZyBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoaSArIHRhYmxlb2lkOjppbnQpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JF QVRFIFRBQkxFIHRwXzEgKGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9p ZDo6aW50KSwgaSBpbnQpOworQ1JFQVRFIFRBQkxFIHRwXzIgKGcgaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOworQUxURVIgVEFCTEUgdCBB VFRBQ0ggUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgtMSkgVE8gKDEwKTsKK0FM VEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8yIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoZyA+IDApOworQUxURVIgVEFC TEUgdCBBREQgQ0hFQ0sgKGkgPiAwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICg1KSwgKDE1 KTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0 cF8xMjsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxNik7CistLSBFUlJPUjogIG5ldyByb3cg Zm9yIHJlbGF0aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidF9pX2No ZWNrIgorSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApOworRVJST1I6ICBuZXcgcm93IGZvciBy ZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCB2aXJ0dWFsKS4KKy0tIFNob3Vs ZCBiZSAzIHJvd3M6ICg1KSwgKDE1KSwgKDE2KToKK1NFTEVDVCBpIEZST00gdCBPUkRFUiBC WSBpOworIGkgIAorLS0tLQorICA1CisgMTUKKyAxNgorKDMgcm93cykKKworLS0gU2hvdWxk IGJlIDEgYmVjYXVzZSBmb3IgdGhlIHNhbWUgdGFibGVvaWQgKDE1ICsgdGFibGVvaWQpID0g KDUgKyB0YWJsZW9pZCkgKyAxMDoKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9 IDE1IEFORCBnIElOIChTRUxFQ1QgZyArIDEwIEZST00gdCBXSEVSRSBpID0gNSk7CisgY291 bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVTRVQg c2VhcmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7 CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQppbmRleCBhNDI0YmUyYTZiLi42NDY0YTIzOGFjIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBw bGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHBy ZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNv IG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBn cm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3By dW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUg cGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBz dGF0cyBwcmVkaWNhdGUgbnVtYQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9q b2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0 aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXBy ZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2Vy IGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRo CiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fbWVyZ2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjJjZGQ1OGIyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fbWVyZ2Uuc3FsCkBAIC0wLDAgKzEsNzk0IEBACistLQorLS0gUEFSVElUSU9O U19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tCist LSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBj b2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAy MiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmVi MjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyMDIy KSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIw MjIiIGlzIG5vdCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJ TlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNl Y3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIy MDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4g c2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2ph bjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworLS0g RVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5 IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVz X2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS1FUlJPUiwgc2FsZXNf YXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIp IElOVE8gc2FsZXNfYXByXzI7CisKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFy dGl0aW9ucyBvcmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0 aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7 CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAy MiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21h cjIwMjI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVi bGljOworCitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhyZWdjbGFzc1tdKSBBUworU0VM RUNUICBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAgICAgICAgYy5yZWxwZXJzaXN0 ZW5jZSwKKyAgICAgICAgYy5yZWxraW5kLAorICAgICAgICBpLmluaGRldGFjaHBlbmRpbmcs CisgICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KQorRlJPTSAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJp dHMgaQorV0hFUkUgICBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gQU5Z KCQxKQorT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAgICAgYy5vaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiOworCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3Jhbmdl fScpOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50 byBwYXJ0aXRpb25lZCB0YWJsZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVf aWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIw MjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAor ICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5v dicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyks CisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwg ICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgn KSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3 LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworCitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFu Z2UnOjpyZWdjbGFzcyk7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCistLSBj aGVjayBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNh bGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gcGFydGl0aW9uc19tZXJnZV9zY2hl bWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGgg Y29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9 Jyk7CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2Fs ZXNfZmViX21hcl9hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTInOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNf cmFuZ2UgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworCistLSBVc2UgaW5k ZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsK KworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21h cl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVu YWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gTWVy Z2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9p ZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisg ICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcy MDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwK KyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcp LAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0 Jyk7CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24p IGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21h cjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxl c19vdGhlcnM7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIE9SREVSIEJZIHNhbGVz cGVyc29uX2lkOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhF Q1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBw YXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1u IHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRo IElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFU RUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAn LicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChz YWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBW QVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgy MDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEp IFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04g T0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxV RSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxl c3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxV RVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEs IDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywg MjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2Vy MycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFu YWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Zl YjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCitBTFRFUiBUQUJMRSBzYWxl c19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2Fs ZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFM VUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIy LCAyLCAxMCk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00g c2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX290aGVyOworCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CisKKy0t CistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGgg dHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQg SU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIFBBUlRJVElPTiBPRiBz YWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMg RlJPTSAoMjApIFRPICgzMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKKwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRV Uk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBS QUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwg bGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAg IFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Bl b3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQK KyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNV VEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsK KworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy CisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3Nh bGVzcGVvcGxlJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsg c3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXkn KTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVz cGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsK KworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CistLSAx IHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlMTBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Bl b3BsZTAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzQwOworCitEUk9QIFRB QkxFIHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoKTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkZWxldGVkIGNv bHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl MDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDEwKTsKKy0tIENyZWF0ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNw ZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp KTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwKHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgZDIgSU5ULCAgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwg J0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAx MDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMg KDMxLCBub3coKSwgJ1BvcG92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAg RFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIERST1AgQ09M VU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBEUk9QIENPTFVNTiBkMzsK KworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBG Uk9NICgyMCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJU SVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOwor CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAg KDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9w bGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8z MCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworCitzZWxlY3Qg KiBmcm9tIHNhbGVzcGVvcGxlOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEwOwor c2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlOworCistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEw Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0 LTIwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Yg c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIy LTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0 ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAn MjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyks CisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0y OCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwg J1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAz NzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIy MDIyIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUg c2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBz YWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fw cl9hbGw7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIy MDIyIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQor LS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0K K0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRF RCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwK KyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVz X2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ugc2Fs ZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAo J09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZBVUxUOworCisKK0NS RUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBU QUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKworLS0gRVJST1I6ICAi c2FsZXNfZXh0ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJs ZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9O UyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNf YWxsOworLS0gRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4 dGVybmFsMikgSU5UTyBzYWxlc19hbGw7CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19u b3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19ub3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CisKK0RST1AgVEFCTEUgc2Fs ZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBC WSBMSVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQg QUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisg c2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19k YXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUg SU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVT SU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0 X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0 ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAo J0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19saXN0 IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcy MDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAn MjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwg JzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAs ICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUw LCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAw MCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEy MDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAx MTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAg MTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdPc2xvJywgICAgICAgICAg ICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAg ICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAg ICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAg ICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAg ICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBj b25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScp OworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dl c3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworCistLSBz aG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9u X2luZm8oJ3tzYWxlc19saXN0fScpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbDsKKwor LS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFy dGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBz YWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworCitSRVNF VCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0g VHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUg VEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxV RVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0 ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEgUEFSVElU SU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFURSBUQUJM RSB0MyAoaSBpbnQsIHQgdGV4dCk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcDEiIGlz IG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBNRVJH RSBQQVJUSVRJT05TICh0MXAxLCB0MnBhKSBJTlRPIHQycDsKKy0tIEVSUk9SOiAgInQzIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInQyIgorQUxURVIgVEFC TEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworCitEUk9QIFRB QkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKy0tCistLSBUcnkg dG8gTUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRF TVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEVN UCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0n KTsKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikg SU5UTyB0cF8wXzI7CisKKy0tIFBhcnRpdGlvbiBzaG91bGQgYmUgdGVtcG9yYXJ5LgorRVhF Q1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworCitEUk9QIFRBQkxFIHQ7CisKKy0t CistLSBDaGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBu YW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgor LS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitDUkVBVEUgSU5ERVggdGlk eCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRw XzBfMSkgSU5UTyB0cF8xXzI7CisKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJlICd0 cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorLS0gTm90LW51bGwgY29uc3RyYWlu dCBuYW1lIHNob3VsZCBiZSAndHBfMV8yX2lfbm90X251bGwnLgorXGQrIHRwXzFfMgorCitE Uk9QIFRBQkxFIHQ7CisKKy0tCistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9y YXJ5IHBhcnRpdGlvbnMuCistLQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRh bG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworCitFWEVDVVRF IGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3Rl bXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tIENhbid0IG1lcmdl IHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJs aWM7CisKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVt cG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0RST1AgVEFCTEUgdDsKKworU0VU IHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1Ymxp YzsKKworQkVHSU47CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBj IFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKworRVhFQ1VURSBnZXRfcGFydGl0aW9u X2luZm8oJ3t0fScpOworCitERUFMTE9DQVRFIGdldF9wYXJ0aXRpb25faW5mbzsKKworU0VU IHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1Ymxp YzsKKworLS0gQ2FuJ3QgbWVyZ2UgdGVtcG9yYXJ5IHBhcnRpdGlvbnMgaW50byBhIHBlcnNp c3RlbnQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JPTExCQUNLOworCistLSBDaGVjayB0aGUgbmV3 IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQgc2VhcmNoX3Bh dGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQg KGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwg dGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0Jywg J3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJwor ICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CitTRUxFQ1QgdGFibGVuYW1lLCBp bmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFt ZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJn ZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNl OworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0 cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFy dGl0aW9uc19tZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFu ZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBV U0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8y OworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBn X2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFz cywgJ3RwXzBfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lOworRFJPUCBUQUJM RSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKworLS0g VGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFy ZW50IHRhYmxlIGFuZCBhbGwKKy0tIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgdG8gZG8gdGhl IG1lcmdlLgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitHUkFOVCBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK KworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJ TlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFC TEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRB QkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0cF8wXzEgT1dO RVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxp Y2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9N IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CisKKworLS0gVGVzdDogd2UgY2FuJ3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRpZmZl cmVudCBvd25lcnMKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGlj ZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2I7CitHUkFOVCBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0 aW9uc19tZXJnZV9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworQ1JFQVRF IFRBQkxFIHRwXzBfMShpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2I7 CitDUkVBVEUgVEFCTEUgdHBfMV8yKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTjsKKworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworCitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFf MiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3Nf cGFydGl0aW9uc19tZXJnZV9hbGljZSc6CitcZHQgdHBfMF8xCistLSBPd25lciBpcyAncmVn cmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisKKy0tIEVSUk9SOiAg cGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzCitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK KworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitSRVZPS0Ug QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFy dGl0aW9uc19tZXJnZV9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdl X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2I7CisKKwor LS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkg aW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFU RSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIs IFJFTUFJTkRFUiAxKTsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRp b25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwMSwgdHAyKSBJTlRPIHRwMzsKKworLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBw YXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cDEpIElOVE8gdHAzOworCitEUk9QIFRBQkxFIHQ7 CisKKworLS0gVGVzdCBmb3IgbWVyZ2VkIHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBT VEFUSVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1FTlQgaXMgZW1wdHkKKy0tICogREVGQVVM VFMgYXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0g KiBTVE9SQUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxl CistLSAqIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVS QVRFRCBhbmQgQ09OU1RSQUlOVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFRSSUdH RVJTIGFyZSB0aGUgc2FtZSBhcyBUUklHR0VSUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKwor Q1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRF TkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdpbnQs CisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMg J3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBfMF8xCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0 ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzBfMScsCisgYiBiaWdpbnQs CisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsK K0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDT01NRU5UIE9OIENPTFVNTiB0cF8wXzEuaSBJUyAndHBfMF8xLmkn OworCitDUkVBVEUgVEFCTEUgdHBfMV8yCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNU T1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzFfMicsCisgYiBiaWdpbnQsCisgZCBk YXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAzLTAzJykgU1RPUkVEKTsKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF8xXzIuaSBJUyAndHBfMV8yLmknOworCitD UkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7 CitDUkVBVEUgU1RBVElTVElDUyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBi IGZyb20gdHBfMF8xOworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERFUEVOREVO Q0lFUykgb24gaSwgYiBmcm9tIHRwXzFfMjsKKworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RS QUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNU UkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRB QkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJ RDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9U IFZBTElEOworCitJTlNFUlQgSU5UTyB0cF8wXzEoaSwgdCwgYikgVkFMVUVTKDAsIERFRkFV TFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8yKGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxU LCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBS RVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisg IFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAl LCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7Cisg IFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3Jl X2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklH R0VSIHRwXzBfMV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04g dHBfMF8xIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0 aW9uKCd0cF8wXzEnKTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jv d190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKKworXGQrIHRwXzBf MQorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzE7CitcZCsgdHBfMF8xCisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVT KDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQg T1JERVIgQlkgYjsKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5j dGlvbigpOworCisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCB2YWxpZCBm b3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBL RVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsK K0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIgVEFCTEUgdF9mayBB REQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0 IE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworCistLSBTaG91bGQgYmUgTk9UIFZBTElEIEZPUkVJR04g S0VZCitcZCB0cF8wXzIKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAi dF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitB TFRFUiBUQUJMRSB0X2ZrIFZBTElEQVRFIENPTlNUUkFJTlQgdF9ma19pX2ZrZXk7CisKK0RS T1AgVEFCTEUgdF9mazsKK0RST1AgVEFCTEUgdDsKKworLS0gVGVzdCBNRVJHRSBQQVJUSVRJ T05TIHdpdGggbm90IGVuZm9yY2VkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFURSBU QUJMRSB0IChpIElOVCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NS RUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitDUkVB VEUgVEFCTEUgdF9mayAoaSBJTlQpOworSU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEpLCAo Mik7CisKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9S RUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0g U2hvdWxkIGJlIE5PVCBFTkZPUkNFRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBFUlJP UjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBBTFRFUiBD T05TVFJBSU5UIHRfZmtfaV9ma2V5IEVORk9SQ0VEOworCitEUk9QIFRBQkxFIHRfZms7CitE Uk9QIFRBQkxFIHQ7CisKKworLS0gVGVzdCBmb3IgcmVjb21wdXRhdGlvbiBvZiBzdG9yZWQg Z2VuZXJhdGVkIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBpbnQg Z2VuZXJhdGVkIGFsd2F5cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RS QUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElOVE8gdCBW QUxVRVMgKDApLCAoMSk7CisKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlk ZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9N IHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hF UkUgaSA9IDEpOworCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29s dW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0 aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKKworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24g aWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00g dCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVS RSBpID0gMSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBUZXN0IGZvciBnZW5lcmF0ZWQg Y29sdW1ucyAoZGlmZmVyZW50IG9yZGVyIG9mIGNvbHVtbnMgaW4gcGFydGl0aW9uZWQgdGFi bGUKKy0tIGFuZCBwYXJ0aXRpb25zKS4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgZyBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAoaSArIHRhYmxlb2lkOjppbnQpKSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzEgKGcgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGkgKyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOworQ1JFQVRFIFRBQkxFIHRwXzIgKGcg aW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOwor QUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgt MSkgVE8gKDEwKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8yIEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoZyA+ IDApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGkgPiAwKTsKK0lOU0VSVCBJTlRPIHQg VkFMVUVTICg1KSwgKDE1KTsKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cF8xLCB0cF8yKSBJTlRPIHRwXzEyOworCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTYpOwor LS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNr IGNvbnN0cmFpbnQgInRfaV9jaGVjayIKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKTsKKy0t IFNob3VsZCBiZSAzIHJvd3M6ICg1KSwgKDE1KSwgKDE2KToKK1NFTEVDVCBpIEZST00gdCBP UkRFUiBCWSBpOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBmb3IgdGhlIHNhbWUgdGFibGVv aWQgKDE1ICsgdGFibGVvaWQpID0gKDUgKyB0YWJsZW9pZCkgKyAxMDoKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHQgV0hFUkUgaSA9IDE1IEFORCBnIElOIChTRUxFQ1QgZyArIDEwIEZST00g dCBXSEVSRSBpID0gNSk7CisKK0RST1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hfcGF0 aDsKKworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworRFJPUCBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOwotLSAKMi40MC4xLndpbmRvd3MuMQoK --------------Wk1KT8NhM0G6BtX8G147dPEm Content-Type: text/plain; charset=UTF-8; name="v47-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v47-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkZDc3NDEyMzViNjBhZTk5MTQ0YThiNjk5ZTg3NWNkM2MxZGZhY2UyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDcgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcwoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBBbGV4YW5kZXIg S29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJbG1hcmkgTWFu bnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29y b3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jpc292ClJldmll d2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4s IEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5OiBEYW5pZWwg R3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3JjL3NnbWwvZGRs LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgOTIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0NjMgKysrKysKIHNyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMzggKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAgNjUgKy0K IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICA2ODQg KysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAg IHwgICAxOCArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAg ICAgfCAgIDEwICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDE2ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAg ICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmggICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggICAg ICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlv bi1zcGxpdC5vdXQgICAgfCAgMTkwICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9w YXJ0aXRpb24tc3BsaXQuc3BlYyB8ICAgNTQgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAxNjU1ICsrKysrKysrKysrKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsICAgICAgfCAxMTQ4ICsr KysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAg ICAgIHwgICAgMiArCiAyMCBmaWxlcyBjaGFuZ2VkLCA0NDQ0IGluc2VydGlvbnMoKyksIDIz IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0 LnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dt bC9kZGwuc2dtbAppbmRleCA2MmMyYmI1NGVhLi40MWU0NzdlZGRmIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00 NDYxLDYgKzQ0NjEsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICAgICAgICAg ICAgICAgICAgICBtZWFzdXJlbWVudF95MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAw NnExOwogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICAgU2ltaWxhcmx5IHRvIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucywgdGhl cmUgaXMgYW4gb3B0aW9uIGZvcgorICAgICBzcGxpdHRpbmcgYSBzaW5nbGUgcGFydGl0aW9u IGludG8gbXVsdGlwbGUgdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRl cnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTjwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUgY291bGQg Y29tZSBpbiBoYW5keSB3aGVuIG9uZSBwYXJ0aXRpb24gZ3Jvd3MgdG9vIGJpZworICAgICBh bmQgbmVlZHMgdG8gYmUgc3BsaXQgaW50byBtdWx0aXBsZS4gIEl0J3MgaW1wb3J0YW50IHRv IG5vdGUgdGhhdAorICAgICB0aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMKKyAgICAgYW4gPGxpdGVyYWw+ QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0IGhp Z2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0aXZlIG5h dHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gc3BsaXQKKyAgICAgdGhlIHF1YXJ0ZXIgcGFy dGl0aW9uIGJhY2sgdG8gbW9udGhseSBwYXJ0aXRpb25zOgorPHByb2dyYW1saXN0aW5nPgor QUxURVIgVEFCTEUgbWVhc3VyZW1lbnQgU1BMSVQgUEFSVElUSU9OIG1lYXN1cmVtZW50X3ky MDA2cTEgSU5UTworICAgKFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMSBGT1IgVkFM VUVTIEZST00gKCcyMDA2LTAxLTAxJykgVE8gKCcyMDA2LTAyLTAxJyksCisgICAgUEFSVElU SU9OIG1lYXN1cmVtZW50X3kyMDA2bTAyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDItMDEn KSBUTyAoJzIwMDYtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZt MDMgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMy0wMScpIFRPICgnMjAwNi0wNC0wMScpKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9wYXJhPgorCiAgICA8L3NlY3QzPgogCiAgICA8 c2VjdDMgaWQ9ImRkbC1wYXJ0aXRpb25pbmctZGVjbGFyYXRpdmUtbGltaXRhdGlvbnMiPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IGU1MDNhMDYwMjguLmRhYWRiODMy NmIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM3LDYgKzM3LDEwIEBA IEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFDSCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4geyBG T1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91 bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CiBBTFRFUiBUQUJMRSBbIElGIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4KICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsgQ09OQ1VSUkVOVExZIHwgRklOQUxJ WkUgXQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAgU1BMSVQgUEFSVElUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+ IElOVE8KKyAgICAgICAgKFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFi bGU+IHwgREVGQVVMVCB9LAorICAgICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxV RVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVj PC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSkKIEFMVEVSIFRBQkxFIFsgSUYg RVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pCiAg ICAgICAgIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4KQEAgLTExNTAsNiArMTE1NCw3MSBAQCBXSVRIICggTU9EVUxV UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBs YWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj4K KyAgICA8dGVybT48bGl0ZXJhbD5TUExJVCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5UTyAoUEFSVElU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3Jl cGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sIFBBUlRJ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4u Ll0pPC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGlzIGZvcm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0 IHRhYmxlIGludG8gYSBuZXcKKyAgICAgIHBhcnRpdGlvbnMuIEhhc2gtcGFydGl0aW9uZWQg dGFyZ2V0IHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuIEJvdW5kcyBvZiBuZXcKKyAgICAgIHBh cnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZyBwYXJ0 aXRpb25zCisgICAgICAoZXhjZXB0IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgIElmIHRoZSBzcGxpdCBwYXJ0 aXRpb24gaXMgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sIG9uZSBv ZgorICAgICAgdGhlIG5ldyBwYXJ0aXRpb25zIG11c3QgYmUgPGxpdGVyYWw+REVGQVVMVDwv bGl0ZXJhbD4uCisgICAgICBJbiBjYXNlIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgb3Ig b25lIG9mIGV4aXN0aW5nIHBhcnRpdGlvbnMgaXMKKyAgICAgIDxsaXRlcmFsPkRFRkFVTFQ8 L2xpdGVyYWw+LCBuZXcgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBj YW4KKyAgICAgIGhhdmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMuICBJZiB0 aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QKKyAgICAgIGhhdmUgYSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRl cmFsPgorICAgICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiB0aGUgbmV3 IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJbiBjYXNl IG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBjb250YWluIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0 ZXJhbD4KKyAgICAgIHBhcnRpdGlvbiBhbmQgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMg bm90IGhhdmUgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9u LCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gc2hvdWxkCisgICAgICBi ZSBlcXVhbCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPbmUg b2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbiBo YXZlCisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAg ICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgYSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uOiB3ZSBzcGxpdCBpdCwgYnV0IGFm dGVyIHNwbGl0dGluZyB3ZSBoYXZlIGEgcGFydGl0aW9uIHdpdGggdGhlCisgICAgICBzYW1l IG5hbWUpLiAgT25seSBzaW1wbGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24gY2FuIGJl IHNwbGl0LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRpdGlv bnMgd2lsbCBoYXZlIHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgor ICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255 bT5BQ0w8L2Fjcm9ueW0+IG9uIG5ldworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJh PgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3Jl YXRlZCBsYXRlciwgYWZ0ZXIgbW92aW5nIHRoZSBkYXRhCisgICAgICBpbnRvIHRoZSBuZXcg cGFydGl0aW9ucy4KKyAgICAgIEV4dGVuZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBm cm9tIHRoZSBwYXJlbnQgdGFibGUsIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29t bWFuZD5DUkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIE5ldyBw YXJ0aXRpb25zIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBw ZXJzaXN0ZW5jZQorICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0 YWJsZS4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9u IGlzIHNwbGl0LCBhbnkgaW5kaXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGlzCisg ICAgICBwYXJ0aXRpb24sIHN1Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxs IGJlIGRyb3BwZWQuIFRoaXMgY2N1cnMKKyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIg VEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSBpdHNlbGYKKyAgICAgIGFzIHRoZSB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2Jq ZWN0cy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIHNwbGl0IHBhcnRp dGlvbiBoYXMgc29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiBpdCwgdGhlIGNvbW1hbmQgY2Fu CisgICAgICBub3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90 IHVzZWQsIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAg IDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgU3BsaXQgcGFydGl0aW9uIGFjcXVpcmVz IGEgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAg IHRoZSBwYXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1Mg RVhDTFVTSVZFPC9saXRlcmFsPgorICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNw bGl0LgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJs ZS1tZXJnZS1wYXJ0aXRpb25zIj4KICAgICA8dGVybT48bGl0ZXJhbD5NRVJHRSBQQVJUSVRJ T05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9y ZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVy bT4KIApAQCAtMTI0NCw3ICsxMzEzLDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0K ICAgIEFsbCB0aGUgZm9ybXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFCTEU8L2NvbW1hbmQ+IHRo YXQgYWN0IG9uIGEgc2luZ2xlIHRhYmxlLAogICAgZXhjZXB0IDxsaXRlcmFsPlJFTkFNRTwv bGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAogICAgPGxpdGVyYWw+ QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048 L2xpdGVyYWw+LAotICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+ IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xp dGVyYWw+LCBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4KKyAgIGNh biBiZSBjb21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMg dG8gYmUgYXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2li bGUgdG8gYWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2 ZXJhbAogICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1 bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UKQEAgLTE0ODgsNyArMTU1OCw3IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAg ICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0 aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCi0gICAgICAgIG9yIHRoZSBuYW1l IG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICAgb3IgdGhlIG5hbWUgb2Yg c3BsaXQgcGFydGl0aW9uLCBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRp b24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0 ZW50cnk+CkBAIC0xOTIxLDYgKzE5OTEsMjQgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQK ICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDE1bTEyOwogPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0 aXRpb24gb2YgdGhlIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5n PgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMyBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMgRk9SIFZBTFVF UyBGUk9NICgnMjAyMy0wMi0wMScpIFRPICgnMjAyMy0wMy0wMScpLAorICAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEnKSBUTyAoJzIw MjMtMDQtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMyBGT1IgVkFMVUVTIEZS T00gKCcyMDIzLTA0LTAxJykgVE8gKCcyMDIzLTA1LTAxJykpOworPC9wcm9ncmFtbGlzdGlu Zz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24g b2YgdGhlIGxpc3QtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJ TiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KSk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRvIG1lcmdl IHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0 YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5k ZXggYjcyNGUyZDcxNS4uNzBkZGY3YTA1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKQEAgLTc0Miw2ICs3NDIsOSBAQCBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdl KE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCiBzdGF0aWMgdm9p ZCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFs dGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNT cGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJ CQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkgQWx0 ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CURlZmluZVJlbGF0aW9uCkBAIC00ODQwLDYgKzQ4NDMsMTAgQEAgQWx0ZXJUYWJsZUdldExv Y2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2 ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJ Y21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJ ZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBh bHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAt NTI4MCw2ICs1Mjg3LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJl cCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVhazsKKwkJY2Fz ZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0 eXBlLCByZWwsIEFUVF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQkvKiBObyBjb21tYW5kLXNw ZWNpZmljIHByZXAgbmVlZGVkICovCisJCQlwYXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUp OwpAQCAtNTY4NCw2ICs1Njk2LDE0IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsCiAJCQlBVEV4ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0 YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKIAkJCQkJCQkJICBjb250ZXh0 KTsKIAkJCWJyZWFrOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJY21kID0gQVRQ YXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBsb2NrbW9k ZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOworCQkJQXNzZXJ0KGNtZCAhPSBO VUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY1NwbGl0UGFydGl0aW9uKHdxdWV1ZSwgdGFiLCBy ZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYsCisJCQkJCQkJCSBjb250ZXh0KTsKKwkJ CWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0 eXBlKTsKQEAgLTY3MjYsNiArNjc0Niw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5n KEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04g Li4uIEZJTkFMSVpFIjsKIAkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQlyZXR1cm4g Ik1FUkdFIFBBUlRJVElPTlMiOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJcmV0 dXJuICJTUExJVCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJcmV0 dXJuICJBTFRFUiBDT0xVTU4gLi4uIEFERCBJREVOVElUWSI7CiAJCWNhc2UgQVRfU2V0SWRl bnRpdHk6CkBAIC0yMjkxMywzICsyMjkzNSw0NDQgQEAgQVRFeGVjTWVyZ2VQYXJ0aXRpb25z KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAog CS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLwogCVNldFVzZXJJ ZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOwogfQorCisK Ky8qCisgKiBTdHJ1Y3Qgd2l0aCBjb250ZXh0IG9mIG5ldyBwYXJ0aXRpb24gZm9yIGluc2Vy dGluZyByb3dzIGZyb20gc3BsaXQgcGFydGl0aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IFNw bGl0UGFydGl0aW9uQ29udGV4dAoreworCUV4cHJTdGF0ZSAgKnBhcnRxdWFsc3RhdGU7CS8q IGV4cHJlc3Npb24gZm9yIGNoZWNraW5nIHNsb3QgZm9yIHBhcnRpdGlvbgorCQkJCQkJCQkg KiAoTlVMTCBmb3IgREVGQVVMVCBwYXJ0aXRpb24pICovCisJQnVsa0luc2VydFN0YXRlIGJp c3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsgaW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVw bGVUYWJsZVNsb3QgKmRzdHNsb3Q7CS8qIHNsb3QgZm9yIGluc2VydGluZyByb3cgaW50byBw YXJ0aXRpb24gKi8KKwlBbHRlcmVkVGFibGVJbmZvICp0YWI7CQkvKiBzdHJ1Y3RvcmUgd2l0 aCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zCisJCQkJCQkJCSAqIGFuZCBjaGVjayBj b25zdHJhaW50IGV4cHJlc3NzaW9ucy4gKi8KKwlSZWxhdGlvbglwYXJ0UmVsOwkJLyogcmVs YXRpb24gZm9yIHBhcnRpdGlvbiAqLworfSBTcGxpdFBhcnRpdGlvbkNvbnRleHQ7CisKKy8q CisgKiBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGNyZWF0ZSBjb250ZXh0IGZvciBw YXJ0aXRpb24gYW5kIGZpbGwgaXQKKyAqLworc3RhdGljIFNwbGl0UGFydGl0aW9uQ29udGV4 dCAqCitjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoUmVsYXRpb24gcGFydFJlbCkKK3sK KwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjOworCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25D b250ZXh0ICopIHBhbGxvYzAoc2l6ZW9mKFNwbGl0UGFydGl0aW9uQ29udGV4dCkpOworCXBj LT5wYXJ0UmVsID0gcGFydFJlbDsKKworCS8qCisJICogUHJlcGFyZSBhIEJ1bGtJbnNlcnRT dGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiBUaGUgRlNNIGlzIGVtcHR5LCBzbworCSAq IGRvbid0IGJvdGhlciB1c2luZyBpdC4KKwkgKi8KKwlwYy0+YmlzdGF0ZSA9IEdldEJ1bGtJ bnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRp b24uICovCisJcGMtPmRzdHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYy0+cGFydFJlbCwg TlVMTCk7CisKKwlyZXR1cm4gcGM7Cit9CisKKy8qCisgKiBkZWxldGVTcGxpdFBhcnRpdGlv bkNvbnRleHQ6IGRlbGV0ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24KKyAqLworc3RhdGljIHZv aWQKK2RlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChTcGxpdFBhcnRpdGlvbkNvbnRleHQg KnBjLCBMaXN0ICoqd3F1ZXVlLCBpbnQgdGlfb3B0aW9ucykKK3sKKwlMaXN0Q2VsbCAgICps dGFiOworCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7CisJ RnJlZUJ1bGtJbnNlcnRTdGF0ZShwYy0+YmlzdGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVs a19pbnNlcnQocGMtPnBhcnRSZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24n dCBuZWVkIHByb2Nlc3MgdGhpcyBwYy0+cGFydFJlbCBzbyBkZWxldGUgdGhlIEFMVEVSIFRB QkxFIHF1ZXVlCisJICogb2YgaXQuCisJICovCisJZm9yZWFjaChsdGFiLCAqd3F1ZXVlKQor CXsKKwkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiID0gKEFsdGVyZWRUYWJsZUluZm8gKikgbGZp cnN0KGx0YWIpOworCQlpZiAodGFiLT5yZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHBjLT5w YXJ0UmVsKSkKKwkJCSp3cXVldWUgPSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIp OworCX0KKworCXBmcmVlKHBjKTsKK30KKworLyoKKyAqIG1vdmVTcGxpdFRhYmxlUm93czog c2NhbiBzcGxpdCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBwYXJ0aXRpb25lZCB0YWJsZQor ICogKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgorICoKKyAqIE5l dyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9uOgorICogcGFydGxpc3Q6IGxpc3Qgb2YgcG9pbnRl cnMgdG8gU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3R1cmVzLgorICogbmV3UGFydFJlbHM6 IGxpc3Qgb2YgUmVsYXRpb25zLgorICogZGVmYXVsdFBhcnRPaWQ6IG9pZCBvZiBERUZBVUxU IHBhcnRpdGlvbiwgZm9yIHRhYmxlIHJlbC4KKyAqLworc3RhdGljIHZvaWQKK21vdmVTcGxp dFRhYmxlUm93cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0 UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFydFJlbHMsIE9pZCBkZWZhdWx0UGFy dE9pZCkKK3sKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcg aXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlD b21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7CisJTGlzdENlbGwgICAqbGlz dHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwlF eHByQ29udGV4dCAqZWNvbnRleHQ7CisJVGFibGVTY2FuRGVzYyBzY2FuOworCVNuYXBzaG90 CXNuYXBzaG90OworCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCUxpc3QJICAgKnBhcnRDb250 ZXh0cyA9IE5JTDsKKwlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwlTcGxpdFBh cnRpdGlvbkNvbnRleHQgKmRlZmF1bHRQYXJ0Q3R4ID0gTlVMTCwKKwkJCSAgICpwYzsKKwli b29sCQlpc09sZERlZmF1bHRQYXJ0ID0gZmFsc2U7CisKKwlteWNpZCA9IEdldEN1cnJlbnRD b21tYW5kSWQodHJ1ZSk7CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisK Kwlmb3Jib3RoKGxpc3RwdHIsIHBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJ eworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAq KSBsZmlyc3QobGlzdHB0cik7CisKKwkJcGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRl eHQoKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cjIpKTsKKworCQkvKiBGaW5kIHRoZSB3b3Jr IHF1ZXVlIGVudHJ5IGZvciBuZXcgcGFydGl0aW9uIHRhYmxlOiBuZXdQYXJ0UmVsLiAqLwor CQlwYy0+dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgcGMtPnBhcnRSZWwpOworCisJ CWJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyhwYy0+dGFiLCBwYy0+cGFydFJlbCwg ZXN0YXRlKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJeworCQkJLyog V2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBmb3IgZGV0YWNoZWQgREVGQVVMVCBw YXJ0aXRpb24uICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQl9CisJCWVsc2UKKwkJ eworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8qIEJ1aWxkIGV4cHJlc3Np b24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxzLiAqLworCQkJ cGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWwsIHNwcy0+Ym91 bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxfY29uc3RfZXhw cmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25zdHJhaW50KTsK KwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4gKi8KKwkJ CXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQocGFydENv bnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0aGUgY29uc3Ry YWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBzcGxpdFJlbCdz LgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25fdmFyYXR0bm9z KHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwgcmVsKTsKKwor CQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBs aW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQocGMtPnBhcnRx dWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRpb24gY29udGV4 dCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFydENvbnRleHRz LCBwYyk7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgcGFydGl0aW9uIGNvbnRleHQgZm9yIERF RkFVTFQgcGFydGl0aW9uLiBXZSBjYW4gaW5zZXJ0IHZhbHVlcworCSAqIGludG8gdGhpcyBw YXJ0aXRpb24gaW4gY2FzZSBzcGFjZXMgd2l0aCB2YWx1ZXMgYmV0d2VlbiBuZXcgcGFydGl0 aW9ucy4KKwkgKi8KKwlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYmIE9pZElzVmFsaWQoZGVmYXVs dFBhcnRPaWQpKQorCXsKKwkJLyogSW5kaWNhdGUgdGhhdCB3ZSBhbGxvY2F0ZSBjb250ZXh0 IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJaXNPbGREZWZhdWx0UGFydCA9IHRy dWU7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KHRh YmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spKTsKKworCQkv KiBGaW5kIHRoZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciBkZWZhdWx0IHBhcnRpdGlvbiB0YWJs ZS4gKi8KKwkJZGVmYXVsdFBhcnRDdHgtPnRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUs IGRlZmF1bHRQYXJ0Q3R4LT5wYXJ0UmVsKTsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1 cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUg c2xvdC4gKi8KKwlzcmNzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUoc3BsaXRSZWwsIE5VTEwp OworCisJLyoKKwkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiBz cGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbgorCSAqIChmb3IgZmlyc3QgbmV3IHBh cnRpdGlvbiwgYnV0IG90aGVyIG5ldyBwYXJ0aXRpb25zIGNhbiB1c2UgdGhlIHNhbWUKKwkg KiBtYXApLgorCSAqLworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3Qo bGlzdF9oZWFkKHBhcnRDb250ZXh0cykpOworCXR1cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVz X2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihzcGxpdFJlbCksCisJCQkJCQkJCQkgICBSZWxh dGlvbkdldERlc2NyKHBjLT5wYXJ0UmVsKSk7CisKKwkvKiBTY2FuIHRocm91Z2ggdGhlIHJv d3MuICovCisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90 KCkpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRSZWwsIHNuYXBzaG90LCAwLCBO VUxMKTsKKworCS8qCisJICogU3dpdGNoIHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBh bmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUKKwkgKiBwcm9kdWNlZCwgc28gd2UgZG9uJ3Qg bGVhayBtZW1vcnkuCisJICovCisJb2xkQ3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdl dFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKKworCXdoaWxlICh0YWJsZV9zY2Fu X2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwl7 CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90 OworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJZWNvbnRleHQtPmVjeHRfc2Nh bnR1cGxlID0gc3Jjc2xvdDsKKworCQkvKiBTZWFyY2ggcGFydGl0aW9uIGZvciBjdXJyZW50 IHNsb3Qgc3Jjc2xvdC4gKi8KKwkJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Q29udGV4dHMpCisJ CXsKKwkJCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7 CisKKwkJCWlmIChwYy0+cGFydHF1YWxzdGF0ZSAvKiBza2lwIERFRkFVTFQgcGFydGl0aW9u ICovICYmCisJCQkJRXhlY0NoZWNrKHBjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJ CQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJUmVzZXRFeHBy Q29udGV4dChlY29udGV4dCk7CisJCX0KKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJLyogVXNl IERFRkFVTFQgcGFydGl0aW9uIGlmIGl0IGV4aXN0cy4gKi8KKwkJCWlmIChkZWZhdWx0UGFy dEN0eCkKKwkJCQlwYyA9IGRlZmF1bHRQYXJ0Q3R4OworCQkJZWxzZQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJ CWVycm1zZygiY2FuIG5vdCBmaW5kIHBhcnRpdGlvbiBmb3Igc3BsaXQgcGFydGl0aW9uIHJv dyIpLAorCQkJCQkJZXJydGFibGUoc3BsaXRSZWwpKTsKKwkJfQorCisJCWlmICh0dXBsZV9t YXApCisJCXsKKwkJCS8qIE5lZWQgdG8gdXNlIG1hcCB0byBjb3B5IGF0dHJpYnV0ZXMuICov CisJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0 ck1hcCwgc3Jjc2xvdCwgcGMtPmRzdHNsb3QpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyog RXh0cmFjdCBkYXRhIGZyb20gb2xkIHR1cGxlLiAqLworCQkJc2xvdF9nZXRhbGxhdHRycyhz cmNzbG90KTsKKworCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAqLworCQkJaW5z ZXJ0c2xvdCA9IHBjLT5kc3RzbG90OworCisJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90 KTsKKworCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192 YWx1ZXMsCisJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOwor CQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGws CisJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCUV4 ZWNTdG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJfQorCisJCS8qCisJCSAqIENv bnN0cmFpbnRzIGFuZCBHRU5FUkFURUQgZXhwcmVzc2lvbnMgbWlnaHQgcmVmZXJlbmNlIHRo ZSB0YWJsZW9pZAorCQkgKiBjb2x1bW4sIHNvIGZpbGwgdHRzX3RhYmxlT2lkIHdpdGggdGhl IGRlc2lyZWQgdmFsdWUuIChXZSBtdXN0IGRvCisJCSAqIHRoaXMgZWFjaCB0aW1lLCBiZWNh dXNlIGl0IGdldHMgb3ZlcndyaXR0ZW4gd2l0aCBuZXdyZWwncyBPSUQgZHVyaW5nCisJCSAq IHN0b3JpbmcuKQorCQkgKi8KKwkJaW5zZXJ0c2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRp b25HZXRSZWxpZChwYy0+cGFydFJlbCk7CisKKwkJLyoKKwkJICogTm93LCBldmFsdWF0ZSBh bnkgZ2VuZXJhdGVkIGV4cHJlc3Npb25zIHdob3NlIGlucHV0cyBjb21lIGZyb20KKwkJICog dGhlIG5ldyB0dXBsZS4gIFdlIGFzc3VtZSB0aGVzZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5j ZSBlYWNoCisJCSAqIG90aGVyLCBzbyB0aGF0IHRoZXJlJ3Mgbm8gb3JkZXJpbmcgZGVwZW5k ZW5jeS4KKwkJICovCisJCWV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0Nv bnN0cmFpbnRzKHBjLT50YWIsIHBjLT5wYXJ0UmVsLAorCQkJCQkJCQkJCQkJCQlpbnNlcnRz bG90LCBlY29udGV4dCk7CisKKwkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3 IHJlbGF0aW9uLiAqLworCQl0YWJsZV90dXBsZV9pbnNlcnQocGMtPnBhcnRSZWwsIGluc2Vy dHNsb3QsIG15Y2lkLAorCQkJCQkJICAgdGlfb3B0aW9ucywgcGMtPmJpc3RhdGUpOworCisJ CVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRDeHQpOworCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOworCisJaWYgKHR1cGxlX21hcCkKKwkJZnJlZV9jb252ZXJzaW9u X21hcCh0dXBsZV9tYXApOworCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNz bG90KTsKKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwlmb3JlYWNoX3B0cihT cGxpdFBhcnRpdGlvbkNvbnRleHQsIHNwYywgcGFydENvbnRleHRzKQorCQlkZWxldGVTcGxp dFBhcnRpdGlvbkNvbnRleHQoc3BjLCB3cXVldWUsIHRpX29wdGlvbnMpOworCisJLyogTmVl ZCB0byBjbG9zZSB0YWJsZSBhbmQgZnJlZSBidWZmZXJzIGZvciBERUZBVUxUIHBhcnRpdGlv bi4gKi8KKwlpZiAoaXNPbGREZWZhdWx0UGFydCkKKwl7CisJCVJlbGF0aW9uCWRlZmF1bHRQ YXJ0UmVsID0gZGVmYXVsdFBhcnRDdHgtPnBhcnRSZWw7CisKKwkJZGVsZXRlU3BsaXRQYXJ0 aXRpb25Db250ZXh0KGRlZmF1bHRQYXJ0Q3R4LCB3cXVldWUsIHRpX29wdGlvbnMpOworCQkv KiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwkJdGFibGVfY2xvc2UoZGVmYXVs dFBhcnRSZWwsIE5vTG9jayk7CisJfQorfQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+ IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IElOVE8gPHBhcnRpdGlvbi1saXN0 PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1 ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSBQYXJ0aXRp b25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJl bGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNwbGl0UmVsT2lkOworCWNoYXIJCXJlbG5hbWVb TkFNRURBVEFMRU5dOworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7 CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURB VEFMRU5dOworCUxpc3QJICAgKm5ld1BhcnRSZWxzID0gTklMOworCU9iamVjdEFkZHJlc3Mg b2JqZWN0OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCU9pZAkJCXNhdmVfdXNlcmlkOwor CWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwlk ZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9u R2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKKworCS8qCisJICogUGFydGl0aW9uIGlz IGFscmVhZHkgbG9ja2VkIGluIHRoZSB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdAor CSAqIGZ1bmN0aW9uLgorCSAqLworCXNwbGl0UmVsID0gdGFibGVfb3BlbnJ2KGNtZC0+bmFt ZSwgTm9Mb2NrKTsKKworCXNwbGl0UmVsT2lkID0gUmVsYXRpb25HZXRSZWxpZChzcGxpdFJl bCk7CisKKwkvKiBDaGVjayBkZXNjcmlwdGlvbnMgb2YgbmV3IHBhcnRpdGlvbnMuICovCisJ Zm9yZWFjaF9ub2RlKFNpbmdsZVBhcnRpdGlvblNwZWMsIHNwcywgY21kLT5wYXJ0bGlzdCkK Kwl7CisJCU9pZAkJCWV4aXN0aW5nUmVsaWQ7CisKKwkJc3RybGNweShyZWxuYW1lLCBzcHMt Pm5hbWUtPnJlbG5hbWUsIE5BTUVEQVRBTEVOKTsKKworCQkvKgorCQkgKiBMb29rIHVwIGV4 aXN0aW5nIHJlbGF0aW9uIGJ5IG5ldyBwYXJ0aXRpb24gbmFtZSwgY2hlY2sgd2UgaGF2ZQor CQkgKiBwZXJtaXNzaW9uIHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdCBhZ2FpbnN0IGNvbmN1 cnJlbnQgZHJvcCwgYW5kIG1hcmsKKwkJICogc3RtdC0+cmVsYXRpb24gYXMgUkVMUEVSU0lT VEVOQ0VfVEVNUCBpZiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgaXMKKwkJICogc2VsZWN0ZWQu CisJCSAqLworCQlzcHMtPm5hbWUtPnJlbHBlcnNpc3RlbmNlID0gcmVsLT5yZF9yZWwtPnJl bHBlcnNpc3RlbmNlOworCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2Uo c3BzLT5uYW1lLCBOb0xvY2ssICZleGlzdGluZ1JlbGlkKTsKKworCQkvKgorCQkgKiBUaGlz IHdvdWxkIGZhaWwgbGF0ZXIgb24gYW55d2F5IGlmIHRoZSByZWxhdGlvbiBhbHJlYWR5IGV4 aXN0cy4gQnV0CisJCSAqIGJ5IGNhdGNoaW5nIGl0IGhlcmUgd2UgY2FuIGVtaXQgYSBuaWNl ciBlcnJvciBtZXNzYWdlLgorCQkgKi8KKwkJaWYgKGV4aXN0aW5nUmVsaWQgPT0gc3BsaXRS ZWxPaWQgJiYgIWlzU2FtZU5hbWUpCisJCQkvKiBPbmUgbmV3IHBhcnRpdGlvbiBjYW4gaGF2 ZSB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwkJCWlzU2FtZU5hbWUg PSB0cnVlOworCQllbHNlIGlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJ CQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgcmVsbmFtZSkp OworCX0KKworCS8qIERldGFjaCBzcGxpdCBwYXJ0aXRpb24uICovCisJZGV0YWNoUGFydGl0 aW9uVGFibGUocmVsLCBzcGxpdFJlbCwgZGVmYXVsdFBhcnRPaWQpOworCisJLyoKKwkgKiBQ ZXJmb3JtIGEgcHJlbGltaW5hcnkgY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBz YWZlIHRvIGRyb3AgYWxsCisJICogbWVyZ2luZyBwYXJ0aXRpb25zIGJlZm9yZSB3ZSBhY3R1 YWxseSBkbyBzbyBsYXRlci4gQWZ0ZXIgbWVyZ2luZyByb3dzCisJICogaW50byB0aGUgbmV3 IHBhcnRpdGlvbnMgdmlhIG1vdmVNZXJnZWRUYWJsZXNSb3dzLCBhbGwgb2xkIHBhcnRpdGlv bnMgbmVlZAorCSAqIGJlIGRyb3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2 aW9yIGlzIERST1BfUkVTVFJJQ1QgYW5kIHRoZQorCSAqIG1lcmdlIHByb2Nlc3MgKG1vdmVN ZXJnZWRUYWJsZXNSb3dzKSBjYW4gYmUgdGltZS1jb25zdW1pbmcsIHBlcmZvcm1pbmcgYW4K KwkgKiBlYXJseSBjaGVjayBvbiB0aGUgZHJvcCBlbGlnaWJpbGl0eSBvZiBvbGQgcGFydGl0 aW9ucyBpcyBwcmVmZXJhYmxlLgorCSAqLworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVs T2lkOworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCW9iamVjdC5v YmplY3RTdWJJZCA9IDA7CisJcGVyZm9ybURlbGV0aW9uQ2hlY2soJm9iamVjdCwgRFJPUF9S RVNUUklDVCwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CisKKwkvKgorCSAqIElmIG5l dyBwYXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIHRoZW4g d2Ugc2hvdWxkCisJICogcmVuYW1lIHNwbGl0IHBhcnRpdGlvbiBmb3IgcmV1c2luZyBuYW1l LgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2UgbXVzdCBidW1w IHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxl CisJCSAqIHZpc2libGUgZm9yIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KKwkJc3ByaW50Zih0bXBS ZWxOYW1lLCAic3BsaXQtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVBy b2NQaWQpOworCQlSZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0UmVsT2lkLCB0bXBSZWxO YW1lLCB0cnVlLCBmYWxzZSk7CisKKwkJLyoKKwkJICogV2UgbXVzdCBidW1wIHRoZSBjb21t YW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxlCisJCSAqIHZp c2libGUgYWZ0ZXIgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCX0KKworCS8qIENyZWF0ZSBuZXcgcGFydGl0aW9ucyAobGlrZSBzcGxpdCBwYXJ0 aXRpb24pLCB3aXRob3V0IGluZGV4ZXMuICovCisJZm9yZWFjaF9ub2RlKFNpbmdsZVBhcnRp dGlvblNwZWMsIHNwcywgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVJlbGF0aW9uCW5ld1BhcnRS ZWw7CisKKwkJbmV3UGFydFJlbCA9IGNyZWF0ZVBhcnRpdGlvblRhYmxlKHdxdWV1ZSwgc3Bz LT5uYW1lLCByZWwsCisJCQkJCQkJCQkJICBzcGxpdFJlbC0+cmRfcmVsLT5yZWxvd25lcik7 CisJCW5ld1BhcnRSZWxzID0gbGFwcGVuZChuZXdQYXJ0UmVscywgbmV3UGFydFJlbCk7CisJ fQorCisJLyoKKwkgKiBTd2l0Y2ggdG8gdGhlIHRhYmxlIG93bmVyJ3MgdXNlcmlkLCBzbyB0 aGF0IGFueSBpbmRleCBmdW5jdGlvbnMgYXJlIHJ1bgorCSAqIGFzIHRoYXQgdXNlci4gIEFs c28gbG9jayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBhbmQKKwkgKiBh cnJhbmdlIHRvIG1ha2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8gdGhpcyBjb21t YW5kLgorCSAqCisJICogTmVlZCB0byBkbyBpdCBhZnRlciBkZXRlcm1pbmUgbmFtZXNwYWNl IGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlIGNhbGwuCisJICovCisJR2V0VXNlcklkQW5kU2Vj Q29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwlTZXRVc2VySWRB bmRTZWNDb250ZXh0KHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyLAorCQkJCQkJICAgc2F2 ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9OKTsKKwlzYXZl X25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2VhcmNoUGF0aCgp OworCisJLyogQ29weSBkYXRhIGZyb20gc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBwYXJ0aXRp b25zLiAqLworCW1vdmVTcGxpdFRhYmxlUm93cyh3cXVldWUsIHJlbCwgc3BsaXRSZWwsIGNt ZC0+cGFydGxpc3QsIG5ld1BhcnRSZWxzLCBkZWZhdWx0UGFydE9pZCk7CisJLyogS2VlcCB0 aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9j ayk7CisKKwkvKiBBdHRhY2ggbmV3IHBhcnRpdGlvbnMgdG8gcGFydGl0aW9uZWQgdGFibGUu ICovCisJZm9yYm90aChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFy dFJlbHMpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0 aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisJCVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAo UmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMik7CisKKwkJLyoKKwkJICogd3F1ZXVlID0gTlVM TDogdmVyaWZpY2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdAorCQkg KiBuZWVkZWQuCisJCSAqLworCQlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5l d1BhcnRSZWwsIHNwcy0+Ym91bmQpOworCQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1p dC4gKi8KKwkJdGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKiBE cm9wIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVs YXRpb25JZDsKKwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9pZDsKKwlvYmplY3Qub2Jq ZWN0U3ViSWQgPSAwOworCS8qIFByb2JhYmx5IERST1BfQ0FTQ0FERSBpcyBub3QgbmVlZGVk LiAqLworCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKKwor CS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rp b25zLiAqLworCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOworCisJLyog UmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICovCisJU2V0VXNlcklkQW5k U2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCA0NmJiZGNiYzc0Li5hZWQ3OWI2M2RhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAg LTI1Nyw2ICsyNTcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVBhcnRpdGlv bkVsZW0gKnBhcnRlbGVtOwogCVBhcnRpdGlvblNwZWMgKnBhcnRzcGVjOwogCVBhcnRpdGlv bkJvdW5kU3BlYyAqcGFydGJvdW5kc3BlYzsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzaW5n bGVwYXJ0c3BlYzsKIAlSb2xlU3BlYyAgICpyb2xlc3BlYzsKIAlQdWJsaWNhdGlvbk9ialNw ZWMgKnB1YmxpY2F0aW9ub2JqZWN0c3BlYzsKIAlzdHJ1Y3QgU2VsZWN0TGltaXQgKnNlbGVj dGxpbWl0OwpAQCAtNjQwLDYgKzY0MSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAldHlwZSA8cGFydGVsZW0+CXBhcnRfZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFt cwogJXR5cGUgPHBhcnRib3VuZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNp bmdsZXBhcnRzcGVjPglTaW5nbGVQYXJ0aXRpb25TcGVjCisldHlwZSA8bGlzdD4JCXBhcnRp dGlvbnNfbGlzdAogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVs dD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KIApAQCAtNzcwLDcgKzc3Myw3IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJU0FWRVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBT Q1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVAogCVNFUVVFTkNFIFNFUVVF TkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNF VFMgU0VUT0YgU0hBUkUgU0hPVwotCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05B UFNIT1QgU09NRSBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAorCVNJTUlMQVIg U0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUExJVCBTT1VSQ0UgU1FMX1Ag U1RBQkxFIFNUQU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElO IFNURE9VVCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJTkdfUCBTVFJJUF9QCiAJU1VC U0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBT WVNURU1fVVNFUgogCkBAIC0yMzIxLDYgKzIzMjQsMjMgQEAgYWx0ZXJfdGFibGVfY21kczoK IAkJCXwgYWx0ZXJfdGFibGVfY21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBsYXBw ZW5kKCQxLCAkMyk7IH0KIAkJOwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0 aXRpb25TcGVjCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRp b25zX2xpc3QgJywnIFNpbmdsZVBhcnRpdGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQz KTsgfQorCQk7CisKK1NpbmdsZVBhcnRpdGlvblNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlm aWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCisJCQkJeworCQkJCQlTaW5nbGVQYXJ0aXRp b25TcGVjICpuID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisKKwkJCQkJbi0+ bmFtZSA9ICQyOworCQkJCQluLT5ib3VuZCA9ICQzOworCisJCQkJCSQkID0gbjsKKwkJCQl9 CisJCTsKKwogcGFydGl0aW9uX2NtZDoKIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRB Q0ggUEFSVElUSU9OIDx0YWJsZV9uYW1lPiBGT1IgVkFMVUVTICovCiAJCQlBVFRBQ0ggUEFS VElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAtMjM2NSw2ICsy Mzg1LDIwIEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsK IAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1l PiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlvbl9uYW1lPiBJTlRPICgpICovCisJCQl8IFNQ TElUIFBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBJTlRPICcoJyBwYXJ0aXRpb25zX2xpc3Qg JyknCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJs ZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21k KTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfU3BsaXRQYXJ0aXRpb247CisJCQkJCWNtZC0+ bmFtZSA9ICQzOworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlz dCA9ICQ2OworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0g KE5vZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxU RVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25h bWU+ICovCiAJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3Qg JyknIElOVE8gcXVhbGlmaWVkX25hbWUKIAkJCQl7CkBAIC0xNzk2Myw2ICsxNzk5Nyw3IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU0tJUAogCQkJfCBTTkFQU0hPVAogCQkJfCBT T1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5E QUxPTkVfUApAQCAtMTg2MDMsNiArMTg2MzgsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJ CQl8IFNOQVBTSE9UCiAJCQl8IFNPTUUKIAkJCXwgU09VUkNFCisJCQl8IFNQTElUCiAJCQl8 IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCmluZGV4IGY1NWFkMTc1MjguLjczMzE1ZWZhYzggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2 b2lkIHRyYW5zZm9ybUNvbnN0cmFpbnRBdHRycyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LAog CQkJCQkJCQkJIExpc3QgKmNvbnN0cmFpbnRMaXN0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9y bUNvbHVtblR5cGUoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4p Owogc3RhdGljIHZvaWQgc2V0U2NoZW1hTmFtZShjb25zdCBjaGFyICpjb250ZXh0X3NjaGVt YSwgY2hhciAqKnN0bXRfc2NoZW1hX25hbWUpOwotc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFy dGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKTsK K3N0YXRpYyB2b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zv cm1QYXJ0aXRpb25SYW5nZUJvdW5kcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0 LAogCQkJCQkJCQkJCSAgIFJlbGF0aW9uIHBhcmVudCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0 ZUluZmluaXRlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QpOwpAQCAt MzUyNiw2ICszNTI2LDQ2IEBAIGNoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBh cnRSZWxPaWQpCiAJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAq IHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0CisgKgkJQW5hbHl6ZSB0aGUgQUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKgorICogRm9yIGVhY2ggbmV3 IHBhcnRpdGlvbiBzcHMtPmJvdW5kIGlzIHNldCB0byB0aGUgdHJhbnNmb3JtZWQgdmFsdWUg b2YgYm91bmQuCisgKiBEb2VzIGNoZWNrcyBmb3IgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25z LgorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQoreworCVJlbGF0 aW9uCXBhcmVudCA9IGN4dC0+cmVsOworCU9pZAkJCXNwbGl0UGFydE9pZDsKKworCS8qIFRy YW5zZm9ybSBwYXJ0aXRpb24gYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlz dDogKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0Y21k LT5wYXJ0bGlzdCkKKwl7CisJCWN4dC0+cGFydGJvdW5kID0gTlVMTDsKKwkJdHJhbnNmb3Jt UGFydGl0aW9uQ21kKGN4dCwgc3BzLT5ib3VuZCk7CisJCS8qIEFzc2lnbiB0cmFuc2Zvcm1l ZCB2YWx1ZSBvZiB0aGUgcGFydGl0aW9uIGJvdW5kLiAqLworCQlzcHMtPmJvdW5kID0gY3h0 LT5wYXJ0Ym91bmQ7CisJfQorCisJLyoKKwkgKiBPcGVuIGFuZCBsb2NrIHBhcnRpdGlvbiwg Y2hlY2sgb3duZXJzaGlwIGFsb25nIHRoZSB3YXkuIFdlIG5lZWQgdG8gdXNlCisJICogQWNj ZXNzRXhjbHVzaXZlTG9jayBoZXJlLCBiZWNhdXNlIHRoaXMgc3BsaXQgcGFydGl0aW9uIHdp bGwgYmUgZGV0YWNoZWQKKwkgKiB0aGVuIGRyb3BwZWQgaW4gQVRFeGVjU3BsaXRQYXJ0aXRp b24uCisJICovCisJc3BsaXRQYXJ0T2lkID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKHBh cnRjbWQtPm5hbWUsCisJCQkJCQkJCQkJCUFjY2Vzc0V4Y2x1c2l2ZUxvY2ssCisJCQkJCQkJ CQkJCWZhbHNlLAorCQkJCQkJCQkJCQlSYW5nZVZhckNhbGxiYWNrT3duc1JlbGF0aW9uLAor CQkJCQkJCQkJCQlOVUxMKTsKKworCWNoZWNrUGFydGl0aW9uKHBhcmVudCwgc3BsaXRQYXJ0 T2lkKTsKKworCS8qIFRoZW4gd2Ugc2hvdWxkIGNoZWNrIHBhcnRpdGlvbnMgd2l0aCB0cmFu c2Zvcm1lZCBib3VuZHMuICovCisJY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQocGFyZW50 LCBzcGxpdFBhcnRPaWQsIHBhcnRjbWQtPnBhcnRsaXN0LCBjeHQtPnBzdGF0ZSk7Cit9CisK KwogLyoKICAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCiAgKgkJQW5hbHl6ZSB0 aGUgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZApAQCAtMzg5Miw3 ICszOTMyLDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRh YmxlU3RtdCAqc3RtdCwKIAkJCQl7CiAJCQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9IChQ YXJ0aXRpb25DbWQgKikgY21kLT5kZWY7CiAKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21k KCZjeHQsIHBhcnRjbWQpOworCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFy dGNtZC0+Ym91bmQpOwogCQkJCQkvKiBhc3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhl IHBhcnRpdGlvbiBib3VuZCAqLwogCQkJCQlwYXJ0Y21kLT5ib3VuZCA9IGN4dC5wYXJ0Ym91 bmQ7CiAJCQkJfQpAQCAtMzkwMCw2ICszOTQwLDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0 bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQluZXdjbWRzID0gbGFw cGVuZChuZXdjbWRzLCBjbWQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX1NwbGl0UGFy dGl0aW9uOgogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJewogCQkJCQlQYXJ0 aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOwpAQCAtMzkw OCw3ICszOTQ5LDExIEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0 ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJCQkJCWVycm1z ZygibGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28g aXRlbXMiKSk7Ci0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBh cnRjbWQpOworCisJCQkJCWlmIChjbWQtPnN1YnR5cGUgPT0gQVRfU3BsaXRQYXJ0aXRpb24p CisJCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdCgmY3h0LCBwYXJ0Y21kKTsK KwkJCQkJZWxzZQorCQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwg cGFydGNtZCk7CiAJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJ CWJyZWFrOwogCQkJCX0KQEAgLTQzNDMsMTMgKzQzODgsMTMgQEAgc2V0U2NoZW1hTmFtZShj b25zdCBjaGFyICpjb250ZXh0X3NjaGVtYSwgY2hhciAqKnN0bXRfc2NoZW1hX25hbWUpCiAK IC8qCiAgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQKLSAqCQlBbmFseXplIHRoZSBBVFRBQ0gv REVUQUNIIFBBUlRJVElPTiBjb21tYW5kCisgKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFD SC9TUExJVCBQQVJUSVRJT04gY29tbWFuZAogICoKLSAqIEluIGNhc2Ugb2YgdGhlIEFUVEFD SCBQQVJUSVRJT04gY29tbWFuZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQotICog dHJhbnNmb3JtZWQgdmFsdWUgb2YgY21kLT5ib3VuZC4KKyAqIEluIGNhc2Ugb2YgdGhlIEFU VEFDSC9TUExJVCBQQVJUSVRJT04gY29tbWFuZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRv IHRoZQorICogdHJhbnNmb3JtZWQgdmFsdWUgb2YgYm91bmQuCiAgKi8KIHN0YXRpYyB2b2lk Ci10cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0 aW9uQ21kICpjbWQpCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKIHsKIAlSZWxhdGlvbglwYXJlbnRS ZWwgPSBjeHQtPnJlbDsKIApAQCAtNDM1OCw5ICs0NDAzLDkgQEAgdHJhbnNmb3JtUGFydGl0 aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQlj YXNlIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEU6CiAJCQkvKiB0cmFuc2Zvcm0gdGhlIHBh cnRpdGlvbiBib3VuZCwgaWYgYW55ICovCiAJCQlBc3NlcnQoUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFyZW50UmVsKSAhPSBOVUxMKTsKLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwp CisJCQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJCQljeHQtPnBhcnRib3VuZCA9IHRyYW5zZm9y bVBhcnRpdGlvbkJvdW5kKGN4dC0+cHN0YXRlLCBwYXJlbnRSZWwsCi0JCQkJCQkJCQkJCQkJ CSBjbWQtPmJvdW5kKTsKKwkJCQkJCQkJCQkJCQkJIGJvdW5kKTsKIAkJCWJyZWFrOwogCQlj YXNlIFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVg6CiAKQEAgLTQzNjgsNyArNDQxMyw3IEBA IHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRp b25DbWQgKmNtZCkKIAkJCSAqIEEgcGFydGl0aW9uZWQgaW5kZXggY2Fubm90IGhhdmUgYSBw YXJ0aXRpb24gYm91bmQgc2V0LiAgQUxURVIKIAkJCSAqIElOREVYIHByZXZlbnRzIHRoYXQg d2l0aCBpdHMgZ3JhbW1hciwgYnV0IG5vdCBBTFRFUiBUQUJMRS4KIAkJCSAqLwotCQkJaWYg KGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJCWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWVyZXBv cnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAogCQkJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRh YmxlIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmluZGV4IDlmN2Mw MWI3ZmEuLjljNzMwZTEyN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYwpAQCAtNDk4NCwxNSArNDk4NCwyMSBAQCBzYXRpc2ZpZXNfaGFzaF9wYXJ0aXRpb24o UEdfRlVOQ1RJT05fQVJHUykKICAqCiAgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRp dGlvbmluZykKICAqCi0gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjYWxjdWxh dGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZSgpLgorICogVGhpcyBpcyBhIGhlbHBlciBm dW5jdGlvbiBmb3IgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoKSBhbmQKKyAqIGNhbGN1 bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCiAgKiBUaGlzIGZ1bmN0aW9uIGNv bXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCBsb3dlciBib3VuZCBvZgot ICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVxdWFsLgorICogc2Vj b25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVxdWFsIGV4Y2VwdCB3aGVuCisg KiAiZGVmYXVsdFBhcnQgPT0gdHJ1ZSIgKHRoaXMgbWVhbnMgdGhhdCBvbmUgb2Ygc3BsaXQg cGFydGl0aW9ucyBpcyBERUZBVUxUKS4KKyAqIEluIHRoaXMgY2FzZSB1cHBlciBib3VuZCBv ZiBmaXJzdF9ib3VuZCBjYW4gYmUgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mCisgKiBzZWNv bmRfYm91bmQgYmVjYXVzZSBzcGFjZSBiZXR3ZWVuIHRoZXNlIGJvdW5kcyB3aWxsIGJlIGlu Y2x1ZGVkIGluCisgKiBERUZBVUxUIHBhcnRpdGlvbi4KICAqCiAgKiBwYXJlbnQ6CQkJcGFy dGl0aW9uZWQgdGFibGUKICAqIGZpcnN0X25hbWU6CQluYW1lIG9mIGZpcnN0IHBhcnRpdGlv bgogICogZmlyc3RfYm91bmQ6CQlib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24KICAqIHNlY29u ZF9uYW1lOgkJbmFtZSBvZiBzZWNvbmQgcGFydGl0aW9uCiAgKiBzZWNvbmRfYm91bmQ6CWJv dW5kIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIGRlZmF1bHRQYXJ0OgkJdHJ1ZSBpZiBvbmUg b2Ygc3BsaXQgcGFydGl0aW9ucyBpcyBERUZBVUxUCiAgKiBwc3RhdGU6CQkJcG9pbnRlciB0 byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5pbmcgZXJyb3IgcG9zaXRpb24KICAq Lwogc3RhdGljIHZvaWQKQEAgLTUwMDEsNiArNTAwNyw3IEBAIGNoZWNrX3R3b19wYXJ0aXRp b25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCSAgUGFydGl0aW9u Qm91bmRTcGVjICpmaXJzdF9ib3VuZCwKIAkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25h bWUsCiAJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJ CQkJCSAgYm9vbCBkZWZhdWx0UGFydCwKIAkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUp CiB7CiAJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVu dCk7CkBAIC01MDIyLDcgKzUwMjksNyBAQCBjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNf cmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwK IAkJCQkJCQkJICBzZWNvbmRfbG93ZXItPmRhdHVtcywgc2Vjb25kX2xvd2VyLT5raW5kLAog CQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91cHBlcik7Ci0JaWYgKGNtcHZhbCkKKwlpZiAoKCFk ZWZhdWx0UGFydCAmJiBjbXB2YWwpIHx8IChkZWZhdWx0UGFydCAmJiBjbXB2YWwgPCAwKSkK IAl7CiAJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vjb25kX2Jv dW5kLT5sb3dlcmRhdHVtcyk7CiAKQEAgLTUxMzQsNyArNTE0MSw3IEBAIGNhbGN1bGF0ZV9w YXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJ CQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4 KSwKIAkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGlu ZGV4KSwKIAkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgo Ym91bmRzLCBpbmRleCksCi0JCQkJCQkJCQkJCQkJICBwc3RhdGUpOworCQkJCQkJCQkJCQkJ CSAgZmFsc2UsIHBzdGF0ZSk7CiAJCQkJfQogCiAJCQkJLyoKQEAgLTUxNzIsMyArNTE3OSw2 NzIgQEAgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFy ZW50LAogCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKIAl9CiB9CisKKy8qCisgKiBjaGVj a19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZ IExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24g Zm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KCkuCisgKiBDaGVja3MgdGhhdCB0aGUg dmFsdWVzIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqCisgKiBw YXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0czoJYXJyYXkgb2YgU2luZ2xlUGFy dGl0aW9uU3BlYyBzdHJ1Y3RzIHdpdGggaW5mbyBhYm91dCBzcGxpdCBwYXJ0aXRpb25zCisg KiBucGFydHM6CXNpemUgb2YgYXJyYXkgInBhcnRzIgorICovCitzdGF0aWMgdm9pZAorY2hl Y2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJ CQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0 cywKKwkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtl eSBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShw YXJlbnQpOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlpbnQJCQlpLAorCQkJ CWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMSwKKwkJCSAgICpzcHMyOworCUxpc3QJ ICAgKm92ZXJsYXA7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RS QVRFR1lfTElTVCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlz cHMxID0gcGFydHNbaV07CisKKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykK KwkJeworCQkJc3BzMiA9IHBhcnRzW2pdOworCisJCQkvKgorCQkJICogQ2FsY3VsYXRlIGlu dGVyc2VjdGlvbiBiZXR3ZWVuIHZhbHVlcyBvZiB0d28gcGFydGl0aW9ucy4KKwkJCSAqLwor CQkJb3ZlcmxhcCA9IGxpc3RfaW50ZXJzZWN0aW9uKHNwczEtPmJvdW5kLT5saXN0ZGF0dW1z LAorCQkJCQkJCQkJCXNwczItPmJvdW5kLT5saXN0ZGF0dW1zKTsKKwkJCWlmIChsaXN0X2xl bmd0aChvdmVybGFwKSA+IDApCisJCQl7CisJCQkJQ29uc3QJICAgKnZhbCA9IChDb25zdCAq KSBsZmlyc3QobGlzdF9oZWFkKG92ZXJsYXApKTsKKworCQkJCW92ZXJsYXBfbG9jYXRpb24g PSB2YWwtPmxvY2F0aW9uOworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBw YXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRp b24gXCIlc1wiIiwKKwkJCQkJCQkgICBzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5uYW1l LT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBf bG9jYXRpb24pKTsKKwkJCX0KKwkJfQorCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlv bl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5H RSBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0 aXRpb24gInNwZWMiIGFyZSBpbnNpZGUgYm91bmRzIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24g KHdpdGggT2lkIHNwbGl0UGFydE9pZCkuIElmIGZpcnN0PXRydWUgKHRoaXMgbWVhbnMgdGhh dCAic3BlYyIgaXMKKyAqIHRoZSBmaXJzdCBvZiBuZXcgcGFydGl0aW9ucykgdGhlbiBsb3dl ciBib3VuZCBvZiAic3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvcgorICogZ3JlYXRlciB0aGFu IG9yIGVxdWFsIGluIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gbG93ZXIgYm91bmQgb2Yg c3BsaXQKKyAqIHBhcnRpdGlvbi4gSWYgbGFzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNw ZWMiIGlzIHRoZSBsYXN0IG9mIG5ldworICogcGFydGl0aW9ucykgdGhlbiB1cHBlciBib3Vu ZCBvZiAic3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvciBsZXNzIHRoYW4gb3IKKyAqIGVxdWFs IGluIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFy dGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogcmVsbmFt ZToJCQluYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGVjOgkJCWJvdW5kcyBzcGVj aWZpY2F0aW9uIG9mIHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0 IHBhcnRpdGlvbiBPaWQKKyAqIGZpcnN0OgkJCXRydWUgaW4gY2FzZSBuZXcgcGFydGl0aW9u ICJzcGVjIiBpcyBmaXJzdCBvZiBuZXcgcGFydGl0aW9ucworICogbGFzdDoJCQl0cnVlIGlu IGNhc2UgbmV3IHBhcnRpdGlvbiAic3BlYyIgaXMgbGFzdCBvZiBuZXcgcGFydGl0aW9ucwor ICogZGVmYXVsdFBhcnQ6CQl0cnVlIGluIGNhc2UgcGFydGl0aW9uZWQgdGFibGUgaGFzIERF RkFVTFQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0 cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitj aGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShSZWxhdGlvbiBwYXJlbnQs CisJCQkJCQkJCQkgICBjaGFyICpyZWxuYW1lLAorCQkJCQkJCQkJICAgUGFydGl0aW9uQm91 bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJ CSAgIGJvb2wgZmlyc3QsCisJCQkJCQkJCQkgICBib29sIGxhc3QsCisJCQkJCQkJCQkgICBi b29sIGRlZmF1bHRQYXJ0LAorCQkJCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQorewor CVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOwor CVBhcnRpdGlvblJhbmdlQm91bmQgKmxvd2VyLAorCQkJICAgKnVwcGVyOworCWludAkJCWNt cHZhbDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9S QU5HRSk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9S QU5HRSk7CisKKwlsb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwg c3BlYy0+bG93ZXJkYXR1bXMsIHRydWUpOworCXVwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9u X3Jib3VuZChrZXksIC0xLCBzcGVjLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJLyoKKwkg KiBGaXJzdCBjaGVjayBpZiB0aGUgcmVzdWx0aW5nIHJhbmdlIHdvdWxkIGJlIGVtcHR5IHdp dGggc3BlY2lmaWVkIGxvd2VyCisJICogYW5kIHVwcGVyIGJvdW5kcy4gIHBhcnRpdGlvbl9y Ym91bmRfY21wIGNhbm5vdCByZXR1cm4gemVybyBoZXJlLCBzaW5jZQorCSAqIHRoZSBsb3dl ci1ib3VuZCBmbGFncyBhcmUgZGlmZmVyZW50LgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlv bl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1 bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkgIGxvd2VyLT5k YXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkgIHRydWUsIHVwcGVyKTsKKwlBc3NlcnQo Y21wdmFsICE9IDApOworCWlmIChjbXB2YWwgPiAwKQorCXsKKwkJLyogUG9pbnQgdG8gcHJv YmxlbWF0aWMga2V5IGluIHRoZSBsb3dlciBkYXR1bXMgbGlzdC4gKi8KKwkJUGFydGl0aW9u UmFuZ2VEYXR1bSAqZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgY21wdmFs IC0gMSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJlbXB0eSByYW5nZSBib3VuZCBz cGVjaWZpZWQgZm9yIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lKSwKKwkJ CQllcnJkZXRhaWwoIlNwZWNpZmllZCBsb3dlciBib3VuZCAlcyBpcyBncmVhdGVyIHRoYW4g b3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgJXMuIiwKKwkJCQkJCSAgZ2V0X3JhbmdlX3BhcnRi b3VuZF9zdHJpbmcoc3BlYy0+bG93ZXJkYXR1bXMpLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFy dGJvdW5kX3N0cmluZyhzcGVjLT51cHBlcmRhdHVtcykpLAorCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCX0KKworCS8qIE5lZWQgdG8gY2hl Y2sgZmlyc3QgYW5kIGxhc3QgcGFydGl0aW9ucyAoZnJvbSBzZXQgb2YgbmV3IHBhcnRpdGlv bnMpICovCisJaWYgKGZpcnN0IHx8IGxhc3QpCisJeworCQlQYXJ0aXRpb25Cb3VuZFNwZWMg KnNwbGl0X3NwZWMgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoc3BsaXRQYXJ0T2lkKTsK KwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW07CisKKwkJaWYgKGZpcnN0KQorCQl7CisJ CQlQYXJ0aXRpb25SYW5nZUJvdW5kICpzcGxpdF9sb3dlcjsKKworCQkJc3BsaXRfbG93ZXIg PSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwbGl0X3NwZWMtPmxvd2Vy ZGF0dW1zLCB0cnVlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5 LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJ CSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywgbG93 ZXItPmtpbmQsCisJCQkJCQkJCQkJICB0cnVlLCBzcGxpdF9sb3dlcik7CisKKwkJCS8qCisJ CQkgKiBMb3dlciBib3VuZCBvZiAic3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvciBncmVhdGVy IHRoYW4gb3IgZXF1YWwKKwkJCSAqIGluIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gbG93 ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoIWRlZmF1bHRQ YXJ0KQorCQkJeworCQkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0g bGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCQkJCWVycm1zZygibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwi JXNcIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwK KwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CWlmIChjbXB2YWwgPCAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5s b3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJ CQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIGxlc3MgdGhh biBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1l KSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24p KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJv dW5kICpzcGxpdF91cHBlcjsKKworCQkJc3BsaXRfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRp b25fcmJvdW5kKGtleSwgLTEsIHNwbGl0X3NwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisK KwkJCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJ CQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxh dGlvbiwKKwkJCQkJCQkJCQkgIHVwcGVyLT5kYXR1bXMsIHVwcGVyLT5raW5kLAorCQkJCQkJ CQkJCSAgZmFsc2UsIHNwbGl0X3VwcGVyKTsKKworCQkJLyoKKwkJCSAqIFVwcGVyIGJvdW5k IG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvciBlcXVhbCBpbgor CQkJICogY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYg KGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT51cHBl cmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJ ZXJybXNnKCJ1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0 byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1l KSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24p KTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYgKGNtcHZhbCA+IDApCisJ CQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21w dmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0K KwkJfQorCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoK KyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9uIGFyZSBpbnNpZGUgYm91 bmRzIG9mIHNwbGl0IHBhcnRpdGlvbgorICogKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisg KgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUg b2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24g b2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9u IE9pZAorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRl dGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0 aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdChSZWxhdGlvbiBwYXJlbnQsIGNoYXIgKnJlbG5h bWUsCisJCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAg T2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQorewor CVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOwor CVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFy ZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNj LT5ib3VuZGluZm87CisJaW50CQkJd2l0aCA9IC0xOworCWJvb2wJCW92ZXJsYXAgPSBmYWxz ZTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisKKwlBc3NlcnQoa2V5LT5zdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0 ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoYm91bmRpbmZvICYm IGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJ LyoKKwkgKiBTZWFyY2ggZWFjaCB2YWx1ZSBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBpbiBl eGlzdGluZyBwYXJ0aXRpb25zLiBBbGwKKwkgKiBvZiB0aGVtIHNob3VsZCBiZSBpbiBzcGxp dCBwYXJ0aXRpb24gKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisJICovCisJZm9yZWFjaF9u b2RlKENvbnN0LCB2YWwsIHNwZWMtPmxpc3RkYXR1bXMpCisJeworCQlvdmVybGFwX2xvY2F0 aW9uID0gdmFsLT5sb2NhdGlvbjsKKwkJaWYgKCF2YWwtPmNvbnN0aXNudWxsKQorCQl7CisJ CQlpbnQJCQlvZmZzZXQ7CisJCQlib29sCQllcXVhbDsKKworCQkJb2Zmc2V0ID0gcGFydGl0 aW9uX2xpc3RfYnNlYXJjaCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJa2V5 LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCQlib3VuZGluZm8sCisJCQkJCQkJCQkJCXZh bC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJJmVxdWFsKTsKKwkJCWlmIChvZmZzZXQgPj0g MCAmJiBlcXVhbCkKKwkJCXsKKwkJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNl dF07CisJCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJ CQl7CisJCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJ CQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBc IiVzXCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBk b2VzIG5vdCBoYXZlIiwKKwkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwkJfQorCQllbHNlIGlmIChw YXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pKQorCQl7CisJCQl3aXRo ID0gYm91bmRpbmZvLT5udWxsX2luZGV4OworCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhd ICE9IHNwbGl0UGFydE9pZCkKKwkJCXsKKwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQlicmVh azsKKwkJCX0KKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygibmV3 IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0 IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorCisJ aWYgKG92ZXJsYXApCisJeworCQlBc3NlcnQod2l0aCA+PSAwKTsKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5v dGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgcmVsbmFtZSwg Z2V0X3JlbF9uYW1lKHBhcnRkZXNjLT5vaWRzW3dpdGhdKSksCisJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGZp bmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3Ig QlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogRnVuY3Rpb24gcmV0dXJucyB0cnVlIGlu IGNhc2UgYW55IG9mIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW5zIHZhbHVlICJ2YWx1ZSIuCisg KgorICogcGFydHN1cGZ1bmM6CQlpbmZvcm1hdGlvbiBhYm91dCBjb21wYXJpc29uIGZ1bmN0 aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFydGl0aW9uIGtleQorICogcGFydGNvbGxhdGlv bjoJcGFydGl0aW9uaW5nIGNvbGxhdGlvbgorICogcGFydHM6CQkJcG9pbnRlciB0byBhcnJh eSB3aXRoIG5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgkJCW51bWJl ciBvZiBuZXcgcGFydGl0aW9ucworICogdmFsdWU6CQkJdGhlIHZhbHVlIHRoYXQgd2UgYXJl IGxvb2tpbmcgZm9yCisgKiBpc251bGw6CQkJdHJ1ZSBpZiB0aGUgdmFsdWUgdGhhdCB3ZSBh cmUgbG9va2luZyBmb3IgaXMgTlVMTAorICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9p bl9uZXdfcGFydGl0aW9uc19saXN0KEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkJ ICBPaWQgKnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAq KnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgRGF0dW0gdmFsdWUs CisJCQkJCQkJCSAgYm9vbCBpc251bGwpCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBucGFy dHM7IGkrKykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IHBhcnRzW2ldOwor CisJCWZvcmVhY2hfbm9kZShDb25zdCwgdmFsLCBzcHMtPmJvdW5kLT5saXN0ZGF0dW1zKQor CQl7CisJCQlpZiAoaXNudWxsICYmIHZhbC0+Y29uc3Rpc251bGwpCisJCQkJcmV0dXJuIHRy dWU7CisKKwkJCWlmICghaXNudWxsICYmICF2YWwtPmNvbnN0aXNudWxsKQorCQkJeworCQkJ CWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xsKCZwYXJ0c3VwZnVuY1swXSwK KwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJCQkJCQkJCQkJCXZhbC0+Y29u c3R2YWx1ZSwKKwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDApCisJCQkJCXJldHVybiB0cnVl OworCQkJfQorCQl9CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIGNoZWNrX3Bh cmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZ IExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGFsbCB2YWx1ZXMgb2Yg c3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBwYXJ0T2lkKSBjb250YWlucyBpbiBuZXcKKyAq IHBhcnRpdGlvbnMuCisgKgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFy dE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcGFydHM6CXBvaW50ZXIgdG8gYXJyYXkg d2l0aCBuZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbnMKKyAqIG5wYXJ0czoJbnVtYmVyIG9m IG5ldyBwYXJ0aXRpb25zCisgKiBwc3RhdGU6CXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1 Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hl Y2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJ CQkJCQkJCQkgIE9pZCBwYXJ0T2lkLAorCQkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVj ICoqcGFydHMsCisJCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCQkgIFBhcnNlU3Rh dGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQ YXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3Vu ZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJCWk7CisJYm9vbAkJZm91bmQg PSB0cnVlOworCWJvb2wJCXNlYXJjaE51bGwgPSBmYWxzZTsKKwlEYXR1bQkJZGF0dW0gPSBQ b2ludGVyR2V0RGF0dW0oTlVMTCk7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJU SVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNwZWNpYWwgcHJvY2Vzc2luZyBm b3IgTlVMTCB2YWx1ZS4gU2VhcmNoIE5VTEwgdmFsdWUgaWYgdGhlIHNwbGl0CisJICogcGFy dGl0aW9uIChwYXJ0T2lkKSBjb250YWlucyBpdC4KKwkgKi8KKwlpZiAocGFydGl0aW9uX2Jv dW5kX2FjY2VwdHNfbnVsbHMoYm91bmRpbmZvKSAmJgorCQlwYXJ0ZGVzYy0+b2lkc1tib3Vu ZGluZm8tPm51bGxfaW5kZXhdID09IHBhcnRPaWQpCisJeworCQlpZiAoIWZpbmRfdmFsdWVf aW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJ CQkJICAga2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgdHJ1ZSkp CisJCXsKKwkJCWZvdW5kID0gZmFsc2U7CisJCQlzZWFyY2hOdWxsID0gdHJ1ZTsKKwkJfQor CX0KKworCS8qCisJICogU2VhcmNoIGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHdp dGggcGFydE9pZCBpbiBQYXJ0aXRpb25EZXNjIG9mCisJICogcGFydGl0aW9uZWQgdGFibGUu CisJICovCisJZm9yIChpID0gMDsgaSA8IGJvdW5kaW5mby0+bmRhdHVtczsgaSsrKQorCXsK KwkJaWYgKHBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+aW5kZXhlc1tpXV0gPT0gcGFydE9p ZCkKKwkJeworCQkJLyogV2UgZm91bmQgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gY29u dGFpbnMuICovCisJCQlkYXR1bSA9IGJvdW5kaW5mby0+ZGF0dW1zW2ldWzBdOworCQkJaWYg KCFmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoJmtleS0+cGFydHN1cGZ1bmNb MF0sCisJCQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMs IGRhdHVtLCBmYWxzZSkpCisJCQl7CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQlicmVhazsK KwkJCX0KKwkJfQorCX0KKworCWlmICghZm91bmQpCisJeworCQlDb25zdAkgICAqbm90Rm91 bmRWYWw7CisKKwkJaWYgKCFzZWFyY2hOdWxsKQorCisJCQkvKgorCQkJICogTWFrZSBDb25z dCBmb3IgZ2V0dGluZyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygbm90IGZvdW5kCisJCQkg KiB2YWx1ZS4KKwkJCSAqLworCQkJbm90Rm91bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0 dHlwaWRbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBtb2RbMF0sCisJCQkJCQkJCQlrZXkt PnBhcnR0eXBjb2xsWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwbGVuWzBdLAorCQkJCQkJ CQkJZGF0dW0sCisJCQkJCQkJCQlmYWxzZSwJLyogaXNudWxsICovCisJCQkJCQkJCQlrZXkt PnBhcnR0eXBieXZhbFswXSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFy dGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAlcyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMi LAorCQkJCQkgICBzZWFyY2hOdWxsID8gIk5VTEwiIDogZ2V0X2xpc3RfcGFydHZhbHVlX3N0 cmluZyhub3RGb3VuZFZhbCkpKTsKKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25z X2Zvcl9zcGxpdAorICoKKyAqIENoZWNrcyBuZXcgcGFydGl0aW9ucyBmb3IgU1BMSVQgUEFS VElUSU9OUyBjb21tYW5kOgorICogMS4gREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9u ZS4KKyAqIDIuIE5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcwor ICogICAgKHdpdGggZXhpc3RpbmcgcGFydGl0aW9ucyB0b28pLgorICogMy4gQm91bmRzIG9m IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3Rp bmcKKyAqICAgIHBhcnRpdGlvbnMuCisgKiA0LiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBp cyBERUZBVUxUIHBhcnRpdGlvbiwgb25lIG9mIG5ldyBwYXJ0aXRpb25zCisgKiAgICBzaG91 bGQgYmUgREVGQVVMVC4KKyAqIDUuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgb3IgZXhpc3Rp bmcgcGFydGl0aW9ucyBjb250YWlucyBERUZBVUxUCisgKiAgICBwYXJ0aXRpb24sIG5ldyBw YXJ0aXRpb25zIGNhbiBoYXZlIGFueSBib3VuZHMgaW5zaWRlIHNwbGl0CisgKiAgICBwYXJ0 aXRpb24gYm91bmQgKGNhbiBiZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcyku CisgKiA2LiBJbiBjYXNlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVM VCBwYXJ0aXRpb24sIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCBh cyBvbmUgb2YgbmV3IHBhcnRpdGlvbi4KKyAqIDcuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMg bm90IGNvbnRhaW5zIERFRkFVTFQgcGFydGl0aW9uIGFuZAorICogICAgcGFydGl0aW9uZWQg dGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiB0aGUgZm9sbG93aW5nCisg KiAgICBzaG91bGQgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91 bGQgYmUgZXF1YWwKKyAqICAgIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKyAqCisg KiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQg cGFydGl0aW9uIE9pZAorICogbGlzdDoJCQlsaXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBw c3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVy cm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJl bGF0aW9uIHBhcmVudCwKKwkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkgICBM aXN0ICpwYXJ0bGlzdCwKKwkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0 aXRpb25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lk OworCWJvb2wJCWlzU3BsaXRQYXJ0RGVmYXVsdDsKKwlib29sCQlleGlzdHNEZWZhdWx0UGFy dDsKKwlpbnQJCQlkZWZhdWx0X2luZGV4ID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNp bmdsZVBhcnRpdGlvblNwZWMgKipuZXdfcGFydHM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAq c3BzUHJldiA9IE5VTEw7CisJaW50CQkJbnBhcnRzID0gMDsKKworCWtleSA9IFJlbGF0aW9u R2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0 cmF0ZWd5KGtleSk7CisKKwlzd2l0Y2ggKHN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJUSVRJ T05fU1RSQVRFR1lfTElTVDoKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0U6CisJ CQl7CisJCQkJLyoKKwkJCQkgKiBNYWtlIGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0 aXRpb25zIGV4Y2VwdCBERUZBVUxUCisJCQkJICogcGFydGl0aW9uLgorCQkJCSAqLworCQkJ CW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJCQlwYWxsb2MwKGxp c3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsK KwkJCQlpID0gMDsKKwkJCQlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3Bz LCBwYXJ0bGlzdCkKKwkJCQl7CisJCQkJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQor CQkJCQl7CisJCQkJCQlpZiAoZGVmYXVsdF9pbmRleCA+PSAwKQorCQkJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCisJCQkJCQkJCQllcnJtc2coIkRFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBv bmUiKSwKKwkJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwcy0+bmFtZS0+ bG9jYXRpb24pKTsKKwkJCQkJCWRlZmF1bHRfaW5kZXggPSBpOworCQkJCQl9CisJCQkJCWVs c2UKKwkJCQkJeworCQkJCQkJbmV3X3BhcnRzW25wYXJ0cysrXSA9IHNwczsKKwkJCQkJfQor CQkJCQlpKys7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBQQVJUSVRJT05f U1RSQVRFR1lfSEFTSDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coInBhcnRpdGlvbiBvZiBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdCIpKTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3Ry YXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJCQlicmVhazsKKwl9 CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQorCXsKKwkJ UGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJU2luZ2xlUGFydGl0aW9u U3BlYyAqKnRtcF9uZXdfcGFydHM7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsaWZ5IGNoZWNr IGZvciByYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgbmVlZCB0byBzb3J0IGFsbAorCQkgKiBw YXJ0aXRpb25zIGluIGFzY2VuZGluZyBvcmRlciBvZiB0aGVtIGJvdW5kcyAod2UgY29tcGFy ZSB1cHBlcgorCQkgKiBib3VuZCBvbmx5KS4KKwkJICovCisJCWxvd2VyX2JvdW5kcyA9IChQ YXJ0aXRpb25SYW5nZUJvdW5kICoqKQorCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoUGFy dGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisKKwkJLyogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJv dW5kcy4gKi8KKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQl7CisJCQlsb3dl cl9ib3VuZHNbaV0gPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgaSwKKwkJCQkJ CQkJCQkJCQkJbmV3X3BhcnRzW2ldLT5ib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQl9 CisKKwkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCXFzb3J0X2FyZyhs b3dlcl9ib3VuZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJ CQkJICBxc29ydF9wYXJ0aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQgKikga2V5KTsKKworCQkv KiBSZW9yZGVyIGFycmF5IG9mIHBhcnRpdGlvbnMuICovCisJCXRtcF9uZXdfcGFydHMgPSBu ZXdfcGFydHM7CisJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJ cGFsbG9jMChucGFydHMgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSk7CisJCWZv ciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJCW5ld19wYXJ0c1tpXSA9IHRtcF9uZXdf cGFydHNbbG93ZXJfYm91bmRzW2ldLT5pbmRleF07CisKKwkJcGZyZWUodG1wX25ld19wYXJ0 cyk7CisJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJfQorCisJZGVmYXVsdFBhcnRPaWQgPQor CQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRl c2MocGFyZW50LCB0cnVlKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxhZzogaXMg c3BsaXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBhcnRE ZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlpZiAoaXNT cGxpdFBhcnREZWZhdWx0ICYmIGRlZmF1bHRfaW5kZXggPCAwKQorCXsKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks CisJCQkJZXJybXNnKCJvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZB VUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQiKSwKKwkJCQlwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGluaXRpYWwo cGFydGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisJZWxzZSBpZiAoIWlzU3BsaXRQ YXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCA+PSAwKSAmJiBPaWRJc1ZhbGlkKGRlZmF1 bHRQYXJ0T2lkKSkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwc0RlZiA9CisJCQko U2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaXN0X250aChwYXJ0bGlzdCwgZGVmYXVsdF9pbmRl eCk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIGNhbm5vdCBi ZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMiKSwK KwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHNEZWYtPm5hbWUtPmxvY2F0aW9u KSk7CisJfQorCisJLyogSW5kaWNhdG9yIHRoYXQgcGFydGl0aW9uZWQgdGFibGUgaGFzIChv ciB3aWxsIGhhdmUpIERFRkFVTFQgcGFydGl0aW9uICovCisJZXhpc3RzRGVmYXVsdFBhcnQg PSBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSB8fCAoZGVmYXVsdF9pbmRleCA+PSAwKTsK KworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCVNpbmdsZVBhcnRpdGlv blNwZWMgKnNwcyA9IG5ld19wYXJ0c1tpXTsKKworCQlpZiAoaXNTcGxpdFBhcnREZWZhdWx0 KQorCQl7CisJCQkvKgorCQkJICogSW4gY2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVM VCBwYXJ0aXRpb24gd2UgY2FuIHVzZSBhbnkKKwkJCSAqIGZyZWUgcmFuZ2VzIC0gYXMgd2hl biBjcmVhdGluZyBhIG5ldyBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWNoZWNrX25ld19wYXJ0 aXRpb25fYm91bmQoc3BzLT5uYW1lLT5yZWxuYW1lLCBwYXJlbnQsIHNwcy0+Ym91bmQsCisJ CQkJCQkJCQkgIHBzdGF0ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQ2hl Y2tzIHRoYXQgYm91bmQgb2YgY3VycmVudCBwYXJ0aXRpb24gaXMgaW5zaWRlIGJvdW5kIG9m IHNwbGl0CisJCQkgKiBwYXJ0aXRpb24uIEZvciByYW5nZSBwYXJ0aXRpb25pbmc6IGNoZWNr cyB0aGF0IHVwcGVyIGJvdW5kIG9mCisJCQkgKiBwcmV2aW91cyBwYXJ0aXRpb24gaXMgZXF1 YWwgdG8gbG93ZXIgYm91bmQgb2YgY3VycmVudAorCQkJICogcGFydGl0aW9uLiBGb3IgbGlz dCBwYXJ0aXRpb25pbmc6IGNoZWNrcyB0aGF0IHNwbGl0IHBhcnRpdGlvbgorCQkJICogY29u dGFpbnMgYWxsIHZhbHVlcyBvZiBjdXJyZW50IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYg KHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSkKKwkJCXsKKwkJCQlib29s CQlmaXJzdCA9IChpID09IDApOworCQkJCWJvb2wJCWxhc3QgPSAoaSA9PSAobnBhcnRzIC0g MSkpOworCisJCQkJY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UocGFy ZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkJCQkJICAg c3BsaXRQYXJ0T2lkLCBmaXJzdCwgbGFzdCwKKwkJCQkJCQkJCQkJCQkgICBleGlzdHNEZWZh dWx0UGFydCwgcHN0YXRlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljaGVja19wYXJ0aXRpb25f Ym91bmRzX2Zvcl9zcGxpdF9saXN0KHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLAorCQkJ CQkJCQkJCQkJCSAgc3BzLT5ib3VuZCwgc3BsaXRQYXJ0T2lkLCBwc3RhdGUpOworCQl9CisK KwkJLyogUmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8K KwkJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSAmJiBzcHNQcmV2 KQorCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwgc3BzUHJl di0+bmFtZSwgc3BzUHJldi0+Ym91bmQsCisJCQkJCQkJCQkJCSAgc3BzLT5uYW1lLCBzcHMt PmJvdW5kLCBleGlzdHNEZWZhdWx0UGFydCwgcHN0YXRlKTsKKworCQlzcHNQcmV2ID0gc3Bz OworCisJCS8qIENoZWNrOiBuZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQg bmFtZXMuICovCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczIgPSBuZXdfcGFydHNbal07CisKKwkJCWlmIChl cXVhbChzcHMtPm5hbWUsIHNwczItPm5hbWUpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygibmFt ZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgc3BzMi0+bmFtZS0+cmVsbmFtZSksCisJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMyLT5uYW1lLT5sb2NhdGlvbikpOwor CQl9CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKQor CXsKKwkJLyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4g Ki8KKwkJY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KHBhcmVudCwgbmV3X3Bh cnRzLCBucGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCS8qCisJCSAqIE5lZWQg dG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiBjb250YWlucyBp biBuZXcKKwkJICogcGFydGl0aW9ucy4gU2tpcCB0aGlzIGNoZWNrIGlmIERFRkFVTFQgcGFy dGl0aW9uIGV4aXN0cy4KKwkJICovCisJCWlmICghZXhpc3RzRGVmYXVsdFBhcnQpCisJCQlj aGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKHBhcmVudCwgc3BsaXRQYXJ0 T2lkLAorCQkJCQkJCQkJCQkJICBuZXdfcGFydHMsIG5wYXJ0cywgcHN0YXRlKTsKKwl9CisK KwlwZnJlZShuZXdfcGFydHMpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmlu ZGV4IDNkNmU2YmRiZmQuLjNlMTY4OWIxMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKQEAgLTEzNzA3LDMgKzEzNzA3LDIxIEBAIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3Ry aW5nKExpc3QgKmJvdW5kX2RhdHVtcykKIAogCXJldHVybiBidWYtPmRhdGE7CiB9CisKKy8q CisgKiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nCisgKgkJQSBDIHN0cmluZyByZXByZXNl bnRhdGlvbiBvZiBvbmUgbGlzdCBwYXJ0aXRpb24gdmFsdWUKKyAqLworY2hhciAqCitnZXRf bGlzdF9wYXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwpCit7CisJZGVwYXJzZV9jb250ZXh0 IGNvbnRleHQ7CisJU3RyaW5nSW5mbwlidWYgPSBtYWtlU3RyaW5nSW5mbygpOworCisJbWVt c2V0KCZjb250ZXh0LCAwLCBzaXplb2YoZGVwYXJzZV9jb250ZXh0KSk7CisJY29udGV4dC5i dWYgPSBidWY7CisKKwlnZXRfY29uc3RfZXhwcih2YWwsICZjb250ZXh0LCAtMSk7CisKKwly ZXR1cm4gYnVmLT5kYXRhOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDY0MjQ4 YjViMWYuLmMwZTkxODk1MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3MjEs NyArMjcyMSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJ CQkgICJPV05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAg IlJFUExJQ0EgSURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFD SCBQQVJUSVRJT04iLCAiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKLQkJCQkJICAiTUVS R0UgUEFSVElUSU9OUyAoIiwKKwkJCQkJICAiU1BMSVQgUEFSVElUSU9OIiwgIk1FUkdFIFBB UlRJVElPTlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRBQkxF IHh4eCBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNo QW55LCAiQUREIikpCkBAIC0yOTc3LDEwICsyOTc3LDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dv cmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIKCJGUk9NICgiLCAiSU4gKCIs ICJXSVRIICgiKTsKIAogCS8qCi0JICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBE RVRBQ0ggUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgorCSAqIElmIHdlIGhhdmUgQUxU RVIgVEFCTEUgPGZvbz4gREVUQUNIfFNQTElUIFBBUlRJVElPTiwgcHJvdmlkZSBhIGxpc3Qg b2YKIAkgKiBwYXJ0aXRpb25zIG9mIDxmb28+LgogCSAqLwotCWVsc2UgaWYgKE1hdGNoZXMo IkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0giLCAiUEFSVElUSU9OIikpCisJ ZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSHxT UExJVCIsICJQQVJUSVRJT04iKSkKIAl7CiAJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShw cmV2M193ZCk7CiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0 aXRpb25fb2ZfdGFibGUpOwpAQCAtMjk4OCw2ICsyOTg4LDEwIEBAIG1hdGNoX3ByZXZpb3Vz X3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRB QkxFIiwgTWF0Y2hBbnksICJERVRBQ0giLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQogCQlD T01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFkiLCAiRklOQUxJWkUiKTsKIAorCS8qIEFMVEVS IFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPG5hbWU+ICovCisJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIlNQTElUIiwgIlBBUlRJVElPTiIs IE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyAoIFBBUlRJVElPTiIpOworCiAJ LyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCAqLwogCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJ T05TIiwgIigiKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYjhlMmE2Nzlj ZC4uMDFhYTRiMmU2NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTYzLDE1ICs5 NjMsMjYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogCVBhcnNlTG9j CWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0g UGFydGl0aW9uUmFuZ2VEYXR1bTsKIAorLyoKKyAqIFBhcnRpdGlvbkRlc2MgLSBpbmZvIGFi b3V0IHNpbmdsZSBwYXJ0aXRpb24gZm9yIEFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTiBj b21tYW5kCisgKi8KK3R5cGVkZWYgc3RydWN0IFNpbmdsZVBhcnRpdGlvblNwZWMKK3sKKwlO b2RlVGFnCQl0eXBlOworCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRp dGlvbiAqLworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlm IGF0dGFjaGluZyAqLworfSBTaW5nbGVQYXJ0aXRpb25TcGVjOworCiAvKgogICogUGFydGl0 aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJU SVRJT04gY29tbWFuZHMKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiB7CiAJ Tm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0 aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2UgKi8KKwlSYW5nZVZhciAgICpuYW1lOwkJCS8q IG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2Uvc3BsaXQgKi8KIAlQ YXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcg Ki8KLQlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1F UkdFCisJTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMsIGZvciBN RVJHRS9TUExJVAogCQkJCQkJCQkgKiBQQVJUSVRJT04gY29tbWFuZCAqLwogCWJvb2wJCWNv bmN1cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKQEAgLTI0NzUsNiArMjQ4Niw3IEBAIHR5cGVk ZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFjaFBhcnRpdGlvbiwJCQkvKiBBVFRB Q0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8qIERFVEFDSCBQQVJU SVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwgLyogREVUQUNIIFBBUlRJ VElPTiBGSU5BTElaRSAqLworCUFUX1NwbGl0UGFydGl0aW9uLAkJCS8qIFNQTElUIFBBUlRJ VElPTiAqLwogCUFUX01lcmdlUGFydGl0aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICov CiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFERCBJREVOVElUWSAqLwogCUFUX1NldElkZW50 aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29sdW1uIG9wdGlvbnMgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAppbmRleCA5MGU4Y2RkZjhiLi42NmM4ODc2NjU3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o CkBAIC00MjEsNiArNDIxLDcgQEAgUEdfS0VZV09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNuYXBzaG90Iiwg U05BUFNIT1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InNvbWUiLCBTT01FLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgic291cmNlIiwgU09VUkNFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJzcGxpdCIsIFNQTElULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJzcWwiLCBTUUxfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgic3RhYmxlIiwgU1RBQkxFLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFuZGFsb25lIiwgU1RBTkRBTE9ORV9Q LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaAppbmRleCA2OTBkMjU5NjE5Li40NWIxZmExZGU4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCisrKyBiL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0Myw2ICsxNDMsMTAgQEAg ZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2VfZGF0dW1fYnNlYXJjaChGbWdySW5mbyAqcGFy dHN1cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRpdGlvbl9oYXNoX2JzZWFyY2goUGFydGl0aW9u Qm91bmRJbmZvIGJvdW5kaW5mbywKIAkJCQkJCQkJICAgaW50IG1vZHVsdXMsIGludCByZW1h aW5kZXIpOwogCitleHRlcm4gdm9pZCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxh dGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJ ICAgTGlzdCAqcGFydGxpc3QsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpOwog ZXh0ZXJuIHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRp b24gcGFyZW50LAogCQkJCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAogCQkJCQkJCQkJCQkJ TGlzdCAqcGFydE9pZHMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRp bHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4IDVmMmVhMmU0ZDAu LjYyMDQzZDNiZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCkBAIC01NCw0ICs1NCw2IEBA IGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9k YXR1bXMpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3N0YXRpc3RpY3NvYmpkZWZfc3RyaW5n KE9pZCBzdGF0ZXh0aWQpOwogCitleHRlcm4gY2hhciAqZ2V0X2xpc3RfcGFydHZhbHVlX3N0 cmluZyhDb25zdCAqdmFsKTsKKwogI2VuZGlmCQkJCQkJCS8qIFJVTEVVVElMU19IICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0 Lm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkOWU4YjA5MjUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9u LXNwbGl0Lm91dApAQCAtMCwwICsxLDE5MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIg c2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJiIHMyaSBz MWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxF IHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElU SU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAg UEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOwor c3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz Mmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8 dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMy cworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQ TElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0 XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9O IHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJy cjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgor c3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAor LS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUK KzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMx c3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNw bHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRP CisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAo MTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFM SVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQw MScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9N IHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisx NXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFz cGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5U TworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00g KDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6 IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7 CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0t CisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQz NQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMy YnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJ VCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8x MF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0 cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5T RVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0t Ky0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1Cisz NXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMx c3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAg czJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgor c3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAor LS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUK KzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBz MXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQ TElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0 XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9O IHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6 IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQw MScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9N IHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisx NXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAg czFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0 OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTwor CQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1 KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4 dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4u LiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZS T00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEK KzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVw IHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3Bs dDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8K KwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgx NSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJ WkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBj b21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00g dHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1 fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29s YXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IDBkY2E2ODQ5NTUuLjQwNGE3ZmQ4MzIg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysr IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTA4LDYgKzEw OCw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRpdGlvbi1r ZXktdXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKIHRlc3Q6IHBhcnRp dGlvbi1tZXJnZQordGVzdDogcGFydGl0aW9uLXNwbGl0CiB0ZXN0OiBwbHBnc3FsLXRvYXN0 CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0LXBhcnRp dGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1z cGxpdC5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5z cGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA4NzIzOWE0YTEK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9u LXNwbGl0LnNwZWMKQEAgLTAsMCArMSw1NCBAQAorIyBWZXJpZnkgdGhhdCBTUExJVCBvcGVy YXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQorCitz ZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRBQkxF IHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRF IFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0Yg dHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRw YXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdHBhcnQg REVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICg1LCAndGV4dDA1Jyk7Cisg IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsKKyAgSU5TRVJUIElO VE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3duCit7CisgIERST1AgVEFCTEUg dHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFi cnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMx YnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMxc3Bs dAl7IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRP CisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAo MTUpIFRPICgyMCkpOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIK K3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVW RUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBT RUxFQ1QgKiBGUk9NIHRwYXJ0OyB9CisKKworIyBzMSBzdGFydHMgU1BMSVQgUEFSVElUSU9O IHRoZW4gczIgdHJ5aW5nIHRvIGluc2VydCByb3cgYW5kCisjIHdhaXRzIHVudGlsIHMxIGZp bmlzaGVkIFNQTElUIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmIg czJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMg czJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycwor CitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0 YXRpb24gczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24g czFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMxYnMg czFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMy YnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJicyBzMmkg czFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVw YXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2Rl cGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDdkZTVkZGI4NzguLjE3ZDcyZTQxMmYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2Rk bF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1 YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9u RmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTEla RSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCXN0cnR5 cGUgPSAiU1BMSVQgUEFSVElUSU9OIjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfTWVyZ2VQ YXJ0aXRpb25zOgogCQkJCXN0cnR5cGUgPSAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9z cGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2Q1NDNhYjgxMwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3NwbGl0Lm91dApAQCAtMCwwICsxLDE2NTUgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQK Ky0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNv bW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitDUkVB VEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworLS0KKy0tIEJZIFJBTkdFIHBhcnRp dGlvbmluZworLS0KKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1l IHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIEVSUk9SOiAgcmVsYXRpb24g InNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc194eHggSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9S OiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKKy0tIEVSUk9SOiAgcmVs YXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJl YWR5IGV4aXN0cworLS0gRVJST1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9y IGEgcmFuZ2UgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19q YW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAxJywgJzIwMjItMDYtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjog IGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0xJ TkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjIt MDUtMDEnLCAnMjAyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9y IHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKK0VSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNwZWNp ZmllZCBsb3dlciBib3VuZCAoJzAzLTAxLTIwMjInKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1 YWwgdG8gdXBwZXIgYm91bmQgKCcwMi0wMS0yMDIyJykuCistLUVSUk9SOiAgbGlzdCBvZiBz cGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworRVJST1I6ICBsaXN0IG9mIG5l dyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworLS0gRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3Mg dGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u CitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9h cHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3 aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRl IHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIG5hbWUgInNhbGVzX2Zl Yl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy4uLgorICAg ICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBp cyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9S OiAgbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU Ty4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfZmViX21h cl9hcHIyMDIyIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgQUxURVIgYWN0aW9uIFNQTElU IFBBUlRJVElPTiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIHJlbGF0aW9uICJzYWxlc19mZWJf bWFyX2FwcjIwMjIiCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVk IGZvciB0YWJsZXMuCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworRVJST1I6ICB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIGdyZWF0ZXIgdGhhbiB1cHBl ciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgNDogLi4uIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0 byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorTElORSAz OiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg cmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBUZXN0 cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUgZXhlY3V0 ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug REVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CistLSBFUlJPUjogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlz IG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgMjog ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MicpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gQ2hlY2sgdGhlIHNvdXJjZSBwYXJ0aXRpb24gbm90IGluIHRoZSBz ZWFyY2ggcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIs IHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFu Z2UKK1NQTElUIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworXGQrIHNhbGVzX3JhbmdlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9u X3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZSIKKyAgICAgIENvbHVtbiAgICAgIHwgICAgICAg ICBUeXBlICAgICAgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3Rv cmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNv bl9uYW1lIHwgY2hhcmFjdGVyIHZhcnlpbmcoMzApIHwgICAgICAgICAgIHwgICAgICAgICAg fCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19hbW91bnQg ICAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAg ICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19kYXRlICAgICAg IHwgZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAg ICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdF IChzYWxlc19kYXRlKQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0y MDIyJyksCisgICAgICAgICAgICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKSwK KyAgICAgICAgICAgIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpLAorICAgICAg ICAgICAgc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8g KCcwMi0wMS0yMDIyJykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUg c2FsZXNfb3RoZXJzOworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUg dGhlbiBzcGxpdCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAn TWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUw MCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAg MTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5 LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywg ICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIy LTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAg KDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw MS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAg ICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAg IDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAg ICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIz LTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAx NzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAg ICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAg ICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgor ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAx LTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAg ICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Zl YjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAg ICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAg ICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwg UGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0K Ky0tIEFkZCBzcGxpdCBwYXJ0aXRpb24sIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25l ZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQg SU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK Ky0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBv ZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9u X3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNf cmFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxl ICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICAgQ29sdW1uICAg ICAgfCAgICAgICAgIFR5cGUgICAgICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERl ZmF1bHQgfCBTdG9yYWdlICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHNhbGVzcGVyc29uX2lkICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAor IHNhbGVzcGVyc29uX25hbWUgfCBjaGFyYWN0ZXIgdmFyeWluZygzMCkgfCAgICAgICAgICAg fCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAgICB8IAorIHNh bGVzX2Ftb3VudCAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAg ICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVz X2RhdGUgICAgICAgfCBkYXRlICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9u IGtleTogUkFOR0UgKHNhbGVzX2RhdGUpCitQYXJ0aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBU TyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpLAorICAgICAgICAgICAg c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0w MS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX290 aGVycyBERUZBVUxUCisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIy LTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAg KDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIw MjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAor ICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRo JywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhh bGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgor ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAy LTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAg ICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAg ICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAg OSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAg ICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTkt MjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAw MCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwg VHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAg ICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIy CisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDIt MTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAg fCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjI7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgor KDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVz dCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJB VEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxl c19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxl c195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0 LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RP UkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRl cGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXkpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9O IE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIs IDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFY VkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScs IDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5h Z2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgn TWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAor ICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0 KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisgICAgIHRhYmxlb2lkICAgICAgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSAgICAgfCBN YW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3 IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIxICAgICB8 IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAg IDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIy IHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAg ICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIw MjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAg ICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmVi MjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9m ZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3Ro ZXIgICAgICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAz IHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19v dGhlciAgICAgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVz X290aGVyICAgICAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSBy b3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19q YW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEp KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIy LCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKyAgIHRhYmxlb2lkICAgIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8 IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSB8IE1hbmFn ZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAy MDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2RlYzIwMjEgfCBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAy MS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjEg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIu MDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIyICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAz LjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMyAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjMgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEg fCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIyICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwg U2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNh bGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxl cyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMg ZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRl cGFydG1lbnQKKygxMSByb3dzKQorCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9m ZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAy MjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlz dAorTElORSAxOiBTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworICAgICAgICAg ICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworLS0KKy0t IFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0 aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNf ZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcp LAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAs ICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAn RXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1 MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIs ICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0w NS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAg ICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy CisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAg ICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAg IDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAg ICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRh YmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9z cGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAg ICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgIHwgdGFi bGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0 X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCB8 ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4 IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChz YWxlc19kYXRlKQorKDEgcm93KQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0 aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNf ZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgor ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAy LTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAg ICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21h cjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAg MTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAx JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIy CisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hl cmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVu YWJsZV9zZXFzY2FuID0gT047CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9z cGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAg ICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0 YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfZmViMjAyMiB8IHNhbGVzX2ZlYjIwMjJfc2FsZXNf ZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYjIwMjJfc2Fs ZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2lu ZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1l ID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAg ICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFt ZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfbWFyMjAyMiB8IHNhbGVz X21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNh bGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19tYXIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjIn IGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGlu ZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAg ICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNf YXByMjAyMiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwg Q1JFQVRFIElOREVYIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9u X3NwbGl0X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0g J3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVt YScgT1JERVIgQlkgaW5kZXhuYW1lOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFi bGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4 ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgfCAgICAg ICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgT04g cGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0t CistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24g KGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMy MDIxIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAy MDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBu b3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMzApIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4K Ky0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBi b3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJy b3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAyKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIy MDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0 byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0xJTkUgNDog ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkg VE8gKDIwLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJl cXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2FsZXNf ZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGluc2lkZSBib3VuZCkKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUg cGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIHNhbGVzX2Vycm9yIGludGVy c2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChleGFjdGx5IHRoZSBzYW1lIGJvdW5kcykKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUg cGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIEVSUk9SOiAgb25lIHBhcnRp dGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRp dGlvbiBpcyBERUZBVUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkg VE8gKDIwMjIwMzAxKSk7CitFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hv dWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorTElO RSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjEx MjAxKSBUTyAoMjAuLi4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIG5vIGVycm9yOiBi b3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBzYWxlc19kZWMyMDIxIGFuZCBz YWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNf bm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8g KDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1 YWwgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBvZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxl c19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9l cnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEwMTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw MjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENI RUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQor LS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlICgKK3NhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVz cGVyc29uX2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEp LAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2Fw cjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7CisgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg Q0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0K KyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsx fQorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworLS0gV2Ug c2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29u bmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxl c19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8 IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5 IHwgezF9CisoMiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwg Y29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdz YWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNr ICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9m a2V5IHwgezF9CisoMiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9 ICdzYWxlc19hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtl eSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2No ZWNrICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9p ZF9ma2V5IHwgezF9CisoMiByb3dzKQorCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0 aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19y YW5nZV9zYWxlc19hbW91bnRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEsIDAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9u ICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5n ZV9zYWxlc19hbW91bnRfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAo MSwgMCwgMDMtMTEtMjAyMikuCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFi bGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNh bGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVw ZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtl eSAoc2FsZXNwZXJzb25faWQpPSgtMSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVz cGVvcGxlIi4KKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDEw LCAnMjAyMi0wMy0xMScpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJP UCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRp dGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04g S0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsK K0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2Fs ZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNh bGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgx LCAgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92JyksCisgICgy MCwgJ1NtaXJub2ZmJyksCisgICgzMCwgJ0ZvcmQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZB TFVFUworICAoMSwgIDEwMCwgJzIwMjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAz LTAyJyksCisgICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjIt MDMtMDMnKSwKKyAgKDE5LCAyMDAsICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAy Mi0wMy0xMicpLAorICAoMjAsIDE3MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcy MDIyLTAzLTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNw ZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9p ZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl b3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzQw IHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAg ICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAgMjAgfCBT bWlybm9mZgorIHNhbGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1 IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxl c3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8z MCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVv cGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CitTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNh bGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEg fCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBz YWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3Bs ZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAg fCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKKy0tIEVSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBW QUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitFUlJPUjogIGluc2VydCBvciB1cGRh dGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJz YWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5IgorREVUQUlMOiAgS2V5IChzYWxlc3BlcnNvbl9p ZCk9KDQwKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAic2FsZXNwZW9wbGUiLgorLS0gb2sK K0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0RS T1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FE RTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUg d2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNv bl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBP RiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2Vy IExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNF ICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScs IFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVM TDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2lu c2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVz cGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUg YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdH RVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5T RVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRF IFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7Cist LSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmln Z2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVS LCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBh Y3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEg dHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVz cGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9 IFJPVworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZP UiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUz MF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKy0tIDIgdHJpZ2dlcnMgc2hv dWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBS T1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hv dWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFM VUVTICgzMCwgJ0ZvcmQnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxl ZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitTRUxFQ1Qg dGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVv aWQsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAg ICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBN YXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxl c3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxl MzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUg c2FsZXNwZW9wbGUgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCk7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5 IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1 bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9v LgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VO RVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxXzIgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0 aCBpZGVudGl0eSBjb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNw ZXJzb25faWQgSU5UIE5PVCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUy XzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7CitT RUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJp YnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJl Z2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRp ZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwg Cisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxF Q1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0 ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJl Z2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRp ZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwg Cisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBT cGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5IGNvbHVtbjoKK1NFTEVDVCBhdHRuYW1lLCBh dHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51 bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0 Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNv bl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNwZW9wbGUyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJU SVRJT04gc2FsZXNwZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQ QVJUSVRJT04gc2FsZXNwZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSkpOwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01h eScpLCAoJ0ZvcmQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgdGFibGVv aWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9w bGUxXzIgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMl8zIHwgICAg ICAgICAgICAgIDIgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTNfNCB8ICAgICAgICAgICAgICAz IHwgTWF5Cisgc2FsZXNwZW9wbGU0XzUgfCAgICAgICAgICAgICAgNCB8IEZvcmQKKyg0IHJv d3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00g cGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVv cGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAg ICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAg ICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3Mp CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdf YXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxl MV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAg ICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAg ICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3Mp CisKKy0tIE5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50 aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK0RST1AgVEFC TEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24g d2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUg ZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAoZDEgVkFS Q0hBUigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCBkMyBE QVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygp LCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21p cm5vZmYnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDE7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQyOworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisg ICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBG Uk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBW QUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsK KyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2Fs ZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF8y MCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUyMF8zMCB8ICAgICAg ICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTMwXzQwIHwgICAgICAgICAgICAg MzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7 CistLQorLS0gVGVzdDogc3BsaXQgc3ViLXBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFU RSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMK KyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWly bm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwg JzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycp LAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1Bv aXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUs ICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIz JyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAn SGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4 MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMt MTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQs ICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAg ICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAg MTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAg ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5 LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1 MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwg ICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24g ICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8 IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAg ICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAy MgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVl diAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg ICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAg IHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAg NSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYt MjAyMgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJU SVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8w MV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1 LTAxJykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3Jhbmdl IE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAg ICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxl c19qYW4yMDIyICAgICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgfCAgICAg ICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0y MDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19mZWIyMDIyICAg ICAgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAgICAgICAgICAgNiB8 IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNf ZmViMjAyMiAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwgICAgICAg ICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAy MgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbWFyMjAyMiAgICAg ICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgIHwgICAgICAgICAgICAgMTQgfCBT bWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorIHNhbGVzX2Fw cjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8ICAgICAgICAg ICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIK KyBzYWxlc19hcHIyMDIyXzEwXzIwIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjJfMjBfMzAg fCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAw NC0zMC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCist LSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJv cnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xp c3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNh bGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jl cmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJP UjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90 aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNh bGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJp ZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycs ICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAorICAgUEFSVElUSU9OIHNh bGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicp KTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3 aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgorTElORSAz OiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycs ICdIZWxzaW5raScuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNh bGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNh bGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAo J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0xpc2JvbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJz YWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJz YWxlc19jZW50cmFsIgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywuLi4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9u ICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlv biAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBh cnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnNfd2VzdCBGT1IgVkFMVUVTIElO ICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRo aXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFS VElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90 IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZl CitMSU5FIDI6IC4uLnN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgJ01lbGJvdXJuZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRp dGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVh ZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRp dm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz MiBERUZBVUxUKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBi ZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitMSU5FIDU6ICAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAgICAg XgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBl cnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25z IGRvIG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCist LSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBh cnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNv bl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2kn LCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScs ICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitB TFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMg SU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0 IHNwbGl0IHBhcnRpdGlvbiBkb2VzCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5v dCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Nl bnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CitFUlJP UjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQg cGFydGl0aW9uIGRvZXMKKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUg b25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBERUZBVUxUIHBhcnRpdGlv biBzaG91bGQgYmUgb25lCitMSU5FIDY6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERF RkFVTFQpOworICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0 OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04g d2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9p ZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNf bGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChz YWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRl X2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxp bicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5U TyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAg ICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAg ICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNi dXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAg ICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywg ICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0Jlcmxpbics ICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywg ICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2 b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ09zbG8n LCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdIZWxz aW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFk cmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5 aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdX YXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAn TGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQs IHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBz YWxlc19ub3JkICAgIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3Qu IFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgc2FsZXNfbm9yZCAg ICB8ICAgICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IE9zbG8gICAgICAgICAg IHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorIHNhbGVzX25vcmQgICAgfCAgICAgICAg ICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAg MTIwMCB8IDAzLTExLTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0w Mi0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorIHNh bGVzX3dlc3QgICAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNi b24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyBzYWxlc193ZXN0ICAg IHwgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgICAg fCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAg ICAgIDE0IHwgUGxhdG8gICAgICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAg OTUwIHwgMDMtMDUtMjAyMgorIHNhbGVzX2Vhc3QgICAgfCAgICAgICAgICAgICAgMSB8IFRy dW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAx LTIwMjIKKyBzYWxlc19lYXN0ICAgIHwgICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAg ICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgc2Fs ZXNfY2VudHJhbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNh dyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVzX2NlbnRyYWwg fCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAg ICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xMC0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgt MjAyMgorKDE0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhl cyBhZnRlciBzcGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9O OworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50 cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0y MDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAg fCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAg fCAwMy0wNC0yMDIyCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCist LSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRp b25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBv ZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwK KyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3Jk JywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAg JzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp LAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xp JywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTEx JyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7 CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIg QlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgICAgIHRhYmxlb2lkICAgICAgICB8 IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19v dGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAg ICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19vdGhlcnMg ICAgICAgICAgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAg ICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor IHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAg ICAgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTQg fCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorIHNhbGVz X21hcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8 ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWly bm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIw MjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAg ICAgIDE1MCB8IDAyLTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy Cisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDE0IHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9u LURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBi b3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFS VElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTA5JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisg ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNw ZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAg ICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMx LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJz ICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAg ICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisgc2FsZXNfbWFyMjAyMl8xZGVjYWRlIHwg ICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMt MDgtMjAyMgorIHNhbGVzX2phbjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19mZWIy MDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0wOS0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAg ICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMDctMjAy MgorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFk ZWNhZGUgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAz ODAgfCAwNC0wNi0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK Ky0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gREVGQVVM VCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5k cy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAg ICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAor ICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7 CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRh Ymxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNh bGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEz IHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxl c19hcHIyMDIyIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAg ICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNf YXByMjAyMiB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAg IDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2Zl YjIwMjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1 MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIy MDIyIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAgNyB8IExpICAg ICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJz ICB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDAzLTExLTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVycyAg fCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAw NS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCist LSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRF IFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFU RSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JF QVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOwor LS0gRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0 aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJVElPTiB0MXBhIElOVE8KKyAg IChQQVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0InKSwKKyAgICBQ QVJUSVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBUTyAoJ0MnKSk7CitFUlJPUjog IHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgor SElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdl IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJMRSB0MjsK K0RST1AgVEFCTEUgdDE7CistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0ZW1w b3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywg cGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBB TkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAg ICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8yIHwg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cpCisKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKSk7CistLSBQYXJ0aXRpb25zIHNob3VsZCBiZSB0ZW1wb3Jh cnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBG Uk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisg IFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2Ns YXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJl bHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkg fCB0CisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikgfCB0CisoMiByb3dz KQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbnMgaW5oZXJp dCBwYXJlbnQncyB0YWJsZXNwYWNlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBL RVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBU QUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7 CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0 cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIHRhYmxlbmFtZSwg dGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0Jywg J3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1l IHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IHQgICAgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCByZWdyZXNzX3Ri bHNwYWNlCisgdHBfMV8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKworU0VM RUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcwor ICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2No ZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5h bWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8 ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190YmxzcGFj ZQorIHRwXzBfMSAgICB8IHRwXzBfMV9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFf MiAgICB8IHRwXzFfMl9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKworRFJP UCBUQUJMRSB0OworLS0gQ2hlY2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50J3Mg dGFibGUgYWNjZXNzIG1ldGhvZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3Nw bGl0X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JF QVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRp dGlvbl9zcGxpdF9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpP SU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJl Z2NsYXNzLCAndHBfMF8xJzo6cmVnY2xhc3MsICd0cF8xXzInOjpyZWdjbGFzcykKK09SREVS IEJZIGMucmVsbmFtZTsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgCistLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgfCBwYXJ0aXRpb25fc3Bs aXRfaGVhcAorIHRwXzBfMSAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorIHRwXzFfMiAgfCBw YXJ0aXRpb25fc3BsaXRfaGVhcAorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBB Q0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwOworLS0gVGVzdCBwZXJtaXNzaW9u IGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0 aGUKKy0tIHRoZSBwYXJ0aXRpb24gdG8gc3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRF IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFO VCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBf MiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp LAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitF UlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8yCitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8w XzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOwor UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFM TCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0 X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CistLSBTcGxpdCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFi bGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUg c2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRB QkxFIHQgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFC TEUgdHBfMCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FM VEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHRw XzAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMSBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayBkZWZh dWx0cyBhbmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJMRSB0 X2JpZ2ludCAoCisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAgaiBp bnQgREVGQVVMVCAxMDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTApIFNU T1JFRAorKQorUEFSVElUSU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2JpZ2lu dF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBkZWZh dWx0cy9jb25zdHJhaW50cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAi cGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAg ICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAg ICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAz ICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChiKQorUGFydGl0aW9uczog dF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUCisKK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0 X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAg fCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K KyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAg ICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5l cmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxUCitObyBwYXJ0aXRpb24g Y29uc3RyYWludAorCitBTFRFUiBUQUJMRSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04gdF9i aWdpbnRfZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMTApLAorICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQg REVGQVVMVCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElUIFBB UlRJVElPTgorXGQrIHRfYmlnaW50X2RlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50X2Rl ZmF1bHQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAg ICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0 YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAg fCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChi ICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24g b2Y6IHRfYmlnaW50IERFRkFVTFQKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoTk9UICgoYiBJ UyBOT1QgTlVMTCkgQU5EICgoYiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6Ymln aW50KSkpKQorCitcZCsgdF9iaWdpbnRfMDFfMTAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF8w MV8xMCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAg ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIg KyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBv ZjogdF9iaWdpbnQgRk9SIFZBTFVFUyBGUk9NICgnMCcpIFRPICgnMTAnKQorUGFydGl0aW9u IGNvbnN0cmFpbnQ6ICgoYiBJUyBOT1QgTlVMTCkgQU5EIChiID49ICcwJzo6YmlnaW50KSBB TkQgKGIgPCAnMTAnOjpiaWdpbnQpKQorCitEUk9QIFRBQkxFIHRfYmlnaW50OworLS0gVGVz dDogb3duZXIgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG93bmVy IG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg VE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBp bnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihp IGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IEFU VEFDSCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworLS0g T3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAg IFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hIHwgdHBfMF8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQor KDEgcm93KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTwor ICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBB UlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gT3duZXIg c2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8x CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAg ICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UK KygxIHJvdykKKworXGR0IHRwXzFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBl ICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFVk9L RSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9hbGljZTsKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBj cmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0gcGFydGl0aW9uCitDUkVBVEUg Uk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRl Z2VyIEFTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBh cyAlJywgQ1VSUkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBM UEdTUUwgSU1NVVRBQkxFOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBPTiB0IChydW5fbWUoaSkpOworTk9USUNFOiAgeW91 IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJ Q0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2UKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKy0tIE93bmVyIHNob3VsZCBiZSAn cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQ QVJUSVRJT04gdHBfMTBfMjAgSU5UTworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSksCisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVF UyBGUk9NICgxNSkgVE8gKDIwKSk7CitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMg cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK05PVElDRTogIHlvdSBhcmUgcnVubmlu ZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorRFJPUCBUQUJMRSB0Owor RFJPUCBGVU5DVElPTiBydW5fbWUoaW50ZWdlcik7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CistLSBUZXN0 IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxF IHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlO REVSIDEpOworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJs ZSBjYW5ub3QgYmUgc3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJ TlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJF TUFJTkRFUiAwKSwKKyAgIFBBUlRJVElPTiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVM VVMgNCwgUkVNQUlOREVSIDIpKTsKK0VSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0 aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBh cnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBW QUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworRVJST1I6ICBsaXN0IG9m IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworRFJP UCBUQUJMRSB0OworLS0gQWRkaXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNv bl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworLS0gRVJST1I6ICB1cHBlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScp KTsKK0VSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBp cyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDQ6 IC4uLiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDYtMC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLSBU ZXN0IGZvciBzcGxpdCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBp cyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUg c2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBp cyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5F UkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENP TlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhl IHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUg dAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNT SU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VO RVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBS QU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CitDUkVB VEUgVEFCTEUgdHBfeAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4g REVGQVVMVCAnZGVmYXVsdF90cF94JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVE IEFMV0FZUyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRB Q0ggUEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5U IE9OIENPTFVNTiB0cF94LmkgSVMgJ3RwX3guaSc7CitDUkVBVEUgU1RBVElTVElDUyB0X3N0 YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0 cF94X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwX3g7CitBTFRFUiBUQUJM RSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFC TEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9S Q0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChi ID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4g Tk9UIE5VTEwgYiBOT1QgVkFMSUQ7CitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVF UygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEs IERFRkFVTFQsIDIpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5j dGlvbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAor QkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwg d2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19M RVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHRf YmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0gg Uk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFU RSBUUklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJU IE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVu Y3Rpb24oJ3RwX3gnKTsKK1xkKyB0cF94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3gi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAg ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3Rh dHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgdHBfeC5pCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgJ2RlZmF1bHRfdHBfeCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBt YWluICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAy LTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0 aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25z dHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChh YnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNL IChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQK KyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK1N0YXRpc3RpY3Mg b2JqZWN0czoKKyAgICAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94X3N0YXQiIChkZXBl bmRlbmNpZXMpIE9OIGksIGIgRlJPTSB0cF94CitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAg ICAidHBfeF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9i X25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAg ICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZP UiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04g VEFCTEUgdAorICAgIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5T RVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5j dGlvbigndHBfeCcpCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5U TworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAg IFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJs ZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94IgorIENvbHVtbiB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAg ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHQgICAgICB8IHRl eHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3QnOjp0ZXh0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAK KyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAg ICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBw bGFpbiAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9U IE5VTEwpIEFORCAoYWJzKGkpID49IDEpIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25z dHJhaW50czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVj azEiIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNL IChiID4gMCkgTk9UIFZBTElECitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAidF9pX25v dF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVM TCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9p bnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBF WEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorCitJ TlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK05PVElDRTog IHRyaWdnZXIodCkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUsIGxl dmVsID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBC WSBiOworIHRhYmxlb2lkIHwgaSB8ICAgICAgdCAgICAgICB8IGIgfCAgICAgZCAgICAgIAor LS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLQorIHRwXzBf MSAgIHwgMCB8IGRlZmF1bHRfdHBfeCB8IDEgfCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAx IHwgZGVmYXVsdF90cF94IHwgMiB8IDAxLTAxLTIwMjIKKyB0cF94ICAgICB8IDEgfCBkZWZh dWx0X3QgICAgfCAzIHwgMDEtMDEtMjAyMgorKDMgcm93cykKKworRFJPUCBUQUJMRSB0Owor RFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CistLSBUZXN0IGZvciByZWNvbXB1 dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChp IGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVk KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQURE IENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJ TlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0 aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZS T00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBX SEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0g InRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVv aWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIg VEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8w XzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFy dGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQor LS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBG Uk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cp CisKK0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDY0NjRhMjM4 YWMuLmE5OGFlZjdjYTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAt MTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRl bXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0 cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNj ZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0 aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMg aGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8g dHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUg bnVtYQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0aXRpb25f am9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFy dGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21w cmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJpZ2dl ciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0 aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3NwbGl0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li43ZmE0YjY5Mzc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX3NwbGl0LnNxbApAQCAtMCwwICsxLDExNDggQEAKKy0tCistLSBQQVJUSVRJ T05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElP TiAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQgc2Vh cmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBC WSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2Rl cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBz YWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19k YXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0g RVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJl YWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJP UjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24K K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJ TiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBlbXB0eSByYW5nZSBi b3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS1FUlJPUjogIGxpc3Qgb2Ygc3BsaXQgcGFy dGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0xMC0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBv ZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKwor LS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkgdXNl ZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBz cGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0 aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKKworLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5 IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICAi c2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorQUxU RVIgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICB1 cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIGdyZWF0ZXIgdGhh biB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNi0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQg YmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0tIEVSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwg dG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CisKKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0 aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisK Ky0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFy dGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisg ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsK K1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFy MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCist LSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQg dGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisK Ky0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBv ZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9u X3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNf cmFuZ2UKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyks CisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdN dWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VM RUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIy OworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVS QVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2Fs ZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2Fs ZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4 dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNU T1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBk ZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIw MjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwg TUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFn ZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAo J01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwK KyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwg MSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIs IDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworCitBTFRFUiBUQUJMRSBzYWxlc19k YXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIy LCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMics IDIwMjIsIDIsIDEwKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXk7CisKKy0tRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuX2ZlYjIwMjIiIGRv ZXMgbm90IGV4aXN0CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworCitEUk9Q IFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFV TFQgcGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5k ZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVy c29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNf cmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAor ICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwg ICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEn KSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0w OScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVD VCAqIEZST00gc2FsZXNfb3RoZXJzOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlv bl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBVc2Ug aW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0g T047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNf ZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJP TSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAx JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAy Mi0wMS0wMSc7CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPTjsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZS T00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfYXByMjAyMicgYW5kIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1l OworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19v dGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVS IEJZIGluZGV4bmFtZTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCist LQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9u IChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2Fs ZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19k ZWMyMDIxIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIw MjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAo dXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKwor LS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGluc2lkZSBi b3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJy b3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIy MDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2Ft ZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0g RVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJl Y2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEp IFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKKworLS0gbm8gZXJyb3I6IGJvdW5k cyBvZiBzYWxlc19ub2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVz X2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBl cXVhbCB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNh bGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19u b2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3 aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0 YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQg UFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfcmFuZ2UgKAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9w bGUoc2FsZXNwZXJzb25faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1v dW50ID4gMSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf ZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29u bmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxl c19mZWJfbWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7CisK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gV2Ugc2hvdWxkIHNlZSB0 aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0 aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNv bm5hbWU7OworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNv bmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAy Mic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisKKy0tIEVSUk9SOiAgbmV3 IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0 cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKKy0tIEVSUk9SOiAgaW5z ZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOwor LS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAz LTExJyk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUg c2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBv biBwYXJ0aXRpb25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJl ZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFU RSBUQUJMRSBzYWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9w bGUoc2FsZXNwZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp OworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwg ICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAs ICdTbWlybm9mZicpLAorICAoMzAsICdGb3JkJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZB TFVFUworICAoMSwgIDEwMCwgJzIwMjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAz LTAyJyksCisgICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjIt MDMtMDMnKSwKKyAgKDE5LCAyMDAsICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAy Mi0wMy0xMicpLAorICAoMjAsIDE3MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcy MDIyLTAzLTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00g KDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisK Ky0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJ TlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CistLSBv aworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOwor CitEUk9QIFRBQkxFIHNhbGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENB U0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQg dGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFS VElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVU VVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAg UkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUs IGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAg ICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNw ZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJU CisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVD VVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7 CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dl cgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0gg Uk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdz YWxlc3Blb3BsZScpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyAr IHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5 Jyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgy MCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMg RlJPTSAoMzApIFRPICg0MCkpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUg KHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIw LCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkg dGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENB U0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCist LQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0g SWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMg b2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZ UyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5 IGNvbHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJ TlQgTk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFM VUVTIEZST00gKDIpIFRPICg1KTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVz cGVyc29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOworCitTRUxFQ1Qg YXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNz OjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBh dHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0 cmVsaWQgPSAnc2FsZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51 bTsKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0 dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFz czo6b2lkIE9SREVSIEJZIGF0dG51bTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BM SVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Bl b3BsZTJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxl c3Blb3BsZTNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBz YWxlc3Blb3BsZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJ TlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdNYXknKSwgKCdG b3JkJyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3Bs ZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVy YXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9 ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0g TmV3IHBhcnRpdGlvbnMgaGF2ZSBpZGVudGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUs IGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0 bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lk IE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2Vu ZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlk ID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitT RUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJp YnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRfNSc6 OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBkZWxl dGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25f aWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVk IGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMw KSwgc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZTEwXzQwIFZBTFVFUworICAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2 YW5vdicpLAorICAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2Zm Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUwor ICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworCitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80 MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVF UyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29u X2lkOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0 OiBzcGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYn LCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAg KDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3Qn LCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAor ICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAn MjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyks CisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21p dGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jh bmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworCitBTFRFUiBUQUJMRSBzYWxl c19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIw IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25f aWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRp dGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElT VCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVy c29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0 YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRF KQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNh bGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8n LCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h bGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVs aGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCistLSBFUlJPUjogIG5ldyBw YXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qg c3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRy YWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0g RVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGgg YW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdMaXNib24nLCAnS3lpdicpKTsK KworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBO VUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVF UyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3Qg aGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05l dyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3Qg YmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitB TFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsK KworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogdHdvIHNwZWNpZmlj IGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlv bnMgZG8gbm90IGhhdmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4K Ky0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQg cGFydGl0aW9uIGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVy c29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0 YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRF KQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNh bGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNp bmtpJywgJ1N0LiBQZXRlcnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h bGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVs aGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycsIE5VTEwpOworCistLSBFUlJPUjogIG5ldyBw YXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBk b2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFs dWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsIE5VTEwpKTsKKworLS0gRVJST1IgIERF RkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7 CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFy dGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91 bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19z dGF0ZSk7CisKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4 IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRF IElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcg YnRyZWUgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRl cnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdW bGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0w MycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMt MDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAz LTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0w My0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIy LTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAy Mi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIw MjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdIZWxzaW5raScsICAgICAgICA4MDAsICcy MDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAn MjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwg JzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAs ICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUw LCAnMjAyMi0wMy0wNScpOworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0 b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJz YXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSBzYWxlc19saXN0IE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsK KworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGlu ZyBwYXJ0aXRpb24KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxl c19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNh bGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9 IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CisKK0RST1AgVEFCTEUgc2FsZXNfbGlz dDsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9u IHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFu ZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIy XzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0x MCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBu b24tREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVu IGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQ QVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisg ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwK KyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp LAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAs ICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lk LCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0t IFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRp dGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fs bCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wNS0wMScpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0 YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisK Ky0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQor Q1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsK K0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScp OworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0Ug KHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQxcGEg SU5UTworICAgKFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicp LAorICAgIFBBUlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsK KworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKy0tCistLSBUcnkgdG8gU1BM SVQgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJM RSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxF IHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKwor U0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBw Z19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVS RSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcwor ICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9n LnRleHQ7CisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisg IChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFS VElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIFBhcnRp dGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp LCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19j YXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBp LmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHQ7CisK Ky0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdzIHRhYmxlc3Bh Y2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdf dGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicp IEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZ IHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwg dGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcs ICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0 X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7 CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBh cmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRp dGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxl cjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lO RyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xh c3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAo J3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3Mp CitPUkRFUiBCWSBjLnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRI T0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3Mu ICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0 aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2JvYjsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMik7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdCBPV05F UiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVS IFRBQkxFIHRwXzBfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJ T04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOwor CistLSBTcGxpdCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hlbiBvbmUgb2Yg dGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRo ZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQgKGEgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHRwXzAgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIGRlZmF1bHRzIGFuZCBjb25z dHJhaW50cyBvZiBuZXcgcGFydGl0aW9ucworQ1JFQVRFIFRBQkxFIHRfYmlnaW50ICgKKyAg YiBiaWdpbnQsCisgIGkgaW50IERFRkFVTFQgKDMrMTApLAorICBqIGludCBERUZBVUxUIDEw MSwKKyAgayBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYisxMCkgU1RPUkVECispCitQQVJU SVRJT04gQlkgUkFOR0UgKGIpOworQ1JFQVRFIFRBQkxFIHRfYmlnaW50X2RlZmF1bHQgUEFS VElUSU9OIE9GIHRfYmlnaW50IERFRkFVTFQ7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFp bnRzIGJlZm9yZSBTUExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludAorXGQrIHRfYmlnaW50 X2RlZmF1bHQKK0FMVEVSIFRBQkxFIHRfYmlnaW50IFNQTElUIFBBUlRJVElPTiB0X2JpZ2lu dF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJVElPTiB0X2JpZ2ludF8wMV8xMCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxMCksCisgICBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBERUZB VUxUKTsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYWZ0ZXIgU1BMSVQgUEFSVElU SU9OCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorXGQrIHRfYmlnaW50XzAxXzEwCitEUk9QIFRB QkxFIHRfYmlnaW50OworCisKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNo b3VsZCBiZSB0aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMiBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzIKKworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKKworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8xCitcZHQgdHBfMV8yCisKK0RST1AgVEFCTEUg dDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKKworCistLSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9u cyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRp dGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFO VCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVT ICgxMSksICgxNik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdl cikgUkVUVVJOUyBpbnRlZ2VyIEFTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBh cmUgcnVubmluZyBtZSBhcyAlJywgQ1VSUkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQK KyQkIExBTkdVQUdFIFBMUEdTUUwgSU1NVVRBQkxFOworCistLSBPd25lciBpcyAncmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQ1JFQVRFIElOREVYIE9OIHQgKHJ1bl9tZShp KSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKKy0tIE93bmVyIHNob3VsZCBi ZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMTBfMjAgSU5UTworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJ T04gcnVuX21lKGludGVnZXIpOworCitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9Q IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CisKKy0tIFRlc3QgZm9yIGhh c2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7 CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fu bm90IGJlIHNwbGl0CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTwor ICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5E RVIgMCksCisgICBQQVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQs IFJFTUFJTkRFUiAyKSk7CisKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBz aG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRI IChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBB ZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJvciBtZXNzYWdlcworQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigz MCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQg cGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CisKKworLS0gVGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3Bl cnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0 eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlv bmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhl IHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRp b25lZCB0YWJsZQorCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4 dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90 JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEt MDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04g Q09MVU1OIHQuaSBJUyAndDEuaSc7CisKK0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9U IE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAor IGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicp IFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwX3guaSBJUyAndHBf eC5pJzsKKworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGks IGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMp IG9uIGksIGIgZnJvbSB0cF94OworCitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRf Yl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0 X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxU RVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7 CisKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOwor SU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CisKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRy aWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5P VElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9 ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBu ZXc7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9y b3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg UFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hf YmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsK KworXGQrIHRwX3gKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTwor ICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBB UlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94CisK K0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKK0RST1AgVEFCTEUg dDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworCisKKy0tIFRlc3QgZm9y IHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRB QkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lk KSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBBREQgQ09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOwor SU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1 c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBh cworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBj b3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9p ZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBn ZW5lcmF0ZWQgY29sdW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCist LSByZWNvbXB1dGF0aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikp OworCistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciBy b3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVy IGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAw IEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKwor RFJPUCBUQUJMRSB0OworCisKK1JFU0VUIHNlYXJjaF9wYXRoOworCistLQorRFJPUCBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzMmQ2ZTcxOGFk Li5iODE1Y2NlZDg0IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjc2Niw2 ICsyNzY2LDcgQEAgU2ltcGxlU3RhdHMKIFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBsZVN0cmlu Z0xpc3RDZWxsCiBTaW5nbGVCb3VuZFNvcnRJdGVtCitTaW5nbGVQYXJ0aXRpb25TcGVjCiBT aXplCiBTa2lwUGFnZXMKIFNraXBTdXBwb3J0CkBAIC0yODMyLDYgKzI4MzMsNyBAQCBTcGVj aWFsSm9pbkluZm8KIFNwaW5EZWxheVN0YXR1cwogU3BsaXRJbnRlcnZhbAogU3BsaXRMUgor U3BsaXRQYXJ0aXRpb25Db250ZXh0CiBTcGxpdFBhZ2VMYXlvdXQKIFNwbGl0UG9pbnQKIFNw bGl0VGV4dE91dHB1dERhdGEKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------Wk1KT8NhM0G6BtX8G147dPEm--